ROBOT EXPLORADOR (DIEGOBOT) CON PIC 16F84 Y SENSORES INFRAROJOS
Lunes 29 de Septiembre 2008
Bueno ahora que ya tenemos algo de experiencia con el pic que mejor que construir algo interesante con el, y que mejor que un ROBOT si un juguete hecho por nosotros mismos y con piezas recicladas el que construí para Diego ( DIEGOBOOT) me quedo así:
Aunque la foto no es muy buena se pueden Apreciar las Ruedas, las baterías los circuitos de control en total son 3 ( El circuito del Pic o Etapa de Control, El circuito Potencia para los Motores, y el Circuito para los Emisores de Infrarrojos que serán los ojos del Robot) el circuito de los infrarrojos esta debajo del robot por cuestiones de espacio lo coloque allí.
Ok por donde comenzamos? Podemos comenzar por hacer los circuitos que y de acuerdo al tamaño de estos podremos decidir el ancho de la plataforma del robot como dije anteriormente la electrónica del robot se divide en 3 partes:
.1-EL Circuito de Control que enviara las señales a la etapa de potencia para hacer el control de los motores
Una cosa que podemos apreciar aquí también son los 2 Sensores (los conectados a los hilos verdes) a mi se me hizo muy complicado conseguir estos sensores en las tiendas de electrónica ya que solo habían sensores de 2 patitas, al final luego de varias pruebas los sensores que me quedaron muy bien los conseguí de tarjetas de Vds. players Viejos jajaja esos los compre en una tienda de chatarra electrónica donde desmantelaban DVDS es cosa de que prueben. Otra cosa muy importante también es la batería tenemos que Conseguir una Batería de preferencia recargable y de no mas de 6 voltios ya que si le ponemos de mas podemos quemar nuestro Pic. OJO esta Batería será independiente a la batería del Circuito de Potencia
2.- El circuito de Potencia que recibirá las señales del Pic y las amplificara haciéndolos pasar por el driver l293b ojo es necesario alimentar a este circuito con una batería distinta a la que alimentara al circuito de control por los picos que de corriente que generan los motores al arrancar o al cambiar de giro, es recomendable también agregar unas bobinas toroidales a las salidas del driver antes de conectar los motores esto para eliminar las corrientes parasitas aunque sin ellas también funcionan
El diagrama de Conexion muestra al Chip l293b conectado a los 2 motores que seran las ruedas del Robot, para Conectar el Circuito de Potencia con el Circuito de Control guiarse por los Colores de los cables que estan el el diagrama : )
2.- El circuito de los Emisores Infrarojos.Luego hay que hacer el circuito que emitira la luz infraroja la cual a su vez al rebotar contra algun objeto y ser detectado por alguno de los 2 sensores hara cambiar de direccion a nuestro Robot : ) , para alimentar este Circuito Podemos Usar la misma Bateria que alimenta al circuito de Control.
Este es el Circuito de Control
Este es el Circuito de Potencia
El circuito de los Emisores
AHORA en esta Foto esta el Sensor y las Baterias y el cargador de Las baterias
El Programa
Este Robot esta Basado en la idea de la pagina de Tjaco's el escribio el Programa Sencillo y muy Eficaz , este programa esta escrito en en asembler para descargarlo podemos copiar el texto siguiente y guardarlo en un Block de notas luego guardarlo con extension ASM asi ( archivo.asm) luego para compilarlo y convertirlo en Hex usaremos el Programa MPASM una herramienta muy Util que nos permite convertir archivos de ASM a Hexadecimal para asi poder grbarlas en nuestro PIC. Si no deseas hacer toda la compilacion bajate este archivo estan el ASM y el HEX........... CLIK AKI
;TJACO'S DESIGN GRAVEYARD: WWW.GEOCITIES.COM/TJACODESIGN ;
;22 JULY 2002 ;
;CERBERES : MINI ROBOT WITH IR EYES ;
;USES PIC16F84 µCONTROLLER ;
;WRITTEN IN MICROCHIP ASSEMBLY USE MPASM ASSEMBLER FROM MPLAB ;
;MPLAB CAN BE DOWNLOADED FROM WWW.MICROCHIP.COM ;
;***SET UP THE CONTANTS & VARIABLES****
LIST P=16C84
ERRORLEVEL -302 ;SUPPRESS BANK SELECTION MESSAGES
STATUS EQU H'03' ;STATUS REGISTER
TRISB EQU H'86' ;TRISB REGISTER FOR SETUP OF PORTB
PORTB EQU H'06' ;PORTB REGISTER TO DRIVE PORT B
COUNT1 EQU H'0C' ;COUNT VARIABLE 1 IS IN GENERAL PURPOSE REG 08H
COUNT2 EQU H'0D' ;COUNT VARIABLE 2 IS IN GENERAL PURPOSE REG 09H
;***SET UP PORT B IN & OUTPUT****
BSF STATUS,5 ;SWITCH TO BANK0 TO SET UP PORT B
MOVLW B'11110000' ;RB7,6,5,4 IS INPUT
MOVWF TRISB ;RB3,2,1,0 IS OUTPUT
BCF STATUS,5 ;SWITCH BACK TO BANK0 TO USE PORT B
;***MAIN PROGRAM****
START MOVLW B'00000101' ;MAKE RB0&2 HIGH: MOVE FORWARD
MOVWF PORTB ;
MOVLW H'FE' ;RESET COUNT1 TO 254
MOVWF COUNT1 ;
MOVLW H'FE' ;RESET COUNT2 TO 254
MOVWF COUNT2 ;
BTFSS PORTB,5 ;CHECK RB5 (INPUT); IF IT IS LOW
CALL BACKL ;THEN EXECUTE BACKLEFT ROUTINE
BTFSS PORTB,6 ;CHECK RB6 (INPUT); IF IT IS LOW
CALL BACKR ;EXECUTE BACKRIGHT ROUTINE
GOTO START ;RETURN TO LABEL START
;***BACKLEFT ROUTINE****
BACKL MOVLW B'00001010' ;MAKE RB1&3 HIGH: MOVE BACKWARD
MOVWF PORTB ;
CALL DELAY ;
MOVLW B'00001001' ;MAKE RB2&3 HIGH: ROTATE LEFT
MOVWF PORTB ;
CALL DELAY ;
RETURN
;***BACKRIGHT ROUTINE****
BACKR MOVLW B'00001010' ;MAKE RB1&3 HIGH: MOVE BACKWARD
MOVWF PORTB ;
CALL DELAY ;
MOVLW B'00000110' ;MAKE RB2&3 HIGH: ROTATE RIGHT
MOVWF PORTB ;
CALL DELAY ;
RETURN
DELAY MOVLW H'EE' ;RESET ALL COUNTER VARIABLES
MOVWF COUNT1
MOVLW H'99'
MOVWF COUNT2
LOOP1 CLRWDT ;RESET THE WATCHDOG TIMER
DECFSZ COUNT1,1 ;this is a delay loop
GOTO LOOP1 ;tuned to make Cerberes
DECFSZ COUNT2,1 ;turn about 90 degrees
GOTO LOOP1
RETURN
END;
Desde aqui le Mando un saludo a mi amiga Pamelita de Argentina que esta trabajando en su propio Robot Mucha suerte Pamelita espero que todo te salga bien : )