Informe Final Microcontroladores

28
ROBOT VELOCISTA En el siguiente informe se describirá la forma y fundamentos en que fue diseñado el robot velocista. Este tipo de robots se encuentran gobernados por un microcontrolador (en este caso utilizaremos el PIC 16F690) y diseñado para tareas específicas. Un robot velocista clasifica en la rama de la robótica móvil, la tarea fundamental de éste es el desplazamiento en un entorno conocido (guiado por una línea negra); para ello es necesario que el robot posea las siguientes características: Nivel de Reacción Es el encargado de la comunicación entre el robot y su entorno, para ello se utilizan sensores, que en nuestro caso se tratan de los CNY70. Nivel de Control Es aquí en donde se lleva a cabo la función principal que le permitirá al robot la toma de decisiones. En este proyecto utilizaremos el microcontrolador PIC 16F690 para el procesamiento de las decisiones de acuerdo a los sensores y el driver L293B para el control de los motores. Nivel Físico Comprende la estructura en el cual esta soportado y las unidades de locomoción (motores). NIVEL DE REACCIÓN Para comunicar al robot con el mundo exterior y el microcontrolador se utilizan los sensores infrarrojos reflexivos con salida a transistor CNY70. Este sensor está construido con un diodo emisor de luz LED IR con una onda de trabajo de 950nm y un fototransistor que actúa como detector de la onda infrarroja que se refleja con la presencia de un objeto. El CNY70 es un sensor de infrarrojos de corto alcance basado en un emisor de luz y un receptor, ambos apuntando en la misma dirección, y cuyo funcionamiento se basa en la capacidad de reflexión del objeto, y la detección del rayo reflectado por el receptor.

description

Proyecto de un velocista con PIC16F690

Transcript of Informe Final Microcontroladores

ROBOT VELOCISTA

En el siguiente informe se describir la forma y fundamentos en que fue diseado el robot velocista.

Este tipo de robots se encuentran gobernados por un microcontrolador (en este caso utilizaremos el PIC 16F690) y diseado para tareas especficas.

Un robot velocista clasifica en la rama de la robtica mvil, la tarea fundamental de ste es el desplazamiento en un entorno conocido (guiado por una lnea negra); para ello es necesario que el robot posea las siguientes caractersticas:

Nivel de Reaccin

Es el encargado de la comunicacin entre el robot y su entorno, para ello se utilizan sensores, que en nuestro caso se tratan de los CNY70.

Nivel de Control

Es aqu en donde se lleva a cabo la funcin principal que le permitir al robot la toma de decisiones. En este proyecto utilizaremos el microcontrolador PIC 16F690 para el procesamiento de las decisiones de acuerdo a los sensores y el driver L293B para el control de los motores.

Nivel Fsico

Comprende la estructura en el cual esta soportado y las unidades de locomocin (motores).

NIVEL DE REACCIN

Para comunicar al robot con el mundo exterior y el microcontrolador se utilizan los sensores infrarrojos reflexivos con salida a transistor CNY70. Este sensor est construido con un diodo emisor de luz LED IR con una onda de trabajo de 950nm y un fototransistor que acta como detector de la onda infrarroja que se refleja con la presencia de un objeto.

El CNY70 es un sensor de infrarrojos de corto alcance basado en un emisor de luz y un receptor, ambos apuntando en la misma direccin, y cuyo funcionamiento se basa en la capacidad de reflexin del objeto, y la deteccin del rayo reflectado por el receptor.

Vista externa y circuitos internos del sensor CNY70

El CNY70 tiene cuatro pines de conexin. Dos de ellos se corresponden con el nodo y ctodo del emisor, y las otras dos se corresponden con el colector y el emisor del receptor. Los valores de las resistencias son tpicamente 10K para el receptor y 220 para el emisor.

Manejo del Sensor

Es importante fijarse bien en el lateral donde aparece el nombre del sensor, para identificar correctamente cada uno de los pines.

Patillaje del CNY70

El CNY70 devuelve por la pata de salida correspondiente, segn el montaje, un voltaje relacionado con la cantidad de rayo reflectado por el objeto. Para el montaje A, se leer del emisor un '1' cuando se refleje luz y un '0' cuando no se refleje. Para el montaje B los valores se leen del colector, y son los contrarios al montaje A.

