You are on page 1of 52

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 Fecha de entrega Estudiantes : : : Robotica 21 de marzo de 2012 Luis Antonio Aliaga Aparicio Luis Alberto Aparicio Meneses Diego Alejandro Velazco Navarro Ing. Electromecánica Ing. Electrónica y de Telecomunicaciones Septimo Semestre Ing. Carlos López M.

Carrera

:

Semestre Docente

: :

Cochabamba - Bolivia
2011

Índice
1. 2. 3. 4. Introducción .......................................................................................................................................... 3 Objetivos ............................................................................................................................................... 3 Marco teórico........................................................................................................................................ 3 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 Parte mecánica...................................................................................................................... 6 Parte electrónica ................................................................................................................... 7 Lógica de control ................................................................................................................... 8

5.2.1 5.2.2 5.2.3 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. 8. Conclusiones ....................................................................................................................................... 51 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

      

      

4.2 Parte mecánica   Set de piezas Mecano (chasis) Tuercas   Pernos Ballcoaster

 

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) 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.

2) 3) 4)

5)

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 Sensor Izquierdo Frente 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 RB6 Sensor Derecho Frente 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 RB5 Sensor Izquierdo Detras 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 RB4 Sensor Derecho Detras 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 Infrarojo Izquierdo Frente 0 0 RB2 Infrarrojo Derecho Frente 0 0 RB1 Infrarrojo Izquierdo Detras 0 0 RB0 Infrarrojo Derecho Detras Accion a realizar

0 Navegacion 1 Navegacion

0 0 0 0 0 0 1 1 1 1 1 1 1 1

0 0 1 1 1 1 0 0 0 0 1 1 1 1

1 1 0 0 1 1 0 0 1 1 0 0 1 1

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

0 1 0 1 0 1 0 1 0 1 0

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 AUX TEMP FOR LECTURA

EQU EQU EQU EQU EQU

0X0C 0X0D 0X0E 0X0F 0X10

ORG GOTO INICIO ORG

0X00

0X05

RETARDO

BCF MOVF CONT,0 MOVWF

INTCON,2

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 MOVLW MOVWF D'5' TEMP

;Navega en la pista buscando al enemigo

MOVLW MOVWF CALL

B'00000101' PORTA

RETARDO D'1' TEMP B'00000100' PORTA

MOVLW MOVWF MOVLW MOVWF CALL

RETARDO D'1' TEMP

MOVLW MOVWF CLRF CALL PORTA

RETARDO

GOTO BUCLE

AVA_MAX adelante

CLRWDT

;Embiste al enemigo hacia

MOVLW MOVWF GOTO BUCLE

B'00000101' PORTA

RET_MAX

CALL

DELAY ;Embiste al enemigo hacia atras B'00001010' PORTA

CLRWDT MOVLW MOVWF GOTO BUCLE

IZQ_SUAVE posiciona de frente

CLRWDT

;Detecta al enemigo con un sensor y se

MOVLW MOVWF MOVLW MOVWF CALL

D'8' TEMP B'00000101' PORTA

RETARDO D'1' TEMP B'00000001' PORTA

MOVLW MOVWF MOVLW MOVWF CALL

RETARDO D'1' TEMP

MOVLW MOVWF CLRF CALL PORTA

RETARDO

GOTO BUCLE

DER_SUAVE posiciona de frente

CLRWDT

;Detecta al enemigo con un sensor y se

MOVLW MOVWF MOVLW MOVWF

D'8' TEMP B'00000101' PORTA

CALL

RETARDO D'1' TEMP B'00000100' PORTA

MOVLW MOVWF MOVLW MOVWF CALL

RETARDO D'1' TEMP

MOVLW MOVWF CLRF CALL PORTA

RETARDO

GOTO BUCLE

RET_IZQ_SUAVE posiciona de frente

CLRWDT

;Detecta al enemigo con un sensor y se

MOVLW MOVWF MOVLW MOVWF CALL

D'10' TEMP B'00001010' PORTA

RETARDO D'1' TEMP B'00000010' PORTA

MOVLW MOVWF MOVLW MOVWF CALL

RETARDO D'1'

MOVLW

MOVWF CLRF CALL PORTA

TEMP

RETARDO

GOTO BUCLE

RET_DER_SUAVE posiciona de frente

CLRWDT

;Detecta al enemigo con un sensor y se

MOVLW MOVWF MOVLW MOVWF CALL

D'10' TEMP B'00001010' PORTA

RETARDO D'1' TEMP B'00001000' PORTA

MOVLW MOVWF MOVLW MOVWF CALL

RETARDO D'1' TEMP

MOVLW MOVWF CLRF CALL PORTA

RETARDO

GOTO BUCLE

AVANCE

CLRWDT MOVLW D'7'

;Se aleja de la linea

MOVWF MOVLW MOVWF CALL

TEMP B'00000101' PORTA

RETARDO D'1' TEMP

MOVLW MOVWF CLRF CALL PORTA

RETARDO

GOTO BUCLE

