Top Banner
PROYECTO MICROPROCESADORES ROBOT MINISUMO 1 Resumen----En este informe se describe el procedimiento para cumplir con el objetivo de crear un robot mini sumo que además tendrá características extras como ser un seguidor de línea y evasor de obstáculos. El robot manejara para su movimiento servomotores en dos de sus 3 llantas, para la detección de obstáculos y medición de distancia un sensor de ultrasonido referencia SRF02 y para el seguimiento de línea se contara con dos sensores ópticos CNY70, el control del robot se hará con un microcontrolador AT89c52 programado en lenguaje ensamblador . Palabras clave------Microcontrolador, sensor de distancia, comunicación serial, servomotores, sensores ópticos, lenguaje ensamblador. I. INTRODUCTION N el curso de microprocesadores se abarco el estudio del lenguaje ensamblador con el cual se hicieron algunos programas prácticos simulados sobre el 8086, con esta experiencia y los conocimientos posteriores sobre micro controladores se implemento en un AT89c52 una aplicación con la cual se manejara el PWM que controla los servomotores que darán movimiento al robot. Cuenta con un grupo de sensores los cuales según requerimientos controlaran la dirección de las rotaciones individuales de las dos llantas con tracción con que se cuenta. El ojo del robot que también ofrecen la posibilidad de medir distancia y que será el que informa sobre la presencia o no de obstáculos es un sensor de ultrasonido que hace uso del puerto serie, para el seguimiento línea se usaran dos sensores CNY estos también serán los encargados de evitar que el robot se salga del área de combate en el modo pelea del robot mini sumo. Primero se explicaran los requerimientos del proyecto, luego se hará una explicación de cómo se logro cada objetivo individualmente y por último se mostrara el resultado tanto software como hardware del robot completo. II. REQUERIMIENTOS EVADIR OBSTACULOS El robot será capaz de desplazarse por un área con obstáculos localizándolos a medida que avanza y evitando chocarse con ellos. SEGUIR LINEA Seguir una línea de color negro, su forma no tiene que tener una forma predeterminada, el robot seguirá las diferentes curvas o rectas que tome esta guía a lo largo del trayecto. ROBOT MINI SUMO Competir contra otro robot, el objetivo es sacar al contrincante de un círculo con un diámetro definido, esto implica entre sus tareas el encontrar al otro participante y luego ir en búsqueda de empujarlo, teniendo siempre presente evitar salirse o que lo saquen de área de competencia. III. PROCEDIMIENTO El robot contara con 3 modos cada uno para cumplir con uno de los requerimientos, se vera a lo largo de la explicacion que los modos no estan realmente separados ya que cada uno hace uso en menor a mayor manera de las caracteristicas usadas en los otros. Proyecto de Microprocesadores y ensambladores. Robot Mini sumo Con Servomotores Universidad del Valle, Diciembre 2008 CESAR FERNANDO NEIRA PEÑA 0325091, YEISON CASTAÑO 0330471 E
19

Realizacion de un Robot Minisumo con un microprocesador 89c52

Jun 10, 2015

Download

Documents

Describe los pasos y la implementacion de un robot minizumo montado sobre un microcontrolador 89c52. Servomotores y codigo en ensamblador.
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Realizacion de un Robot Minisumo con un microprocesador 89c52

PROYECTO MICROPROCESADORES – ROBOT MINISUMO

1

Resumen----En este informe se describe el procedimiento

para cumplir con el objetivo de crear un robot mini sumo que

además tendrá características extras como ser un seguidor de

línea y evasor de obstáculos. El robot manejara para su

movimiento servomotores en dos de sus 3 llantas, para la

detección de obstáculos y medición de distancia un sensor de

ultrasonido referencia SRF02 y para el seguimiento de línea se

contara con dos sensores ópticos CNY70, el control del robot se

hará con un microcontrolador AT89c52 programado en

lenguaje ensamblador .

Palabras clave------Microcontrolador, sensor de distancia,

comunicación serial, servomotores, sensores ópticos, lenguaje

ensamblador.

I. INTRODUCTION

N el curso de microprocesadores se abarco el

estudio del lenguaje ensamblador con el cual se

hicieron algunos programas prácticos simulados

sobre el 8086, con esta experiencia y los

conocimientos posteriores sobre micro controladores

se implemento en un AT89c52 una aplicación con la

cual se manejara el PWM que controla los

servomotores que darán movimiento al robot.

Cuenta con un grupo de sensores los cuales según

requerimientos controlaran la dirección de las

rotaciones individuales de las dos llantas con

tracción con que se cuenta. El ojo del robot que

también ofrecen la posibilidad de medir distancia y

que será el que informa sobre la presencia o no de

obstáculos es un sensor de ultrasonido que hace uso

del puerto serie, para el seguimiento línea se usaran

dos sensores CNY estos también serán los

encargados de evitar que el robot se salga del área

de combate en el modo pelea del robot mini sumo.

Primero se explicaran los requerimientos del

proyecto, luego se hará una explicación de cómo se

logro cada objetivo individualmente y por último se

mostrara el resultado tanto software como hardware

del robot completo.

II. REQUERIMIENTOS

EVADIR OBSTACULOS

El robot será capaz de desplazarse por un área con

obstáculos localizándolos a medida que avanza y evitando

chocarse con ellos.

SEGUIR LINEA

Seguir una línea de color negro, su forma no tiene que

tener una forma predeterminada, el robot seguirá las

diferentes curvas o rectas que tome esta guía a lo largo del

trayecto.

ROBOT MINI SUMO

Competir contra otro robot, el objetivo es sacar al

contrincante de un círculo con un diámetro definido, esto

implica entre sus tareas el encontrar al otro participante y

luego ir en búsqueda de empujarlo, teniendo siempre

presente evitar salirse o que lo saquen de área de

competencia.

III. PROCEDIMIENTO

El robot contara con 3 modos cada uno para cumplir

con uno de los requerimientos, se vera a lo largo de la

