Informe Final Sumo
Short Description
Download Informe Final Sumo...
Description
Universidad Privada Boliviana Facultad de Ingeniería y Arquitectura Escuela de Desarrollo Tecnológico e Innovación EDTI
MINIPROYECTO FINAL ESTRUCTURA Y CONTROL DE MINIROBOT SUMO Asignatura
:
Robotica
Fecha de entrega
:
21 de marzo de 2012
Estudiantes
:
Luis Antonio Aliaga Aparicio Luis Alberto Aparicio Meneses Diego Alejandro Velazco Navarro
Carrera
:
Ing. Electromecánica Ing. Electrónica y de Telecomunicaciones
Semestre
:
Septimo Semestre
Docente
:
Ing. Carlos López M.
Cochabamba - Bolivia 2011
Índice 1.
Introducción .......................................................................................................................................... 3
2.
Objetivos ............................................................................................................................................... 3
3.
Marco teórico........................................................................................................................................ 3
4.
Materiales ............................................................................................................................................. 5 4.1 Parte electrónica ................................................................................................................................. 5 4.2 Parte mecánica.................................................................................................................................... 5
5.
Procedimiento....................................................................................................................................... 6 5.1 Características del circuito .................................................................................................................. 6 5.2
Diseño del robot............................................................................................................................ 6
5.2.1
Parte mecánica...................................................................................................................... 6
5.2.2
Parte electrónica ................................................................................................................... 7
5.2.3
Lógica de control ................................................................................................................... 8
5.3
Diagrama de bloques del sistema ............................................................................................... 10
5.4 Diagrama esquemático del circuito .................................................................................................. 11 6.
Resultados ........................................................................................................................................... 14 6.1 Código del programa......................................................................................................................... 14 6.2 Circuito simulado .............................................................................................................................. 42 6.3 Circuito físico..................................................................................................................................... 44 6.4 Estructura física y montaje................................................................................................................ 46
7.
Conclusiones ....................................................................................................................................... 51
8.
Bibliografía .......................................................................................................................................... 52
MINIPROYECTO FINAL ESTRUCTURA Y CONTROL DE MINIROBOT “SUMO” 1. Introducción Los robots móviles tienen múltiples aplicaciones, entre las cuales está el de seguir líneas, evitar obstáculos, o de pelea SUMO, etc. En el juego de SUMO luchan dos Robots de dos equipos diferentes. Los Robots compiten dentro del Área de Combate según las normas que se establecen en una competencia.
2. Objetivos -
El miniproyecto, tiene por objeto fomentar el desarrollo de la capacidad y acercamiento al pensamiento lógico formal. Auspiciar el trabajo en grupo; organizando y planificando las tareas necesarias para llegar a la resolución de problemas. Desarrollar habilidades para la implementación y diseño de un robot SUMO.
3. Marco teórico Robótica Robótica es la ciencia investigación, estudio y tecnología de los robots. Se ocupa del diseño, manufactura y aplicaciones de los robots. La robótica combina diversas disciplinas como son: la mecánica, la electrónica, la informática, la inteligencia artificial y la ingeniería de control. Otras áreas importantes en robótica son el álgebra, los autómatas programables y las máquinas de estados. Ingeniería de Control La Ingeniería de Control se ocupa de los aspectos tanto teóricos como prácticos involucrados en el control de sistemas y procesos, incluyendo aspectos tales como el análisis y diseño de sistemas
regulados, diseño y sintonización de reguladores, utilización de sensores y actuadores, procesamiento digital de señal, etc. Desde la perspectiva de un Ingeniero de Telecomunicación, la Ingeniería Industrial extiende el abanico de salidas profesionales a las numerosas actividades industriales en las que aparecen involucrados el control y la supervisión de sistemas y de procesos. Electrónica La electrónica es la rama de la física y especialización de la ingeniería, que estudia y emplea sistemas cuyo funcionamiento se basa en la conducción y el control del flujo microscópico de los electrones u otras partículas cargadas eléctricamente. Lenguaje de Programación. Un lenguaje de programación es un idioma artificial diseñado para expresar computaciones que pueden ser llevadas a cabo por máquinas como las computadoras. Pueden usarse para crear programas que controlen el comportamiento físico y lógico de una máquina, para expresar algoritmos con precisión, o como modo de comunicación humana. Está formado por un conjunto de símbolos y reglas sintácticas y semánticas que definen su estructura y el significado de sus elementos y expresiones. Al proceso por el cual se escribe, se prueba, se depura, se compila y se mantiene el código fuente de un programa informático se le llama programación. También la palabra programación se define como el proceso de creación de un programa de computadora, mediante la aplicación de procedimientos lógicos, a través de los siguientes pasos: El desarrollo lógico del programa para resolver un problema en particular. Escritura de la lógica del programa empleando un lenguaje de programación específico (codificación del programa). Ensamblaje o compilación del programa hasta convertirlo en lenguaje de máquina. Prueba y depuración del programa. Desarrollo de la documentación. Permite especificar de manera precisa sobre qué datos debe operar una computadora, cómo deben ser almacenados o transmitidos y qué acciones debe tomar bajo una variada gama de circunstancias. Todo esto, a través de un lenguaje que intenta estar relativamente próximo al lenguaje humano o natural. Una característica relevante de los lenguajes de programación es precisamente que más de un programador pueda usar un conjunto común de instrucciones que sean comprendidas entre ellos para realizar la construcción de un programa de forma colaborativa. Motor DC El motor de corriente continua es una máquina que convierte la energía eléctrica en mecánica, provocando un movimiento rotatorio. En la actualidad existen nuevas aplicaciones con motores
eléctricos que no producen movimiento rotatorio, sino que con algunas modificaciones, ejercen tracción sobre un riel. Estos motores se conocen como motores lineales. Fototransistor Se llama fototransistor a un transistor sensible a la luz, normalmente a los infrarrojos. La luz incide sobre la región de base, generando portadores en ella. Esta carga de base lleva el transistor al estado de conducción. El fototransistor es más sensible que el fotodiodo por el efecto de ganancia propio del transistor. Fotodiodo Un fotodiodo es un semiconductor construido con una unión PN, sensible a la incidencia de la luz visible o infrarroja. Para que su funcionamiento sea correcto se polariza inversamente, con lo que se producirá una cierta circulación de corriente cuando sea excitado por la luz. Debido a su construcción, los fotodiodos se comportan como células fotovoltaicas, es decir, en ausencia de luz exterior generan una tensión muy pequeña con el positivo en el ánodo y el negativo en el cátodo. Esta corriente presente en ausencia de luz recibe el nombre de corriente de oscuridad. Regulador de voltaje Un regulador de voltaje (también llamado estabilizador de voltaje o acondicionador de voltaje) es un equipo eléctrico que acepta una tensión eléctrica de voltaje variable a la entrada, dentro de un parámetro predeterminado y mantiene a la salida una tensión constante (regulada).
4. Materiales 4.1 Parte electrónica
Resistencias 53 Ω (x4) 110 Ω (x4) 10 k Ω (x11) Regulador de voltaje KIA7805A Diodo PIC 16F84A Baquelita Perclorato ferrico Boton pulsador Portapilas
Capacitores 27 pF (x2) 100 uF 1 uF Cristal de cuarzo Par LED emisor-receptor (x4) Sensor CNY70 (x4) Driver L298 Bateria de celular (x3) Jumpers Pilas recargables
Pernos Ballcoaster
4.2 Parte mecánica
Set de piezas Mecano (chasis) Tuercas
Motor DC (x2) Llantas de goma (x2)
Engranajes
5. Procedimiento 5.1 Características del circuito El sistema debe cumplir las siguientes características: 1)
2) 3) 4)
5)
El minirobot SUMO debe navegar en una plataforma de color negro y a la vez debe guiarse mediante una línea de color blanco situada en el borde del área de combate, esto para evitar que salga del mismo. Se utilizarán sensores infrarrojos seguidores de línea CNY70 para la detección de color blanco y negro (plataforma). Se utilizarán sensores infrarrojos normales para la detección del robot enemigo. Para la estructura del robot SUMO se podrá utilizar un carro de juguete con cuatro ruedas (2 motores situados atrás y dos ruedas delanteras de guía) o un carro adaptado con tres ruedas tipo triciclo (2 motores situados atrás y una rueda loca o volante en la parte delantera). Usar cualquier modelo de microcontrolador PIC, acondicionadores de señal, drivers, motores cd y mecanismos de fuerza.
5.2 Diseño del robot Como se puede apreciar en las características planteadas del robot SUMO, este se trata de un sistema complejo, por lo que se dividió el diseño del mismo en tres partes distintas, con el objetivo de trabajar individualmente en cada una de ellas, para poder posteriormente juntarlas y obtener el resultado esperado. El diseño fue dividido en tres partes principales:
Parte mecánica Parte electrónica Logica de control
A continuación se describe a detalle cada una de estas partes. 5.2.1
Parte mecánica
El diseño de la parte mecánica consiste en la planificación y construcción de la misma estructura física del robot, que dotara al mismo de capacidades de movimiento mediante el uso de motores, engranajes, ejes de transmisión de potencia, etc; así como también un espacio físico donde se pueda alojar toda la parte electrónica que controlara el movimiento del mismo. Para esta parte, se opto por utilizar el diseño de robot SUMO de tres ruedas, dos traseras gobernadas por un motor cada una, y una rueda delantera de giro libre, que sirve como apoyo y permite una
maniobrabilidad sencilla. Cada motor utilizado consta de su juego de engranajes incorporado, con la finalidad de transmitir el torque desde el eje del motor al eje de las llantas, y reducir la velocidad angular del mismo. El chasis del robot fue construido con mecanos por su fácil uso, disponibilidad, y por ser piezas de un material que otorga de un peso razonable al robot en cuestión. Las llantas elegidas para el robot son llantas de goma, ya que otorgan un buen agarre en distintas superficies. 5.2.2
Parte electrónica
El diseño de la parte electrónica del robot consiste en la elección adecuada de todos los componentes electrónicos necesarios, según su uso y disponibilidad, para poder construir un circuito electrónico, el cual, apoyado de la lógica de control, sea capaz de recibir distintas señales de entrada del ambiente, procesar las mismas y mandar las respuestas programadas a los dispositivos de salida que rigen el movimiento del robot, que son en este caso los motores. El funcionamiento del robot consiste en la obtención de señales externas de los sensores, interpretadas como valores lógicos de ceros y unos, seguido un procesamiento de los mismos mediante una lógica programada, y por ultimo una respuesta enviada a los motores, que otorgan el movimiento al robot. En base a esto podemos dividir el circuito en tres etapas, una etapa receptora, una etapa de procesamiento y una etapa de respuesta, las cuales nos aseguraran que el funcionamiento del sistema sea el adecuado. 5.2.2.1 Etapa receptora En la etapa receptora se busca dotar al robot de los sensores adecuados según el tipo de función que se desea que lleve a cabo, que es en este caso la de embestir al robot enemigo fuera de la cancha cuando sea detectado, y a su vez retroceder o cambiar de dirección cuando el robot este por salir de la pista. Siendo estas las funciones que el robot debe llevar a cabo, se puede optar por el uso de sensores de luz para detectar al robot y a la línea que marca el borde de la pista. Para los sensores que detectan al enemigo, se utilizara el par LED emisor-receptor infrarrojo, posicionado en la parte delantera del robot, de tal manera que el LED receptor detecte la luz reflejada emitida por el LED emisor, y devuelva una señal adecuada. Los LEDs serán posicionados uno al lado de otro, ya que esto nos otorga una respuesta adecuada. El emisor será conectado a una resistencia de 53 Ω y el receptor a una de 10 kΩ, para asegurar un funcionamiento optimo. Respecto a los sensores que detectan la línea blanca del borde de la pista, se utilizaran dos sensores CNY70, posicionados de igual manera en la parte delantera del robot, de tal manera que cuando alguno de ellos detecte la línea blanca, el robot efectúe algún movimiento programado de retroceso y cambio de dirección. Además, para asegurar su buen funcionamiento, los sensores serán posicionados a altura del piso, con una separación de no mas de 3 mm, para asegurar un buen funcionamiento y evitar cualquier tipo de perturbación externa. El diodo emisor será conectado a uan resistencia de 110 Ω y el fototransistor a una de 10 kΩ para un buen funcionamiento. Ninguno de los sensores será conectado a una etapa de acondicionamiento de señales, ya que por las pruebas realizadas con los mismos, los rangos de voltajes obtenidos son suficientes como para ser distinguidos como valores altos y bajos de voltaje (ceros y unos)
5.2.2.2 Etapa de procesamiento La etapa de procesamiento se debe tomar las señales de entrada de los sensores, y mediante el uso de ciertos componentes electrónicos, devolver una señal de salida, programada en los mismos. Ya que las respuestas deben ser programadas mediante cierta lógica, se utilizará un microprocesador para llevar a cabo esta función. El microprocesador utilizado en este caso es el PIC16F84A, un procesador de gama media de Industrias Microchip, que cumple con todas las prestaciones del caso. Sus trece pines de entrada salida de señales son más que suficientes para la aplicación que se desea llevar a cabo, que utilizara tres líneas de entrada de los sensores mas cuatro de salida correspondientes a cada motor. 5.2.2.3 Etapa de respuesta La etapa de respuesta consiste en la salida de las señales del microcontrolador, que se dirigen al control de los motores. Cabe recalcar que estas señales no pueden ser conectadas directamente como alimentación de los motores, sino que deben pasar por un bloque de potencia que amplifique la señal y sea capaz de alimentar al motor con el voltaje y corriente adecuados para su buen funcionamiento. El robot debe poder controlar el sentido de giro de sus motores al encontrar la línea y retroceder, por lo que es necesario el uso de un puente H de transistores, uno de los métodos más comunes de control de motores. En este caso en particular, optamos por el uso del driver L298, el cual es un integrado con dos puentes H, uno dirigido a cada motor, que además tiene muy buenas prestaciones, por su capacidad de entregar corrientes altas a los motores. Se debe tomar en cuenta en este caso distintos tipos de protección del circuito, ya que el manejo de corrientes altas y su inversión de sentido pueden crear picos de voltaje que dañen a todo el circuito, por lo que se utilizaran diodos de respuesta rápida en los motores, mas dos capacitores de 100 uF y 1 uF, con tal de prevenir cualquier problema que pueda ocurrir. 5.2.3
Lógica de control
Para una optimización en el rendimiento del robot sumo, se instalaron mas sensores para que el funcionamiento del robot sea más adecuado en el momento de la batalla. Las mejoras consistieron en:
La instalación de 2 sensores de línea CNY70 en la parte posterior del carrito, esto brindara al robot la posibilidad de detectar la línea en la parte posterior, para así poder escapar de la zona de peligro La instalación de sensores infrarrojos emisor-receptor uno en cada esquina del carrito, esto garantizara que el robot pueda percibir enemigos que se acercan desde distintos ángulos, y de esta manera adoptar una acción adecuada para defenderse del enemigo.
En comparación con el primer prototipo que solamente constaba de 2 sensores de línea de la parte delantera además del infrarrojo delantero, estas mejoras realizadas representaron un mayor nivel de complejidad debido al gran número de posibilidades lógicas recogidas por los sensores.
Es por este motivo que se tuvo que implementar un carácter de jerarquización de las funciones a realizar por el robot. Por esto queremos decir que la prioridad del robot es seguir durante el area indicada a lo largo de una batalla, esto implica que se dará mayor prioridad a la respuesta de los sensores CNY70 para la validación de la ubicación del robot. Si la respuesta de los sensores de línea es la adecuada, las respuestas de los sensores de proximidad serán validadas, para que de esta manera el robot desempeñe la función de ataque o defensa adecuada para la situación. A continuación se presentaran las 2 tablas lógicas utilizadas para el funcionamiento del robot: RB7
RB6
RB5
RB4
Sensor Izquierdo Frente
Sensor Derecho Frente
Sensor Izquierdo Detras
Sensor Derecho Detras
0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1
0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1
0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1
Accion a realizar
0 Navegacion 1 Navegacion 0 Navegacion 1 Retroceso 0 Navegacion 1 Giro Derecha 0 Navegacion 1 Retroceso y Giro Derecha 0 Navegacion 1 Navegacion 0 Giro Izquierda 1 Retroceso y Giro Izquierda 0 Avance 1 Avance y Giro Derecha 0 Avance y Giro Izquierda 1 Habilita la entrada de los infrarrojos Tabla CNY70
Cabe recalcar que esta tabla es de mayor prioridad, además una vez que se dé la condición adecuada se verán validadas las salidas de los sensores infrarrojos RB3
RB2
RB1
RB0
Infrarojo Izquierdo Frente
Infrarrojo Derecho Frente
Infrarrojo Izquierdo Detras
Infrarrojo Derecho Detras
0 0
0 0
0 0
Accion a realizar
0 Navegacion 1 Navegacion
0 0 0 0 0 0 1 1 1 1 1
0 0 1 1 1 1 0 0 0 0 1
1 1 0 0 1 1 0 0 1 1 0
1 1 1
1 1 1
0 1 1
0 1 0 1 0 1 0 1 0 1 0
Navegacion Avance Maximo Navegacion Navegacion Navegacion Avance Izquierda Navegacion Navegacion Navegacion Avance Derecha Retroceso Maximo Retroceso 1 Izquierda 0 Retroceso Derecha 1 Navegacion Tabla Infrarrojo
Claramente podemos apreciar la mayor complejidad de las mejoras implementadas, sin embargo esto ayudara a un mejor desempeño del robot.
5.3 Diagrama de bloques del sistema Aquí se muestra el diagrama de bloques utilizado en el robot diseñado. Cabe mencionar que se omitió una etapa de acondicionamiento de la señal ya que las pruebas realizadas nos mostraron que los sensores devuelven valores que pueden ser interpretados como ceros y unos sin ningún problema.
Posteriormente se muestra el flujograma del programa utilizado, en el cual se muestra la lógica de control
Flujograma del funcionamiento lógico del robot
5.4 Diagrama esquemático del circuito A continuación se muestra el diagrama esquemático del circuito a utilizar para el funcionamiento del robot SUMO. Aquí se muestra primero el esquema del circuito utilizado en su totalidad, implementado para su simulación respectiva en el programa PROTEUS.
Ya que el programa utilizado no nos permitio representar de manera detallada la configuración de los sensores utilizados, se detalla a continuación el funcionamiento y conexión utilizada de los mismos:
Esquema de conexión del CNY70
Esquema de conexión del par emisor-receptor infrarrojo Por último, al ser esta una de las partes críticas para el funcionamiento del robot, se muestra a detalle la configuración utilizada para el funcionamiento de los motores, mediante el uso del driver L298:
Esquema de conexión del L298
6. Resultados 6.1 Código del programa A continuación se muestra el código del programa desarrollado para el uso del microcontrolador PIC16F84A, utilizado para procesar las señales recibidas de los sensores y devolver una respuesta adecuada a los motores. El programa fue escrito en el lenguaje Assembler y compilado con el programa MPLAB IDE, provisto por el mismo fabricante del microcontrolador utilizado. Se desarrollo un total de dos programas, con la finalidad de cumplir con ambas modalidades de la competencia, las cuales son la modalidad SUMO y la competencia del gato y el raton. El primer programa desarrollado cumple con ambas condiciones de SUMO y gato a la vez, ya que su objetivo es perseguir y embestir al enemigo una vez que lo detecta, sin salir de la pista de combate. A continuación se detalla el código desarrollado: PROGRAMA DE SUMO-GATO LIST P=16F84A #INCLUDE P16F84A.INC
CONT
EQU
AUX TEMP
0X0C EQU
EQU
0X0D 0X0E
FOR
EQU
0X0F
LECTURA
EQU
0X10
ORG
0X00
GOTO INICIO
RETARDO
ORG
0X05
BCF
INTCON,2
MOVF CONT,0 MOVWF
TMR0
ESPERA
BTFSS INTCON,2 GOTO ESPERA DECFSZ TEMP,F GOTO RETARDO RETURN
LINEA
ANDLW B'11110000' MOVWF
LECTURA
SWAPF LECTURA,W
ADDWF PCL,1 GOTO AVANCE GOTO AVANCE GOTO AVANCE GOTO RET_DER_CER GOTO AVANCE GOTO GIR_DER_AVA GOTO AVANCE GOTO RET_DER_CER GOTO AVANCE GOTO AVANCE GOTO GIR_IZQ_AVA GOTO RET_IZQ_CER GOTO AVA_MAX GOTO AVA_MAX
GOTO AVA_MAX
INFRA
ANDLW B'00001111'
ADDWF PCL,1 GOTO NAVEGACION GOTO NAVEGACION GOTO NAVEGACION GOTO AVA_MAX GOTO NAVEGACION GOTO NAVEGACION GOTO NAVEGACION GOTO IZQ_SUAVE GOTO NAVEGACION GOTO NAVEGACION GOTO NAVEGACION GOTO DER_SUAVE GOTO RET_MAX GOTO RET_IZQ_SUAVE GOTO RET_DER_SUAVE GOTO NAVEGACION
NAVEGACION
CLRWDT
;Navega en la pista buscando al enemigo
MOVLW
D'5'
MOVWF
TEMP
MOVLW
B'00000101'
MOVWF
PORTA
CALL
RETARDO
MOVLW
D'1'
MOVWF
TEMP
MOVLW
B'00000100'
MOVWF
PORTA
CALL
RETARDO
MOVLW
D'1'
MOVWF
TEMP
CLRF
PORTA
CALL
RETARDO
GOTO BUCLE
AVA_MAX adelante
CLRWDT
;Embiste al enemigo hacia
MOVLW
B'00000101'
MOVWF
PORTA
GOTO BUCLE
RET_MAX
CALL
DELAY
CLRWDT
;Embiste al enemigo hacia atras
MOVLW
B'00001010'
MOVWF
PORTA
GOTO BUCLE
IZQ_SUAVE posiciona de frente
CLRWDT
;Detecta al enemigo con un sensor y se
MOVLW
D'8'
MOVWF
TEMP
MOVLW
B'00000101'
MOVWF
PORTA
CALL
RETARDO
MOVLW
D'1'
MOVWF
TEMP
MOVLW
B'00000001'
MOVWF
PORTA
CALL
RETARDO
MOVLW
D'1'
MOVWF
TEMP
CLRF
PORTA
CALL
RETARDO
GOTO BUCLE
DER_SUAVE posiciona de frente
CLRWDT
;Detecta al enemigo con un sensor y se
MOVLW
D'8'
MOVWF
TEMP
MOVLW
B'00000101'
MOVWF
PORTA
CALL
RETARDO
MOVLW
D'1'
MOVWF
TEMP
MOVLW
B'00000100'
MOVWF
PORTA
CALL
RETARDO
MOVLW
D'1'
MOVWF
TEMP
CLRF
PORTA
CALL
RETARDO
GOTO BUCLE
RET_IZQ_SUAVE posiciona de frente
CLRWDT
;Detecta al enemigo con un sensor y se
MOVLW
D'10'
MOVWF
TEMP
MOVLW
B'00001010'
MOVWF
PORTA
CALL
RETARDO
MOVLW
D'1'
MOVWF
TEMP
MOVLW
B'00000010'
MOVWF
PORTA
CALL
RETARDO
MOVLW
D'1'
MOVWF
TEMP
CLRF
PORTA
CALL
RETARDO
GOTO BUCLE
RET_DER_SUAVE posiciona de frente
CLRWDT
;Detecta al enemigo con un sensor y se
MOVLW
D'10'
MOVWF
TEMP
MOVLW
B'00001010'
MOVWF
PORTA
CALL
RETARDO
MOVLW
D'1'
MOVWF
TEMP
MOVLW
B'00001000'
MOVWF
PORTA
CALL
RETARDO
MOVLW
D'1'
MOVWF
TEMP
CLRF
PORTA
CALL
RETARDO
GOTO BUCLE
AVANCE
CLRWDT MOVLW
;Se aleja de la linea D'7'
MOVWF
TEMP
MOVLW
B'00000101'
MOVWF
PORTA
CALL
RETARDO
MOVLW
D'1'
MOVWF
TEMP
CLRF
PORTA
CALL
RETARDO
GOTO BUCLE
RET_DER_CER
CALL DELAY
CLRWDT
;Retroceso y giro brusco hacia la
derecha
RETRODER
MOVLW
D'50'
MOVWF
FOR
MOVLW
D'7'
MOVWF
TEMP
MOVLW
B'00001010'
MOVWF
PORTA
CALL
RETARDO
MOVLW
D'2'
MOVWF
TEMP
CLRF
PORTA
CALL
RETARDO
DECFSZ FOR,F GOTO RETRODER
DERRETRO
MOVLW
D'50'
MOVWF
FOR
MOVLW
D'7'
MOVWF
TEMP
MOVLW
B'00000100'
MOVWF
PORTA
CALL
RETARDO
MOVLW
D'2'
MOVWF
TEMP
CLRF
PORTA
CALL
RETARDO
DECFSZ FOR,F GOTO DERRETRO
GOTO BUCLE
RET_IZQ_CER
CALL DELAY
CLRWDT
MOVLW
;Retroceso y giro brusco a la izquierda
D'50'
MOVWF RETROIZQ
MOVLW
FOR
D'7'
MOVWF
TEMP
MOVLW
B'00001010'
MOVWF
PORTA
CALL
RETARDO
MOVLW
D'2'
MOVWF
TEMP
CLRF
PORTA
CALL
RETARDO
DECFSZ FOR,F GOTO RETROIZQ
IZQRETRO
MOVLW
D'50'
MOVWF
FOR
MOVLW
D'7'
MOVWF
TEMP
MOVLW
B'00000001'
MOVWF
PORTA
CALL
RETARDO
MOVLW
D'2'
MOVWF
TEMP
CLRF
PORTA
CALL
RETARDO
DECFSZ FOR,F
GOTO IZQRETRO
GOTO BUCLE
GIR_DER_AVA
GIRDER
CLRWDT
MOVLW
D'25'
MOVWF
FOR
MOVLW
D'7'
MOVWF
TEMP
MOVLW
B'00000100'
MOVWF
PORTA
CALL
RETARDO
MOVLW
D'2'
MOVWF
TEMP
CLRF
PORTA
CALL
RETARDO
DECFSZ FOR,F GOTO GIRDER
GOTO BUCLE
GIR_IZQ_AVA
CLRWDT
MOVLW
D'25'
MOVWF GIRIZQ
MOVLW
FOR
D'7'
MOVWF
TEMP
MOVLW
B'00000001'
MOVWF
PORTA
CALL
RETARDO
MOVLW
D'2'
MOVWF
TEMP
CLRF
PORTA
CALL
RETARDO
DECFSZ FOR,F GOTO GIRIZQ
GOTO BUCLE
DELAY
BACK
CLRWDT MOVLW
D'1'
MOVWF
FOR
MOVLW
D'9'
MOVWF
TEMP
MOVLW
B'00000000'
MOVWF
PORTA
CALL
RETARDO
DECFSZ FOR,F GOTO BACK
RETURN
INICIO
BSF
STATUS,5 CLRF
RET_5SEG
TRISA
MOVLW
B'11111111'
MOVWF
TRISB
MOVLW
B'00000111'
MOVWF
OPTION_REG
BCF
STATUS,5
CLRF
PORTA
CLRF
PORTB
MOVLW
D'251'
MOVWF
CONT
MOVLW
D'20'
MOVWF
FOR
MOVLW D'250' MOVWF CALL
TEMP
RETARDO
DECFSZ FOR,F GOTO RET_5SEG
BUCLE
CLRWDT
;Ancho de pulso de 1 ms
;Retardo inicial de 5 seg
MOVF PORTB,W MOVWF
LECTURA
BTFSS LECTURA,7
;Habilitacion de sensores
GOTO LINEA BTFSS LECTURA,6 GOTO LINEA BTFSS LECTURA,5 GOTO LINEA BTFSS LECTURA,4 GOTO LINEA
GOTO INFRA END A continuación se detalla el programa implementado para la función de raton, el cual se basa en el mismo código mostrado anteriormente, solo que se modificaron las respuestas a las lecturas de los sensores con el fin de que el robot escape del enemigo una vez sea detectado. LIST P=16F84A #INCLUDE P16F84A.INC
CONT
EQU
AUX TEMP
0X0C EQU
EQU
0X0D 0X0E
FOR
EQU
0X0F
LECTURA
EQU
0X10
ORG
0X00
GOTO INICIO
RETARDO
ORG
0X05
BCF
INTCON,2
MOVF CONT,0 MOVWF ESPERA
TMR0
BTFSS INTCON,2 GOTO ESPERA DECFSZ TEMP,F GOTO RETARDO RETURN
LINEA
ANDLW B'11110000' MOVWF
LECTURA
SWAPF LECTURA,W
ADDWF PCL,1 GOTO AVANCE GOTO AVANCE GOTO AVANCE GOTO RET_DER_CER GOTO AVANCE GOTO GIR_DER_AVA GOTO AVANCE
GOTO RET_DER_CER GOTO AVANCE GOTO AVANCE GOTO GIR_IZQ_AVA GOTO RET_IZQ_CER GOTO AVA_MAX GOTO AVA_MAX GOTO AVA_MAX
INFRA
ANDLW B'00001111'
ADDWF PCL,1 GOTO NAVEGACION GOTO NAVEGACION GOTO NAVEGACION GOTO ESQUIVA_DEL GOTO NAVEGACION GOTO NAVEGACION GOTO NAVEGACION GOTO RETRO_DER GOTO NAVEGACION GOTO NAVEGACION GOTO NAVEGACION GOTO RETRO_IZQ GOTO ESQUIVA_ATR
GOTO RET_IZQ_SUAVE GOTO RET_DER_SUAVE GOTO NAVEGACION
AVA_MAX
CLRWDT
;Avance maximo
MOVLW
B'00000101'
MOVWF
PORTA
GOTO BUCLE
NAVEGACION
CLRWDT
;Navega en la pista
MOVLW
D'7'
MOVWF
TEMP
MOVLW
B'00000101'
MOVWF
PORTA
CALL
RETARDO
MOVLW
D'1'
MOVWF
TEMP
MOVLW
B'00000100'
MOVWF
PORTA
CALL
RETARDO
MOVLW
D'1'
MOVWF
TEMP
CLRF
PORTA
CALL
RETARDO
GOTO BUCLE
ESQUIVA_DEL
CLRWDT
;Escapa del enemigo hacia atras
MOVLW
D'9'
MOVWF
TEMP
MOVLW
B'00001010'
MOVWF
PORTA
CALL
RETARDO
MOVLW
D'2'
MOVWF
TEMP
MOVLW
B'00001000'
MOVWF
PORTA
CALL
RETARDO
MOVLW
D'1'
MOVWF
TEMP
CLRF
PORTA
CALL
RETARDO
GOTO BUCLE
ESQUIVA_ATR
CLRWDT
;Escapa del enemigo hacia adelante
MOVLW
D'9'
MOVWF
TEMP
MOVLW
B'00000101'
MOVWF
PORTA
CALL
RETARDO
MOVLW
D'2'
MOVWF
TEMP
MOVLW
B'00000001'
MOVWF
PORTA
CALL
RETARDO
MOVLW
D'1'
MOVWF
TEMP
CLRF
PORTA
CALL
RETARDO
GOTO BUCLE
RETRO_DER gira a la derecha
CLRWDT
;Detecta al enemigo delante, se aleja y
MOVLW
D'9'
MOVWF
TEMP
MOVLW
B'00001010'
MOVWF
PORTA
CALL
RETARDO
MOVLW
D'2'
MOVWF
TEMP
MOVLW
B'00001000'
MOVWF
PORTA
CALL
RETARDO
MOVLW
D'1'
MOVWF
TEMP
CLRF
PORTA
CALL
RETARDO
GOTO BUCLE
RETRO_IZQ gira a la izquierda
CLRWDT
;Detecta al enemigo delante, se aleja y
MOVLW
D'9'
MOVWF
TEMP
MOVLW
B'00001010'
MOVWF
PORTA
CALL
RETARDO
MOVLW
D'2'
MOVWF
TEMP
MOVLW
B'00000010'
MOVWF
PORTA
CALL
RETARDO
MOVLW
D'1'
MOVWF
TEMP
CLRF
PORTA
CALL
RETARDO
GOTO BUCLE
RET_IZQ_SUAVE y gira a la derecha
CLRWDT
;Detecta al enemigo por detras, se aleja
MOVLW
D'10'
MOVWF
TEMP
MOVLW
B'00000101'
MOVWF
PORTA
CALL
RETARDO
MOVLW
D'1'
MOVWF
TEMP
MOVLW
B'00000100'
MOVWF
PORTA
CALL
RETARDO
MOVLW
D'1'
MOVWF
TEMP
CLRF
PORTA
CALL
RETARDO
GOTO BUCLE
RET_DER_SUAVE y gira a la izq
CLRWDT
;Detecta al enemigo por detras, se aleja
MOVLW
D'10'
MOVWF
TEMP
MOVLW
B'00000101'
MOVWF
PORTA
CALL
RETARDO
MOVLW
D'1'
MOVWF
TEMP
MOVLW
B'00000001'
MOVWF
PORTA
CALL
RETARDO
MOVLW
D'1'
MOVWF
TEMP
CLRF
PORTA
CALL
RETARDO
GOTO BUCLE
AVANCE
CLRWDT MOVLW
D'7'
MOVWF
TEMP
MOVLW
B'00000101'
MOVWF
PORTA
CALL
RETARDO
MOVLW
D'1'
MOVWF
TEMP
CLRF
PORTA
CALL
RETARDO
GOTO BUCLE
RET_DER_CER
;Se aleja de la linea
CALL DELAY
CLRWDT
;Retroceso y giro brusco hacia la
derecha
RETRODER
MOVLW
D'50'
MOVWF
FOR
MOVLW
D'7'
MOVWF
TEMP
MOVLW
B'00001010'
MOVWF
PORTA
CALL
RETARDO
MOVLW
D'2'
MOVWF
TEMP
CLRF
PORTA
CALL
RETARDO
DECFSZ FOR,F GOTO RETRODER
CALL DELAY
DERRETRO
MOVLW
D'50'
MOVWF
FOR
MOVLW
D'7'
MOVWF
TEMP
MOVLW
B'00000100'
MOVWF
PORTA
CALL
RETARDO
MOVLW
D'2'
MOVWF
TEMP
CLRF
PORTA
CALL
RETARDO
DECFSZ FOR,F GOTO DERRETRO
GOTO BUCLE
RET_IZQ_CER
CALL DELAY
CLRWDT
RETROIZQ
;Retroceso y giro brusco a la izquierda
MOVLW
D'50'
MOVWF
FOR
MOVLW
D'7'
MOVWF
TEMP
MOVLW
B'00001010'
MOVWF
PORTA
CALL
RETARDO
MOVLW
D'2'
MOVWF
TEMP
CLRF
PORTA
CALL
RETARDO
DECFSZ FOR,F GOTO RETROIZQ
CALL DELAY
IZQRETRO
MOVLW
D'50'
MOVWF
FOR
MOVLW
D'7'
MOVWF
TEMP
MOVLW
B'00000001'
MOVWF
PORTA
CALL
RETARDO
MOVLW
D'2'
MOVWF
TEMP
CLRF
PORTA
CALL
RETARDO
DECFSZ FOR,F GOTO IZQRETRO
GOTO BUCLE
GIR_DER_AVA
GIRDER
CLRWDT
MOVLW
D'25'
MOVWF
FOR
MOVLW
D'7'
MOVWF
TEMP
MOVLW
B'00000100'
MOVWF CALL
PORTA
RETARDO
MOVLW
D'2'
MOVWF
TEMP
CLRF
PORTA
CALL
RETARDO
DECFSZ FOR,F GOTO GIRDER
GOTO BUCLE
GIR_IZQ_AVA
GIRIZQ
CLRWDT
MOVLW
D'25'
MOVWF
FOR
MOVLW
D'7'
MOVWF
TEMP
MOVLW
B'00000001'
MOVWF
PORTA
CALL
RETARDO
MOVLW
D'2'
MOVWF
TEMP
CLRF
PORTA
CALL
RETARDO
DECFSZ FOR,F
GOTO GIRIZQ
GOTO BUCLE
DELAY
BACK
CLRWDT MOVLW
D'1'
MOVWF
FOR
MOVLW
D'9'
MOVWF
TEMP
MOVLW
B'00000000'
MOVWF
PORTA
CALL
RETARDO
DECFSZ FOR,F GOTO BACK
RETURN
INICIO
BSF
STATUS,5 CLRF
TRISA
MOVLW
B'11111111'
MOVWF
TRISB
MOVLW
B'00000111'
MOVWF
OPTION_REG
BCF
STATUS,5
CLRF
PORTA
CLRF
RET_5SEG
PORTB
MOVLW
D'251'
MOVWF
CONT
MOVLW
D'18'
MOVWF
FOR
;Ancho de pulso de 1 ms
;Retardo inicial de 5 seg
MOVLW D'250' MOVWF CALL
TEMP
RETARDO
DECFSZ FOR,F GOTO RET_5SEG
BUCLE
CLRWDT MOVF PORTB,W MOVWF
LECTURA
BTFSS LECTURA,7 GOTO LINEA BTFSS LECTURA,6 GOTO LINEA BTFSS LECTURA,5 GOTO LINEA BTFSS LECTURA,4 GOTO LINEA
;Habilitacion de sensores
GOTO INFRA END
6.2 Circuito simulado A continuación se puede observar la implementación del circuito utilizado para el funcionamiento del robot, simulado en el programa Proteus, el cual nos permite observar de antemano como se comportara el sistema a controlar, en base al programa que rige el comportamiento del microcontrolador, las señales de entrada que llegaran de los sensores, y las señales de salida correspondientes que controlan el sentido de giro y velocidad de los motores. Para una simplificación de la simulación, los valores lógicos de 0 y 1 recibidos en los puertos de entrada del microcontrolador fueron implementados con herramientas del mismo programa que permiten simular valores lógicos de 0 y 1.
Circuito implementado en Proteus
PWM para el control de motores, marcha hacia adelante
PWM para el control de motores, giro a la derecha (navegación y rastreo por la pista)
Cambio de sentido de giro al detectar el borde de la pista
6.3 Circuito físico A continuación se muestra el circuito físico implementado en el protoboard:
Circuito físico, vista superior
Par emisor-receptor y sensor CNY70 soldados en placa
6.4 Estructura física y montaje A continuación se muestran las fotos del montaje del robot terminado, con el montaje de los sensores, el circuito electrónico, los motores y todas las piezas a utilizar. Cabe recalcar que el diseño mecánico utilizado es un diseño preliminar, ya que esta planeado solamente para las funciones de mantenerse dentro de la pista y perseguir al oponente, y el diseño no esta completo para una competencia real, ya que aún no esta dotado de componentes de protección y evasión contra otros robots.
Vista anterior, ensamblaje terminado del robot SUMO
Vista posterior, ensamblaje terminado del robot SUMO
Vista lateral, ensamblaje terminado del robot SUMO
Vista isométrica, ensamblaje terminado del robot SUMO
Vista inferior, montaje sensores y ballcoaster
7. Conclusiones Podemos mencionar que la implementación del circuito para el robot sumo, tuvo un elevado nivel de complejidad debido al manejo de un alto numero de sensores (8 en total) y al manejo de 4 salidas para el correcto manejo de los motores utilizados. Cabe recalcar que para la implementación de la lógica de programación del robot sumo, se hizo uso del PIC 16F84A, el cual es un micro controlador de gama media. Debemos mencionar que se utilizo este PIC debido a que ya nos encontramos familiarizados con su configuración y la manera en que este debe ser programado. El manejo puede ser mejorado con la implementación de otro tipo de PIC’s de gama alta o con control de temporización interna, ya que de esta manera se podrá facilitar el manejo de puertos y hacer un manejo mas eficiente de las temporizaciones para el correcto funcionamiento del robot. Al igual que el miniproyecto del segundo parcial debemos recalcar la utilización de los comparadores LM339, los cuales fueron utilizados para una mejor validación de valores lógicos que se reciben de los
sensores. También estos comparadores cumplieron otro tipo de funciones en el caso de los sensores infrarrojos. Con ayuda de los comparadores en los circuitos de conexión de los sensores infrarrojos se logro agudizar la respuesta a distancia de los mismos, mejorando de esta manera el desempeño general del robot permitiéndole sensar la presencia de enemigos a un rango mayor de distancia. También podemos mencionar que se utilizo otro comparador para la implementación de los sensores seguidores de línea CNY70. Mediante el uso de estos comparadores y el circuito divisor de voltaje, se pudo de igual manera mejorar la respuesta obtenida por estos sensores volviendo de esta manera, un funcionamiento más eficiente. Respecto a las mejoras en la estructura física del robot, podemos decir que decidimos mantener nuestro robot en la categoría de peso liviano, por tanto las mejoras fueron mas orientadas a la protección de la integridad del circuito durante la competencia. Las mejoras realizadas fueron la inclusión de barreras realizadas con trupan, además de algunas estructuras metálicas adicionales para brindar mayor soporte y estabilidad toda la estructura diseñada. También cabe recalcar que para mejorar el funcionamiento del robot se opto por el uso de fuentes separadas. Esto tiene el propósito de evitar posibles caídas de voltaje que puedan comprometer el buen funcionamiento del robot. Una de las fuentes esta destinada a la parte lógica del circuito, lo cual comprende el microcontrolador y los sensores además de los comparadores utilizados. Otra alimentación esta destinada a la parte de potencia del robot, lo cual comprende el driver L298 además de los motores.
8. Bibliografía
http://www.robotoid.com/appnotes/circuits-l298-hbridge.html http://es.wikipedia.org/wiki/Rob%C3%B3tica http://es.wikipedia.org/wiki/Motor_de_corriente_continua http://es.wikipedia.org/wiki/Fototransistor http://es.wikipedia.org/wiki/Electr%C3%B3nica http://isa.uniovi.es/~fernando/Programa_Ingenieria_de_Control.htm http://es.wikipedia.org/wiki/Regulador_de_Voltaje
View more...
Comments