RET_DER_CER

CALL DELAY

CLRWDT derecha

;Retroceso y giro brusco hacia la

MOVLW MOVWF RETRODER MOVLW D'7'

D'50' FOR

MOVWF MOVLW MOVWF CALL

TEMP B'00001010' PORTA

RETARDO D'2' TEMP

MOVLW MOVWF CLRF PORTA

CALL

RETARDO

DECFSZ FOR,F GOTO RETRODER

MOVLW MOVWF DERRETRO MOVLW D'7'

D'50' FOR

MOVWF MOVLW MOVWF CALL

TEMP B'00000100' PORTA

RETARDO D'2' TEMP

MOVLW MOVWF CLRF CALL PORTA

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 RETROIZQ MOVLW D'7'

FOR

MOVWF MOVLW MOVWF CALL

TEMP B'00001010' PORTA

RETARDO D'2' TEMP

MOVLW MOVWF CLRF CALL PORTA

RETARDO

DECFSZ FOR,F GOTO RETROIZQ

MOVLW MOVWF IZQRETRO MOVLW D'7'

D'50' FOR

MOVWF MOVLW MOVWF CALL

TEMP B'00000001' PORTA

RETARDO D'2' TEMP

MOVLW MOVWF CLRF CALL PORTA

RETARDO

DECFSZ FOR,F

GOTO IZQRETRO

GOTO BUCLE

GIR_DER_AVA

CLRWDT

MOVLW MOVWF GIRDER MOVLW D'7'

D'25' FOR

MOVWF MOVLW MOVWF CALL

TEMP B'00000100' PORTA

RETARDO D'2' TEMP

MOVLW MOVWF CLRF CALL PORTA

RETARDO

DECFSZ FOR,F GOTO GIRDER

GOTO BUCLE

GIR_IZQ_AVA

CLRWDT

MOVLW

D'25'

MOVWF GIRIZQ MOVLW D'7'

FOR

MOVWF MOVLW MOVWF CALL

TEMP B'00000001' PORTA

RETARDO D'2' TEMP

MOVLW MOVWF CLRF CALL PORTA

RETARDO

DECFSZ FOR,F GOTO GIRIZQ

GOTO BUCLE

DELAY

CLRWDT MOVLW MOVWF D'1' FOR

BACK

MOVLW

D'9' TEMP B'00000000' PORTA

MOVWF MOVLW MOVWF CALL

RETARDO

DECFSZ FOR,F GOTO BACK

RETURN

INICIO

BSF CLRF

STATUS,5 TRISA B'11111111' TRISB B'00000111' OPTION_REG STATUS,5 PORTA PORTB

MOVLW MOVWF MOVLW MOVWF BCF CLRF CLRF

MOVLW MOVWF

D'251' CONT

;Ancho de pulso de 1 ms

MOVLW MOVWF RET_5SEG MOVLW D'250' MOVWF CALL

D'20' FOR

;Retardo inicial de 5 seg

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 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 AUX TEMP FOR LECTURA

EQU EQU EQU EQU EQU

0X0C 0X0D 0X0E 0X0F 0X10

ORG GOTO INICIO ORG

0X00

0X05

RETARDO

BCF MOVF CONT,0 MOVWF

INTCON,2

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 MOVLW MOVWF GOTO BUCLE B'00000101' PORTA

;Avance maximo

NAVEGACION

CLRWDT MOVLW MOVWF MOVLW MOVWF CALL D'7' TEMP

;Navega en la pista

B'00000101' PORTA

RETARDO D'1' TEMP B'00000100' PORTA

MOVLW MOVWF MOVLW MOVWF CALL

RETARDO D'1' TEMP

MOVLW MOVWF CLRF CALL PORTA

RETARDO

GOTO BUCLE

ESQUIVA_DEL

CLRWDT

;Escapa del enemigo hacia atras

MOVLW MOVWF MOVLW MOVWF CALL

D'9' TEMP B'00001010' PORTA

RETARDO D'2' TEMP B'00001000' PORTA

MOVLW MOVWF MOVLW MOVWF CALL

RETARDO D'1' TEMP

MOVLW MOVWF CLRF CALL PORTA

RETARDO

GOTO BUCLE

ESQUIVA_ATR

CLRWDT MOVLW MOVWF MOVLW MOVWF D'9' TEMP B'00000101' PORTA

;Escapa del enemigo hacia adelante

CALL

RETARDO D'2' TEMP B'00000001' PORTA

MOVLW MOVWF MOVLW MOVWF CALL

RETARDO D'1' TEMP

MOVLW MOVWF CLRF CALL PORTA

RETARDO

GOTO BUCLE

RETRO_DER gira a la derecha

CLRWDT

;Detecta al enemigo delante, se aleja y

MOVLW MOVWF MOVLW MOVWF CALL

D'9' TEMP B'00001010' PORTA

RETARDO D'2' TEMP B'00001000' PORTA

MOVLW MOVWF MOVLW MOVWF CALL

RETARDO D'1'

MOVLW