El nico inconveniente del sensor es la necesidad de tener que situarlo muy prximo al objeto para detectar correctamente la reflexin.

La distancia al suelo viene determinada por el tipo de sensor y por el tipo de lectura que estamos haciendo. En la mayora de los casos la lectura es digital, es decir, leemos '1' o '0' y por tanto lo que nos dice el fabricante es que la distancia mxima es de unos 5 mm.

Como regla prctica podemos decir que en el caso de lectura digital, cuanto ms pegado est el sensor al suelo mejores resultados obtendremos, incluso si el robot es lo suficientemente ligero y el peso no est distribuido excesivamente hacia la parte delantera podemos llevar los sensores tocando el suelo. No obstante si podemos disminuir el rozamiento colocando un ball caster u otro dispositivo similar el robot ir mucho mejor.

Configuracin del CNY70

Se deber seguir una lnea marcada con color negro o en su defecto cinta negra, ya que el negro es el color que menos refleja la emisin infrarrojo; la idea es diferenciar en qu lugar se encuentra el color negro y en que parte deja de ser del mismo, siendo de cualquier otro color. Cualquier otro color diferente del negro har una diferencia anloga en la diferencia de potencial, del fototransistor CNY70.

Detecta blanco: transistor saturado salida 5v. Detecta negro: transistor en corte salida 0v.

Las salidas de cada sensor ptico se conecta a un transistor 2N2222A que trabaja en corte o saturacin, invirtiendo la seal de salida del sensor, logrando a la salida total un 0 lgico cuando se detecta blanco y un 1 lgico cuando detecta negro, esta configuracin es la encargada de la conformacin del pulso digital puro, esto es necesario ya que el CNY70 no proporciona una seal de salida digital pura si no que presenta una seal digital distorsionada la cual puede incurrir en un error en la entrada del microcontrolador.

Luego de que la seal proporcionada por el sensor es filtrada por el transistor 2N2222A, stas son enviadas a las entradas del microcontrolador.

NIVEL DE CONTROL

La inteligencia del robot depende de las capacidades de la unidad de control (microcontrolador), la misin principal de esta, es analizar la informacin de los estados lgicos provenientes del mundo real a travs de los sensores CNY70, as entonces, todo ese proceso de informacin tiene un fin que en ste caso, es el de seguir una lnea negra.

Para procesar las seales de los sensores CNY70 se ha utilizado el PIC 16F690. Y para la ejecucin de las decisiones tomadas por el microcontrolador se utiliza el driver integrado L293B, ya que soporta una mayor cantidad de corriente, hasta 1A, considerando adems el uso de diodos de proteccin para evitar la fuerza contra electromotriz producida por los motores.

Control de Motores - IC L293B

El circuito integrado L293B es el tradicional puente H pero en IC, este controlador posee 4 canales capaces de proporcionar a sus salidas 1A por canal. Cada canal es controlado por seales compatibles TTL, y cada pareja de canales dispone de una seal de habilitacin que activa o desactiva los respectivos canales, adems posee una entrada independiente para el voltaje de las cargas VS, el cual soporta hasta 36V.

El IC L293B puede ser utilizado para controlar motores en forma mono direccional y bidireccional, se utilizar la configuracin bidireccional que nos permitir girar los motores en ambos sentidos; siendo slo de nuestro inters el giro en un solo sentido.

Lgica de Control de Motores

Algoritmo incorrecto: seguir la lnea negra.

Es incorrecto puesto que la imprecisin del camino seguido por el robot vara en funcin del ancho de la zona negra. Esto puede causar retrasos en el recorrido o incluso que el robot se pierda. Por ejemplo en caso de encontrarse con una bifurcacin en forma de Y el robot ira por la izquierda o por la derecha segn su posicin sobre la zona de color negro.

Algoritmo correcto: seguir el borde de la lnea negra.

Seguir el borde negro-blanco (o si se quisiese el blanco-negro, en cuyo caso habra que modificar el algoritmo) es mucho ms preciso que seguir hacia delante por la lnea negra.

Los sensores y motores estn destinados a una funcin especfica dirigir el sentido del robot, entonces, podemos deducir lo siguiente, cuando los sensores se encuentran en estado lgico uno, se entiende que no se refleja el infrarrojo en ellos, por lo tanto no hay obstculo o se encuentra, en el frente de la cinta negra guiadora, tenemos 4 casos de los sensores que determinarn el sentido en el que ir el motor.

