jueves, 10 de marzo de 2011

Sigue lineas 16f628A con BTrainer

Esto es lo ultimo que me ha dado por hacer, un coche seguidor de linea. Es decir un coche al que le pones una linea negra sobre un fondo blanco y va siguiendo la linea.
La verdad es algo sencillo de hacer y algo más complicado si lo quieres hacer bien, me explico:
Empezando por la base, no es una muy buena base para este tipo de practica, es algo más difícil de controlar. La base ideal seria dos ruedas cada uno con un motor y una rueda loca como rueda de apoyo.







Esta es la parte inferior donde están puestos los tres CNY70.
Esta es la primera prueba que hice poniéndolos a mucha distancia y montándolos un poco de "aquella manera" sobre el mismo chasis...
No funciono... bueno lo que es el circuito si funcionaba bien el problema era que al estar fijos no podía regular los sensores y hacia lo que quería.








Aquí ya están mejor, la colocación es MUY IMPORTANTE, si no no detectara la linea, hay que alinearlo bien sobre todo en altura. Hay por ahí algún esquema donde ponen los CNY70 con unos potenciometros, no los he llegado ha probar, pero supongo que con esto podremos hacer un reglaje más "fino".
Si podéis quitarle vibraciones mejor también.









Esta es la parte inferior, donde se ven los sensores CNY70, como se ve están encendidos, esto solo puede verse con el mobil y no se si con las cámaras de fotos también pasara (Esto también es útil para saber si el mando de la tele tiene pilas jejeje)











La idea ya la tenia en mente aunque la verdad lo he hecho un poco por hacer. Parte de la información la he sacado de la web de Glafebre que hizo el Hyperion donde tendréis el más información y el programa original, el mio tiene algunas variaciones, pero fue el que me inspiro.










Codigo en PBP:
@ DEVICE PIC16F628A, WDT_OFF ' Watchdog Timer desconectado
@ DEVICE PIC16F628A, PWRT_OFF ' Power-On Timer conectado
@ DEVICE PIC16F628A, BOD_OFF ' Brown-Out Detect conectado
@ DEVICE PIC16F628A, MCLR_OFF ' Master Clear Externo desconectado
@ DEVICE PIC16F628A, LVP_OFF ' Low-Voltage Programming desconectado
@ DEVICE PIC16F628A, CPD_OFF ' Data Memory Code Protect desconectado


DEFINE OSC 4



'-----CONFIGURACION DE LOS PUERTOS--------
PORTB=%11110000
TRISB=%11110000



'------------PROGRAMA PRINCIPAL------------
pause 3000
loop:

IF (PORTB.5=0) AND (portb.6=1) AND (portb.7=1) THEN GOSUB ADELANTE

IF (PORTB.7=0) AND (portb.5=1) AND (portb.6=1) THEN GOSUB IZQUIERDA

IF (PORTB.6=0) AND (portb.5=1) AND (portb.7=1) THEN GOSUB DERECHA

IF (PORTB.5=0) AND (portb.6=0) AND (portb.7=0) THEN GOSUB PARO

IF (PORTB.5=1) AND (portb.6=1) AND (portb.7=1) THEN GOSUB PARO

GOTO loop

END



'--------------SUBRRUTINAS-----------------

ADELANTE:

PORTB.0=1
PORTB.1=0
PORTB.2=0: PORTB.3=0

return

ATRAS:
PORTB.0=0: PORTB.1=0: PORTB.2=0
PORTB.3=0

RETURN

DERECHA:
PORTB.0=1
PORTB.1=0
PORTB.2=1: PORTB.3=0

RETURN

IZQUIERDA:

PORTB.0=1
PORTB.1=0
PORTB.2=0: PORTB.3=1

RETURN

PARO:

PORTB.0=0: PORTB.1=0: PORTB.2=0
PORTB.3=0

RETURN

-----------------------FIN DEL CODIGO--------------------------------



By PeYuTrOn

4 comentarios :

  1. en que software simulaste tu codigo?? y eso de las subrutinas que? va dentro del codigo o en una ventana aparte??? muy buen aporte =)

    ResponderEliminar
  2. Hola Patriko, las subrutinas van en el mismo programa. Este programa no lo he llegado a simular porque cuando lo hice creo que aun no conocía Proteus. Si copias el texto en Microcode Studio, veras que " '---SUBRUTINAS---" lo colorea en color azul, y eso quiere decir que es un comentario, es decir una aclaración que hace el autor para que el código se pueda entender mucho mejor, sobre todo en programas largos. Normalmente empiezan con " ' " o con " ; ". Todo lo que escribas delante de esos caracteres es un comentario y cuando se compila el archivo no queda incluido en el HEX. Espero que haya resuelto tu duda. Si tienes más, aquí estamos!!

    ResponderEliminar
  3. voy a probar tu código te informare como va , muy buen aporte

    ResponderEliminar
  4. Que mas amigo disculpa el diagrama electrico ??

    ResponderEliminar