MOVWF CLRF CALL PORTA

TEMP

RETARDO

GOTO BUCLE

RETRO_IZQ gira a la izquierda

CLRWDT

;Detecta al enemigo delante, se aleja y

MOVLW MOVWF MOVLW MOVWF CALL

D'9' TEMP B'00001010' PORTA

RETARDO D'2' TEMP B'00000010' PORTA

MOVLW MOVWF MOVLW MOVWF CALL

RETARDO D'1' TEMP

MOVLW MOVWF CLRF CALL PORTA

RETARDO

GOTO BUCLE

RET_IZQ_SUAVE y gira a la derecha

CLRWDT

;Detecta al enemigo por detras, se aleja

MOVLW MOVWF MOVLW MOVWF CALL

D'10' TEMP B'00000101' PORTA

RETARDO D'1' TEMP B'00000100' PORTA

MOVLW MOVWF MOVLW MOVWF CALL

RETARDO D'1' TEMP

MOVLW MOVWF CLRF CALL PORTA

RETARDO

GOTO BUCLE

RET_DER_SUAVE y gira a la izq

CLRWDT

;Detecta al enemigo por detras, se aleja

MOVLW MOVWF MOVLW MOVWF CALL

D'10' TEMP B'00000101' PORTA

RETARDO D'1'

MOVLW

MOVWF MOVLW MOVWF CALL

TEMP B'00000001' PORTA

RETARDO D'1' TEMP

MOVLW MOVWF CLRF CALL PORTA

RETARDO

GOTO BUCLE

AVANCE

CLRWDT MOVLW MOVWF MOVLW MOVWF CALL D'7' TEMP B'00000101' PORTA

;Se aleja de la linea

RETARDO D'1' TEMP

MOVLW MOVWF CLRF CALL PORTA

RETARDO

GOTO BUCLE

RET_DER_CER

CALL DELAY

CLRWDT derecha

;Retroceso y giro brusco hacia la

MOVLW MOVWF RETRODER MOVLW D'7'

D'50' FOR

MOVWF MOVLW MOVWF CALL

TEMP B'00001010' PORTA

RETARDO D'2' TEMP

MOVLW MOVWF CLRF CALL PORTA

RETARDO

DECFSZ FOR,F GOTO RETRODER

CALL DELAY MOVLW MOVWF DERRETRO MOVLW D'7' TEMP B'00000100' PORTA D'50' FOR

MOVWF MOVLW MOVWF CALL

RETARDO D'2'

MOVLW

MOVWF CLRF CALL PORTA

TEMP

RETARDO

DECFSZ FOR,F GOTO DERRETRO

GOTO BUCLE

RET_IZQ_CER

CALL DELAY

CLRWDT

;Retroceso y giro brusco a la izquierda

MOVLW MOVWF RETROIZQ MOVLW D'7'

D'50' FOR

MOVWF MOVLW MOVWF CALL

TEMP B'00001010' PORTA

RETARDO D'2' TEMP

MOVLW MOVWF CLRF CALL PORTA

RETARDO

DECFSZ FOR,F GOTO RETROIZQ

CALL DELAY MOVLW MOVWF IZQRETRO MOVLW D'7' TEMP B'00000001' PORTA D'50' FOR

MOVWF MOVLW MOVWF CALL

RETARDO D'2' TEMP

MOVLW MOVWF CLRF CALL PORTA

RETARDO

DECFSZ FOR,F GOTO IZQRETRO

GOTO BUCLE

GIR_DER_AVA

CLRWDT

MOVLW MOVWF GIRDER MOVLW D'7'

D'25' FOR

MOVWF MOVLW

TEMP B'00000100'

MOVWF CALL

PORTA

RETARDO D'2' TEMP

MOVLW MOVWF CLRF CALL PORTA

RETARDO

DECFSZ FOR,F GOTO GIRDER

GOTO BUCLE

GIR_IZQ_AVA

CLRWDT

MOVLW MOVWF GIRIZQ MOVLW D'7'

D'25' FOR

MOVWF MOVLW MOVWF CALL

TEMP B'00000001' PORTA

RETARDO D'2' TEMP

MOVLW MOVWF CLRF CALL PORTA

RETARDO

DECFSZ FOR,F

GOTO GIRIZQ

GOTO BUCLE

DELAY

CLRWDT MOVLW MOVWF D'1' FOR

BACK

MOVLW

D'9' TEMP B'00000000' PORTA

MOVWF MOVLW MOVWF CALL

RETARDO

DECFSZ FOR,F GOTO BACK

RETURN

INICIO

BSF CLRF

STATUS,5 TRISA B'11111111' TRISB B'00000111' OPTION_REG STATUS,5 PORTA

MOVLW MOVWF MOVLW MOVWF BCF CLRF

CLRF

PORTB

MOVLW MOVWF

D'251' CONT

;Ancho de pulso de 1 ms

MOVLW MOVWF RET_5SEG MOVLW D'250' MOVWF CALL

D'18' FOR

;Retardo inicial de 5 seg

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