Carrito Seguidor de Linea

44
REPORTE PROYECTO DE INGENIERÍA EN ELECTRÓNICA I y II CARRITO EV ASOR DE OBSTACULOS”  UNIVERSIDAD AUTÓNOMA METROPOLITANA Unidad Iztapalapa Fecha de elaboración: Martes, 16 de Enero de 2007. - 1 - UNIVERSIDAD AUTÓNOMA METROPOLITANA IZTAPALAPA DIVISIÓN DE CIENCIAS BÁSICA E INGENIERÍA  INGENIERÍA EN ELECTRONICA Proyecto Final d e Ingeniería en ele ctrónica “ CARRITO EVASO R DE OBSTACULOS”  Asesor: Mauricio López Villaseñor Elaboraron:   Pablo Artur o Barragán Chávez  Ricardo Flores Hernández  Cesar David Salazar García Visto bueno por asesor

Transcript of Carrito Seguidor de Linea

  • REPORTE PROYECTO DE INGENIERA EN ELECTRNICA I y II CARRITO EVASOR DE OBSTACULOS

    UNIVERSIDAD AUTNOMA METROPOLITANA Unidad Iztapalapa

    Fecha de elaboracin: Martes, 16 de Enero de 2007. - 1 -

    UNIVERSIDAD AUTNOMA METROPOLITANA IZTAPALAPA

    DIVISIN DE CIENCIAS BSICA E INGENIERA

    INGENIERA EN ELECTRONICA

    Proyecto Final de Ingeniera en electrnica

    CARRITO EVASOR DE OBSTACULOS

    Asesor: Mauricio Lpez Villaseor

    Elaboraron: Pablo Arturo Barragn Chvez Ricardo Flores Hernndez Cesar David Salazar Garca

    ______________________

    Visto bueno por asesor

  • REPORTE PROYECTO DE INGENIERA EN ELECTRNICA I y II CARRITO EVASOR DE OBSTACULOS

    UNIVERSIDAD AUTNOMA METROPOLITANA Unidad Iztapalapa

    Fecha de elaboracin: Martes, 16 de Enero de 2007. - 2 -

    INDICE

    Introduccin.3

    Planteamiento del proyecto ..4

    Descripcin general de la solucin del problema y construccin

    del carrito evasor de obstculos ...5

    Solucin del problema por Hardware 10

    Solucin del problema por Software .16

    Conclusiones .42

    Bibliografa 44

  • REPORTE PROYECTO DE INGENIERA EN ELECTRNICA I y II CARRITO EVASOR DE OBSTACULOS

    UNIVERSIDAD AUTNOMA METROPOLITANA Unidad Iztapalapa

    Fecha de elaboracin: Martes, 16 de Enero de 2007. - 3 -

    INTRODUCCIN Desde la invencin del circuito integrado, el desarrollo constante de la electrnica digital ha dado lugar a dispositivos cada vez ms complejos. Entre ellos los microprocesadores y los microcontroladores, los cuales son bsicos en las carreras de ingeniera electrnica. Los microcontroladores se utilizan en circuitos electrnicos comerciales desde hace unos aos de forma masiva, debido a que permiten reducir el tamao y el precio de los equipos. Un ejemplo de stos son los telfonos mviles, las cmaras de video, la televisin digital, la transmisin por satlite y los hornos de microondas. Pero hasta hace poco tiempo, para el aficionado a la electrnica resultaba poco menos que imposible incluirlos en sus montajes por diversas razones: alto precio, complejidad de los montajes y, principalmente, por la escasez y el alto precio de las herramientas de software. El los ltimos aos se ha facilitado enormemente el trabajo con los microcontroladores al bajar los precios, aumentar las prestaciones y simplificar los montajes, de manera que en muchas ocasiones merece la pena utilizarlos en aplicaciones donde antes se utilizaba lgica discreta. Diversos fabricantes ofrecen amplias gamas de microcontroladores para todas las necesidades. Pero sin duda, hoy en da los microcontroladores ms aceptados para diseos profesionales son los microcontroladores PIC fabricados por Microchip Technology Inc, que recientemente se anunciaba como el mayor fabricante del mundo de microcontroladores de 8 bits. En este auge ha influido decisivamente la poltica de Microchip al ofrecer la documentacin y todo el software necesario de manera gratuita en su pagina Web www.microchip.com Esto, junto con otras cuestiones tcnicas, han hecho que hoy en da resulte muy fcil incluir los microcontroladores PIC no solo en los diseos de los aficionados a la electrnica, sino tambin en complejos sistemas digitales. Muchas de estas aplicaciones son sobre el control de servomecanismos tales como brazos mecnicos y robots en general. En este proyecto se implementa un carrito evasor de obstculos usando estos microcontroladores PIC. Adems, en este reporte se intenta que el lector logre entender de manera sencilla los pasos en la implementacin del carrito evasor de obstculos y obtenga un panorama de la programacin utilizada en estos dispositivos electrnicos Se pretende explicar de manera concreta el funcionamiento de algunos microcontroladores, en nuestro caso utilizamos los microcontroladores Pic16F84 y Pic16F877, aunque cabe mencionar que si se comprende a fondo un microcontrolador en particular, los dems pueden aprenderse con facilidad partiendo de la estructura de los mencionados. La forma en la que se estructuran los temas en este reporte es de tal manera que el lector entienda con claridad los procedimientos que se llevaron a cabo para implementar el carrito evasor de obstculos, usando como microcontrolador los PICs, mostrando los detalles electrnicos de la circuiteria y la programacin, para mejoras y modificaciones futuras que el lector quisiese implementar.

  • REPORTE PROYECTO DE INGENIERA EN ELECTRNICA I y II CARRITO EVASOR DE OBSTACULOS

    UNIVERSIDAD AUTNOMA METROPOLITANA Unidad Iztapalapa

    Fecha de elaboracin: Martes, 16 de Enero de 2007. - 4 -

    PLANTEAMIENTO DEL PROYECTO Se desea desarrollar un carrito que sea controlado por un microcontrolador PIC, mediante el uso de diferentes dispositivos electrnicos, tales como sensores, motores de corriente directa, etc. El objetivo principal del carrito es evadir obstculos que se encuentren enfrente de su trayectoria de movimiento. Para ello, el microcontrolador que controla el carrito, utilizar un sensor de donde obtendr lecturas, no solo de la trayectoria de movimiento, sino que tambin de otros ngulos para tener opciones para decidir el cambio de la trayectoria para evadir el obstculo. La solucin a la problemtica planteada en los prrafos anteriores se puede dividir en hardware y en software, cada una de estas soluciones se menciona en los siguientes apartados, pero antes se menciona una descripcin general del proceso de solucin y construccin del carrito.

  • REPORTE PROYECTO DE INGENIERA EN ELECTRNICA I y II CARRITO EVASOR DE OBSTACULOS

    UNIVERSIDAD AUTNOMA METROPOLITANA Unidad Iztapalapa

    Fecha de elaboracin: Martes, 16 de Enero de 2007. - 5 -

    DESCRIPCIN GENERAL DEL PROCESO DE SOLUCIN Y CONSTRUCCIN DEL CARRITO En el planteamiento de la construccin de este robot se consideraron los siguientes puntos:

    Nivel fsico: comprende la estructura fsica, las unidades motoras, y las etapas de potencia. Nivel de reaccin: esta formado por el conjunto de sensores y los sistemas bsicos para su

    manejo. Nivel de inteligencia: abarca la planificacin a largo plazo.

    Para llegar al modelo final del robot se paso por un proceso de experimentacin, ya que se probaron diferentes carroceras y diferentes tipos de motores. La primer prueba que se hizo como parte del proceso de experimentacin fue hacer un seguidor de lnea en el que se utiliz el PIC 16F84, el cual controlaba las seales emitidas por dos sensores de infrarrojos modelo CNY-70 (figura 3), los cuales emiten luz infrarroja que es absorbida por el color negro, esto considerado como un 0 binario, y la luz infrarroja en el color blanco es reflejada a la base del fototransistor de los sensores que es considerado como 1 binario. Este seguidor de lnea tiene un funcionamiento sencillo, el cual consiste en que si sobre una superficie blanca dibujamos un circuito negro con curvas y rectas, ste seguidor de lnea deber de seguir el camino sin desviarse de la lnea negra. La eleccin de los colores es obvia, el blanco y el negro tienen unas caractersticas especiales a la hora de reflejar luz que no la tienen otros colores.

    La construccin del seguidor de lnea nos dejo un primer acercamiento tanto en la programacin del PIC, como la utilizacin de motores de DC. Este conocimiento adquirido fue de gran utilidad para llegar al objetivo final, o sea obtener un robot evasor de obstculos.

    Debido a que el objetivo de este reporte es explicar el software y el hardware del robot evasor de obstculos, se omiten tanto el programa que se grabo en el PIC 16F84 como el procedimiento para la construccin fsica del seguidor de lnea. Despus de contar con la experiencia obtenida en la realizacin del seguidor de lnea pasamos a la elaboracin del robot. La primera carrocera del robot fue la de un carrito de control remoto. Lo nico que usamos de l fue su chasis y sus motores, pues se desactivo el circuito de control remoto. Este carrito tena dos motores de DC. El motor posterior controlaba la traccin en tanto que el motor frontal se encargaba de hacer girar las llantas delanteras de izquierda a derecha y viceversa para poder girar. El control de este carrito fue relativamente sencillo ya que para hacerlo avanzar solo s tenia que activar el motor de traccin. Sin embargo para controlar sus giros se diseo un algoritmo que consista en una secuencia de 5 pasos. Esta secuencia es como sigue: primero se activa el motor frontal para hacer girar las llantas delanteras hasta un extremo, luego se activaba el motor de traccin para que el carro retroceda una distancia determinada, a continuacin las llantas delanteras se hacen girar hasta el otro extremo y despus el carro debe avanzar cierta distancia, y por ultimo se manda la instruccin de que por medio de un cierto tiempo de activacin del motor frontal se centren las llantas. Es importante mencionar que al trmino de esta secuencia el carro gira aproximadamente 20. De esta forma, dependiendo del nmero de grados que se quera que el carro girara se repeta esta secuencia el nmero de veces necesario. Como se pretenda tener un carro evasor de obstculos se pens en colocar varios sensores que indicaran si el carro poda seguir avanzando o no. Despus se llego a la conclusin de que solo s necesitara un solo sensor, pues si se montaba en un motor entonces s poda hacer un barrido de 180 para determinar si el carro tenia una posible salida. Pero si no encontraba una salida

  • REPORTE PROYECTO DE INGENIERA EN ELECTRNICA I y II CARRITO EVASOR DE OBSTACULOS

    UNIVERSIDAD AUTNOMA METROPOLITANA Unidad Iztapalapa

    Fecha de elaboracin: Martes, 16 de Enero de 2007. - 6 -

    entonces se le indicara al motor que moviera el sensor hacia atrs y de esta forma poder medir la distancia trasera y saber cuanto poda retroceder el carro, o en su defecto si no haba distancia suficiente no se movera hacia atrs. El primer resultado que se obtuvo fue relativamente satisfactorio. El inconveniente que se presento fue que el carro pesaba mucho y que su consumo de corriente era elevado. Adems como para poner las llantas delanteras al centro se le indicaba al motor frontal que girara un cierto tiempo, entonces al irse descargando las bateras que alimentaban al circuito las llantas ya no quedaban centradas. Esto suceda por que a menor corriente el motor giraba ms despacio y entonces se necesitaba ms tiempo para que las llantas quedaran centradas. Un factor que determino el elevado consumo de corriente fue el peso del carro. Adems de que el carro no hacia 100% lo solicitado, otro factor para decidir cambiar de carro fue el consumo de energa, pues como ya se menciono el gran peso del carro hacia que se acabaran mas rpido las pilas. Esto por supuesto no es rentable. Para solucionar este problema se resolvi cambiar de carrocera y de motores. Ahora la carrocera tena que ser menos pesada y de tamao lo ms pequeo posible. En cuanto a los motores se pens en aquellos que estn montados en un mecanismo de engranes y que hace que tengan un mejor torque. Adems los motores deban consumir poca corriente. As pues, despus de una bsqueda algo tediosa se pudo conseguir el material requerido. Los motores adquiridos fueron tres motoreductores de poco consumo de corriente y de relativamente buen torque. Sin embargo la velocidad de stos no es buena, ya que dos de ellos tienen a penas 42 RPM y el otro 30 RPM. El precio de este tipo de motores es bajo si los comparamos con los servomotores. La nueva estructura del robot fue de triciclo, o sea de tres llantas. Dos llantas se pusieron al frente y una atrs. Cada llanta delantera tiene un motor. La llanta trasera es loca y se usa para que el robot tenga un movimiento libre, es decir cuando los dos motores se ponen en marcha al mismo tiempo el carro se debe ir en lnea recta y cuando se quiera que gire, la llantita trasera debe seguir el movimiento. En la figura 1D se ve el robot.

    Fig. 1D Robot evasor de obstculos.

    El inconveniente que s pens que poda presentarse fue tener motores con una marcada diferencia en sus revoluciones, lo cual provocara que el robot no avanzara en lnea recta. Sin

  • REPORTE PROYECTO DE INGENIERA EN ELECTRNICA I y II CARRITO EVASOR DE OBSTACULOS

    UNIVERSIDAD AUTNOMA METROPOLITANA Unidad Iztapalapa

    Fecha de elaboracin: Martes, 16 de Enero de 2007. - 7 -

    embargo los motores que se consiguieron tienen casi el mismo nmero de revoluciones y con un adecuado torque. La primera base del carro fue de plstico delgado, pero al colocar los motores y el circuito la base se pandeo. Por lo que se opto por cambiar la plataforma. El nuevo material de sta fue de madera delgada, obteniendo una mayor estabilidad y una mejor facilidad para trabajar con ella, pues si se requiere hacer una perforacin o poner algn aditamento especial es ms cmodo. Al montar todo en su sitio y hacer las pruebas correspondientes se presento el problema de que la llanta loca no giraba correctamente provocando que el robot no se desplazara en lnea recta, esto debido al tipo de superficie en la cual se realizaron las pruebas. Para resolver este inconveniente se consigui una llanta loca con diferentes caractersticas, entre las que destacan un menor tamao, menor peso y mejor juego. El mecanismo para mover el sensor analgico fue el mismo que se utilizo en el primer robot, es decir, el sensor se acoplo en un motor de DC. La figura 2D muestra al sensor montado en el motor. de DC.

    Fig. 2D Sensor analgico montado en motor de DC.

    Comparando a nivel software los dos carritos bsicamente tienen el mismo programa, lo nico que cambia es la parte donde se manda que el robot busque la salida, pues como ya se menciono el primer carro utiliza una secuencia de 5 pasos para poder girar, en tanto que el segundo gira al hacer funcionar un motor en un sentido y el otro en sentido opuesto. El programa que se grabo en el PIC 16F877 es el encargado de que el robot no choque, evada obstculos y tome la mejor decisin para evadirlos. El PIC 16F877 se encarga de recibir informacin del exterior y procesarla, sin embargo la forma en como se procesa esta informacin depende de la lgica del diseo del programa. Para resolver un problema mediante la programacin existen distintas formas o modos de solucionarlo. Sin embargo el programa que se realizo cumple con lo siguiente:

  • REPORTE PROYECTO DE INGENIERA EN ELECTRNICA I y II CARRITO EVASOR DE OBSTACULOS

    UNIVERSIDAD AUTNOMA METROPOLITANA Unidad Iztapalapa

    Fecha de elaboracin: Martes, 16 de Enero de 2007. - 8 -

    Fcilmente comprensible para quien pretenda leerlo. Obtiene resultados de forma rpida. Ocupar la menor memoria posible. El programa esta subdividido en programas ms elementales, es decir el programa es

    modular.

    De esta forma el programa tiene la estructura de un programa principal y de subrutinas. El programa principal utiliza subrutinas, que a su vez realizan tareas especficas y dan resultados rpidos. Cada subrutina puede usar o no otras subrutinas. Por ejemplo, las subrutinas de retardo son muy usadas por otras subrutinas que realizan ciertas tareas. De manera general el programa realiza lo siguiente: Como primer movimiento el sensor analgico GP2Y0A21YK, que esta montado en un motor de DC, gira a la derecha. Este primer movimiento es importante ya que sirve como un punto de referencia, pues si por algn motivo en cualquier instante el robot se queda sin energa o se resetea, no importar donde quede posicionado el sensor por que al reiniciarse la secuencia el sensor primero busca su punto de referencia. Este prrafo explica el mecanismo y la lgica que se uso para montar el sensor en el motor. Como ya se menciono el sensor busca cuatro puntos: derecha, centro, izquierda y atrs. Para lograr esto se fabrico una placa pequea, en la cual hay dispuestos cuatro conductores de cobre, uno en cada lado de la placa. Esta primer placa esta sujeta al bastidor del motor B02 1:280. Una segunda placa se monto en el eje del motor; de esta forma cuando el motor gira tambin lo hace la placa. La placa que esta montada en el eje dispone de un pequeo arco metlico que esta orientado hacia abajo. Este arco esta polarizado con un voltaje de 5v. De esta forma cuando se hace girar el motor van haciendo contacto el arco metlico con los conductores de cobre. Esta situacin provoca que se cierre un circuito y que se polarice cada uno de los conductores, que a su vez estn conectados al PIC 16F877. Tomando como referencia el frente del carrito se tiene lo siguiente: los conductores derecho, centro, izquierdo y trasero estn conectados a los bits RC4, RC5, RC6 Y RC7 respectivamente. De esta forma cuando el PIC recibe un voltaje alto (5v) en estos bits se realiza una tarea determinada. En la figura 3D se muestra el mecanismo que hace girar al sensor.

    Fig. 3D Mecanismo para mover sensor analgico

    La figura 4D muestra un esquema de conexin de los conductores de cobre con los bits correspondientes en el PIC.

  • REPORTE PROYECTO DE INGENIERA EN ELECTRNICA I y II CARRITO EVASOR DE OBSTACULOS

    UNIVERSIDAD AUTNOMA METROPOLITANA Unidad Iztapalapa

    Fecha de elaboracin: Martes, 16 de Enero de 2007. - 9 -

    Centro

    RC5 Izquierda Derecha RC6 RC4 RC7 Atrs

    Fig. 4D Placa con cuatro conductores de cobre

    Despus se debe posicionar el sensor analgico al centro, es decir en la posicin que mida hacia el frente del carrito. Si la distancia que el sensor mide es mayor a 20cm el carrito empieza a moverse. La velocidad con la que se mueve aumenta cuando el sensor mide que hay espacio libre mayor a 80cm. De esta forma el robot continua avanzando hasta que el sensor detecta que hay un obstculo a una distancia aproximada de 80cm. Cuando esto pasa el carrito disminuye su velocidad y se aproxima al obstculo hasta que se detiene a una distancia de ms o menos 20cm. Cundo el carrito esta frente al obstculo, el sensor empieza un barrido de 180 empezando desde la derecha y finalizando en la izquierda. Este barrido es muy importante ya que es cuando se hacen las lecturas de las distancias. Cada lectura se da cada medio segundo. Al finalizar este barrido se lee el registro de salidas para saber si hay o no una salida. Si existe una salida el carrito gira hasta encontrarla. Despus se vuelve a repetir la secuencia desde el principio, esto es, el sensor busca su punto de referencia luego el centro, etc. En caso de que no exista una salida al frente, el sensor se mueve hacia atrs para medir si hay distancia libre para que el robot retroceda. Si el robot puede retroceder, se mueve aproximadamente 20cm hacia a tras, luego el sensor nuevamente empieza el barrido para saber si hay o no salida al frente o a los lados. En caso de que el carro no pueda retroceder se quedara parado, por que no hay salida ni enfrente ni atrs. En esta situacin, para que el robot se mueva uno de los obstculos debe quitarse. Es importante aclarar que el robot no esta capacitado para trabajar en un contorno de laberinto. Un punto importante que debe resaltarse es que cuando el robot encuentra un obstculo debe decidir cual es la mejor trayectoria de movimiento. Es decir, si el carrito queda mas a la derecha del obstculo y a pesar de que a al izquierda de ste tambin haya salida, debe girar a la derecha porque es la trayectoria de movimiento ms corta. La figura 5D ejemplifica esta situacin.

  • REPORTE PROYECTO DE INGENIERA EN ELECTRNICA I y II CARRITO EVASOR DE OBSTACULOS

    UNIVERSIDAD AUTNOMA METROPOLITANA Unidad Iztapalapa

    Fecha de elaboracin: Martes, 16 de Enero de 2007. - 10 -

    Mejor trayectoria de movimiento Trayectorias de movimiento 30

    Fig. 5D Situacin en la que el robot debe decidir la mejor trayectoria de movimiento En esta figura se aprecia que cada 30 se hace una lectura. De esta forma se realizan un total de siete lecturas. A dems se muestra que a pesar de que tambin hay salidas a la derecha y a la izquierda, la ms conveniente es la que se encuentra ms cercana al obstculo, por que el robot no tiene que girar mucho para evadir el objeto. SOLUCIN POR HARDWARE Para solucionar el problema de Hardware (mencionados anteriormente) se tuvo que elegir minuciosamente el material (componentes electrnicos y motores) de acuerdo a las necesidades del carrito evasor de obstculos, basndonos en sus caractersticas tcnicas. Los materiales utilizados se mencionan a continuacin: Material utilizado:

    - 1 PIC 16F84 - 1 PIC 16F877 - 2 Sensores infrarrojos CNY- 70. - 2 motoreductores modelo B02 1:280 - 1 motorreductor modelo B01 1:200 - 1 sensor analgico Sharp modelo GP2Y0A21YK - 2 Drivers L293D - 3 Reguladores de voltaje LM7805 - 1 Cristal a 4Mhz con dos capacitores de 22pF

    Robot

    Obstculo

  • REPORTE PROYECTO DE INGENIERA EN ELECTRNICA I y II CARRITO EVASOR DE OBSTACULOS

    UNIVERSIDAD AUTNOMA METROPOLITANA Unidad Iztapalapa

    Fecha de elaboracin: Martes, 16 de Enero de 2007. - 11 -

    Especificaciones del material: PIC16F84 PIC16F87 Memoria programa 1k X 14 8 Kbytes Memoria de datos EEPROM 64 bytes 256 bytes

    Memoria de datos Ram 68 bytes 368 bytes Instrucciones 35 35 Interrupciones 4 14

    Entradas / Salidas 13 33 Terminales 18 40

    Frecuencia maxima 10 Mhz 20 Mhz Timer / Contador 8 bits 3 Timers 2 de 8 bits 1 de 16 bits Convertidos A/D No Si Canales PWM No 2

    Figura 2. Diagrama del PIC16F877. Figura 1. Diagrama del PIC16F84. Sensor infrarrojo CNY- 70. El CNY70, que se muestra en la figura 3, es un 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. Caractersticas: La construccin compacta con distancia de centro-a-centro de 0.1 ' (pulgadas) No necesita ningn ambiente especial. Seal de salida alta. El coeficiente de temperatura bajo. Detector provista de filtro ptico. El ratio de corriente de transferencia (CTR) tpico es del 5%.

  • REPORTE PROYECTO DE INGENIERA EN ELECTRNICA I y II CARRITO EVASOR DE OBSTACULOS

    UNIVERSIDAD AUTNOMA METROPOLITANA Unidad Iztapalapa

    Fecha de elaboracin: Martes, 16 de Enero de 2007. - 12 -

    Figura 3. Sensores infrarrojos CNY-70.

    Motoreductor B02 1:280. Caractersticas a 5Vdc: - Torque 4.6 KgF*cm (cantidad de fuerza aplicada) - Velocidad 30 RPM. - Consumo de corriente sin carga (sin peso): 80 mA. - Consumo de corriente mxima: 600mA. Cuenta con una salida con eje de 5mm de dimetro y orificios para facilitar su montaje con tornillos. Medidas: 55mm X 47 mm X 22mm. Peso: 32gr. Este motoreductor, que se muestra en la figura 4, se utiliz para mover el sensor analgico modelo GP2Y0A21YK que se muestra en la figura 6.

    Figura 4. Motoreductor B02 1:280.

    Motoreductor B01 1:200 Descripcin: Motoreductor B01 1:200. Caractersticas a 5Vdc: - Torque 3.4 KgF*cm (cantidad de fuerza aplicada) - Velocidad 42 RPM. - Consumo de corriente sin carga: 80 mA. - Consumo de corriente atrancado: 600mA. Cuenta con una salida con eje de 5mm de dimetro y orificios para facilitar su montaje con tornillos. Medidas: 65mm X 22 mm X 18.5mm. Peso: 32gr.

  • REPORTE PROYECTO DE INGENIERA EN ELECTRNICA I y II CARRITO EVASOR DE OBSTACULOS

    UNIVERSIDAD AUTNOMA METROPOLITANA Unidad Iztapalapa

    Fecha de elaboracin: Martes, 16 de Enero de 2007. - 13 -

    Este motoreductor, que se muestra en la figura 5, se utiliz para mover las llantas de Cintra modelo RS65AM7 con orificio de 5mm, estas llantas se muestran en la figura 5(a).

    Figura 5. Motoreductor B01 1:200.

    Figura 5(a). Par de Ruedas de Cintra amarillo modelo RS65AM7.

    Sensor GP2Y0A21YK. Sensor de distancia analgico SHARP. Sustituto del GP2D12. Este sensor, que se muestra en la figura 6, puede determinar la distancia a la que se encuentra un objeto en un intervalo de 10 a 80 cm. Tiene un conector de tres pines: 1. Salida. Esta vara su voltaje con respecto a tierra dependiendo de la distancia a la que se encuentre el objeto o pared del sensor. 2. Tierra. 3. Vcc. El voltaje de operacin debe de ser de 4.5 v. a 5.5 vdc.

  • REPORTE PROYECTO DE INGENIERA EN ELECTRNICA I y II CARRITO EVASOR DE OBSTACULOS

    UNIVERSIDAD AUTNOMA METROPOLITANA Unidad Iztapalapa

    Fecha de elaboracin: Martes, 16 de Enero de 2007. - 14 -

    Figura 6. Sensor analgico GP2Y0A21YK.

    El L293D, que se muestra en la figura 7, es un circuito integrado o chip, que puede ser utilizado para controlar simultneamente la velocidad y direccin de dos motores de corriente continua (contine dos puentes H). Contiene 4 terminales digitales (2,7,10, 15) para controlar la direccin de los motores. Los pines "enable" (1,9) admiten como entrada una seal PWM, y se utiliza para controlar la velocidad de los motores con la tcnica de modulacin de ancho de pulso. Los motores van conectados entre uno de los pines 3, 6, 11, o 14. La tensin Vss es la que alimentar y dar potencia al motor. A continuacin se explica brevemente lo que significa PWM o Pulse Width Modulation. La modulacin de la anchura de pulsos es usada en diferentes aplicaciones, siendo las ms comunes el control de servomotores y como sistema de comunicacin. En el caso de control de servomotores el funcionamiento es como sigue; la velocidad de rotacin del motor ser funcin de la anchura del pulso. Dado que la velocidad de rotacin depende del valor medio de la tensin suministrada, cuanto ms ancho sea el pulso mayor ser el valor medio de la tensin aplicada al motor y por ende mayor velocidad de rotacin. En caso de querer disminuir la velocidad de este, solo se debe aplicar pulsos ms estrechos, los cuales darn como resultado un valor medio neto de tensin aplicada al motor menor que en el caso anterior. Para lograr estos pulsos se uso el PIC 16F877. En el programa que se grabo en el PIC se usan los registros Ciclos_ON y Ciclos_OFF para controlar la velocidad de los motores. En el registro Ciclos_ON se almacena el tiempo que el motor estar energizado, y en el registro Ciclos_OFF se guarda el tiempo que el motor estar desconectado. La salida del PIC se conecta al L293D para que se aumente la corriente y hacer que los motores funcionen. La salida del PIC se conecta al L293D para que se aumente la corriente y hacer que los motores funcionen. En la grfica 1 se ve que a mayor tiempo de activacin del voltaje alto aumenta el ciclo de trabajo; y a menor tiempo de activacin del voltaje alto el ciclo de trabajo es menor. Cuando este tipo de modulacin se aplica a un motor de DC se logra controlar su velocidad.

    Grafica 1. Modulacin PWM

  • REPORTE PROYECTO DE INGENIERA EN ELECTRNICA I y II CARRITO EVASOR DE OBSTACULOS

    UNIVERSIDAD AUTNOMA METROPOLITANA Unidad Iztapalapa

    Fecha de elaboracin: Martes, 16 de Enero de 2007. - 15 -

    Los dos motoreductorres B01 1:200. que hacen girar las llantas frontales estn conectados como lo muestra la siguiente figura.

    RB2

    RB0 RB3

    Motor llanta Motor llanta Izquierda derecha

    RB1 RB4 RB5

    Figura 7. L293D. Para hacer funcionar el motoreductor B02 1:280, que hace girar el sensor se usa otro L293D. Bsicamente se conecta igual que en la figura anterior, excepto que los bits de control cambian. El bit de habilitacin es el RC2 y los bits de control son RC0 y RC1. Cabe mencionar que de este segundo L293D solo se usa un canal. Reguladores de voltaje LM7805: En la mayora de las aplicaciones se requiere una tensin fija y estable de un determinado valor. La lnea de reguladores ideales para este tipo de necesidades es la conocida como LM78XX. Las primera letras y dos nmero corresponden a la denominacin, mientras que las dos ltimas XX deben ser reemplazados por la tensin de salida requerida, que en nuestro caso es de 5V. Cada uno de estos dispositivos posee slo tres terminales, la terminal 1 (I) corresponde a la entrada de tensin no regulada, la Terminal 2 (C ) es tierra y la terminal 3 (O) es la salida regulada. En la figura 8 se muestra en diagrama del LM7805.

    Figura 8. Regulador de voltaje LM7805.

  • REPORTE PROYECTO DE INGENIERA EN ELECTRNICA I y II CARRITO EVASOR DE OBSTACULOS

    UNIVERSIDAD AUTNOMA METROPOLITANA Unidad Iztapalapa

    Fecha de elaboracin: Martes, 16 de Enero de 2007. - 16 -

    Cristal 4Mhz: Se llama oscilador de cristal a aquel oscilador que incluye en su realimentacin un resonador piezoelctrico. El oscilador de cristal, que se muestra en la figura 9, se caracteriza por su estabilidad de frecuencia y pureza de fase, dada por el resonador. La frecuencia es estable frente a variaciones de la tensin de alimentacin. La dependencia con la temperatura depende del resonador, pero un valor tpico para cristales de cuarzo es de 0' 005% del valor a 25C, en el margen de 0 a 70C. Estos osciladores admiten un pequeo ajuste de frecuencia, con un condensador en serie con el resonador, que aproxima la frecuencia de este, de la resonancia serie a la paralela. Este ajuste se puede utilizar en los VCO para modular su salida. El VCO (Oscilador Controlado por Voltaje) es un oscilador electrnico diseado especficamente para ser controlado en frecuencia de la oscilacin por una entrada de voltaje. La frecuencia de la oscilacin vara con el voltaje de corriente continua que se aplica, mientras que las seales de modulacin se pueden alimentar en el VCO para generar la modulacin en frecuencia (FM), la modulacin en fase (PM) y la modulacin pulse width (PWM).

    Figura 9. Cristal.

    SOLUCION POR SOFTWARE La solucin por Software no fue un gran problema ya que se hizo modular (como se mencion anteriormente), haciendo subrutinas que son llamadas por el programa principal. A continuacin se describen tanto el programa principal como sus subrutinas. Esta descripcin consta de dos partes: una explicacin de lo que hace cada rutina y su diagrama de flujo correspondiente.

  • REPORTE PROYECTO DE INGENIERA EN ELECTRNICA I y II CARRITO EVASOR DE OBSTACULOS

    UNIVERSIDAD AUTNOMA METROPOLITANA Unidad Iztapalapa

    Fecha de elaboracin: Martes, 16 de Enero de 2007. - 17 -

    Programa Principal Este programa contiene las subrutinas que hacen que el carrito funcione. El orden en el cual estn dispuestas las subrutinas es muy importante, ya que si se altera el resultado ser un programa que no haga lo que debe hacer. A continuacin se menciona de manera general el funcionamiento de cada subrutina. Cuando el robot encuentra un obstculo, este se detiene y su sensor comienza a realizar un barrido de 180 para determinar las posibles direcciones de trayectoria de movimiento; como se estableci la lectura del sensor se realiza cada 30, permitindose un total de 7 lecturas. Sin embargo, para lograr esta rotacin de 30, en la implantacin del programa en el PIC, se estableci un periodo de tiempo para permitir la rotacin del motor que controla el movimiento del sensor; en la prctica se observa que es de 500ms. Este periodo de tiempo se obtiene utilizando interrupciones, con la ayuda del TIMER0, del Preescalar y de un registro llamado AumentoPreescalar. Recuerde que el mximo tiempo logrado con el TIMER0 y el preescalar es de aproximadamente 65.5ms (mximo tiempo antes del desbordamiento del TIMER0). Pero el inconveniente de usar esta interrupcion, es que sta ocurre cada cierto tiempo, no importando que actividad este realizando el robot; si el robot avanza una distancia considerable, es obvio que se cumplir el tiempo necesario para que se de la interrupcin, pero en este caso no se necesita que el sensor empiece a barrer, por que el carrito esta avanzando y no a encontrado un obstculo. Considerando que la interrupcin se da cada cierto tiempo sin importar que est haciendo el robot y que slo se requiere ejecutar la parte del algoritmo de la interrupcin que hace rotar el motor del sensor cuando el sensor est en el proceso de barrido, se usa una bandera para indicar cuando, propiamente dicho, se debe atender a sta interrupcin, es decir, a pesar de que se de la interrupcin no siempre se procede a ejecutar todo el algoritmo de la rutina de interrupcin y solo cuando se habilita la bandera, esta bandera se implementa con el bit 0 del registro AutorizaInterrupcin. El programa empieza de la siguiente forma: El bit 0 del registro AutorizarInterrupcion se pone a cero. Esto se hace para que al momento de que suceda la interrupcin no se entre a la parte importante de la subrutina que atiende la interrupcin, sino que solo se vuelva habilitar la interrupcin y continuar el proceso hasta que se llega a la parte donde empieza el barrido del sensor. La llamada de la subrutina derecha hace que el motor que controla el sensor gire a la derecha. Esto es importante porque es un punto de referencia que hace que el programa no se pierda. Cuando el motor empieza a girar se detiene cuando el conductor de cobre que se conecta al bit RC4 se polariza. Como ya se explico anteriormente esta polarizacin ocurre cundo el arco metlico que esta montado en la placa que esta sujeta al eje del motor hace contacto con el conductor correspondiente. Ya se menciono que existe una placa que esta sujeta al chasis del motor que hace girar el sensor, esta placa tiene en cada uno de sus lados un conductor (ver fig.3D) y por tanto hay cuatro conductores conectados en los bits correspondientes del PIC. La llamada de la subrutina centro hace que el motor que controla el sensor gire al centro. El motor se detiene cuando el conductor conectado al bit RC5 es polarizado. El sensor debe estar ubicado al centro para que empiece a medir si hay o no espacio libre para que el carrito avance. La subrutina avanza se encarga de que el carrito se mueva, hasta encontrar un obstculo. El registro RegistroSalidas debe limpiarse antes de que sea utilizado. Este registro almacena las posiciones donde hay una salida.

  • REPORTE PROYECTO DE INGENIERA EN ELECTRNICA I y II CARRITO EVASOR DE OBSTACULOS

    UNIVERSIDAD AUTNOMA METROPOLITANA Unidad Iztapalapa

    Fecha de elaboracin: Martes, 16 de Enero de 2007. - 18 -

    La llamada limpia_Mascara hace que el registro Mascara tome el valor de b00000001. Se empieza con este valor pues es la posicin de la primera lectura. Para la siguiente lectura la mascara deber tener el valor b00000010, y la siguiente el valor b00000100, etc. Es decir se va rotando el registro mascara en cada nueva lectura. Siguiendo el orden del Programa Principal, nuevamente a parece la llamada de subrutina derecha para que se pueda empezar el barrido de 180 a partir de la derecha. El bit 0 del registro PrimeraLectura se pone a uno para hacer la primer lectura. Se debe hacer esto por que cuando el sensor esta a la derecha es cuando se autoriza la interrupcin y entonces se necesita que pasen 500ms para hacer la primer lectura, es decir no se estara tomando lectura del extremo derecho. Pero cuando se activa el registro PrimeraLectura se garantiza que se haga una lectura en el extremo derecho. Una vez que el sensor esta colocado a la derecha se debe poner el bit 0 del registro AutorizarInterrupcion en uno para que cuando entre la interrupcin se pueda acceder a la parte del algoritmo en la cual se empieza la lectura, a intervalos de 500ms, de la distancia que hay del carrito a su alrededor y llevandose a cavo la correspondiente conversin A/D. La subrutina izquierda hace que el sensor gire hasta que llegue a la izquierda. El sensor gira hasta que el conductor conectado al bit RC6 se polariza. Hay que recordar que el sensor estaba ubicado en la derecha. De esta forma cuando el sensor llegue a la izquierda habr girado 180. En el transcurso de este barrido es cuando la interrupcin queda habilitada y por tanto se hacen las lecturas. Despus hay que volver a poner el bit 0 del registro AutorizarInterrupcion a cero para unicamente limpiar la bandera de desbordamiento de TIMER0 al entrar a la rutina de interrupcin. La subrutina LeeSalidas se encarga de preguntar si hay o no una trayectoria de movimiento. Es decir, como resultado del barrido de 180 se puede tener o no una trayectoria de movimiento. Si hay una trayectoria de movimiento se ejecuta la subrutina GiraSalida la cual permite identificar un movimiento del carrito hacia la derecha o la izquierda. Si no hay trayectoria el carro debe retroceder, este movimiento se logra con la subrutina retrocede. En la figura 10 se muestra el diagrama de flujo del programa principal.

  • REPORTE PROYECTO DE INGENIERA EN ELECTRNICA I y II CARRITO EVASOR DE OBSTACULOS

    UNIVERSIDAD AUTNOMA METROPOLITANA Unidad Iztapalapa

    Fecha de elaboracin: Martes, 16 de Enero de 2007. - 19 -

    Principal+3 Principal+4 Si No

    Fig. 10 Diagrama de flujo del Programa Principal.

    Principallll

    Call derecha

    AutorizarInterrupcion bo 0

    Call centro

    Call avanza

    Limpia_Mascara

    Call derecha

    PrimeraLectura b0 1

    AutorizarInterrupcion b0 1

    Call izquierda

    AutorizarInterrupcion b0 0

    Call LeeSalidas

    HaySalida = 0

    GiraSalida

    Retrocede CentroPorIzq

    RegistroSalidas b00000000

  • REPORTE PROYECTO DE INGENIERA EN ELECTRNICA I y II CARRITO EVASOR DE OBSTACULOS

    UNIVERSIDAD AUTNOMA METROPOLITANA Unidad Iztapalapa

    Fecha de elaboracin: Martes, 16 de Enero de 2007. - 20 -

    Subrutina: derecha Esta subrutina se encarga de mover el sensor analgico (fig. 4D), que esta montado en un motor de DC de 5v (fig. 3D), hacia la derecha. Su funcionamiento es como sigue: por medio de la subrutina Velocidad se hace girar el motor. Este motor gira hasta que encuentra un sensor (conductor de cobre). Lo que hace este sensor es mandar un voltaje alto. Entonces cuando el bit 4 del puerto C recibe un voltaje alto el motor se detiene. Se detiene por que la subrutina Velocidad se manda llamar reiterativamente siempre y cuando el bit 4 del puerto C no tenga un voltaje alto. En el Programa Principal es necesario hacer una primera llamada de esta subrutina porque la posicin del sensor no es nica. Es decir, en el momento en el cual se decida apagar el carrito la posicin del sensor puede ser cualquiera. Entonces al volver a encender el carrito se debe contar con un punto de referencia, el cual sirva para ubicar el sensor y a partir de esa posicin empezar los de ms movimientos. En el diagrama de flujo se repite el bucle de la macro Velocidad que corresponde a poner en marcha el motor que hace girar el sensor, se rompe cuando por el puerto PORTC en su bit 4 se detecta un voltaje alto. La figura 11 muestra el diagrama de flujo de esta subrutina.

    No Si

    Fig. 11 Diagrama de flujo de subrutina derecha

    Derecha

    PORTC b4 =1

    RETURN

    Macro Velocidad Ciclos_ON=9 Ciclos OFF=1

    Sentido

  • REPORTE PROYECTO DE INGENIERA EN ELECTRNICA I y II CARRITO EVASOR DE OBSTACULOS

    UNIVERSIDAD AUTNOMA METROPOLITANA Unidad Iztapalapa

    Fecha de elaboracin: Martes, 16 de Enero de 2007. - 21 -

    Subrutina: centro Esta subrutina sirve para mover el sensor analgico hacia el centro (fig. 4D). Su funcionamiento es igual que el de la subrutina Derecha, excepto que el motor se para cuando el bit 5 del puerto C recibe un voltaje alto. La figura 12 muestra su diagrama de flujo. En el Programa Principal se usa esta subrutina para posicionar el sensor analgico al centro y de esta forma poder medir si hay o no un obstculo que evite la trayectoria de movimiento hacia delante del carrito. Si no se hiciera esta llamada de subrutina el sensor tendra cualquier posicin y entonces el carro no seria capaz de determinar si tiene camino libre o no. No No Si Si

    Fig. 12 Diagrama de flujo de subrutina centro

    Centro

    PORTC b5 =1

    RETURN

    Macro Velocidad Ciclos_ON=9 Ciclos OFF=1

    Sentido

  • REPORTE PROYECTO DE INGENIERA EN ELECTRNICA I y II CARRITO EVASOR DE OBSTACULOS

    UNIVERSIDAD AUTNOMA METROPOLITANA Unidad Iztapalapa

    Fecha de elaboracin: Martes, 16 de Enero de 2007. - 22 -

    Subrutina: avanza La subrutina Avanza sirve para mover el carrito hacia delante. Sin embargo se encarga adems no solo de mover el carro sino tambin de saber cual es la distancia que hay del obstculo al carro y dependiendo de esta distancia aumentar o disminuir la velocidad. Tambin realiza la funcin de que una vez detectado un estorbo, el carro debe acercarse a l a no menos de 20cm, y una vez estando a esa distancia indicar al carro que se detenga. La justificacin de la conversin A/D que se uso en el programa fue a la derecha. La mxima velocidad se obtiene cuando no hay ningn objeto a una distancia no menor de 80cm aproximadamente. En cambio si a esta distancia se encuentra el objeto, entonces disminuye la velocidad. Hay que recordar que el sensor analgico tiene un intervalo de medicin comprendido entre 10 y 80 cm. Lo que significa que dependiendo de la distancia que cens su salida tendr un voltaje proporcional. Para que el PIC pueda trabajar con este valor es necesario pasar este voltaje por el convertidor A/D incluido en el PIC. Como el PIC utiliza 10 bits para la conversin hay dos registros (ADRESH y ADRESL) donde se almacena el resultado. Tambin hay que decidir hacia donde se quiere que se haga la justificacin del almacenamiento del resultado de la conversin. Es decir como el PIC usa 10 bits y como los registros son de 8 bits, entonces un registro almacenara 8 bits en tanto que el otro solo guardara 2 bits. Cuando se selecciona justificacin a la derecha el registro ADRESL guardara los 8 bits menos significativos de la conversin, mientras que el registro ADRESH tendr los 2 bits ms significativos. Si la justificacin es a la izquierda el registro ADRESH almacenara los 8 bits ms significativos y el ADRESL los 2 bits menos significativos. Como el objetivo es que el carro no choque, entonces conforme avanza se debe ir censando el camino. Para lograr esto se hace una llamada a la subrutina ConversionA_D, la cual toma una lectura de la distancia que esta midiendo el sensor analgico y despus hace su conversin. Como ya se menciono el resultado de esta conversin se almacena en los registro ADRESH y ADRESL. Pero por razones prcticas en el programa se vaca el contenido de estos registros en los registros ParteAlta y ParteBaja, respectivamente. Una vez que se tiene el resultado de la conversin se analiza el contenido de los registro ParteAlta y ParteBaja. Es importante aclarar que los voltajes de referencia del convertidor A/D se seleccionaron de 5v y tierra, entonces si se cuenta con 10 bits esto implica 102 niveles de voltaje para la conversin A/D. Cada nivel tiene un valor de 102

    5 V, o sea 4.88 mV. Por otra parte para distancias menores a 20cm el sensor tiene voltaje de salida mayor a 1.25V, entonces 8 bits no serian suficientes para hacer la conversin A/D de estas distancias. Esto es as porque con 8 bits se tienen 256 niveles de voltaje y como cada nivel tiene un valor de 4.88mV, entonces el mximo voltaje que se podra convertir sera 256*4.88mV que es igual a 1.25V. Para distancias mayores a 20cm se necesita solo un registro (ADRESL) ya que el sensor da voltajes de salida menores a 1.25V. De manera que para identificar si la distancia que hay entre el carrito y el obstculo es menor de 20cm, es suficiente con verificar el estado del registro ParteAlta, es decir, si este ultimo registro esta en cero se detiene el carrito.

  • REPORTE PROYECTO DE INGENIERA EN ELECTRNICA I y II CARRITO EVASOR DE OBSTACULOS

    UNIVERSIDAD AUTNOMA METROPOLITANA Unidad Iztapalapa

    Fecha de elaboracin: Martes, 16 de Enero de 2007. - 23 -

    Como para distancias mayores a 20cm solo se necesitan 8 bits se pasa al anlisis del registro ParteBaja. Como se esta interesado en que el carro tenga su mayor velocidad cuando tiene espacio libre mayor a 80cm y su menor velocidad a distancias menores de 40cm, se impone una condicione para obtener estos resultados. Si el registro ParteBaja tiene un valor menor a 150 se asigna la mxima velocidad, en caso contrario se asigna la menor velocidad. Se aclara que solo hay dos velocidades. Es importante sealar que bastara analizar el registro ParteBaja, por que con un solo registro se pueden medir distancias mayores a 20cm, sin embargo se contempla la posibilidad de que en algn momento dado el carro este a distancias menores de 20cm. Esto puede pasar cuando el carro se coloca frente a un obstculo a una distancia menor de 20cm, o cuando el carro esta avanzando y se coloca un objeto frente a el a una distancia menor de 20cm Con el registro ParteBaja es posible medir hasta distancias mayores a 15 cm, pero para distancias menores a esta se necesitara del registro ParteAlta. Entonces para distancia menores a 20cm y mayores a 15 cm solo hay que revisar el registro ParteBaja (el registro ParteAlta estara en ceros), pero para distancias menores a15 cm se tiene que revisar el registro ParteAlta. La figura 13 muestra el diagrama de flujo de esta subrutina. Si No Si No Si

    No

    Fig. 13 Diagrama de flujo de subrutina avanza

    Avanza

    Call ConversionA_D

    ParteAlta >0

    ParteBaja >250

    ParteBaja >150

    detener

    RETURN

    Macro Velocidad Ciclos_ON=9 Ciclos OFF=1

    Sentido

    Macro Velocidad Ciclos_ON=9 Ciclos OFF=1

    Sentido

  • REPORTE PROYECTO DE INGENIERA EN ELECTRNICA I y II CARRITO EVASOR DE OBSTACULOS

    UNIVERSIDAD AUTNOMA METROPOLITANA Unidad Iztapalapa

    Fecha de elaboracin: Martes, 16 de Enero de 2007. - 24 -

    Subrutina: retrocede Se encarga de mover el carro hacia atrs. Primero llama la subrutina atrs para que el sensor apunte para atrs. Luego manda llamar la subrutina mide_Distancia_tracera, la cual se encarga de medir si hay o no espacio suficiente para que el carro se haga hacia atrs. Sin embargo existe un contador llamado Distancia_de_reversa, el cual indica que a pesar de que haya libre camino de reversa la mxima distancia que puede retroceder es de 20cm. De esta forma, esta rutina termina ya sea por que no hay espacio suficiente para retroceder o por que el carrito ya retrocedi lo suficiente (20cm). Cualquiera que sea el motivo por el que termina la subrutina el regreso lleva a la parte del Programa Principal con etiqueta sensar. La figura 14 muestra el diagrama de flujo de este procedimiento libre No Si Si No

    Fig. 14 Diagrama de flujo de subrutina retrocede

    retrocede

    Distancia_de_reversa d250

    atras

    HaySalida b0 =1

    Decrementa Distancia_de_reversa

    Distancia_de_reversa =0

    mide_Distancia_tracera

    Goto sensar

    Macro Velocidad Ciclos_ON=9 Ciclos OFF=1

    Sentido

  • REPORTE PROYECTO DE INGENIERA EN ELECTRNICA I y II CARRITO EVASOR DE OBSTACULOS

    UNIVERSIDAD AUTNOMA METROPOLITANA Unidad Iztapalapa

    Fecha de elaboracin: Martes, 16 de Enero de 2007. - 25 -

    Subrutina: GiraSalida Hace que el carro gire hacia donde se encuentra la salida ms prxima (fig. 5D). Analiza el registro RegistroSalidas para saber de que lado se encuentra la salida. Por medio de la rutina velocidad el carrito se mueve. Este movimiento contina hasta que se detecta la salida. La figura 15 muestra el diagrama de flujo de esta rutina. No Si No Si

    Si No Si No

    Fig. 15 Diagrama de flujo de subrutina GiraSalida

    GiraSalida

    RegistroSalidas b3=0

    centro_por_Izq

    La salida esta a la derecha?

    RevisaSalida

    GiraDerecha

    GiraIzquierda

    ParteAlta >0

    ParteBaja > 90

    Detener carro Goto Principal+3

  • REPORTE PROYECTO DE INGENIERA EN ELECTRNICA I y II CARRITO EVASOR DE OBSTACULOS

    UNIVERSIDAD AUTNOMA METROPOLITANA Unidad Iztapalapa

    Fecha de elaboracin: Martes, 16 de Enero de 2007. - 26 -

    Subrutina: interrupcin Esta subrutina es la rutina de interrupcin. Como ya se menciono anteriormente solo se trabaja con la interrupcin por desbordamiento del TIMER0. Cuando el sensor esta a la derecha es cuando se debe autorizar la interrupcin y empezar a medir las distancias del carro al obstculo. Cuando el bit 0 del registro AutorizarInterrupcion y el del registro PrimeraLectura estn en uno se hace la primer lectura de distancia, que corresponde a la distancia que hay del carro a su derecha, luego se empieza a decrementar el registro AumentoPrescaler, cuando llega a cero se da la segunda lectura de distancia. Se inicializa el registro AumentoPrescaler (se usa este registro para conseguir el periodo de tiempo de 500ms, ya que con el taimer y el prescaler no es suficiente) y nuevamente se empieza a decrementar hasta que llegue a cero y as hacer la tercera lectura de distancia. Este proceso continua hasta que el bit 0 del registro AutorizarInterrupcion se pone a cero. La subrutina se divide en dos partes. Una para atender la interrupcin pero sin entrar al algoritmo que hace las lecturas de distancias y sus correspondientes conversiones A/D. Y otra que si entra a esta rutina. La figura 16 muestra el diagrama de flujo correspondiente. Si No No Si No Si

    Fig. 16 Diagrama de flujo de subrutina GiraSalida

    interrupcion

    AutorizarInterrupcion b0 =0

    PrimeraLectura b0 =0

    decrementa AumentoPrescaler

    AumentoPrescaler = 0

    Call conversionA_D

    Call guarda_conversionA_D

    FinInterrupcion retfie

  • REPORTE PROYECTO DE INGENIERA EN ELECTRNICA I y II CARRITO EVASOR DE OBSTACULOS

    UNIVERSIDAD AUTNOMA METROPOLITANA Unidad Iztapalapa

    Fecha de elaboracin: Martes, 16 de Enero de 2007. - 27 -

    Subrutina: conversionA_D Esta subrutina se encarga de hacer la conversin A/D de las distancias que mide el sensor analgico. Una vez hecha la conversin, el resultado se guarda en los registro ParteAlta y ParteBaja. Son necesarios dos registros porque la conversin usa diez bits. En general el procedimiento es el siguiente: se lee la seal analgica, se hace su conversin A/D y el resultado se vaca en los registros ParteAlta y ParteBaja. La figura 17 muestra su diagrama de flujo. No Si

    Fig. 17 Diagrama de flujo de subrutina conversionA_D

    conversionA_D

    Leer puerto analgico

    conversin A/D

    Ya termino conversion

    Vaca resultado de conversin en registros ParteAlta y ParteBaja

    RETURN

  • REPORTE PROYECTO DE INGENIERA EN ELECTRNICA I y II CARRITO EVASOR DE OBSTACULOS

    UNIVERSIDAD AUTNOMA METROPOLITANA Unidad Iztapalapa

    Fecha de elaboracin: Martes, 16 de Enero de 2007. - 28 -

    Subrutina: guarda_conversionA_D Se encarga de guardar las posiciones de las distancias que son favorables. Como cada distancia se mide aproximadamente cada medio segundo y debido a que el sensor tarda aproximadamente tres y medio segundos en girar 180 esto implica que se podrn medir siete distancias. La posicin de cada distancia esta representada por cada bit del registro RegistroSalidas. Se usa el registro Mascara para activar o no el bit correspondiente a la posicin de cada distancia. El registro Mascara se va rotando a cada nueva lectura de distancia. En cuanto se verifica que la distancia es favorable se aplica la operacin lgica OR entre los registros Mascara y RegistroSalidas. Esta operacin hace que los bits del registro RegistroSalidas vayan indicando si hay o no una salida para el carrito. La figura 18 corresponde a su diagrama de flujo. Si No Si

    No

    Fig. 18 Diagrama de flujo de subrutina guarda_conversionA_D

    guarda_conversionA

    ParteAlta > o

    ParteBaja > 90

    Activa posicin

    Mascara or RegistroSalidas

    RETURN

    Rota mascara

  • REPORTE PROYECTO DE INGENIERA EN ELECTRNICA I y II CARRITO EVASOR DE OBSTACULOS

    UNIVERSIDAD AUTNOMA METROPOLITANA Unidad Iztapalapa

    Fecha de elaboracin: Martes, 16 de Enero de 2007. - 29 -

    Subrutina: mide_Distancia_tracera Esta rutina usa el sensor analgico para medir la distancia trasera del carrito. Su resultado indica si el carro tiene o no distancia suficiente para retroceder. Si hay distancia libre para que el carro se mueva hacia atrs el bit 0 del registro HaySalida se pone en uno, en caso contrario se pone a cero. La figura 19 muestra el diagrama de flujo correspondiente. Si No Si No

    Fig. 19 Diagrama de flujo de subrutina mide_Distancia_tracera

    mide_Distancia_tracera

    conversionA_D

    HaySalida b0 0

    ParteAlta > 0

    ParteBaja >25 0

    HaySalida b0 1

    RETURN

  • REPORTE PROYECTO DE INGENIERA EN ELECTRNICA I y II CARRITO EVASOR DE OBSTACULOS

    UNIVERSIDAD AUTNOMA METROPOLITANA Unidad Iztapalapa

    Fecha de elaboracin: Martes, 16 de Enero de 2007. - 30 -

    Macro: Velocidad Esta macro se encarga de mover los tres motores. Esta macro tiene tres parametro: Ciclos_ON, Ciclos_OFF y sentido. Ciclos_On y Ciclos_OFF sirven para controlar la velocidad del motor mediante la modulacin PWM, y sentido sirve para indicar si el motor se mover hacia la derecha o asa la izquierda. Como ya se menciono esta macro esta en funcin de los parmetros que reciba. Dependiendo de que motor se mueva el carro comenzara a dezplazarse hacia delante o hacia atrs; si el motor que se activa es el del sensor, entonces el sensor comienza a girar. A continuacin, en la figura 20, se muestra el diagrama de flujo correspondiente a esta rutina.

    Figura 20. Diagrama de flujo de subrutina velocidad.

    Si

    Macro Velocidad

    Carga Ciclos_ON Carga Ciclos_OFF

    Carga sentido

    Mueve sentido al puerto

    Ciclos_ON = 0

    Call Retardo_500us

    Ciclos_ON Ciclos_ON-1

    Desactiva Puerto

    Call Retardo_500us

    Ciclos_OFF Ciclos_OFF-1

    Ciclos_OFF = 0

    Termina Macro Velocidad

    No

    No

    Si

  • REPORTE PROYECTO DE INGENIERA EN ELECTRNICA I y II CARRITO EVASOR DE OBSTACULOS

    UNIVERSIDAD AUTNOMA METROPOLITANA Unidad Iztapalapa

    Fecha de elaboracin: Martes, 16 de Enero de 2007. - 31 -

    ;*********************************************************************

    ;PROGRAMA PARA MOVER UN CARRITO:

    ;EL CARRITO NO DEBE CHOCAR

    ;DEBE DISMINUIR O AUMENTAR SU VELOCIDA DEPENDIENDO SI HAY O NO UN OBSTACULO

    ;SI EN FRENTE NO HAY SALIDA DEBE RETROCEDER

    ;*********************************************************************

    ;*********************************************************************

    LIST P=16F877A

    include

    __CONFIG _CP_OFF & _WDT_OFF & _PWRTE_ON & _BODEN_OFF & _LVP_OFF & _WRT_OFF & _DEBUG_OFF & _XT_OSC

    Radix Hex

    ;DECLARACION DE CONSTANTES O EQUIVALENCIAS

    ;-----------------------------------------

    CBLOCK 0x20

    DELAY_50us

    DELAY_500us

    Ciclos_ON

    Ciclos_OFF

    ParteBaja

    ParteAlta

    AutorizarInterrupcion

    RegistroSalidas

    Distancia_de_reversa

    AumentoPrescaler

    PrimeraLectura

    HaySalida

    Distancia

    Mascara

    MascaraAux

    contador

    SalidaNumero

    ENDC

  • REPORTE PROYECTO DE INGENIERA EN ELECTRNICA I y II CARRITO EVASOR DE OBSTACULOS

    UNIVERSIDAD AUTNOMA METROPOLITANA Unidad Iztapalapa

    Fecha de elaboracin: Martes, 16 de Enero de 2007. - 32 -

    ;**********************************************************

    ;definicion de macro para velocidad

    ;**********************************************************

    velocidad macro PORT,sentido,ciclos_on,ciclos_off

    local Motor_ON

    local Motor_OFF

    movlw ciclos_on ;CARGA EL REGISTRO Ciclos_ON con el valor de la -

    movwf Ciclos_ON ;constante ciclos_on

    movlw ciclos_off ;CARGA EL REGISTRO Ciclos_OFF con el valor de la -

    movwf Ciclos_OFF ;constante ciclos_off

    Motor_ON

    movlw sentido

    movwf PORT ;HABILITA LOS DRIVER. MOTOR EN MARCHA.

    call Retardo_500us

    decfsz Ciclos_ON,F ;SI (Ciclos_ON)=0 salta a Motor_OFF.

    goto Motor_ON+2

    Motor_OFF

    clrf PORT ; INHABILITA LOS DRIVRES. MOTOR PARADO.

    call Retardo_500us

    decfsz Ciclos_OFF,F ; SI (Ciclos_OFF)=0 TERMINA MACRO.

    goto Motor_OFF+1

    endm

    ;**********************************************************

    ;INICO DEL PROGRAMA

    ;**********************************************************

    org 0

    goto inicio

    org 4

    goto interrupcion

    inicio

    clrf PORTB

    clrf PORTC

    bsf STATUS,RP0 ;ACCEDER BANCO 1

    bsf ADCON0,7 ;ADCON0=ADCON1, PRIMER BIT DE PUERTO -

    movlw b'00000111' ;(A) QUEDA DECLARADO COMO ENTRADA ANALOGICA

    movwf OPTION_REG ;PRESCALER DE 256 ASIGNADO AL TMRO

    bsf PORTA,0 ;PRIMER BIT DE PUERTO(A) COMO ENTRADA

  • REPORTE PROYECTO DE INGENIERA EN ELECTRNICA I y II CARRITO EVASOR DE OBSTACULOS

    UNIVERSIDAD AUTNOMA METROPOLITANA Unidad Iztapalapa

    Fecha de elaboracin: Martes, 16 de Enero de 2007. - 33 -

    clrf PORTB ;PUERTO(B) QUEDA DECLARADO SALIDA

    movlw b'11110000'

    movwf PORTC ;PUERTO(C) QUEDA DECLARADO COMO ENTRADA Y SALIDA

    bcf STATUS,RP0 ;ACCEDER BANCO 0

    movlw d'60'

    movwf TMR0 ;CARGA EL TMRO PARA QUE CUENTE 195

    movlw d'12'

    movwf AumentoPrescaler ;CARGA EL REGISTRO AumentoPrescaler

    movlw b'10100000' ;AUTORIZA LA INTERRUPCION TMRO Y LA GIE

    movwf INTCON

    ;**********************************************************

    ;PROGRAMA PRINCIPAL

    ;**********************************************************

    Principal

    bcf AutorizarInterrupcion,0 ;NO SE AUTORIZA INTERRUPCION

    call Derecha ;SENSOR GIRA A LA DERECHA

    call Centro ;SENSOR GIRA A LA IZQUIERDA

    call Avanza ;EL CARRO AVANZA

    clrf RegistroSalidas ;SE PONEN A CERO TODAS LAS SALIDAS

    call LimpiaMascara ;LA MASCARA SE CARGA

    call Derecha ;SENSOR GIRA A LA DERECHA

    bsf PrimeraLectura,0

    bsf AutorizarInterrupcion,0 ;SE AUTORIZA LA INTERRUPCION

    call Izquierda ;SENSORE GIRA A LA IZQUIERDA

    bcf AutorizarInterrupcion,0 ;SE DETIENE INTERRUPCION

    call LeeSalidas ;VERIFICA SI HAY SALIDAS

    btfss HaySalida,0

    goto Retrocede ;EL CARRO RETROCEDE

    call CentroPorIzq

    goto GiraSalida ;EL CARRO BUSCA LA SALIDA

  • REPORTE PROYECTO DE INGENIERA EN ELECTRNICA I y II CARRITO EVASOR DE OBSTACULOS

    UNIVERSIDAD AUTNOMA METROPOLITANA Unidad Iztapalapa

    Fecha de elaboracin: Martes, 16 de Enero de 2007. - 34 -

    ;**********************************************************

    ;SUBRUTINA PARA AVANZAR EL CARRO

    ;**********************************************************

    Avanza

    call conversionA_D ;SE LEE DATO EXTERNO Y SE CONVIERTE

    movlw d'1'

    subwf ParteAlta,W

    btfss STATUS,C ;SE REVISA QUE EL CARRO NO CHOQUE

    goto otra_Distancia

    otra_Distancia

    movlw d'250'

    subwf ParteBaja,W ;PARA SABER SI EL VALOR DE LA CONVERSION A/D -

    btfsc STATUS,C ;ES MENOR A 250

    goto mayor_a_20cm ;EL CARRO TIENE ESPACIO LIBRE MAYOR A 20cm

    mayor_a_20cm ;ESTE PROCEDIMIENTO ES PARA SABER

    movlw d'150' ;QUE TANTA DISTANCIA LIBRE TIENE

    subwf ParteBaja,W ;EL CARRO

    btfsc STATUS,C

    goto rapido

    despacio ;EL CARRO AVANZA DESPACIO

    velocidad PORTB,b'00110110',d'4',d'6'

    goto Avanza

    rapido ;EL CARRO AVANZA RAPIDO

    velocidad PORTB,b'00110110',d'9',d'1'

    goto Avanza

    detener ;EL CARRO SE DETIENE

    clrf PORTB

    return

  • REPORTE PROYECTO DE INGENIERA EN ELECTRNICA I y II CARRITO EVASOR DE OBSTACULOS

    UNIVERSIDAD AUTNOMA METROPOLITANA Unidad Iztapalapa

    Fecha de elaboracin: Martes, 16 de Enero de 2007. - 35 -

    ;**********************************************************

    ;SUBRUTINA PARA RETROCEDER EL CARRO

    ;**********************************************************

    Retrocede

    movlw d'250'

    movwf Duitancia_de_reversa

    call atras ;MUEVE EL SENSOR HACIA ATRAZ

    libre

    call mide_Distancia_tracera ;RUTINA PARA QUE NO CHOQUE EL CARRO -

    btfss HaySalida,0 ;CUANDO VA DE REVERSA

    goto Principal+4 ;SI NO PUEDE RETROCEDER SE REPITE -

    velocidad PORTB,b'00101101',d'9',d'1' ; PROCEDIMIENTO DE SENSAR AL FRENTE

    decfsz Distancia_de_reversa,F ;DECREMENTO DE LA DISTANCIA TRACERA -

    goto libre ;QUE EL CARRO DEBE RETROCEDER

    goto Principal+4 ;SI EL CARRO RETROCEDE LA DISTANCIA -

    ; PREFIJADA, SE REPITE PROCEDIMIENTO -

    ; DE SENSAR AL FRENTE

    ;*********************************************************

    ;SUBRUTINA PARA QUE EL CARRO GIRE A SALIDA

    ;**********************************************************

    GiraSalida

    btfsc RegistroSalidas,3 ;SI LA SALIDA ESTA AL FRENTE -

    goto Principal+3 ;EL CARRO EMPIZA DESDE EL PRINCIPIO

    movlw b'00001000'

    movwf Mascara ;SE CARGAN LAS MASCARAS CON EL MISMO

    movlw b'00001000' ;VALOR PARA QUE EMPIECEN DESDE LA POSICION

    movwf MascaraAux ;CENTRAL, Y A PARTIR DE AH MOVERSE.

    rota

    rlf MascaraAux,F ;SE ROTA LA MASCARA A LA IZQUIERDA

    movf MascaraAux,W ;EL VALOR SE GUARDA EN LA MISMA MASCARA

    andwf RegistroSalidas,W ;SE PREGUNTA SI EL REGISTRO DE SALIDAS -

    btfss STATUS,Z ;TIENE UNA SALIDA EN ESA POSICION

    goto GiraIzquierda ;SI HAY SALIDA SE GIRA A LA IZQUIERDA

    rrf Mascara,F ;SE ROTA LA MASCARA A LA DERECHA

    movf Mascara,W ;EL VALOR SE GUARDA EN LA MISMA MASCARA

    andwf RegistroSalidas,W ;SE PREGUNTA SI EL REGISTRO DE SALIDAS -

    btfss STATUS,Z ;TIENE UNA SALIDA EN ESA POSICION

  • REPORTE PROYECTO DE INGENIERA EN ELECTRNICA I y II CARRITO EVASOR DE OBSTACULOS

    UNIVERSIDAD AUTNOMA METROPOLITANA Unidad Iztapalapa

    Fecha de elaboracin: Martes, 16 de Enero de 2007. - 36 -

    goto GiraDerecha ;SI HAY SALIDA SE GIRA A LA DERECHA

    incf SalidaNumero,F ;SE INCREMENTA EL REGISTRO QUE INDICA EN QUE

    goto rota ;POSICION SE ENCONTRO LA SALIDA

    GiraIzquierda

    movlw d'110'

    movwf contador

    velocidad PORTB,b'00101110',d'5',d'5' ;EL CARRO GIRA A LA IZQUIERDA

    decfsz contador,F

    goto GiraIzquierda+2

    decfsz SalidaNumero,F

    goto GiraIzquierda

    goto FinGiraSalida

    GiraDerecha

    movlw d'110'

    movwf contador

    velocidad PORTB,b'00110101',d'5',d'5' ;EL CARRO GIRA A LA DERECHA

    decfsz contador,F

    goto GiraDerecha+2

    decfsz SalidaNumero,F

    goto GiraDerecha

    goto FinGiraSalida

    FinGiraSalida

    clrf PORTB

    goto Principal+3

    ;*********************************************************

    ;SUBRUTINA PARA REVISAR SI EL CARRO YA ENCONTRO LA SALIDA

    ;**********************************************************

    RevisaSalida

    call conversionA_D ;LAS INSTRUCCIONES SIGUIENTES SON PARA -

    movlw d'1' ;SABER SI EL CARRO SE MOVIO LO SUFICIENTE -

    subwf ParteAlta,W ;COMO PARA QUE EL SENSOR MIDA QUE HAY ESPACIO -

    btfss STATUS,C ;SUFICIENTE PARA QUE EL CARRO AVANCE HACIA DELANTE

    goto MidePerteBaja

    return

    MidePerteBaja

    movlw d'90'

    subwf ParteBaja,W

  • REPORTE PROYECTO DE INGENIERA EN ELECTRNICA I y II CARRITO EVASOR DE OBSTACULOS

    UNIVERSIDAD AUTNOMA METROPOLITANA Unidad Iztapalapa

    Fecha de elaboracin: Martes, 16 de Enero de 2007. - 37 -

    btfss STATUS,C

    bsf HaySalida,0

    return

    ;**********************************************************

    ;SUBRUTINA PARA ATENDER LA INTERRUPCION

    ;**********************************************************

    interrupcion

    btfss AutorizarInterrupcion,0 ;PREGUNTA SI PUEDE ENTRAR A LA INTERRUPCION

    goto RegresoRapido

    btfsc PrimeraLectura,0

    goto Empieza

    decfsz AumentoPrescaler,F ;HASTA QUE ESTE REGISTRO MARQUE CERO -

    goto FinInterrupcion ;SE PODRA ENTRAR A LA INTERRUPCION

    Empieza

    call conversionA_D ;PARA HACER CONVERSION A/D DE LAS DISTANCIAS

    call guarda_conversionA_D ;GUARDA LAS DISTANCIAS SATISFACTORIAS

    RegresoRapido

    movlw d'12'

    movwf AumentoPrescaler ;RECARGA EL REGISTRO AumentoPrescaler

    FinInterrupcion

    movlw d'60'

    movwf TMR0 ;RECARGA EL TMRO

    bcf INTCON,T0IF ;REPONE FLAG DEL TMRO

    bcf PrimeraLectura,0

    retfie ;AUTORIZA INTERRUPCON POR TMRO

    ;**********************************************************

    ;SUBRUTINA PARA CONVERSION A/D

    ;**********************************************************

    conversionA_D

    bsf ADCON0,0 ;ACTIVAR REGISTRO ADCON0 PARA LEER PUERTO ANALOGICO

    convertir

    call Retardo_50us ;TIEMPO PARA OBTENER LECTURA ANALOGICA

    bsf ADCON0,2 ;INICIAR CONVERSION A/D

    espera

    btfsc ADCON0,2 ;PREGUNTA SI YA TERMINO CONVERSION A/D

    goto espera

    bsf STATUS,RP0 ;ACCEDER BANCO 1 PARA OBTENER PARTE BAJA DE CONVERSION

    movf ADRESH,W ;SE OBTIENE PARTE BAJA DE CONVERSION A/D

    bcf STATUS,RP0 ;ACCEDER BANCO 0

  • REPORTE PROYECTO DE INGENIERA EN ELECTRNICA I y II CARRITO EVASOR DE OBSTACULOS

    UNIVERSIDAD AUTNOMA METROPOLITANA Unidad Iztapalapa

    Fecha de elaboracin: Martes, 16 de Enero de 2007. - 38 -

    movwf ParteBaja ;GUARDAR PARTE BAJA EN REGISTRO

    movf ADRESH,W ;OBTENER PARTE ALTA DE CONVERSION

    movwf ParteAlta ;GUARDAR PARTE ALTA DE CONVERSION

    return

    ;**********************************************************

    ;SUBRUTINA PARA GUARDAR LAS CONVERSIONES A/D UTILES

    ;**********************************************************

    guarda_conversionA_D

    movlw d'1'

    subwf ParteAlta,W ;PARA SABER SI LA CONVERSION A/D SOLO -

    btfss STATUS,C ;OCUPO EL REGISTRO ADRESL

    goto Verifica

    bcf STATUS,C ;PONE A CERO EL BIT C PARA QUE NO AFECTE

    rlf Mascara,F ;ROTACION IZQUIERDA DEL REGISTRO MASCARA

    return

    Verifica

    movlw d'90'

    subwf ParteBaja,W ;PARA SABER SI LA CONVERSION A/D ES MENOR -

    btfss STATUS,C ; A 90. ESTE NUMERO ESRA RELACIONADO CON LA

    goto activa_posicion ;DISTANCIA MEDIDA

    fin

    bcf STATUS,C ;PONE A CERO EL BIT C PARA QUE NO AFECTE

    rlf Mascara,F ;ROTACION IZQUIERDA DEL REGISTRO MASCARA

    return

    activa_posicion

    movf Mascara,W ;CARGA LA MASCARA EL REGISTRO W

    iorwf RegistroSalidas,F ; PARA VACIAR LA MASCARA EN EL REGISTRO -

    goto fin ;DE SALIDAS

    ;**********************************************************

    ;SUBRUTINA PARA MEDIR DISTANCIA TRACERA

    ;**********************************************************

    mide_Distancia_tracera

    call conversionA_D

    movlw d'1'

    subwf ParteAlta,W ;PARA SABER SI LA CONVERSION A/D -

    btfss STATUS,C ;OCUPO EL REGISTRO ADRESH

    goto verifica

    return

    verifica

  • REPORTE PROYECTO DE INGENIERA EN ELECTRNICA I y II CARRITO EVASOR DE OBSTACULOS

    UNIVERSIDAD AUTNOMA METROPOLITANA Unidad Iztapalapa

    Fecha de elaboracin: Martes, 16 de Enero de 2007. - 39 -

    movlw d'220'

    subwf ParteBaja,W ;PARA SABER SI EL VALOR DE LA -

    btfss STATUS,C ;CONVERSION A/D ES MENOR A 250 -

    bsf HaySalida,0 ;ESTE NUMERO ESTA RELACIONADO CON -

    return ;LA DISTANCIA MEDIDA

    ;**********************************************************

    ;SUBRUTINAS PARA UBICAR PUNTOS DE REFERENCIA

    ;**********************************************************

    Derecha

    velocidad PORTC,b'00000101',d'3',d'7'

    btfss PORTC,4 ;CUANDO EL BIT 4 DEL PUERTO C ES UNO -

    goto Derecha ;EL SENSOR SE DETIENE

    return

    ;**********************************************************

    Centro

    velocidad PORTC,b'00000110',d'3',d'7'

    btfss PORTC,5 ;CUANDO EL BIT 5 DEL PUERTO C ES UNO -

    goto Centro ;EL SENSOR SE DETIENE

    return

    ;**********************************************************

    Izquierda

    velocidad PORTC,b'00000110',d'3',d'7'

    btfss PORTC,6 ;CUANDO EL BIT 6 DEL PUERTO C ES UNO -

    goto Izquierda ;EL SENSOR SE DETIENE

    return

    ;**********************************************************

    atras

    velocidad PORTC,b'00000110',d'3',d'7'

    btfss PORTC,7 ;CUANDO EL BIT 7 DEL PUERTO C ES UNO -

    goto atras ;EL SENSOR SE DETIENE

    return

    ;**********************************************************

    CentroPorIzq

    velocidad PORTC,b'00000101',d'3',d'7'

    btfss PORTC,5 ;CUANDO EL BIT 5 DEL PUERTO C ES UNO -

    goto CentroPorIzq ;EL SENSOR SE DETIENE

    return

  • REPORTE PROYECTO DE INGENIERA EN ELECTRNICA I y II CARRITO EVASOR DE OBSTACULOS

    UNIVERSIDAD AUTNOMA METROPOLITANA Unidad Iztapalapa

    Fecha de elaboracin: Martes, 16 de Enero de 2007. - 40 -

    ;**********************************************************

    ;SUBRUTINA PARA LEER REGISTRO DE SALIDAS

    ;**********************************************************

    LeeSalidas

    bcf HaySalida,0 ;INDICA QUE NO HAY SALIDA

    movlw d'1'

    subwf RegistroSalidas,W ;VERIFICA SI HAY SALIDA

    btfsc STATUS,C

    bsf HaySalida,0 ;INDICA QUE HAY SALIDA

    return

    ;**********************************************************

    ;SUBRUTINA PARA LIMPIAR LA MASCARA

    ;**********************************************************

    LimpiaMascara

    movlw b'00000001'

    movwf Mascara ;LA MASCARA QUEDA CARGADA CON EL -

    return ;VALOR CONVENIENTE

    ;**********************************************************

    ;RETARDOS

    ;**********************************************************

    ;LAS SIGUIENTES SUBRUTINAS UTILIZAN UN CONTADOR, EL CUAL VAN DECRE -

    ;MENTANDO. ESTE PROCESO HACE QUE SE CONSUMA TIEMPO. DE ESTA FORMA -

    ;LAS SUBRUTINAS SIRVEN COMO TIEMPOS DE RETARDO

    ;**********************************************************

    ;RETARDO 20uSeg

    ;**********************************************************

    Retardo_50us

    movlw d'16'

    movwf DELAY_50us

    LOP_50us

    decfsz DELAY_50us,F

    goto LOP_50us

    return

  • REPORTE PROYECTO DE INGENIERA EN ELECTRNICA I y II CARRITO EVASOR DE OBSTACULOS

    UNIVERSIDAD AUTNOMA METROPOLITANA Unidad Iztapalapa

    Fecha de elaboracin: Martes, 16 de Enero de 2007. - 41 -

    ;RETARDO 500uSeg

    ;**********************************************************

    Retardo_500us

    movlw d'166'

    movwf DELAY_500us

    LOP_500us

    decfsz DELAY_500us,F

    goto LOP_500us

    nop

    return

    ;RETARDO 100 mSeg

    ;**********************************************************

    END

  • REPORTE PROYECTO DE INGENIERA EN ELECTRNICA I y II CARRITO EVASOR DE OBSTACULOS

    UNIVERSIDAD AUTNOMA METROPOLITANA Unidad Iztapalapa

    Fecha de elaboracin: Martes, 16 de Enero de 2007. - 42 -

    CONCLUSIONES A pesar de que el robot no es muy competitivo, presenta caractersticas interesantes. Sin embargo tiene detalles desafortunados como es el alto consumo de corriente debido al sensor analgico que se utiliz, ya que es el que consume en la mayor parte del tiempo ms corriente por que est tomando lecturas todo el tiempo en que el carrito esta en movimiento. Se propone para mejoras futuras hacer que este sensor solo este activado por intervalos cortos de tiempo para mejorar el rendimiento de energa. Por otra parte, el diseo, montaje y programacin del robot, a sido una experiencia, aunque ardua (ya que requiere mucho tiempo), muy divertida. Este robot es una primera aproximacin, que sin lugar a dudas puede ser mejorado. Las mejoras pueden darse desde la parte mecnica hasta la forma de energizar el circuito, como por ejemplo; pueden usarse brazos mecnicos, adaptar una cmara de video, se puede alimentar con celdas solares, entre otras mejoras. Sin embargo el resultado obtenido es aceptable.

    Figura 12. Carrito Evasor de Obstculos. La utilizacin de celdas solares puede ser utilizado para que el carrito utilice energa solar y energa de una batera, y que adems estas celdas solares recarguen las bateras de alimentacin del carrito, esto con el fin de que el carrito funcione en cualquier momento y no se tengan problemas de energa.

    21.1:- Brazos mecnicos. 21.2.- Plataforma mecnica. 21.3.- Celdas solares.

    Figura 21. Posibles avances del robot.

  • REPORTE PROYECTO DE INGENIERA EN ELECTRNICA I y II CARRITO EVASOR DE OBSTACULOS

    UNIVERSIDAD AUTNOMA METROPOLITANA Unidad Iztapalapa

    Fecha de elaboracin: Martes, 16 de Enero de 2007. - 43 -

    Las experiencias que se obtuvieron al hacer el carrito fueron varias, entre ellas estan: 1.- La construccin del robot nos ayud a comprender el uso y funcionamiento de los microcontroladores PICs. 2.- En la parte de hardware, aprendimos a optimizar el uso de la energa, ya que tuvimos que investigar las caractersticas de los dispositivos, pero en particular la de los motores por ser los que consumen ms corriente. 3.- Al emprender cualquier proyecto es importante considerar desde el inicio los materiales y dispositivos que se van a utilizar, esto con el fin de disminuir tiempo y costos de bsqueda.

  • REPORTE PROYECTO DE INGENIERA EN ELECTRNICA I y II CARRITO EVASOR DE OBSTACULOS

    UNIVERSIDAD AUTNOMA METROPOLITANA Unidad Iztapalapa

    Fecha de elaboracin: Martes, 16 de Enero de 2007. - 44 -

    BIBLIOGRAFA: Palacios, Enrique; Remiro, Fernando y Lpez, Lucas. Microcontrolador PIC16F84, desarrollo de proyectos, Segunda Edicin. Editorial Alfo Omega Rama. Pgina de Internet: http://www.microchip.com Pgina de Internet: http://www.robodacta.com