explicacion que los modos no estan realmente

separados ya que cada uno hace uso en menor a

mayor manera de las caracteristicas usadas en los

otros.

Proyecto de Microprocesadores y

ensambladores.

Robot Mini sumo Con Servomotores Universidad del Valle, Diciembre 2008

CESAR FERNANDO NEIRA PEÑA 0325091, YEISON CASTAÑO 0330471

E

Page 2: Realizacion de un Robot Minisumo con un microprocesador 89c52

PROYECTO MICROPROCESADORES – ROBOT MINISUMO

2

1. MODO EVASION DE OBSTACULOS

El siguiente diagrama de flujo (diagrama de flujo

#1) presenta el funcionamiento de manera general:

Diagrama de flujo # 1. Modo evasión de obstáculos

Profundizando en las características de este modo se

explicara primero lo referente a las llantas y los

motores asociados a ellas y luego el sensor que se

encarga de verificar la existencia de obstáculos.

ORGANIZACIÓN DE LAS LLANTAS

Se realizo una configuración con 3 llantas (figura 1)

Figura 1.

En las cuales la dos de adelante tendrán la fuerza y

darán la dirección teniendo un control individual ya

que cada una cuenta con un servomotor que es

manejado por medio de señales de PWM que se

explicaran más adelante.

La llanta trasera será una rueda libre que solo seguirá

el movimiento de las dos delanteras dando estabilidad

no se tiene ningún control sobre ella.

SERVOMOTORES

Se adquirió un servomotor genérico, que tenia

características del servomotor Futaba referencia S3003,

Es un tipo de motor de c.c especial y la caracteristica

principal que poseen es la de poder posicionarse en

una posicion indicada dentro de un intervalo

normalmente de 180°. Para los requerimientos del

robot (el giro de las llantas) se requiere de un rango

completo 360° para lo cual se tuvo que hacer una

alteracion al motor, quitando las imitantes que le

daban ese pequeño intervalo de trabajo. Este motor es

manejado por medio de un tren de pulsos que le diran

el angulo a buscar de la siguiente manera:

Figura 2.

Estas 3 posiciones son las elementales pero con

pulsos intermedios se tendran el resto de los angulos.

Por medio de un potenciometro interno que gira junto

con el motor el servo es capaz de saber su

localizacion en grados y parar cuando llegue a la

posicion pedida, dependiendo del pulso que se le de y

que se encuentre en su rango de operación el avanzara

o retrocedera con mayor o menor velocidad

dependiendo de la posicion actual y la distancia que

lo separa de la pedida, para que el motor mantenga

una posicion y se oponga a cambios externos necesita

de una continua llegada de pulsos de un mismo valor.

Page 3: Realizacion de un Robot Minisumo con un microprocesador 89c52

PROYECTO MICROPROCESADORES – ROBOT MINISUMO

3

La primera limitante para poder lograr un giro

completo es un tope fisico en los engranajes internos

de su caja reductora (figura 3), que no deja superar los

180° de rotacion, para esto fue necesario abrir el

motor el cual viene en una pequeña caja.

Figura 3. Piñones del servomotor

El segundo problema es una realimentacion que le

indica la posicion actual, para engañar a esta

realimentacion se suprimio el potenciometro que

censaba la posicion (figura 4) al medirlo se encontro

que era un poteniometro de 5kΩ este fue cambiado

por un trimmer con el que se ajusto el valor

intermedio del potenciometro asociado a 90°, de esta

manera la unica posicion en la que la realimentacion

funcionara y le dira que pare sera cuando se le envie

el pulso para que se hubique en 90°.

Figura 5. Potenciómetro del servomotor

Para otros valores rotara para la derecha (si se le pide

un ángulo mayor a 90°) o la izquierda (si se le pide

ángulo menor) de manera indefinida mientras el pulso

este presente ya que nunca tendrá una referencia para

saber que llego y que tiene que parar. Teniendo este

control sobre la dirección de la rotación ya se puede

manejar el movimiento del robot enviándole a cada

llanta el pulso correspondiente al ángulo Φ que dará

el movimiento deseado.

MOVIMIENTO

DE ROBOT

MOTOR 1 MOTOR 2

ADELANTE Φ > 90 Φ < 90

ATRÁS Φ < 90 Φ > 90

GIRO

IZQUIERDA Φ < 90 Φ < 90

GIRO

DERECHA Φ > 90 Φ > 90

PARADO Φ = 90 Φ = 90

Para proveer la mayor velocidad se enviaran pulsos

referentes a 180° o 0°, se observa que al ir adelante o

atrás las rotaciones de los motores debe estar

invertidas esto por la forma en que se ubicaron los

motores respecto a las llantas, figura 6.

Figura 6. Posición de los motore.

Como se dijo anteriormente los motores son

controlados por un tren de pulsos con diferentes

duraciones este control también conocido como

modulación por anchura de pulso, PWM (Pulse Width

Modulation), fueron generados con ayuda de los

temporizadores T0 Y T2 del microcontrolador. Cabe

notar que se debió hacer uso del temporizador T2 ya

que el temporizador T1 se utiliza para el manejo de la

comunicación serial entre el sensor y el micro.

PWM

Respecto al manejo de los temporizadores se

manejaron los registros asociados a cada uno, para el

temporizador 0 y 1 se tiene el registro TCON Y

TMOD :

TCON:

De este registro lo único que se utilizara será los bits

TR1 Y TR0 que se usan para que los contadores

inicien la cuenta.

Page 4: Realizacion de un Robot Minisumo con un microprocesador 89c52

PROYECTO MICROPROCESADORES – ROBOT MINISUMO

4

TMOD:

En este registro se modifica los bits M0 y M1

asociados al timer 0 de manera que se escoja el modo

en el que funcionara:

M1 M0 MODO DE

OPERACIÓN

0 0 MODO 0

0 1 MODO 1

1 0 MODO 2

1 1 MODO 3

Para lograr este PWM también se requiere modificar

el registro TMOD en el cual se escoge el modo en el

cual el temporizador trabajara, se escogió para el

temporizador T0 el modo 1 en el cual trabaja como un

temporizador de 16 bits en el cual se le puede fijar un

inicio en un valor dado en sus registros TH0 y TL0.

Este temporizador producirá uno de los pwm, el otro

será producido por el temporizador T2 este de igual

manera se colocara en el modo para que sea un

temporizador de 16 bits, también cuenta con registros

en los que se carga un valor inicial:

Su registro de control

T2CON:

Para seleccionar el modo de este temporizador se

modifican los bits 5, 4, 2 y 0 del T2CON.

La forma en que se genera el PWM con cada uno de

los temporizadores es la misma. En el diagrama de

flujo #2 se observa la idea:

Diagrama de flujo # 2. Generación PWM

Cuando los temporizadores terminan la cuenta

generan una interrupción por temporizador, para que

el micro detecte las interrupciones de los

temporizadores se tienen que habilitar previamente

en el registro IE (interrupts enable).

REGISTRO IE

EA X ET2 ES ET1 EX1 ET0 EXO

Para habilitar las interrupciones de los temporizadores

T0 y T2 basta con poner en 1 el bit EA que es la

activación global y junto con ella habilitar los

Page 5: Realizacion de un Robot Minisumo con un microprocesador 89c52

PROYECTO MICROPROCESADORES – ROBOT MINISUMO

5

correspondientes ET2 y ET0 que hacen referencia a

las interrupciones de los timers 2 y 0

correspondientemente, las cuales se activan cada que

los contadores llegan a su cuenta máxima para los

modos que se están usando que es de tipo 16 bits la

cuenta máxima a la que se podrá llegar será FFFFH lo

que equivale a 32,767mseg que es suficiente para

cubrir el ciclo del PWM del servo que es de 20mseg.

SENSOR UTILIZADO

El sensor frontal del robot es de referencia SRF02

(figura 7), el cual es un medidor ultrasónico de

distancia que emplea un único transductor; es decir

con un mismo dispositivo realice la transmisión y

recepción de las señales; acepta comunicaciones I2C

y serie, esta segunda fue la elegida ya que el

microcontrolador 89c52 posee puerto serie, la

interface serie del sensor tiene un formato estándar de

a 9600 baudios 1 bit de inicio, 2 de stop y sin paridad.

Los niveles de tensión son TTL por lo que se puede

conectar directamente al microcontrolador.

Figura 7. Sensor SRF02

CARACTRERISTICAS GENERALES

Finalice

Tensión de alimentación 5Vcc

Consumo típico de 4mA

Frecuencia ultrasónica de 40KHz

Control automático de ganancia

Rango de medidas de 15 cm hasta 6 m

La comunicación serie con la que se controlo este

sensor se explica a continuación:

COMUNICACION SERIE

MODO SERIAL DEL SENSOR SRF02

Este modo de interfaz entre el SRF02 y el master es

seleccionado realizando la conexión de pines que se

muestra en la figura No 2, así se configura una

comunicación serie estándar con niveles TTL a 9600

baudios.

Figura No 8. Modo de conexión para comunicación

serial de SRF02

COMUNICACION SERIAL DEL

MICRONTROLADOR AT89C52

Características del Puerto serie del 89c52

Habilidad de comunicación full-dúplex.

Habilidad de comunicación sincrónica y

asíncrona.

Compatible con TTL.

Cuatro modos de operación.

Velocidades de transmisión y recepción

estándares RS-232.

EL 89C52 posee el registro SCON con el cual se

configura la comunicación serial y se muestra en la

figura No 3

FIGURA No 3. REGISTRO DE CONTROL DEL

PUERTO SERIE.

RI bandera de interrupción de recepción.

TI bandera de interrupción de transmisión.

RB8 es el noveno bit recibió en modo 2 y 3

TB8 es el noveno bit a transmitir en modo 2 y 3

REN habilitación de la recepción

SM2 habilitación del modo multiprocesador

SM0, SM1 especificación del modo de operación

Para el proyecto se trabajo con el puerto serie en

modo 1 el cual posee las siguientes características

Comunicación Full dúplex.

Asíncrono

Page 6: Realizacion de un Robot Minisumo con un microprocesador 89c52

PROYECTO MICROPROCESADORES – ROBOT MINISUMO

6

Baudaje programable generado por el

timer1

Compatible con RS-232

El sensor envía la distancia tomada en 16 bits, posee

un rango de medida de 15 cm a 6 mts, pero ya que el

objetivo en el modo esquiva objetos del robot es

detectar objetos cercanos el programa solo tendrá en

cuenta la información del sensor cuando este

devuelva una medida pequeña lo que significara que

hay un obstáculo, la distancia para la cual tomara la

decisión de esquivar se vio limitada a la medida

mínima del sensor que puede variar en algunos

centímetros dependiendo de la temperatura,

realizando pruebas al sensor por separado se

obtuvieron los siguientes valores reales para

diferentes medidas:

DISTANCIA REAL

DEL OBJETO

MEDIDA

ENTREGADA POR EL

SENSOR

> 18 cm, < 23 cm Tolerancia de + 3cm

> 24 cm, < 100 cm Tolerancia de ± 3cm

> 100 cm, < 550 cm Tolerancia de ± 4cm

< 18 cm Tolerancia de + 15cm

> 550 cm 0 cm

Tabla #1. Pruebas sensor de ultrasonido

De la tabla anterior se obtuvo que la medida mínima

del sensor es aproximadamente de 18 cm, por debajo

de esta medida lo datos serán erróneos y estarán entre

la medida devuelta estará entre 21cm y 33cm por lo

que se decidió que cuando el sensor encuentre una

medida igual o menor a 32 se supondrá que hay un

obstáculo y girara para evitarlo en los casos en que las

medidas sean mayores seguirá hacia adelante, el

código de evasión sigue lo mostrado en el diagrama

de flujo visto al principio de la explicación de este

modo.

Para pedir información al sensor hay que seguir con

unas reglas enviándole una secuencia de comandos

para:

Ajuste del sensor, petición de medida y toma de

resultados, como se ve en el diagrama de flujo #3,

para pasar de un comando a otro se están verificando

las banderas asociadas al envió y transmisión de datos

por el puerto serial del microcontrolador RI y TI.

Diagrama de flujo # 3. Comunicación sensor µprocesador

Al terminar la recepción los datos quedan guardados

en dos variables en la memoria interna del

microcontrolador PALTA, y PBAJA:

Page 7: Realizacion de un Robot Minisumo con un microprocesador 89c52

PROYECTO MICROPROCESADORES – ROBOT MINISUMO

7

Luego de obtener la medida el microcontrolador debe

realizar una comparación y tomar la decisión

adecuada, esto se hizo haciendo una comparación

lógica AND, como se dijo anteriormente la medida

entregada se encuentra en 16 bits y se quiere que si la

medida esta por debajo de los 32cm el robot realice

un giro, lo que significa lo mismo que si por lo

menos algún de los 6 bits menos significativos esta en

uno y los 10 mas significativos en cero se cumplirá la

comparación, de esta manera la comparación a

realizar será la siguiente:

El registro que tiene la parte alta de la medida se le

hará una and con FFH así solo en el caso en que los 8

bits sean cero la comparación dará como resultado

cero,

PARTE

ALTA X X X X X X X X

COMPARAR

CON FFH 1 1 1 1 1 1 1 1

Si alguno de sus bits estuviera en uno significaría que

la medida esta por encima de los 255 centímetros, en

este caso el robot podrá omitir la revisión de la parte

baja y seguir adelante pasando a pedir una nueva

medida, en caso de que la comparación sea cero se

podrían dar dos casos:

Que tengamos una medida por encima de los 6 mts

para esto faltaría ver si la parte baja de la medida

también es cero, o que la medida este por debajo de

los 255 cm, para saberlo se realiza una segunda AND

con la parte baja en este caso la comparación se hará

con el valor E0, de esta manera la comparación solo

cera igual a cero en caso de que se encuentren en cero

los 3 bits más significativos de este registro:

PARTE

ALTA X X X X X X X X

COMPARAR

CON C0H 1 1 1 0 0 0 0 0

Si la comparación es diferente de cero quiere decir

que el objetivo se encuentra entre los 255cm y los

32cm así que la orden para el robot será seguir

adelante. En caso contrario, si la comparación es

cero, la medida podría ser menor a los 32cm caso en

que el robot hará la maniobra para esquivar, o se

completaría la condición para decir que esta por fuera

de los 6mts si el valor del registro es 0. Las acciones

que tomara el robot al hacer las comparaciones se ven

en la siguiente tabla:

PALTA PBAJA MEDIDA ACCION

0 0 ∞ SEGUIR

ADELANTE

≠ 0 X > 255 CM SEGUIR

ADELANTE

0 ≥ 32 ≥ 32 CM < 600 CM SEGUIR

ADELANTE

0 < 32 < 32 ESQUIVAR

Tabla #2. Acciones del motor después de la medida.

Donde PALTA el el registro de 8 bits donde se

encuentra a parte alta de la medida y PBAJA es el

registro donde se encuentra la parte baja como se

había dicho anteriormente, la X hace referencia a que

no importa el valor que tome PBAJA en ese caso.

NOTA: Cabe anotar que cuando el robot toma la

decisión de girar esta esta condicionada por un

retardo de esta manera no se queda girando

eternamente, este retardo hará que el robot realice tan

solo un giro de aproximadamente 90 grados antes de

volver a mirar si hay un obstáculo y saber si debe

seguir girando o puede ir adelante.

Page 8: Realizacion de un Robot Minisumo con un microprocesador 89c52

PROYECTO MICROPROCESADORES – ROBOT MINISUMO

8

2. MODO SEGUIMIENTO DE LINEA

El siguiente diagrama de flujo (diagrama de flujo

#4) presenta el funcionamiento de este modo en

manera general:

Diagrama de flujo # 4. Seguimiento de línea.

La idea en este modo fue tener la línea a seguir en

medio de dos sensores de esta forma cuando el robot

se intente desviar hacia alguna dirección uno de los

sensores ingresara en la línea y este la detectara

enviando una señal a uno de los puertos del

microcontrolador, de esta manera se decidirá que

corrección poner en marcha haciendo girar al robot

hacia el lado contrario al que se detecto la

desviación.

Se usaron sensores CNY70 que son de tipo óptico

(Figura 9.)

Figura 9. CNY70

Tiene un emisor de luz y un receptor internamente el

circuito de prueba sigue el siguiente esquema:

Figura 10. Circuito de Test CNY70.

Estos sensores se alimentan con 5 volts, la superficie

en la cual se seguirá la línea (de color negro) es de

un fondo blanco, con estas características y las

propiedades inversas de estos dos colores de reflejar

la luz en una medida menor (color negro) o mayor

(color blanco), se configuraron los sensores de tal

manera que al encontrar la superficie mas reflactante

(blanca) entregue un nivel alto, el cual el cual le dará

la información necesaria para que el

microcontrolador tome un decisión al respecto, la

configuración que se uso fue es la mostrada en la

figura 11.

.

Figura 11. Configuración CNY70

Debido a que las superficies no son ideales se

requiere de una calibración, para esto se uso un

comparador el que ayudo a mejorar la respuesta del

Page 9: Realizacion de un Robot Minisumo con un microprocesador 89c52

PROYECTO MICROPROCESADORES – ROBOT MINISUMO

9

SNY enviando al puerto del microcontrolador el

nivel correspondiente.

Figura 12. Posición de los CNY en el carro.

3. MODO PELEA:

Este modo se diseño para realizar competencia de mini

sumos, la competencia se realiza entre dos robots sobre un

área circular de color negro y con el borde blanco como se

muestra en la figura 13:

Figura 13. Área de competencia

Al inicio de la competencia se colocan los adversarios en

direcciones opuestas (figura 14), y deben esperar 5

segundos antes de empezar la búsqueda del enemigo, el

objetivo es sacar al contrincante del campo de batalla

evitando salirse o que lo saquen.

Figura 14. Posición inicial

Para cumplir con estos requerimientos se utilizo una

combinación de las características usadas en los dos modos

anteriores, de la siguiente manera:

Antes de realizar cualquier acción se hizo un retraso 5

segundos, pasados los cuales el programa entra en la

primera fase que es la búsqueda del contrincante para esto

se envía a los servos la señal correspondiente al

movimiento girar, y se pide al sensor frontal (SRF 02)

como se hizo en el modo esquiva obstáculo informe sobre

la presencia de un objeto en la cercanía (contrincante), pero

en vez de buscar esquivarlo después de encontrado se envía

la orden ir hacia él, cabe anotar que en este modo pelea, la

velocidad de los servomotores al girar es mucho menor que

la que tiene cuando emprende una envestida, esto para

darle tiempo al sensor de ultrasonido de ubicar

correctamente al contrincante y tomar la dirección correcta.

El algoritmo que sigue el robot se resume en el diagrama

de flujo #5:

Diagrama de flujo #5

Para evitar es salirse por si solo o que el robot haga un

oposición si lo están intentando sacar se utilizo la

característica de los sensores de la parte inferior del robot

os CNY70, con los cuales en caso de detectar los bordes

blancos del área provocaran una interrupción, la cual parara

el programa sin importar la parte que este ejecutando y

atenderá el pedido de la interrupción, teniendo como orden

hacer que el robot avance en la dirección opuesta. Esta

respuesta a la interrupción durara un pequeño lapso de

tiempo, el cual fue calculado para regresar una distancia

aproximada al radio del campo de batalla, intentando

quedar en el centro antes de recomenzar la búsqueda del

enemigo nuevamente.

Page 10: Realizacion de un Robot Minisumo con un microprocesador 89c52

PROYECTO MICROPROCESADORES – ROBOT MINISUMO

10

La diferencia mas notoria entre el escaneo que realiza el

sensor de ultrasonido en el modo esquiva obstáculo y el

modo pelea es el de ampliar el rango al que responderá,

pasando de buscar objetos en una distancia menor a 32cm a

buscar objetos (contrincante) en un radio de 64 cm, esto

para cubrir casi en su totalidad el diámetro del campo de

batalla.

4. SIMULACIONES

Las simulaciones de las diferentes partes de código que al

se hicieron con la herramienta software Proteus versión 7.2

El mayor numero de simulaciones fueron las que tenían

que ver con la generación de los PWM. Para simular esta

parte se realizo el esquema sencillo de la figura 14

XTAL218

XTAL119

ALE30

EA31

PSEN29

RST9

P0.0/AD039

P0.1/AD138

P0.2/AD237

P0.3/AD336

P0.4/AD435

P0.5/AD534

P0.6/AD633

P0.7/AD732

P1.0/T21

P1.1/T2EX2

P1.23

P1.34

P1.45

P1.56

P1.67

P1.78

P3.0/RXD10

P3.1/TXD11

P3.2/INT012

P3.3/INT113

P3.4/T014

P3.7/RD17

P3.6/WR16

P3.5/T115

P2.7/A1528

P2.0/A821

P2.1/A922

P2.2/A1023

P2.3/A1124

P2.4/A1225

P2.5/A1326

P2.6/A1427

U1

AT89C52

DBG_TRACE=0

X1CRYSTAL

C1

18p

C2

18p

R18K2

C310u

33010k

A

B

C

D

Figura 14. Esquema para simulación PWM

Los PWM se están observando es su respectivo puerto de

salida con el osciloscopio del simulador entregando

satisfactoriamente luego de varias depuraciones la

secuencias de pulsos deseadas, dependiendo de cada caso

Figura 15.

Figura 15. Respuesta vista en el osciloscopio del simulador

5. HARDWARE

El diseño del circuito donde iría el microcontrolador y a

donde se conectarían los sensores se hizo con ayuda de la

herramienta software EAGLE (figura 15.1 y 15.2).

Figura 16. Diagrama esquemático robot mini sumo

Figura 15. Plaqueta robot mini sumo

Para alimentar el microcontrolador y los sensores los

cuales requerían de un voltaje de 5volts se hizo uso de un

regulador lm7805 dará el voltaje de cinco volts ante una

alimentación mayor a 7 V y resistente hasta un voltaje

cercano a los 20V, Por practicidad y para una buena

duración se alimento son una batería comercial de 9V.

Los servomotores se alimentaron con 6 volts los cuales se

sacaron de una suma de 4 pilas de 1.5 Volts en serie.

Finalmente el robot se muestra en las figuras, 16.1, 16.2,

16.3, 16.4.

Page 11: Realizacion de un Robot Minisumo con un microprocesador 89c52

PROYECTO MICROPROCESADORES – ROBOT MINISUMO

11

IMÁGENES ROBOT MINI SUMO

Figura 16.1 Robot vista frontal.

Figura 16.2 Robot vista inferior.

Figura 16.3 Robot vista superior.

Figura 16.4 Robot vista lateral.

6. SOFTWARE

Se hicieron tres programas por separado cada uno para su

respectivo modo para hacer pruebas individuales sobre el

robot , al final se unieron en uno solo código que es el

siguiente:

JMP ISR_INT_EXT0

ORG 000BH

JMP ISR_INT_CT0

ORG 0013H

JMP ISR_INT_EXT1

ORG 001BH

JMP ISR_INT_CT1

ORG 0023H

JMP ISR_INT_SERIAL

ORG 002BH

JMP ISR_INT_CT2

; DEFINICIÓN DE VARIABLES Y

CONSTANTES

TH_PWM EQU 064H

Page 12: Realizacion de un Robot Minisumo con un microprocesador 89c52

PROYECTO MICROPROCESADORES – ROBOT MINISUMO

12

TL_PWM EQU 065H

TH_PWM_B EQU 066H

TL_PWM_B EQU 067H

TH1_PWM EQU 068H

TL1_PWM EQU 069H

TH1_PWM_B EQU 070H

TL1_PWM_B EQU 071H

T2CON EQU 0C8H

TH2 EQU 0CDH

TL2 EQU 0CCH

; posiciona los registros de manejo de

temporizador 2

RCAP2L EQU 0CAH;

RCAP2H EQU 0CBH;

T2MOD EQU 0C9H;

Palta EQU 072H

Pbaja Equ 073H

EV1 EQU 074H

EV2 EQU 075H;

MAIN:

; escanea pines de seleccion de modo

setb p2.5

setb p2.6

MOV 32,#00H

MOV C,P2.5

CPL C

MOV 32.0,C

MOV C,P2.6

CPL C

MOV 32.1,C

MOV A,32

CJNE A,#00H,PELEA

AJMP EVASOR

PELEA:

CJNE A,#01H,SEGLINEA

AJMP PELION

;salto a modo pelea

SEGLINEA:

CJNE A,#03H,Linea2

AJMP MAIN

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

EVASOR:

SETB TR0

SETB T2CON.2

MOV TCON,#50H

;activa 2 contadores

MOV IE,#0FAH

;activa las interrupciones de los timers 0 y 1

MOV TMOD,#21H

;Modo 1 para CT0 y MODO 2 PARA CT1

mov T2MOD,#00H

CLR T2CON.1

mov T2MOD,#00H

SETB T2CON.2

CLR T2CON.0

CLR T2CON.3

CLR T2CON.4

CLR T2CON.5

CLR T2CON.7

CALL Adelante

;Cargo los valorres para generar pwm hacia

adelante.

MOV TH0,TH_PWM

MOV TL0,TL_PWM

MOV TH2,TH1_PWM

MOV TL2,TL1_PWM

SETB P2.0

SETB P2.1

; rutina de inicialización y medida de sensor

Scan1:

MOV TMOD,#21H

;CT0 y CT1temporizadores en modo 2

MOV TH1,#0f3h

;Valor de recarga para generar

MOV TL1,#0f3h

;9600 baudios con 16 MHZ

MOV TCON,#50H

;Se habilita el temporizador CT1

Page 13: Realizacion de un Robot Minisumo con un microprocesador 89c52

PROYECTO MICROPROCESADORES – ROBOT MINISUMO

13

MOV SCON,#40H

;Serial en modo 1. Recepcion deshabilitada

MOV PCON,#80H

;El bit SMOD se coloca en 1 (n=16)

CLR RI

CLR TI

sensor0:

mov SBUF,#00H

reviso0:

jb Ti,RECIVA

ajmp reviso0

LINEA2:

LJMP LINEA

RECIVA:

MOV TMOD,#21H ;CT0

y CT1 temporizadores en modo 2

MOV TH1,#0f3h ;Valor de

recarga para generar

MOV TL1,#0f3h ;9600 baudios

con 16 MHZ

MOV TCON,#50H ;Se

habilita el temporizador CT1

MOV SCON,#40H

;Serial en modo 1. Recepcion

deshabilitada

MOV PCON,#80H ;El

bit SMOD se coloca en 1 (n=16)

CLR RI

CLR TI

MOV SBUF,#54H

reviso1:

jb Ti,ENRE

ajmp reviso1

ENRE:

SETB REN

reviso2:

jb Ri,GUARDA

ajmp reviso2

GUARDA:

CLR TI

MOV R4,SBUF

CLR RI

MOV PALTA,R4

reviso3:

jb Ri,GUARDA2

ajmp reviso3

GUARDA2:

CLR TI

MOV R5,SBUF

MOV PBAJA,R5

CLR RI

CJNE R4,#00H,SCAN1

CJNE R5,#00H,siga

jmp scan1

siga:

;ANL 072H,#0FFH

ANL 073H,#0E0H

;MOV R4,PALTA

MOV R5,PBAJA

CJNE R5,#00H,SCAN1

AJMP ESQUIVAR

; si se detecta obstáculo llamo a esquivarla

cual ocasiona q el mini zumo comience a

girar esquivando el obstáculo.

Esquivar:

CALL Giro

MOV TH0,TH_PWM

MOV TL0,TL_PWM

MOV TH2,TH1_PWM

MOV TL2,TL1_PWM

MOV R2,#03H

CALL Delay

CALL Adelante

MOV TH0,TH_PWM

MOV TL0,TL_PWM

MOV TH2,TH1_PWM

MOV TL2,TL1_PWM

; retorna a escanear

AJMP Scan1

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

; modo seguidor de linea.

LINEA:

;configuro registros necesarios para modo

seguidor de línea

SETB TR0

Page 14: Realizacion de un Robot Minisumo con un microprocesador 89c52

PROYECTO MICROPROCESADORES – ROBOT MINISUMO

14

SETB T2CON.2

MOV TCON,#50H

;activa 2 contadores

MOV IE,#0FAH

;activa las interrupciones de los timers 0 y 1

MOV TMOD,#21H

;Modo 1 para CT0 y MODO 2 PARA CT1

mov T2MOD,#00H

CLR T2CON.1

mov T2MOD,#00H

SETB T2CON.2

CLR T2CON.0

CLR T2CON.3

CLR T2CON.4

CLR T2CON.5

CLR T2CON.7

SETB P2.0

SETB P2.1

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

MOV TCON,#10H

MOV IE,#0E2H

MOV TMOD,#21H

SETB P2.0

SETB P2.1

;Carga mis contadores para generar pwm

CALL ADELANTEL

MOV TH0,TH_PWM

MOV TL0,TL_PWM

MOV TH2,TH1_PWM

MOV TL2,TL1_PWM

Scan3:

JB P3.2,Stop1

JB P3.3,Stop2

AJMP Scan3

Stop1:

clr t2con.2

JB p3.2,Stop1

setb T2CON.2

AJMP Scan3

Stop2:

clr tr0

JB p3.3,Stop2

setb tr0

AJMP Scan3

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

; modo pelea minizumo

PELION:

; inicializo el minizumo para modo pelea y

espero 5 seg.

MOV R3,#00H

MOV R2,#32H

MOV R7,#00h

CALL DELAY

SETB TR0

SETB T2CON.2

MOV TCON,#55H

;activa 2 contadores

MOV IE,#0FFH

;activa las interrupciones de los timers 0 y 1

MOV TMOD,#21H

;Modo 1 para CT0 y MODO 2 PARA CT1

mov T2MOD,#00H

CLR T2CON.1

mov T2MOD,#00H

SETB T2CON.2

CLR T2CON.0

CLR T2CON.3

CLR T2CON.4

CLR T2CON.5

CLR T2CON.7

SETB P2.0

SETB P2.1

MOV R7,#00h

Inicio la exploración para encontrar enemigo

CALL GIRO1

MOV TH0,TH_PWM

MOV TL0,TL_PWM

MOV TH2,TH1_PWM

MOV TL2,TL1_PWM

; Inicializo y tomo medida de sensor:

AJMP SCAN1p

SCAN0p:

CJNE R6,#0FFH,SCAN1p

MOV R3,#00H

CALL GIRO1

Page 15: Realizacion de un Robot Minisumo con un microprocesador 89c52

PROYECTO MICROPROCESADORES – ROBOT MINISUMO

15

MOV TH0,TH_PWM

MOV TL0,TL_PWM

MOV TH2,TH1_PWM

MOV TL2,TL1_PWM

Scan1p:

CJNE R7,#02H,SCAN2p

CALL INTERRUPCION

SCAN2p:

MOV TMOD,#21H ;CT0 y CT1

temporizadores en modo 2

MOV TH1,#0f3h ;Valor de

recarga para generar

MOV TL1,#0f3h ;9600 baudios

con 16 MHZ

MOV TCON,#50H ;Se

habilita el temporizador CT1

MOV SCON,#40H

;Serial en modo 1. Recepcion

deshabilitada

MOV PCON,#80H ;El

bit SMOD se coloca en 1 (n=16)

CLR RI

CLR TI

sensor0p:

mov SBUF,#00H

reviso0p:

jb Ti,RECIVAp

ajmp reviso0p

RECIVAp:

MOV TMOD,#21H ;CT0 y CT1

temporizadores en modo 2

MOV TH1,#0f3h ;Valor de

recarga para generar

MOV TL1,#0f3h ;9600 baudios

con 16 MHZ

MOV TCON,#50H ;Se

habilita el temporizador CT1

MOV SCON,#40H

;Serial en modo 1. Recepcion

deshabilitada

MOV PCON,#80H ;El

bit SMOD se coloca en 1 (n=16)

CLR RI

CLR TI

MOV SBUF,#54H

reviso1p:

jb Ti,ENREp

ajmp reviso1p

ENREp:

SETB REN

reviso2p:

jb Ri,GUARDAp

ajmp reviso2p

GUARDAp:

CLR TI

MOV R4,SBUF

CLR RI

MOV PALTA,R4

reviso3p:

jb Ri,GUARDA2p

ajmp reviso3p

GUARDA2p:

CLR TI

MOV R5,SBUF

MOV PBAJA,R5

CLR RI

CJNE R4,#00H,SCAN1p

CJNE R5,#00H,sigap

jmp scan1p

sigap:

MOV 074H,072H

MOV 075H,073H

MOV A,075H

ORL 074H,A

Page 16: Realizacion de un Robot Minisumo con un microprocesador 89c52

PROYECTO MICROPROCESADORES – ROBOT MINISUMO

16

MOV A,EV1

CJNE A,#00H,SIGA4p

AJMP SCAN0p

SIGA4p:

ANL 072H,#0FFH

ANL 073H,#0C0H

MOV R4,PALTA

MOV R5,PBAJA

; tomo decisión dependiendo de el dato

entregado en el sensor

CJNE R5,#00H,BOBADAp

AJMP ATACARp

BOBADAp:

LJMP SCAN0p

BOBADA2p:

LJMP SCAN1p

ATACARp:

CJNE R3,#00h,BOBADA2p

ATACAR1p:

CALL ADELANTE

MOV TH0,TH_PWM

MOV TL0,TL_PWM

MOV TH2,TH1_PWM

MOV TL2,TL1_PWM

mov R3,#0FFh

AJMP Scan1p

; si detecto el borde del tatami active

interrupciones externas q me envían a esta

subrutina la cual aleja al mini zumo del borde

de la línea

INTERRUPCION:

CALL ATRAS

MOV TH0,TH_PWM

MOV TL0,TL_PWM

MOV TH2,TH1_PWM

MOV TL2,TL1_PWM

MOV R7,#00H

MOV R2,#05H

CALL DELAY

MOV IE,#0FFH

CLR IE1

CLR IE0

MOV R2,#05H

CALL DELAY

CALL GIRO1

MOV TH0,TH_PWM

MOV TL0,TL_PWM

MOV TH2,TH1_PWM

MOV TL2,TL1_PWM

AJMP SCAN1p

Finaliza el modo pelea.

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

; En este apartado se guardan las subrutinas q

me generan los diferentes pwm dependiendo

de cual sea la necesidad.

Giro:

MOV TH_PWM,#0FDH

MOV TL_PWM,#0A8H

MOV TH_PWM_B,#066H

MOV TL_PWM_B,#018H

MOV TH1_PWM,#0FDH

MOV TL1_PWM,#0A8H

MOV TH1_PWM_B,#066H

MOV TL1_PWM_B,#018H

RET

Giro1:

MOV TH_PWM,#0F5H

MOV TL_PWM,#073H

MOV TH_PWM_B,#06EH

MOV TL_PWM_B,#4BH

MOV TH1_PWM,#0F5H

MOV TH1_PWM,#087H

MOV TH1_PWM_B,#06EH

MOV TL1_PWM_B,#037H

Page 17: Realizacion de un Robot Minisumo con un microprocesador 89c52

PROYECTO MICROPROCESADORES – ROBOT MINISUMO

17

RET

AdelanteL:

MOV TH1_PWM,#0F5H

MOV TL1_PWM,#074H

MOV TH1_PWM_B,#06EH

MOV TL1_PWM_B,#04cH

MOV TH_PWM,#0F6H

MOV TL_PWM,#13H

MOV TH_PWM_B,#06DH

MOV TL_PWM_B,#0ABH

RET

Adelante:

MOV TH1_PWM,#0EEH

MOV TL1_PWM,#008H

MOV TH1_PWM_B,#075H

MOV TL1_PWM_B,#0B8H

MOV TH_PWM,#0FDH

MOV TL_PWM,#0A8H

MOV TH_PWM_B,#066H

MOV TL_PWM_B,#018H

MOV R6,#0FFH

RET

Atras:

MOV TH_PWM,#0EEH

MOV TL_PWM,#008H

MOV TH_PWM_B,#075H

MOV TL_PWM_B,#0B8H

MOV TH1_PWM,#0FDH

MOV TL1_PWM,#0A8H

MOV TH1_PWM_B,#066H

MOV TL1_PWM_B,#018H

RET

Delay:

MOV R0,#0FAH

MOV R1,#0C8H

Ciclo:

DEC R0

nop

CJNE R0,#00H,Ciclo

MOV R0,#0FAH

DEC R1

CJNE R1,#00H,Ciclo

MOV R1,#0C8H

DEC R2

CJNE R2,#00,Ciclo

RET

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

********************

;ISR DE LA INTERRUPCION EXTERNA 0

ISR_INT_EXT0:

MOV R7,#02H

MOV IE,#0FAH

RETI

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

********************

;ISR DE LA INTERRUPCION DEL

CONTADO TEMPORIZADOR 0

ISR_INT_CT0:

MOV C,P2.0

JC P_BAJA

MOV TH0,TH_PWM

MOV TL0,TL_PWM

SETB P2.0

RETI

P_BAJA:

MOV TH0,TH_PWM_B

MOV TL0,TL_PWM_B

CLR P2.0

RETI

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

********************

;ISR DE LA INTERRUPCION EXTERNA 1

ISR_INT_EXT1:

MOV R7,#02H

MOV IE,#0FAH

RETI

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

********************

;ISR DE LA INTERRUPCION DEL

CONTADO TEMPORIZADOR 1

ISR_INT_CT1:

RETI

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

********************

Page 18: Realizacion de un Robot Minisumo con un microprocesador 89c52

PROYECTO MICROPROCESADORES – ROBOT MINISUMO

18

;ISR DE LA INTERRUPCION DEL

GENERADA POR EL PUERTO SERIAL

ISR_INT_SERIAL:

RETI

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

********************

;ISR DE LA INTERRUPCION DEL

CONTADO TEMPORIZADOR 2

ISR_INT_CT2:

CLR T2CON.7

MOV C,P2.1

JC P_BAJA1

MOV TH2,TH1_PWM

MOV TL2,TL1_PWM

SETB P2.1

RETI

P_BAJA1:

MOV TH2,TH1_PWM_B

MOV TL2,TL1_PWM_B

CLR P2.1

RETI

DB

0AAH,0AAH,0AAH,0AAH,0AAH,0

AAH

END ;FIN DE TODO EL PROGRAMA

CONCLUSIONES

Se debe tener cuidado a la hora de escoger los

sensores, según los requerimientos, si bien el

sensor SFR02 provee una precisión muy buena en

su rango activo, su característica de ser de

ultrasonido puede generar problemas si se emplea

como un sensor para obstáculos móviles, o que

tengan ángulos pronunciados en sus superficies,

siendo en algunos casos invisibles al sensor.

La manera en que el sensor SFR02 entrega la

información puede parecer muy amigable en un

principio, pero el poder sincronizar la

comunicación en este caso por puerto serie, y

manejarla, puede ser un poco complicada a la hora

de implementarla, pero si es muy confiable una

vez se dominada y si se realiza en condiciones

favorables.

Respecto a los sensores ópticos se debe tener

especial cuidado ya que las condiciones del

ambiente como la luz o las superficies que no es

una constante pueden alterar la respuesta de los

mismos de un momento a otro, para esto basta con

una buena calibración dejando un rango aceptable

para evitar que sea demasiado sensible.

El realizar el proyecto en lenguaje ensamblador

significo un reto, pero nuevamente quedo claro las

múltiples ventajas que tiene y la posibilidad de

realizar cualquier aplicación una vez se tienen

claras las limitaciones tanto del lenguaje como de

el microcontrolador con el que se esta trabajando.

Proyectos como este en el que la eficiencia

depende tanto del software como del hardware

que se usa, requieren de un cuidado especial ya

que están estrechamente ligados.

Se cumplieron con los objetivos propuestos, pero

este proyecto es una base de de proyectos mucho

mas grandes ya que se le pueden hacer grandes

modificaciones mejorando sus aspectos ahora

presentes y agregando características extras.

BIBLIOGRAFIA

Notas de clase, micropocesadores y

ensambladores 2008, Ing. Henry Jiménez

Rosero, Universidad Del Valle.

MCS®51 MICROCONTROLLER

FAMILY USER’S MANUAL, INTEL,

febrero 1994, formato pdf.

Manual de ATMEL 89C52.

Ficha técnica sensor SRF02, formato pdf.

data sheet CNY70

data sheet servomotor referencia Futaba

S3003

Paginas varias en internet sobre

servomotores.

Page 19: Realizacion de un Robot Minisumo con un microprocesador 89c52

PROYECTO MICROPROCESADORES – ROBOT MINISUMO

19