que tal un robot para la web?

Todos sobre robots creados de forma casera.
Post Reply
Tantoril
Miembro Nuevo
Miembro Nuevo
Posts: 21
Joined: 22 Mar 2005, 02:49

Post by Tantoril »

Pues parece que mis motores fueron un chasco... tengo un motor como el doble de potente que el otro xDDDDDDDd así que el robot gira sólo...
Bueno, pues agrego 2 servomotores a la lista xD
Y tendré que hacer el chasis de nuevo... xDDD
Madre mía... si con la parte mecánica tengo estos problemas, cuando llegue el pic... xDDDDDDD
Toni, pon una resistencia a ver si bajan la velocidad.

Salu2!
macinve
Miembro Medio
Miembro Medio
Posts: 55
Joined: 06 Feb 2005, 16:44

Post by macinve »

que un motor vaya mas rapido y la velocidad espero solucionarlos con el PWM asi que no desesperarse, en cuanto solucione lo del calentamiento de los chips hago pruebas y os cuento... :wink:
Tantoril
Miembro Nuevo
Miembro Nuevo
Posts: 21
Joined: 22 Mar 2005, 02:49

Post by Tantoril »

¿Qué es el PWM?
macinve
Miembro Medio
Miembro Medio
Posts: 55
Joined: 06 Feb 2005, 16:44

Post by macinve »

pwm si no recuerdo mal es pulse width modulation. Se trata de generar una onda cuadrada con una frecuencia determinada...la idea es sencilla lo que hacemos es alimentar el motor (lo que seria un 1 logico)durante un corto periodo de tiempo y durante otro periodo de tiempo no alimentarlo (0 logico). si lo hiciesemos en un intervalo relativamente largo lo que se notaria es que los motores van como a saltos...pero si esta variacion entre encendido y apagado la hacemos varias veces por segundo el movimiento es continuo. Esto es a grandes rasgos..luego vendra un purista y se echara las manos a la cabeza :P

Lo interesante de esta tecnica es que variando la frecuencia de ese encendido-apagado podemos controlar la velocidad sin perder fuerza en el motor al contrario de lo que pasaria si solamente bajamos el voltaje, bajando el voltaje llegaria un momento que los motores no tendrian fuerza para mover el robot.

Me he explicado? basicamente seria como si estuviesemos conectando el motor y desconectandolo de la bateria mcuhas veces...

