Informe Final Sumo

59
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

Transcript of Informe Final Sumo

Page 1: 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

Page 2: Informe Final Sumo

Í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

Page 3: Informe Final Sumo

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

Page 4: Informe Final Sumo

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

Page 5: Informe Final Sumo

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

Page 6: Informe Final Sumo

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

Page 7: Informe Final Sumo

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)

Page 8: Informe Final Sumo

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.

Page 9: Informe Final Sumo

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

Page 10: Informe Final Sumo

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

Page 11: Informe Final Sumo

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.

Page 12: Informe Final Sumo

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

Page 13: Informe Final Sumo

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

Page 14: Informe Final Sumo

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

Page 15: Informe Final Sumo

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

Page 16: Informe Final Sumo

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

Page 17: Informe Final Sumo

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

Page 18: Informe Final Sumo

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

Page 19: Informe Final Sumo

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'

Page 20: Informe Final Sumo

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'

Page 21: Informe Final Sumo

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

Page 22: Informe Final Sumo

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'

Page 23: Informe Final Sumo

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

Page 24: Informe Final Sumo

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'

Page 25: Informe Final Sumo

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

Page 26: Informe Final Sumo

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

Page 27: Informe Final Sumo

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

Page 28: Informe Final Sumo

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

Page 29: Informe Final Sumo

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

Page 30: Informe Final Sumo

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

Page 31: Informe Final Sumo

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

Page 32: Informe Final Sumo

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'

Page 33: Informe Final Sumo

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

Page 34: Informe Final Sumo

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'

Page 35: Informe Final Sumo

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

Page 36: Informe Final Sumo

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'

Page 37: Informe Final Sumo

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

Page 38: Informe Final Sumo

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'

Page 39: Informe Final Sumo

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

Page 40: Informe Final Sumo

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

Page 41: Informe Final Sumo

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

Page 42: Informe Final Sumo

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

Page 43: Informe Final Sumo

PWM para el control de motores, marcha hacia adelante

Page 44: Informe Final Sumo

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:

Page 45: Informe Final Sumo

Circuito físico, vista superior

Page 46: Informe Final Sumo

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.

Page 47: Informe Final Sumo

Vista anterior, ensamblaje terminado del robot SUMO

Page 48: Informe Final Sumo

Vista posterior, ensamblaje terminado del robot SUMO

Page 49: Informe Final Sumo

Vista lateral, ensamblaje terminado del robot SUMO

Page 50: Informe Final Sumo

Vista isométrica, ensamblaje terminado del robot SUMO

Page 51: Informe Final 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

Page 52: Informe Final Sumo

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