Caso (00), es decir, ambos sensores han detectado blanco, se encuentra fuera de lnea, en el momento de detectar el robot en sus sensores este caso, el motor derecho girar y el izquierdo se apagar, provocando que el robot gire a la izquierda. El efecto de los motores provocar un alineamiento de los sensores en su momento hacia la parte negra o cinta.

Caso (01), el sensor izquierdo se ha activado o est fuera de la raya negra y el derecho se encuentra en raya negra o no percibe obstculo, en este proceso la orden mandada al micro provoca que el motor izquierdo gire y el derecho se apague, ocasionando que el robot gire a la derecha, este efecto provoca que se posicione en su momento los sensores en la posicin negra dentro de la cinta.

Caso (10), el sensor derecho no se ha activado o est fuera de la raya negra y el izquierdo se encuentra en raya negra o no percibe obstculo, en este proceso la orden mandada al micro provoca que ambos motores se enciendan, girando en un solo sentido, entonces el robot ir derecho.

Caso (11), ambos sensores se encuentran sobre la lnea negra, sta lectura es mandada hacia el microcontrolador, el cual despus de su anlisis, manda la orden a los motores para que el carro gire a la derecha, es decir el motor izquierdo girar y el derecho se apagar.

Como hemos visto en el funcionamiento lgico, el objetivo es siempre posicionar los sensores del robot, uno en la lnea negra y otro en la blanca, siendo esta la guiadora entonces de toda la estructura robtica.

Pseudocdigo del Programa

Leo sensores Si he ledo negro-negro giro a la derecha y vuelvo a leer sensores Si he ledo negro-blanco giro las dos ruedas hacia delante y vuelvo a leer sensores Si he ledo blanco-negro giro a la derecha y vuelvo a leer sensores Si he ledo blanco-blanco giro a la izquierda y vuelvo a leer sensores

Diagramas de Flujo

Representacin grfica de los detalles algortmicos del proceso multifuncional interno. A continuacin se presenta un diagrama general sobre las decisiones que toma el robot en determinados casos.

1. Diagrama de Flujo general

2. Diagrama de Flujo Especfico: Programa para curvas cerradas

Funciones

Subrutinas

3. Diagrama de Flujo Especfico: Programa para circuito de alta velocidad

Funciones

Subrutinas

Lenguaje y Programa

En esta etapa incluiremos los comandos utilizados en la programacin, configuracin del microcontrolador, as mismo, como est claro, el programa se escribe en ensamblador orientado a microcontroladores.

Hemos desarrollado dos programas, cada uno, orientado al tipo de circuito que deber recorrer el robot, primeramente presentamos el programa que sirve para recorrer circuitos con curvas pronunciadas, en dicho programa, se tiene una serie de retardos de activacin especficos para cada caso, ya que la precisin con la que el robot pueda detectar las curvas depender de la velocidad que tome cada curva.

; **** Encabezado ****listp=16f690#include__CONFIG _XT_OSC & _WDT_OFF & _PWRTE_OFF & _MCLRE_ON & _CP_OFF & _BOR_OFF & _IESO_OFF & _FCMEN_OFF

CONTADOR EQU 0x10

org 0 ;Aqu comienza el micro gotoInicio ;Salto a inicio de mi programa org 5

Inicio bcf STATUS,RP0 ;Banco 2 bsf STATUS,RP1 ; clrf ANSEL ;Digital I/O, AN0-AN7 Dehabilitado clrf ANSELH ;Digital I/O, AN8-AN11 Deshabilitado

bsf STATUS,RP0 ;Banco 1 bcf STATUS,RP1 ; clrf TRISB ;Puerto B como salida clrf TRISC ;Puerto C como salida movlw 0x87 ;PORTA/PORTB pull-ups estn deshabilitadas, Usa TMR0 como temporizador y usa prescaler 1:256 movwf OPTION_REG

bcf STATUS,RP0;Banco 0 clrf PORTA ;Inicializa PORTA en 0 clrf PORTB ;Inicializa PORTB en 0 clrf PORTC ;Inicializa PORTC en 0

Bucle movf PORTA,0 andlw b'00000011' xorlw b'00000010' btfsc STATUS,Z goto Derecha

