Professional Documents
Culture Documents
Docentes: Collovati Susana Lasarte Matias Correa Diego Integrante: Jess Olguera
1
Introduccin:
En el siguiente informe se expone la construccin de un robot capaz de seguir lneas. A travs de un control inteligente programado en un microcontrolador, para ser capaz de seguir una lnea de forma autnoma.
Parte Constitutiva:
En la confeccin del robot. Se tiene en cuenta las caractersticas fsicas de sus partes. Por lo cual creamos una estructura que servir de gua para el correcto orden de los elementos que la componen.
En el caso de este robot, su estructura est construida de acrlico. Material sumamente fcil de trabajar, pero se quiebra y raya con frecuencia.
Principio de funcionamiento:
Sensor:
Para el proyecto, fue elegido el sensor CNY70 no solo por la miniaturizacin del componente, sino por dar una respuesta muy adecuada a los contrastes de reflexin.
2
CNY70 Sensor ptico reflexivo que tiene una construccin compacta dnde el emisor de luz y el receptor se colocan en la misma direccin para detectar la presencia de un objeto utilizando la reflexin del infrarrojo sobre el objeto. La longitud de onda de trabajo es 950nm. El detector consiste en un fototransistor. (Nota de la Hoja de datos)
Una de las formas de configurar el color o contraste a seguir (Preferentemente Negro o Blanco), es por circuito, al ser un transistor la respuesta pueden ser las siguientes.
A) Entrega a la salida un nivel bajo cuando no refleja el haz infrarrojo y un nivel alto cuando encuentra un material sobre el que refleja el haz. B) Entrega un nivel alto cuando el haz no refleja y un nivel bajo cuando se detecta un material reflectante.
Como la seal se quiere introducir a un microcontrolador es muy conveniente hacer pasar las salidas a travs de un circuito schmitt trigger que conforme las seales. Para eso, el siguiente paso
Schmitt trigger:
Este proyecto utiliza el integrado HCF40106BE para lograr pasar las seales schmitt trigger en simultaneo.
Una caracterstica que hay que tener en cuenta a la hora de programar es que, adems de lograr el schmitt trigger, tambin niega la salida.
De este dispositivo nosotros tomamos como salida las 4 patas del HCF40106BE (Pata 2,4,6,8)
Servo-Motores:
Los motores que se utilizaron son servo-motores paso a paso. Los cuales fueron modificados para girar libremente, ya que en motor tradicional solo tiene una movilidad de 180 Grados.
Los cuales para funcionar necesitan un tren de pulso que corresponden al movimiento a realizar. El ancho del pulso determina el ngulo de giro de motor. Un pulso de 1,5 milisegundos har que el motor retorne a la posicin neutral (No necesario en nuestro caso.) Si el pulso es desde 1 a 1,5 milisegundos el motor dar vueltas hacia la izquierda, y si vara entre 1,5 a 2 milisegundos girara hacia la derecha. El periodo entre pulso y pulso debe rondar entre los 15 milisegundos, aunque tambin es aceptable una espera entre 10 y 30 milisegundos dependiendo el motor. Si se sobrepasara el valor mximo el servo pasara a estar dormido entre pulso y pulso, y si el intervalo es inferior puede crear una interferencia con la temporizacin interna del servo.
Microcontrolador:
El microcontrolador utilizado en el proyecto es el PIC 16F628A no solo por haberlo utilizado en muchas oportunidades en el laboratorio, si no por poseerlo y por no tener que conseguir otro, as nos ahorramos tiempo y dinero.
El robot utiliza como entrada las patas 17, 18, 1 y 2. (RA0, RA1, RA2, RA3) y como salida las patas 6 y 8 (RB0, RB2)
Control:
Para el control de los motores muchos utilizaran un driver manejado por seales que le entrega el Microcontrolador, pero en este caso no ser necesaria, ya que el PIC es muy capaz de manejar las seales que se utilizan para manejar los motores con la adecuada programacin. Por obviedad no se introducir la seal directa del PIC al motor, sino que pasara por un circuito al que llamaremos Circuito de control.
El circuito solo polariza los transistores cuando este en alto la salida del PIC, para separar al microcontrolador de los motores.
Ruedas:
Son artesanales. Estn hechas de dos materiales. Orring y grilones. Para definir el tamao de la rueda primero se consigue el Orring. Pues este determina el dimetro mximo de la rueda. El griln se consigue en torneras y se torna dependiendo el Orring escogido.
Programa
Programa Principal
El programa desarrollado es muy simple. Solo toma el valor del puertoA (Los 4 sensores) Les aplica un AND para limpiar los bits que no usamos (RA4, RA5, RA6, RA7) Y esa resultante se le suma al contador del programa (PCL)
Asi el programa salta la cantidad de lneas que corresponde a cada caso de estado de los sensores.
Subrutinas:
Siguiendo la misma estructura de subrutina para Adelante, Atrs y Quieto se escriben las subrutinas de Derecha, Izquierda, Derecha de Emergencia, Izquierda de Emergencia.
Programa Documentado:
;********SEGUIDOR DE LINEAS BLANCAS************* ;****************MAPA DE MEMORIA**************** LIST P=16F628 #include<p16f628A.INC> __CONFIG _CP_OFF & _WDT_OFF & _PWRTE_ON & _INTRC_OSC_NOCLKOUT & _LVP_OFF & _MCLRE_OFF ;***REGISTROS DEL PIC*** STATUS EQU 0X03 RP0 EQU 0X05 TRISA TRISB PORTA PORTB INTCON CMCOM OPTION_REG EQU EQU EQU EQU EQU EQU EQU 0X085 0X086 0X05 0X06 0X0B 0X1F 0X81 ;**Habilita los puertos** ;**Se activan los puertos***
;***REGISTROS DEL PROGRAMA***** REG1 EQU REG2 EQU REG3 EQU FLAG EQU SALIDA EQU LINEA EQU ;***BITS DEL PROGRAMA********** RP0 EQU FLAG1 EQU PSEG EQU REGMIC EQU LED1 MQUIETO MATRAS MADELANTE MIZQUIERDA MDERECHA MIZQUIERDAE MDERECHAE EQU EQU EQU EQU EQU EQU EQU EQU
;Reistro para la base de tiempo ;Registro para contar 2MS ;Registro para contar 17MS
0X05 0X00 0X01 0X07 0X00 0X00 0X01 0X02 0X03 0X04 0X05 0X06
;Bit del registro status ;Bit de bandera auxiliar ;Bit que indica que ya pasaron 250 Microsegundos ;Bit que controla el estado del led
MI EQU 0X00 MD EQU 0X02 ;****************VECTOR DE RESET**************** ORG 0X00 ;Ac viene cuando el micro se resetea GOTO INICIO ORG 0x05 ; Vector de Interrupcin GOTO ISR ;************************************************* TABLA MOVF ADDWF GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO LINEA,0 PCL,1 ADELANTE DERECHA DERECHA DERECHAE IZQUIERDA QUIETO ADELANTE DERECHAE IZQUIERDA ADELANTE ADELANTE QUIETO IZQUIERDAE QUIETO IZQUIERDAE IZQUIERDA
;****************CONFIGURACION DE PUERTOS***** INICIO BSF STATUS,RP0 MOVLW B'11111111' MOVWF TRISA MOVLW MOVWF CLRF BCF MOVLW MOVWF B'00000000' TRISB OPTION_REG STATUS,RP0 D'7' CMCON
;Nos movemos al banco uno ;Declaro a todo el trisA como entrada ;Declaro a todo el trisB como salida
;*****************CONFIGURACION DE LA INTERRUPCIN***
10
;MOVLW B'11100000' MOVWF INTCON ;*****************INICIACION DE PUERTOS Y REGISTROS****** BCF PORTB,LED1 CLRF FLAG MOVLW B'10100000' MOVWF INTCON MOVLW D'2' MOVWF MOVLW MOVWF MOVLW MOVWF REG1 D'2' REG2 D'8' REG3
;Habilita las interrupciones globales y la ;interrupcion por TMR0 ;Apago las salidas del puertoB. ;Declaro como cero el registro Flag para estar seguro de que es cero. ;LINEA DE PRUEBA ;**Activo la interrupcin por TMR0**
;*********************PROGRAMA PRINCIPAL***************** PPAL MOVF MOVWF COMF ANDLW MOVWF GOTO GOTO ATRAS BCF BSF CALL BCF BSF CALL BCF BCF CALL GOTO ADELANTE BSF BCF CALL BSF BCF CALL BCF BCF CALL GOTO QUIETO BCF BCF GOTO DERECHA BCF BSF CALL BCF BCF CALL GOTO IZQUIERDA BCF BSF CALL BCF BCF CALL GOTO DERECHAE BSF BSF CALL BCF BCF CALL GOTO IZQUIERDAE BSF BSF CALL BCF BCF PORTB,MI PORTB,MD UNMS PORTB,MI PORTB,MD PORTB,MD PORTB,MI DOSMS PORTB,MI PORTB,MD ESPERA PPAL PORTB,MD PORTB,MI UNMS PORTB,MD PORTB,MI ESPERA PPAL PORTB,MI PORTB,MD DOSMS PORTB,MD PORTB,MI ESPERA PPAL PORTB,MD PORTB,MI PPAL PORTB,MI PORTB,MD DOSMS PORTB,MD PORTB,MI UNMS PORTB,MD PORTB,MI ESPERA PPAL PORTB,MI PORTB,MD DOSMS PORTB,MD PORTB,MI UNMS PORTB,MD PORTB,MI ESPERA PPAL ;Enciendo el motor Izquierdo ;Me aseguro que el motor derecho ;Enciendo el motor derecho ;Apago el motor Izquierdo ;Apagar el motor derecho ;Apagar el motor Izquierdo PORTA,0 LINEA LINEA,0 B'00001111' LINEA TABLA PPAL ;Mover el valor del PortA a W ;Mover el valor al registro Linea ;Complementar el registro Linea ;Limpiar los bits que no usamos, ;y asi estamos seguros de que no halla basura.
11
CALL GOTO UNMS ACA1 BCF BTFSS GOTO BCF RETURN BCF BTFSS GOTO DECFSZ GOTO MOVLW MOVWF BCF RETURN ESPERA ACA3 BCF BTFSS GOTO DECFSZ GOTO
ESPERA PPAL
FLAG, FLAG1 ;Esta subrutina la usamos para preguntar FLAG, FLAG1 ;si ya levanto la bandera la interrupcion por TMR0 ACA1 ;por ende, espera a que halla pasado 1 milisegundos FLAG,FLAG1
DOSMS ACA2
FLAG, FLAG1 FLAG, FLAG1 ACA2 REG2 DOSMS D'2' REG2 FLAG, FLAG1
;Esta subrutina ;decrementa el registro REG2 ;por cada vez que interrumpa por TMR0 ;por ende, cuando hallan pasado ;dos milisegundos
;Esta subrutina ;decrementa el registro REG3 ;por cada vez que halla interrumpido TMR0 ;como el registro se decrementara 8 veces ;saldra de la subrutina cuando halla pasado ;8 milisegundos
MOVLW D'8' MOVWF REG3 BCF FLAG, FLAG1 RETURN ;***********Vector de Interrupcin************ ISR CLRF INTCON DECFSZ GOTO BSF
;Cuando desborda TMR0 se activa esta interrupcin** ;Desactivo interrupcin por TMR0**
SALIR
MOVLW
END
;*********************PROGRAMA PRINCIPAL***************** PPAL MOVF PORTA,0 ANDLW B'00001111' MOVWF LINEA GOTO GOTO TABLA PPAL
12
Circuitos Utilizados
Plaqueta de montaje de los Sensores
Placa para el HCF40106BE y para conectar los sensores como indican los nmeros.
Conclusiones.
El proyecto no es tan complejo y los materiales no son tan difciles de conseguir. Fabricar la estructura de acrlico y las ruedas fueron una de las cosas que ocuparon ms tiempo. Se procuro que el programa del PIC sea lo ms corto posible, para que el seguidor de lneas pueda ser una subrutina. De todas maneras las subrutinas de Atrs, Adelante, Izquierda, Derecha, etc, se pueden utilizar en cualquier momento del programa. Y de esta manera el robot pueda tener otro fin mas que el de seguir una lnea.
Hay que procurar que los sensores no estn tan separados porque esto hara que tarde en corregir su camino. La alimentacin del PIC la separe a la de los motores, por dos razones. La primera para que no entre ruido del motor al PIC y este no pueda trabajar correctamente. Y la segunda porque los motores consumen mucha corriente, detalle a tener en cuenta. Todas las masas van juntas.
14