Informe Final Sumo
-
Upload
luis-aliaga -
Category
Documents
-
view
80 -
download
1
Transcript of Informe Final Sumo
Universidad Privada BolivianaFacultad de Ingeniería y Arquitectura
Escuela de Desarrollo Tecnológico e Innovación EDTI
MINIPROYECTO FINALESTRUCTURA Y CONTROL DE
MINIROBOT SUMO
Asignatura : Robotica
Fecha de entrega : 21 de marzo de 2012
Estudiantes : Luis Antonio Aliaga AparicioLuis Alberto Aparicio MenesesDiego Alejandro Velazco Navarro
Carrera : Ing. Electromecánica Ing. Electrónica y de Telecomunicaciones
Semestre : Septimo Semestre
Docente : Ing. Carlos López M.
Cochabamba - Bolivia2011
Índice1. 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.................................................................................................12
6. Resultados.........................................................................................................................................15
6.1 Código del programa.......................................................................................................................15
6.2 Circuito simulado.............................................................................................................................43
6.3 Circuito físico...................................................................................................................................45
6.4 Estructura física y montaje..............................................................................................................47
7. Conclusiones......................................................................................................................................52
8. Bibliografía.........................................................................................................................................53
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
Resistencias53 Ω (x4)110 Ω (x4)10 k Ω (x11)
Capacitores27 pF (x2)100 uF 1 uF
Regulador de voltaje KIA7805A Cristal de cuarzo Diodo Par LED emisor-receptor (x4) PIC 16F84A Sensor CNY70 (x4) Baquelita Driver L298 Perclorato ferrico Bateria de celular (x3) Boton pulsador Jumpers Portapilas Pilas recargables
4.2 Parte mecánica
Set de piezas Mecano (chasis) Pernos Tuercas Ballcoaster
Motor DC (x2) Engranajes Llantas de goma (x2)
5. Procedimiento
5.1 Características del circuito
El sistema debe cumplir las siguientes características:
1) 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.
2) Se utilizarán sensores infrarrojos seguidores de línea CNY70 para la detección de color blanco y negro (plataforma).
3) Se utilizarán sensores infrarrojos normales para la detección del robot enemigo. 4) 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).
5) 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 receptoraEn 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 procesamientoLa 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 respuestaLa 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
Accion a realizarSensor Izquierdo Frente
Sensor Derecho Frente
Sensor Izquierdo Detras
Sensor Derecho Detras
0 0 0 0 Navegacion0 0 0 1 Navegacion0 0 1 0 Navegacion0 0 1 1 Retroceso0 1 0 0 Navegacion0 1 0 1 Giro Derecha0 1 1 0 Navegacion0 1 1 1 Retroceso y Giro Derecha1 0 0 0 Navegacion1 0 0 1 Navegacion1 0 1 0 Giro Izquierda1 0 1 1 Retroceso y Giro Izquierda1 1 0 0 Avance1 1 0 1 Avance y Giro Derecha1 1 1 0 Avance y Giro Izquierda1 1 1 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
Accion a realizarInfrarojo Izquierdo Frente
Infrarrojo Derecho Frente
Infrarrojo Izquierdo Detras
Infrarrojo Derecho Detras
0 0 0 0 Navegacion0 0 0 1 Navegacion0 0 1 0 Navegacion
0 0 1 1 Avance Maximo0 1 0 0 Navegacion0 1 0 1 Navegacion0 1 1 0 Navegacion0 1 1 1 Avance Izquierda1 0 0 0 Navegacion1 0 0 1 Navegacion1 0 1 0 Navegacion1 0 1 1 Avance Derecha1 1 0 0 Retroceso Maximo
1 1 0 1Retroceso Izquierda
1 1 1 0 Retroceso Derecha1 1 1 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 0X0C
AUX EQU 0X0D
TEMP EQU 0X0E
FOR EQU 0X0F
LECTURA EQU 0X10
ORG 0X00
GOTO INICIO
ORG 0X05
RETARDO 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 CLRWDT ;Embiste al enemigo hacia adelante
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 CLRWDT ;Detecta al enemigo con un sensor y se posiciona de frente
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 CLRWDT ;Detecta al enemigo con un sensor y se posiciona de frente
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 CLRWDT ;Detecta al enemigo con un sensor y se posiciona de frente
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 CLRWDT ;Detecta al enemigo con un sensor y se posiciona de frente
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 ;Se aleja de la linea
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 CALL DELAY
CLRWDT ;Retroceso y giro brusco hacia la derecha
MOVLW D'50'
MOVWF FOR
RETRODER 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
MOVLW D'50'
MOVWF FOR
DERRETRO 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 ;Retroceso y giro brusco a la izquierda
MOVLW D'50'
MOVWF FOR
RETROIZQ 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
MOVLW D'50'
MOVWF FOR
IZQRETRO 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 CLRWDT
MOVLW D'25'
MOVWF FOR
GIRDER 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 FOR
GIRIZQ 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 CLRWDT
MOVLW D'1'
MOVWF FOR
BACK 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 PORTB
MOVLW D'251' ;Ancho de pulso de 1 ms
MOVWF CONT
MOVLW D'20' ;Retardo inicial de 5 seg
MOVWF FOR
RET_5SEG MOVLW D'250'
MOVWF TEMP
CALL RETARDO
DECFSZ FOR,F
GOTO RET_5SEG
BUCLE CLRWDT
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 0X0C
AUX EQU 0X0D
TEMP EQU 0X0E
FOR EQU 0X0F
LECTURA EQU 0X10
ORG 0X00
GOTO INICIO
ORG 0X05
RETARDO 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 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 CLRWDT ;Detecta al enemigo delante, se aleja y gira a la derecha
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 CLRWDT ;Detecta al enemigo delante, se aleja y gira a la izquierda
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 CLRWDT ;Detecta al enemigo por detras, se aleja y gira a la derecha
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 CLRWDT ;Detecta al enemigo por detras, se aleja y gira a la izq
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 ;Se aleja de la linea
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 CALL DELAY
CLRWDT ;Retroceso y giro brusco hacia la derecha
MOVLW D'50'
MOVWF FOR
RETRODER 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
MOVLW D'50'
MOVWF FOR
DERRETRO 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 ;Retroceso y giro brusco a la izquierda
MOVLW D'50'
MOVWF FOR
RETROIZQ 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
MOVLW D'50'
MOVWF FOR
IZQRETRO 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 CLRWDT
MOVLW D'25'
MOVWF FOR
GIRDER 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 FOR
GIRIZQ 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 CLRWDT
MOVLW D'1'
MOVWF FOR
BACK 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 PORTB
MOVLW D'251' ;Ancho de pulso de 1 ms
MOVWF CONT
MOVLW D'18' ;Retardo inicial de 5 seg
MOVWF FOR
RET_5SEG MOVLW D'250'
MOVWF TEMP
CALL RETARDO
DECFSZ FOR,F
GOTO RET_5SEG
BUCLE CLRWDT
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
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