movf PORTA,0 andlw b'00000011' xorlw b'00000001' btfsc STATUS,Z goto Adelante

movf PORTA,0 andlw b'00000011' xorlw b'00000011' btfsc STATUS,Z goto Derecha

movf PORTA,0 andlw b'00000011' xorlw b'00000000' btfsc STATUS,Z goto Izquierda goto Bucle

Adelante movlw b'00000111' movwf PORTC call Pausa3 movlw b'00000000' movwf PORTC call Pausa1 goto Bucle

Derecha movlw b'00000000' movwf PORTC call Pausa movlw b'00000110' movwf PORTC call Pausa2 movlw b'00000000' movwf PORTC call Pausa movlw b'00000110' movwf PORTC call Pausa2 movlw b'00000000' movwf PORTC call Pausa movlw b'00000110' movwf PORTC call Pausa2 movlw b'00000000' movwf PORTC call Pausa goto Bucle

Izquierda movlw b'00000101' movwf PORTC call Pausa1 movlw b'00000000' movwf PORTC call Pausa2 goto Bucle

Pausa ;Subrutina para Delay de 80ms T=(4/4M)*256*(256-100)=40ms movlw .2 movwf CONTADORreseteo movlw .100 movwf TMR0 bcf INTCON,T0IFacabo btfss INTCON,T0IF goto acabo decfsz CONTADOR,1 goto reseteo return

Pausa1 ;Subrutina para Delay de 65.28ms T=(4/4M)*256*(256-1) movlw .1 movwf TMR0 bcf INTCON,T0IFacabo1 btfss INTCON,T0IF goto acabo1 return

Pausa2 ;Subrutina para Delay de 55ms T=(4/4M)*256*(256-41) movlw .41 movwf TMR0 bcf INTCON,T0IFacabo2 btfss INTCON,T0IF goto acabo2 return

Pausa3 ;Subrutina para Delay de 45ms T=(4/4M)*256*(256-80) movlw .80 movwf TMR0 bcf INTCON,T0IFacabo3 btfss INTCON,T0IF goto acabo3 return

end

Ahora tenemos el programa que le sirve al robot, para tomar circuitos ms simples y con curvas abiertas, en dicho programa, los retardos incluidos anteriormente, se suprimen o se disminuyen, el robot ir al mximo de su velocidad, debemos tomar en consideracin que para el diseo del robot, se pens inicialmente en este tipo de circuitos, por lo que el programa anteriormente presentado es una modificacin de este segundo.

; **** Encabezado ****listp=16f690#include__CONFIG _XT_OSC & _WDT_OFF & _PWRTE_OFF & _MCLRE_ON & _CP_OFF & _BOR_OFF & _IESO_OFF & _FCMEN_OFF

org 0 ;Aqu comienza el microgotoInicio ;Salto a inicio de mi programa org 5

Inicio bcf STATUS,RP0 ;Banco 2 bsf STATUS,RP1 ; clrf ANSEL ;Digital I/O, AN0-AN7 Dehabilitado clrf ANSELH ;Digital I/O, AN8-AN11 Deshabilitado

bsf STATUS,RP0 ;Banco 1 bcf STATUS,RP1 ; clrf TRISB ;Puerto B como salida clrf TRISC ;Puerto C como salida movlw 0x87 ;PORTA/PORTB pull-ups estn deshabilitadas, Usa TMR0 como temporizador y usa prescaler 1:256 movwf OPTION_REG

bcf STATUS,RP0;Banco 0 clrf PORTA ;Inicializa PORTA en 0 clrf PORTB ;Inicializa PORTB en 0 clrf PORTC ;Inicializa PORTC en 0

Bucle movf PORTA,0 andlw b'00000011' xorlw b'00000011' btfsc STATUS,Z goto Derecha

movf PORTA,0 andlw b'00000011' xorlw b'00000001' btfsc STATUS,Z goto Adelante

movf PORTA,0 andlw b'00000011' xorlw b'00000010' btfsc STATUS,Z goto Derecha

movf PORTA,0 andlw b'00000011' xorlw b'00000000' btfsc STATUS,Z goto Izquierda goto Bucle

Adelante movlw b'00000111' movwf PORTC call Pausa movlw b'00000000' movwf PORTC goto Bucle

Derecha movlw b'00000110' movwf PORTC call Pausa movlw b'00000000' movwf PORTC goto Bucle