Con el pic 16f876 se puede hacer facilmente pq ya tiene 2 unidades de PWM asi que se podrian controlar 2 motores sin problemas y ademas podriamos solucionar el tema de que un motor vaya mas rapido que otro, compensamos con las velocidades y ya esta(aunque habra que ahcerlo a ojo hasta q salga :P .Con el 16f84 tb se puede hacer pero hay que programarlo todo mientras q con el 876 es dar valor a unos registros que tiene
Viciao2000
Miembro Nuevo
Miembro Nuevo
Posts: 12
Joined: 09 Mar 2005, 12:16

Post by Viciao2000 »

Muy buena explicación. Yo estoy pensando que lo mejor es hacer el PWM ya que en mi caso se me soluciona un problema crítico que me aparece.

Resulta que cuando "enchufo" los motores esto pegan un salto increible (salta todo el chasis) entonces he pensado que puedo hacer un programilla controlado por el pic que me vaya regulando la velocidad con la que se mueve el motor.

Por ejemplo que empiece muy suavemente y poco a poco vaya acelerendo.

Claro esta, para esto es necesario crear alguna rutina para PWM.
Last edited by Viciao2000 on 29 Mar 2005, 17:03, edited 1 time in total.
macinve
Miembro Medio
Miembro Medio
Posts: 55
Joined: 06 Feb 2005, 16:44

Post by macinve »

pues yo tengo una PWM de 50 % duty cycle y 1 Hz de frecuencia si no recuerdo mal, no lo he llegado a probar pero creo que deberia funcionar bien. tb tengo alguna rutina de retardo...mezclando las dos cosas y modificando los parametros del duty y/o frecuencia ya lo tendrias, si quieres te lo paso
User avatar
Toni
Administrador
Administrador
Posts: 1069
Joined: 14 Aug 2004, 12:49
Location: España
Contact:

Post by Toni »

Pero eso de apagar/encender no hará que se consuma mucha más batería? no puede efectar al motor (a la larga)?
Viciao2000
Miembro Nuevo
Miembro Nuevo
Posts: 12
Joined: 09 Mar 2005, 12:16

Post by Viciao2000 »

Esa rutina me interesa. Pero quieres decir que 1 Hz no es muy lenta???

En cuanto a lo de si es perjudicial para los motores, supongo que para frecuencias pequeñas puede serlo, pero para altas frecuencias (tipicamente 1 Mhz) no creo que cause mucho daño.
Tantoril
Miembro Nuevo
Miembro Nuevo
Posts: 21
Joined: 22 Mar 2005, 02:49

Post by Tantoril »

Fiu, menos mal que se puede controlar eso con el PIC, me ahorro más de 20 euros xDDD
Sí, está bien explicado :D
No creo que tenga por qué joder el motor... pero vamos, que no tengo ni idea xD.
¿Vosotros habéis hecho alguna carrera, o estais estudiando algo?
Salu2!
macinve
Miembro Medio
Miembro Medio
Posts: 55
Joined: 06 Feb 2005, 16:44

Post by macinve »

aki va el codigo, yo me he kedao atascao :( derrepente todo ha dejado de funcionar y no encuentro el por que...seguro q es una gilipollez....





LIST P=16F876 ; indicamos el modelo de PIC que tenemos
#include <p16F876.inc> ; include con las constantes
__CONFIG _CP_OFF & _WDT_OFF & _PWRTE_ON & _XT_OSC


TIEMPO equ 0x30 ;una variable


ORG 0x00
goto inicio ; Primera linea del programa.



;********* EMPIEZA PWM*****************
; los calculos para un reloj de 4MHz y una PWM con duty cycle del 50% y una frecuencia 1000Hz son:
;
; Tosc = 1/4000000 = 2.5*10-7
; periodo de la PWM = 1/1000 = 0.001
; valor a cargar en PR2 = (Periodo de la PWM /(4 * Tosc * predivisor de TMR2)) - 1
; PR2 = (0.001/(4 * 2.5 * 10-7 * 4)) - 1 = 249
;
; para calcular el duty cycle:
; PWM Duty Cycle = 50 % del periodo de la PWM = 0.5 * 0.001 = 0.0005
; CCPR1L:CCP1Con<5:4> = PWM Duty Cycle / (Tosc * Predivisor de TMR2)
; CCPR1L:CCP1Con<5:4> = 0.0005 / (2.5 * 10-7 * 4) = 500 (0111110100 en binario con 10 bits)
; se cargan los 8 primeros (01111101)en CCPR1L y los 2 ultimos(los de menor peso 00) en CCP1Con<5:4>




inicio
bsf STATUS,RP0 ;accedemos al banco de memoria 1
movlw d'249' ; cargamos 249 en PR2
movwf PR2
bcf STATUS,RP0 ; accedemos al banco 0

movlw b'01111101' ; cargamos el valor del duty cycle
movwf CCPR1L
bcf CCP1CON,CCP1X ; cargamos el valor de CCP1Con bit 5
bcf CCP1CON,CCP1Y ; cargamos el valor de CCP1Con bit 4

BSF STATUS,RP0 ; accedemos al banco de memoria 1
movlw 0x00
movwf TRISC ; PUERTO C COMO SALIDA
BCF STATUS,RP0 ; accedemos al banco 0

movlw b'00000101' ; Activar TMR2, y predivisor a 1:4
movwf T2CON


BSF CCP1CON,CCP1M3 ; activamos el modo PWM
BSF CCP1CON,CCP1M2

;******* TERMINA PWM*************************


;****** EMPIEZA RETARDO***********************
; retardo de 1 segundo aprox
; enciende y apaga un led conectado a RB1 cada segundo

bsf STATUS,5 ;accedemos al banco 1
movlw b'01010111' ; DIVISOR 256, TIMER0
movwf OPTION_REG
movlw 0x00
movwf TRISB ; PUERTO B COMO SALIDA
bcf STATUS,5 ;accdemos al banco 0
clrf PORTB ; TODAS LAS SALIDAS DEL PUERTO B A 0



parpadeo

bsf PORTB,1 ; ENCIENDO EL LED RB1
call esperar
bcf PORTB,1 ; APAGO EL LED
call esperar
goto parpadeo

esperar
movlw 20 ; 50ms x 20 = 1 seg
movfw TIEMPO
clrf TMR0
restaurar
movlw 0xC4 ;TMR0 = 50 ms
movfw TMR0

esperar1s
btfss INTCON,2 ;desbordamiento?
goto esperar1s ; no -> sigo esperando
bcf INTCON,2 ; si -> repongo flag
decfsz TIEMPO,1 ;una iteracion menos
goto restaurar
return



;*********** TERMINA RETARDO************************
END

Un ingeniero informatico por aki
Viciao2000
Miembro Nuevo
Miembro Nuevo
Posts: 12
Joined: 09 Mar 2005, 12:16

Post by Viciao2000 »

Pedazo de codigo....

Una preguntilla, como testeas ese codigo? ¡¡¡¡ a mi me da una pereza testear en el pic ¡¡¡¡

Lo enchufo en el mplab para ver que pasa y te digo algo.

Yo ingeniero electronico.
macinve
Miembro Medio
Miembro Medio
Posts: 55
Joined: 06 Feb 2005, 16:44

Post by macinve »

no creas que es tanto, en cuanto te familiarizes un poco con el pic veras que casi todo es dar valor a los registros adecuados...En cuanto a lo de probar creo q en mplab habia algo para hacer una traza, pero en este tipo de codigo q maneja temporizadores y cosas asi es un coñazo pq el codigo da muchos saltos
daniel-robozes
Miembro Nuevo
Miembro Nuevo
Posts: 16
Joined: 03 Feb 2005, 09:57

Post by daniel-robozes »

Viciao2000 wrote:Esa rutina me interesa. Pero quieres decir que 1 Hz no es muy lenta???

En cuanto a lo de si es perjudicial para los motores, supongo que para frecuencias pequeñas puede serlo, pero para altas frecuencias (tipicamente 1 Mhz) no creo que cause mucho daño.
Como comentas lo de subir hasta 1MHz es lo mejor, aunque creo que el generador de PWM del PIC no soporta frecuencia tan altas, y sobre todo las entradas de los puentes no pueden variar tan deprisa.

Lo suyo es poner una frecuencia de PWM que esté por encima de las frecuencias audibles, 20KHz, o al menos lo más alto posibe, para que el motor se mueva con suavidad y no suene tanto.
macinve
Miembro Medio
Miembro Medio
Posts: 55
Joined: 06 Feb 2005, 16:44

Post by macinve »

ummmmmmm creo q puede haber un error en el codigo que os he puesto, la parte del codigo del retardo era para un 16f84, y ahora q lo he probado no funciona bien... la parte de pwm si que esta bien, lo probare mejor y ya os cuento
angelito
Miembro Nuevo
Miembro Nuevo
Posts: 3
Joined: 05 Apr 2005, 10:34
Location: Asturias

Esto esta un poco parado!

Post by angelito »

Hola! Llevo un par de semanas siguiendo este post y como hace poco que me he aficionado a la electronica tambien me he puesto a hacer el robot y hoy me he decidido a postear lo que tengo :) Eso si, veo esto un poco parado, que pasa? ya habeis abandonado?? :cry:

Bueno, os cuento, lo que mas me ha costado por el momento es la parte mecánica, no encontraba las piezas que necesitaba y no sabia como acoplarlo todo, chasis, ruedas, motores.. al final las ruedas las he hecho con unas piezas de lego que tenia de cuando era pequeño, unas piezas que llevan unos agujeritos en medio y las he fijado al chasis (lo hice con CD's!) con unos tornillos. He tenido que usar poleas porque no tenia piñones suficientes para hacer los engranajes, pero bueno, en principio parece que funciona bien. Esta tarde pondre unas fotos, que ahora estoy en clase.

Por otro lado, la parte electrónica es lo que mas avanzado tengo. Para el PIC he usado un entrenador que hice hace unas semanas y que me viene como anillo al dedo, en principio voy a utilizar el 16F628A, ya que el entrenador que hice sirve para los 16F627/28/48(A) y 16F84(A). Es muy sencillo y muy práctico para lo que necesitamos, así que por la tarde os pongo el esquema teórico y el de la PCB por si quereis hacerlo. Para grabar los PIC's tambien utilizo un grabador que me hice hace tiempo, se llama PIPO2, es muy facil de hacer y muy barato (no pasa de los 3 euros), y ademas graba un monton de dispositivos, los esquemas los podeis encontrar aqui: http://213.97.130.124/progs/pipo2/pipo2.htm y la revisión que le añade unos pequeños cambios para darle soporte para mas dispositivos http://213.97.130.124/rev_pipo2/rev_pipo2.htm

Yo lo primero que voy a hacerle al robot es ponerle unos sensores CNY70 para que siga lineas, ya sabeis, el típico rastreador :) Me falta comprar el L293D, que no lo encuentro en ninguna parte, asi que acabare comprando el L293B, unos cuantos diodos y los dos sensores, y espero tener todo eso listo para finales de semana (la placa para los dos CNY70 tambien tengo hecho el esquema). Asi que nada, esta tarde os pongo unas fotos y los esquemas del entrenador de PIC's. Y animaos!! Que ya lo tenemos casi todo! :D
Post Reply