Izquierda movlw b'00000101' movwf PORTC call Pausa movlw b'00000000' movwf PORTC goto Bucle

Pausa ;Subrutina para Delay de 65.28ms T=(4/4M)*256*(256-1) movlw .1 movwf TMR0 bcf INTCON,T0IFacabo btfss INTCON,T0IF goto acabo return

end

Diagramas Esquemticos

En el diagrama podemos apreciar las conexiones y elementos utilizados, se observa como la seal de los sensores conectados es entregada al transistor 2N2222A y de ah al microcontrolador PIC 16F690, las decisiones tomadas segn la lgica activarn los motores, para hacerlos girar y mover el pequeo robot, para esto se utiliza el driver L293B.

Se ha implementado un circuito en la plataforma de ISIS PROTEUS, para poder desarrollar las pruebas del algoritmo y la lgica empleada en el programa del microcontrolador, en dicho circuito se ha usado pulsadores para simular los pulsos detectados por los sensores cuando se encuentran sobre una lnea negra.

Tambin se ha implementado el circuito completo (incluyendo sensores), en la plataforma de Eagle, para tambin as poder disear la placa PCB del robot.

NIVEL FSICO

El sistema mecnico est formado por dos motores de alta velocidad con caja de engranajes incluida, que controlan cada rueda, y el chasis del robot que debe ser lo ms liviano posible.

Motores

Los motores tienen que ser de corriente continua y habr que fabricarles una reductora si no disponen de ella para mover las ruedas, cuando ms grandes sean las ruedas, ms velocidad alcanzara el robot, aunque no hay que pasarse con el dimetro de estas porque si no en las curvas se saldr de trayectoria.

Lo motores con caja reductora le otorgan a nuestro velocista la fuerza necesaria y rapidez para poder realizar su recorrido. Estos los encontramos en los carritos de juguete, donde est el motor acompaado de un juego de engranajes.

Llantas

Las ruedas son otro elemento muy importante de nuestros robots, por lo que la eleccin la debemos hacer con cuidado. Podemos tener unos motores muy potentes, pero si las ruedas no son las adecuadas, el robot no se mover como queremos.Una rueda de dimetro grande proporcionar al robot mayor velocidad, ya que por cada vuelta de la rueda el robot avanzar mucha distancia. Pero al mismo tiempo levantar mucho al robot del suelo, por lo que el centro de gravedad quedar ms alto, hacindolo ms inestable al tomar las curvas. Por el contrario, una rueda con dimetro menor proporcionar menos velocidad, pero el robot ir ms cerca del suelo, y por lo tanto ser ms estable.La locomocin del robot se realiza de forma de triciclo utilizando dos ruedas fijas de plstico y una rueda libre que se adapta al movimiento de los motores.

Diseo de la placa PCB

Luego de tener el circuito esquemtico en Eagle, se ha trasladado el diseo al rea de trabajo del diseador de PCB que ofrece Eagle, por lo que se ha tenido que modificar el esquemtico mostrado anteriormente para poder colocar las borneras respectivas para los motores, bateras, sensores.

Aunque la idea original consista en poder implementar el robot en una sola pieza, es decir que el chasis sea de la misma fibra de vidrio que contiene al circuito, se opt por hacer el circuito en una placa separada, ya que se podran realizar modificaciones en la posicin de los sensores, adems de que el costo por dicho material se incrementara. La placa ser sujetada en un segundo nivel, por encima de las bateras y los motores.

El diseo anterior, se bas en la forma que tendr el robot, ya que el chasis del robot presenta una forma trapezoidal, con una forma alargada hacia adelante, se tom como referencia el siguiente modelo:

Estructura del Carro (Chasis)

Para hacer el chasis lo ms ligero posible tenemos que elegir cuidadosamente el material con el que lo fabricaremos. Tiene que ser un material resistente pero ligero, y a ser posible que sea fcil de mecanizar.

La base del carro est hecha de acrlico, para as tener la facilidad de darle la forma que deseemos al carro.

Todos los robots velocistas tienen una forma parecida: en la parte trasera, donde est la traccin del robot, se sita la electrnica y la batera, mientras que los sensores que detectan la lnea negra se encuentran en la parte delantera, unida al cuerpo del robot mediante un largo brazo. Esto se hace as para que haya una cierta distancia entre los sensores y los motores, de forma que el robot "vea" antes las curvas del circuito y se pueda anticipar a ellas.

Ya hemos visto que nuestro robot debe tener un brazo, pero cul es la longitud adecuada del brazo? Eso depende, cuanto ms largo sea el brazo, mayor ser la separacin entre sensores y motores, por lo que podr anticiparse mejor a las curvas. Pero si la curva es muy cerrada, un brazo demasiado largo puede hacer que no tome la curva correctamente. Por tanto,el tamao del brazo depender del tipo de circuito que tenga que recorrer nuestro robot.Cuanto ms cerradas sean las curvas, ms corto debera ser el brazo.

ARMADO DEL ROBOT

Hay muchos factores que se deben tener en cuenta:el peso, la distribucin del peso, la separacin de las ruedas, la altura del chasis con respecto al suelo, etc. Todos estos factores van a influir en el movimiento del robot, en la manera en que toma las curvas y sale de ellas.

No vamos a basar en tres reglas bsicas:

El chasis tiene que ser lo ms ligero posible. Alejar los sensores del eje de traccin del robot.Esto permitir al robot "ver" con antelacin cmo es el circuito, detectar las curvas antes de que llegue a ellas,anticiparse a las curvas. Conseguir que el centro de gravedad del robot se site en el eje de los motores.De esta forma tendremos lamxima tracciny estabilidad en las curvas, lo que nos permitir aumentar la velocidad del robot.

El motor y engranes que se hayan utilizado deben ser efectivos, pues estos son partes ideales y perfectas para la locomocin del prototipo, el torque y las revoluciones harn y transportarn de buena manera el robot.

Los sensores irn dispuestos mirando al suelo y a unos 2 o 3 mm de separacin desde el suelo a la superficie del sensor y la separacin entre ambos sensores ser para que quede uno dentro de la lnea negra y otro en la lnea blanca, ya que as es como vamos a seguir la trayectoria.

FOTOS DEL PROYECTO

Primera versin del circuito: Se implement en protoboard, para poder comprobar que los sensores funcionaban correctamente, aunque en la foto no se ve muy claro, el circuito se encuentra en la parte superior derecha, ya que por falta de protoboard, se comparti el espacio disponible con otro proyecto.

Segunda versin del circuito: Se pudo pasar a limpio el circuito anterior y se pudo armar de forma ordenada el circuito casi total, en esta versin, fue donde nos dimos cuenta que nos hara falta dos fuentes de alimentacin independientes: una para la parte de control y otra para la parte de potencia, ya que las bateras con las que contamos no eran lo suficientemente poderosas, como para alimentar todo el circuito.

Tercera versin del circuito: Esta es la versin casi final, donde ya se ha implementado el circuito en placa PCB, para su futuro montaje en el chasis.

Cuarta versin del proyecto: En esta versin, ya se contaba con la mayora de las partes ensamblada en el robot, aqu pudimos realizar las primeras pruebas reales del algoritmo de control y la relacin con el nivel fsico, ya sea la distancia de los sensores, la nivelacin de la altura de la parte frontal del robot, el radio de giro, los factores que influyen en el sensado, etc.

Quinta versin del proyecto: En esta versin final, se ha colocado los sensores en una posicin estratgica, para que el robot pueda detectar correctamente las curvas hacia la derecha, tambin se ha reducido su velocidad para que pueda lograr la deteccin de la lnea en dichas curvas, adems de colocarle el ball caster, para reducir la friccin entre la parte frontal y el suelo.

CONCLUSIONES

Durante el diseo de nuestro robot fue necesario hacer diversas pruebas, como la simulacin para poner a prueba tanto el circuito base como el programa ensamblador; as mismo se necesit hacer pruebas en pista para determinar si el velocista en conjunto funcionaba de forma correcta.

El funcionamiento general del robot es adecuado, sin embargo, se puede optimizar su funcionamiento cambiando algunos aspectos de su programacin, utilizando materiales ms ligeros en su estructura para reducir efectos inerciales y hasta reducir su tamao, dependiendo de cun cerradas sean las curvas de la pista.

Los motores son un factor decisivo en el montaje puesto que son los que mueven toda la estructura, deben tener una buena potencia, pero tambin deben cumplir con condiciones de consumo y peso que no los hagan inoperantes a la hora de su uso.

En el proceso del diseo, a pesar que se tuvo varias limitaciones, como las de no poder usar ms caractersticas de las que ofrece el PIC16F84A, se trat de lograr el mejor desempeo de los sensores, ya que si no se hubiesen considerado dichas limitaciones, se hubiera hecho grandes mejoras en el diseo, ya que en competencias internacionales, se usan los mdulos de ADC (Analog to Digital Converter), CCP (Capture Compare PWM) y en algunos casos los de transmisin serial (USART) de forma inalmbrica.Comparar con 4 valores

Seleccionar una opcin

Leer puerto A

Generar seal respectiva en el puerto C

Retardo

Inicio

Configuracin de puertos

Asignar CONTADOR = 0x10

Z == 1

Seleccionar ProcesadorP=16F690

Leer PORTA

W AND 00000011

Ir a inicio

Incluir Librera P16F690.INC

No

Apagar todas las entradas analgicas

Si

Ir a Derecha

Inicio

Usar oscilador de cristalActivar MCLRApagar WDT

Seleccionar Banco 2

Seleccionar Banco 1

Puerto A como entradaPuerto B como salidaPuerto C como salidaConfigurar OPTION_REG: Usar TMR0 como temporizador con prescaler 256

Limpiar puertos

W XOR 00000010

Seleccionar Banco 0

W XOR 00000001

Leer PORTA

W AND 00000011

Z == 1

No

Si

Ir a Adelante

W XOR 00000011

Leer PORTA

W AND 00000011

Z == 1

No

Si

Ir a Derecha

W XOR 00000000

Leer PORTA

W AND 00000011

Z == 1

No

Si

Ir a Izquierda

Puerto C = 00000111

Adelante

Llamar a Pausa3

Llamar a Pausa1

Limpiar Puerto C

Derecha

Llamar a Pausa

Limpiar Puerto C

Puerto C = 00000110

Llamar a Pausa2

Ir a Bucle

Llamar a Pausa

Limpiar Puerto C

Ir a Bucle

Puerto C = 00000110

Llamar a Pausa2

Llamar a Pausa

Limpiar Puerto C

Puerto C = 00000110

Llamar a Pausa2

Llamar a Pausa

Limpiar Puerto C

Izquierda

Llamar a Pausa1

Puerto C = 00000101

Limpiar Puerto C

Llamar a Pausa2

Ir a Bucle

T0IF = 0

CONTADOR = 2

TMR0 = 100

CONTADOR = CONTADOR - 1

T0IF == 1

No

Si

Z == 1

No

Pausa

Si

Retornar

T0IF = 0

T0IF = 0

T0IF == 1

No

Si

T0IF == 1

TMR0 = 1

No

Pausa1

Si

TMR0 = 41

Retornar

Pausa2

Retornar

T0IF = 0

T0IF == 1

No

Si

TMR0 = 41

Pausa2

Retornar

Z == 1

Seleccionar ProcesadorP=16F690

Leer PORTA

W AND 00000011

Ir a inicio

Incluir Librera P16F690.INC

No

Apagar todas las entradas analgicas

Si

Ir a Derecha

Inicio

Usar oscilador de cristalActivar MCLRApagar WDT

Seleccionar Banco 2

Seleccionar Banco 1

Puerto A como entradaPuerto B como salidaPuerto C como salidaConfigurar OPTION_REG: Usar TMR0 como temporizador con prescaler 256

Limpiar puertos

W XOR 00000010

Seleccionar Banco 0

W XOR 00000001

Leer PORTA

W AND 00000011

Z == 1

No

Si

Ir a Adelante

W XOR 00000011

Leer PORTA

W AND 00000011

Z == 1

No

Si

Ir a Derecha

W XOR 00000000

Leer PORTA

W AND 00000011

Z == 1

No

Si

Ir a Izquierda

Puerto C = 00000111

Adelante

Llamar a Pausa

Llamar a Pausa

Limpiar Puerto C

Derecha

Puerto C = 00000110

Limpiar Puerto C

Ir a Bucle

Llamar a Pausa

Puerto C = 00000101

Limpiar Puerto C

Ir a Bucle

Ir a Bucle

Izquierda

T0IF = 0

T0IF == 1

No

Si

TMR0 = 1

Pausa

Retornar