arte de guerra - repositorio.tec.mx

54
ITESM-CCM TECNOLÓGICO DE MONTERREY• BiSL;O T.E C A Proyectos de Ingeniería Computacional "Arte de Guerra" Integrantes: Pablo Ayala Sarmiento Yamil Ramos Tueme Rodrigo Eddy Ochoa Asesor: Marco Antonio Paz Ramos Enero-Mayo 2006

Upload: others

Post on 01-Jul-2022

6 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Arte de guerra - repositorio.tec.mx

ITESM-CCM

TECNOLÓGICO DE MONTERREY•

BiSL;O T.ECA

Proyectos de Ingeniería Computacional

"Arte de Guerra"

Integrantes:

Pablo Ayala Sarmiento

Yamil Ramos Tueme

Rodrigo Eddy Ochoa

Asesor:

Marco Antonio Paz Ramos

Enero-Mayo 2006

Page 2: Arte de guerra - repositorio.tec.mx

ÍNDICE

, l. INTRODUCCION ....................................................................... 3

i. Objetivos y Metas .............................................................. 3

ii. Estado del Arte .................................................................. 5

, 11. TEORIAS ................................................................................. 7

i. Hardware ........................................................................ 7

a. Componentes .......................................................... 7

b. Diagramas de bloques .............................................. 13

c. Conexiones ............................................................ 17

ii. Software ........................................................................ 21

a. Idea básica ............................................................ 21

b. Diagramas de flujo .................................................. 22

111. RESULTADOS ......................................................................... 30

i. Resultados Hardware ........................................................ 30

ii. Resultados Software ......................................................... 31

iii. Estudio de mercado y análisis financiero ................................ 32

IV. CONCLUSIONES ..................................................................... 33

V. REFERENCIAS ........................................................................ 34

VI. ANEXOS ................................................................................. 34

TECNOLOOCO DE MONTERREY.

2

Page 3: Arte de guerra - repositorio.tec.mx

I. INTRODUCCIÓN

La robótica comienza a ser un concepto de dominio público, el conocimiento sobre

sus aplicaciones y el potencial que ofrece está en aumento; el diseño de un Robot va

desde la tracción y locomoción que tendrá así como los distintos dispositivos

electrónicos que le permitirán comunicarse con el mundo para interactuar con él.

Hay diferentes tipos de robots, los de velocidad, seguidores de línea, luchadores de

sumo, de fútbol, etc. En nuestro caso hemos decidido trabajar con robots que pelean

mediante transmisores y receptores infrarrojos, detectan obstáculos y a su enemigo

mediante la ayuda de una cámara que permite la interpretación de imágenes a través de

un microprocesador; de esta forma englobamos la mayoría de las funciones de los

robots antes mencionados.

A lo largo del siguiente documento explicaremos todo el diseño y desarrollo del

proyecto antes descrito.

i. Objetivos y Metas.

Los objetivos planteados para la creación de los robots son los siguientes:

a. Diseño de hardware eficiente que permita desplazar a los robots e

interactuar con el entorno, el diseño incluye:

1. Selección correcta de los motores que proporcionen tanto potencia

como torque suficiente para mover todo el mecanismo.

2. Acoplamiento de las llantas a los motores

3. Selección indicada de los sensores que van a detectar los obstáculos en

el espacio del robot.

4. Selección de los motores que moverán a los sensores (servos).

5. Selección de los disparadores y receptores.

6. Selección de la cámara para el seguimiento de color y procesamiento

de imágenes.

TECNOLÓGICO DE MONTERREY ..

3

Page 4: Arte de guerra - repositorio.tec.mx

7. Integración de todos los elementos de Hardware mediante la creación

de un sistema mínimo.

b. Diseño de software para lograr la integración funcional de todos los

elementos antes mencionados en la parte de hardware, el diseño incluye:

1. Lógica correcta para manejar las señales del puente h que permita el

giro en ambas direcciones de los motores según la necesidad del robot

2. Lógica para el manejo de los sensores mediante interrupciones

externas, evitando choques constantes del robot.

3. Creación de dos señales PWM para los servos que maneJan los

sensores, controlándolos para mantener sólo el rango de movimiento

deseado (lateral y frontal).

4. Después de detectar al enemigo a una distancia segura de disparo

(menos de 30 cm), crear un tren de pulsos para generar el disparo a

través de los transmisores.

5. Lógica para recibir los disparos y deshabilitar al robot después de su

muerte (50 flancos de subida recibidos= muerte).

6. Con la cámara tenemos como objetivos la detección y seguimiento del

color deseado (rojo, verde) y la medición de la mediana de valores

RGB de cada imagen; al mencionar seguimiento como objetivo

tenemos que el robot sea capaz de dirigirse hacia el centro de masa del

color que tenga programado.

7. Integración de los elementos de Software.

La meta principal es la correcta integración tanto del software como

del hardware mediante la implementación de cada uno de los

objetivos. Como objetivo adicional se pretende programar lógica

difusa para permitir que el robot haga la selección del rango válido de

detección del enemigo o para diferir entre obstáculos del mismo color

que su enemigo mediante la detección de movimiento.

TECNOLÓC1CO DE MONTERREY ..

4

Page 5: Arte de guerra - repositorio.tec.mx

ii. Estado del Arte

a. Robots de Guerra

Figura I

El robot mostrado en la imagen es un

prototipo que se utiliza actualmente

por el gobierno de USA, lo que se

espera es que en un futuro puedan ser

dejados caer desde un avión y que

tengan la coordinación suficiente para

diseñar y ejecutar ataques en el campo

enemigo. Actualmente pueden recorrer terrenos evitando obstáculos, liberar

cortinas de humo, verificar la presencia de armas químicas, además de tener

un "cuello" que les permite observar en las esquinas sin ser detectados por el

enemigo.

b. Sensores de Proximidad

Dentro de la categoría de sensores ultrasónicos encontramos al Massa-Sonic

M-5000/95 que es lo último en tecnología ultrasónica ya que alcanza un rango

de 6 metros de detección sin ningún problema, además de tener incluido un

microprocesador, para tener un control altamente exacto de la distancia,

posición o nivel.

c. Servos

UIJIA: tfRW W\.U'tlB ·iriut fn:

Figura 2.

t.JW;A:~. NXCR-m Mt·i•s

Los servos mostrados arriba son de la marca F ANUC líder en el desarrollo

de motores, poseen ventajas como la detección de errores dentro de los

t. TECNOLÓGICO .. DE MONTERREY.,

5

Page 6: Arte de guerra - repositorio.tec.mx

equipos mediante un sensado de la temperatura en el motor, además de que

ahorran energía detectando estados estacionarios.

d. Cámara

Figura 3

La cámara utilizada en

este proyecto es el modelo

CMU carn2, en este caso

coincide en ser el estado

del arte en cuanto a

procesamiento de

imágenes a bajo costo se

refiere, es la segunda

generación del modelo

CMU, con las ventajas de

que tiene salidas para

controlar directamente los servos. Detecta movimiento, provee estadísticas de

los valores RGB y transmite información de las imágenes captadas hacia la

computadora para procesamiento adicional.

6

Page 7: Arte de guerra - repositorio.tec.mx

11. TEORÍAS

Como ya se ha manejado anteriormente, y por simplicidad del proyecto y su más fácil

comprensión se ha optado por dividir los conceptos en parte de Hardware y parte de

Software. La primera parte se narra todo lo que tiene que ver con la parte fisica del diseño

así como las interconexiones del dispositivo que permiten que el sistema funcione de

manera adecuada. En la segunda parte, que será referente a la parte lógica se expondrá

todo lo asociado con el desarrollo de la parte de programación.

l. Hardware

Los componentes de la parte del Hardware son muy diversos ya que las

tareas que podrá desempeñar también serán muy diversificadas, por lo que debe

estar adaptado a distintas situaciones y tener las herramientas necesarias para

resolver los problemas que se puedan presentar.

a. Componentes:

~ Sensores ultrasónicos. Para esquivar obstáculos en caso de ser necesario.

~ Microcontrolador. Parte central de procesamiento (CPU).

~ Cámara de video. Encargada de efectuar la adquisición digital de imágenes.

~ Receptores. Fototransistores con una etapa de amplificación para recibir y

corregir la señal.

~ Disparadores. LED Infrarrojo para manar el disparo.

~ Motores. Motores acoplados con llantas para desplazar al robot.

~ Circuitos Integrados. Encargados de manejar la lógica de disparo en el

hardware.

~ Puente 'H'. Encargado de polarizar los motores.

~ Fuente de Alimentación. Batería de l 2V

i. Sensores ultrasónicos

Los sensores para la detección de obstáculos son ultrasónicos

conocidos corno sensores de sonar de bajo costo SRF04

TECNOLÓGtCO DE MONTERREY.,

7

Page 8: Arte de guerra - repositorio.tec.mx

Figura4

Beam Pattem Ver gráfico 1 ¡

¡Voltaje 5v

,Corriente 30mA Typ. 50mA Max

Frecuencia ¡40KHz

[Rango Máximo !3m 1

Rango Mínimo ¡3 cm !

Sensibilidad ¡Detecta a un tubo de 3cm de diametro a más de 2 m 1

¡Disparador de entrada¡ 1 OuS Min. Pulsos TTL

:Pulso de Eco jPositive TTL level signal, width proportional to range.

Tabla I

Gráfico I

TECNOLÓOCO DE MONTERREY ..

8

Page 9: Arte de guerra - repositorio.tec.mx

En la tabla 1 se encuentran las especificaciones del sensor, en el gráfico uno

se describe el rango de alcance que tiene el sensor.

T rigger Input To Module

SRF04 Timing Diagram

Trigger Pulse 10uS Min ~

- -

Sanie Burst From Module

Echo Pulse Outpli To User Timing C1rcuit

8 Cycle Sanie Sur& Allow10mS From

Figura 5

1-------1 End of Echo To Next Trigger Pulse

Note. Echo Pulse Echo Pulse is .Ap¡:iroK. 36mS

100uS to 1BmS if no Object Detected

El diagrama de tiempos mostrado en la figura 7 ejemplifica el

funcionamiento del sensor ultrasónico, recibe un pulso de entrada que

lo habilita, lanza las señales ultrasónicas y regresa la señal de eco,

donde cada 30us igualan a 1 cm de distancia.

El precio de cada uno de los sensores es de 25 dólares y como se

necesitan 4 sensores en total, dos por cada uno de los carros,

haciendo la conversión a pesos el costo de los sensores fue de $1090.

Estos dispositivos pueden ser adquiridos en Estados Unidos en la

tienda acroname.

ii. Servo-motores

Este es el diagrama de un servomotor típico:

TECNOLÓGICO DE MONTERREY~

9

Page 10: Arte de guerra - repositorio.tec.mx

Diámero = o.~ cm

~- 1.7.S em-·j --- 2c:m----

Cable blanco o .marilo (Nsos)

V~ D.2011

/

11

'c~r(f) :--: Cable negro ( + sv) 1 (Tierra)

! ··· ··· 3.6 cm·····-;

Figura 6

4 c:m

' ' ------------

Un servomotor de este tipo consiste básicamente en un motor

eléctrico que sólo se puede mover en un ángulo aproximado de 180

grados (no dan vueltas completas como los motores normales) y la

posición deseada se le indica al servomotor por medio de pulsos

PWM que se generan en el CPU.

Los servomotores fueron adquiridos también en Estados Unidos en la

tienda acroname y el precio de cada uno de ellos es de 10.90 dólares.

El número total de servomotores es de 4, ya que se necesita uno por

cada sensor. El costo en pesos de estos dispositivos es de $475.24

iii. Reguladores

El regulador utilizado en el proyecto del robot va a ser el

LM7805 en la siguiente figura se muestra en encapsulado de

un regulador LMXX.

TECNOLÓGICO DE MONTERREY.,

10

Page 11: Arte de guerra - repositorio.tec.mx

:1 o 11:

E] ET S

Figura 7

En la figura anterior, se muestra un típico integrado regulador

de tensión donde E es la entrada de la fuente de alimentación;

T la tierra y S la salida regulada, en el caso de este proyecto,

la salida está regulada a 5 volts, para mantener voltajes TTL.

Este regulador de voltaje es fácil de encontrar en cualquier

tienda de electrónica, como puede ser Steren u Omega. Este

dispositivo tiene un costo por unidad de $5.

iv. Cámara.

La cámara se comumca de manera serial con el

microprocesador, para fines del proyecto se programa para

que realice tres funciones.

Alta Resolución. Permite tener el doble de pixeles para dar

seguimiento a cualquier detección del enemigo. Se envía el

Comando HR 1 seguido de un enter.

Rastreo de movimiento. Como su nombre lo indica recibe los

parámetros RGB del color que se quiere rastrear y regresa un

paquete con la información solicitada. Ejemplo:

TECNOLÓGtCO DE MONTERREY ..

11

Page 12: Arte de guerra - repositorio.tec.mx

Enviamos TC 100 120 75 140 200 220 enter

De respuesta obtenemos el paquete T con la información.

Medianas RGB. Regresa el valor medio RGB de la imagen.

Ejemplo:

Enviamos GM enter

Obtenemos de respuesta el paquete S con la información.

La cámara es uno de los componentes más importantes y

delicados de la plataforma, es por ello que es el componente

más costoso. Cada una de las cámaras tiene un costo de 169

dólares y también pueden ser adquiridas en la tienda

acroname. El costo total de las dos cámaras ascendió a

$3,684.20.

v. Disparadores y Receptores de disparo

Consisten en una transmisión y recepción infrarroja, el envío

se realiza a través de un led infrarrojo (IR 383) con el cátodo

(-) conectado a tierra y el ánodo ( +) conectado al

microprocesador que envía los pulsos de disparo.

El receptor es un fototransistor (PT331 C) en el que la base

recibe la señal, el colector está alimentado con 6 V y el

emisor se manda a la etapa de amplificación que consta de un

arreglo de 2 transistores y un rectificador inversor de señal

TTL para tener una mayor distancia recepción.

Tanto disparadores como receptores pueden ser adquiridos en

AG Electrónica. El precio al público de los disparadores

como de los receptores es de $3.50. El número de receptores

TECNOLÓCICO DE MONTERREY ..

12

Page 13: Arte de guerra - repositorio.tec.mx

por plataforma es de ocho y de disparadores es de cuatro. Por

lo que tenemos un total de: $84.00.

vi. Batería

La batería utilizada recargable, sellada, de acido-plomo,

maneja 12 Volts de corriente directa, 4.0 Ah y hasta 1000

ciclos de carga/descarga, cuenta con sistema de proteccion

para carga excesiva. Soporta hasta 300 grados Centigrados.

Sus dimensiones son: 90 mm de largo, 70 mm de ancho, 101

mm de alto (Con terminales 106 mm) y peso de 1, 7 kilos.

Las pilas anteriormente descritas se pueden encontrar muy

fácilmente en las tiendas de electrónica, para este caso las

compramos en Steren, donde éstas tienen un valor por unidad

de $160, lo que produce un total de $320. Además se

adquirió un cargador inteligente para las baterías que

representó un costo de $140.

vii. Motores DC.

Los motores utilizados para mover el carro fueron motores de

DC con reductor. Estos motores tienen 14cm de largo y

cuenta con un poste de cada lado. Uno de los postes del

motor tiene un reductor, lo que hace que gire a menos

revoluciones que el otro poste. Esto es con el fin de que el

carro no avance tan rápido.

El costo de cada uno de estos motores es de $90, y como se

necesitan 4 motores el total generado es de $360. Los

motores por lo general se pueden conseguir en tiendas de

electrónica.

----

TECNOLÓGtCO DE MONTERREY ..

13

Page 14: Arte de guerra - repositorio.tec.mx

viii. Puente 'h'

El puente 'h' (l298n) es un controlador para motores de

corriente directa, que permite su funcionamiento con dos

líneas de señales de control. Las entradas de control manejan

voltajes normales TTL y tienen la opción de ser habilitados y

deshabilitados según sea la conveniencia.

Este dispositivo puede ser adquirido en tiendas de electrónica

como AG Electrónica a un precio de $27 y se necesita sólo

uno por plataforma ya que cada circuito integrado cuenta con

dos instancias distintas de puente 'h', por lo que en total nos

da $54.

b. Diagrama a Bloques

Adquisición de Imagen

I Identificador de obstáculos

Etapa de Amplificación

e

~BEQ e=)

Figura 8.

--- -

TECNOLÓGICO DE MONTERREY.

Receptor de disparo

14

Page 15: Arte de guerra - repositorio.tec.mx

i. Bloque de imagen

Este bloque constará únicamente de la micro cámara

digital la cual se encargará de llevar a cabo la adquisición de

imagen en tiempo real. La conexión de la cámara se hará de

manera directa al microcontrolador pues a pesar de ser una

comunicación serial, ambos dispositivos mane3an

compatibilidad en sus voltajes de operación. La importancia

de este bloque radica en que será el encargado de buscar y dar

información necesaria para la identificación del enemigo.

ii. Bloque de identificación de Obstáculos.

El detectar y poder esquivar obstáculos es vital para el

buen desempeño del robot, sin este bloque no podria recorrer

el circuito de pelea de manera satisfactoria. Con el fin de

cumplir con este propósito se utilizaron sensores ultrasónicos,

los cuales se encargan de realizar un barrido de los

alrededores del carro. Estos sensores se conectan, manipulan

e interpretan directamente con la parte central del carro.

Las partes primordiales a revisar para evitar obstáculos

son el frente y los costados. Para llevar esto a cabo de una

manera exitosa, los sensores tienen movilidad, lo que les

permite cubrir las zonas previamente mencionadas. La

movilidad que se requiere que tengan los sensores es

proporcionada por dos servomotores, uno para cada sensor.

- - -- -

TECNOLÓCilCO DE MONTERREY~

15

Page 16: Arte de guerra - repositorio.tec.mx

Los servomotores se encuentran en la parte frontal del robot y

son la base sobre la cual se encuentran los sensores, cabe

aclarar que no existe ningún tipo de comunicación entre los

servomotores y los sensores; ya que al igual que estos

últimos, los servomotores se conectan directamente con el

CPU.

iii. Bloque de Transmisión y Recepción de disparo.

El clímax de una contienda ocurre cuando uno de los

competidores es blanco de un ataque perpetuado por su rival,

ya que finalmente este es la razón de ser de una batalla. Con

base en lo anterior es lo que da a este bloque su importancia y

trascendencia dentro de la pelea. Cada uno de los robots

contará con cuatro puntos de disparo, todos ellos se

encontrarán al frente del robot, ya que será por donde habrá

localizado a su enemigo. Estos disparadores estarán

conectados todos en paralelo para que operen bajo la misma

señal y exista una mayor posibilidad de victoria.

Los receptores se encontrarán colocados en todos los

lados del coche esto tendrá como fin darle al robot

vulnerabilidad por cualquier lado que sea atacado. Cada uno

de los lados tendrá dos receptores, dando como resultado final

un total de ocho. Todos los puntos de recepción seguirán el

mismo procedimiento para validar la señal recibida. Los

receptores son fototransistores, los cuales responden

únicamente a señales de luz infrarroja; debido a que no se

tiene la certeza de que la señal que se recibirá será del todo

limpia, ésta pasará por un proceso de amplificación y

corrección. Esto proceso se compondrá en un inicio por una -·-·-

TECNOLÓOCO DE MONTERREY.

16

Page 17: Arte de guerra - repositorio.tec.mx

etapa de amplificación del voltaje, la cual será llevada a cabo

por un arreglo de 2 transistores. Esta parte nos dará una

ganancia en voltaje, la cual servirá para mandar la señal a un

rectificador inversor, este será el encargado de darle a la señal

cuadrada voltajes TIL, necesarios para ser interpretados por

el microcontrolador. Finalmente cada una de las señales

receptoras será la entrada de una NOR de 8 entradas, así el

micro validará la muerte sin importar de donde haya venido el

disparo.

La distancia a manejar de los disparadores es de un

máximo aproximado de 35 cm. Los cuales tendrán un rango

de libertad de ± 15º con respecto al receptor. Así mismo a

una distancia mínima de 1 O cm., los disparadores tendrán la

libertad de estar a una altura de 0.5cm sobre o por debajo de

los receptores.

iv. Bloque de Movimiento

En busca de tener una mayor probabilidad de ganar,

cada uno de los robots debe tener la posibilidad de

desplazarse libremente por todo el "campo de batalla". En

función de lograr esto de la mejor manera posible, los carros

contarán con un bloque de movimiento que les dará la opción

de moverse sin mayores complicaciones. Cada uno de los

carros contará con dos motores, los cuales estarán acoplados

de manera perfecta a las llantas, esto es muy importante

debido a que si no se lleva a cabo un buen acoplamiento, el

giro del motor no se verá reflejado correctamente en el giro de

las llantas y podrá repercutir en viajar en direcciones no

deseadas.

TECNOLÓGlCO DE MONTERREY ..

17

Page 18: Arte de guerra - repositorio.tec.mx

Los motores utilizados en este punto son motores de

DC, los cuales tienen la opción de trabajar alimentados hasta

con 12V. Sin embargo para los fines requeridos estos

operarán con 9V, voltaje que a pesar de ser menor que el

máximo permitido se encuentra muy por encima de los

voltajes TTL manejados por el microcontrolador. Para poder

acoplar los motores al CPU sin problemas se utilizan los

Puentes 'H'; estos dispostivos se encargan de alimentar al

motor. Otra función muy importante para los Puentes 'H' es

que ellos reciben las señales de control de manera directa del

microcontrolador y se encargan de mandar el voltaje al motor

polarizado de la manera deseada. Podemos imaginar que los

Puentes 'H' funcionan como interfaces entre el

microcontrolador y los motores, ya que además de separar los

distintos voltajes reciben e interpretan las señales del CPU

que harán girar al motor hacia un lado o hacia otro.

vi. Bloque de Alimentación

Para que todos los bloques anteriores puedan

funcionar, se necesita de una fuente de alimentación. Para

alimentar todo el hardware el robot usa una batería recargable

de l 2V que puede proporcionar una corriente de hasta

2000mAh. Para lograr los voltajes menores buscados por

cada uno de los componentes se usan reguladores de voltaje

conectados en paralelo para dividir la corriente y evitar

perdida de energía por disipación de calor.

c. Conexiones de Hardware.

18

TECNOLÓG1CO , DE MONTERREY ..

Page 19: Arte de guerra - repositorio.tec.mx

El sistema mínimo es un dispositivo fonnado por varios circuitos

integrados como lo son el microprocesador, los reguladores, entre otros más,

a continuación se hace una breve explicación.

Como podemos ver en la figura 9 y en el esquemático anexo, las

conexiones que existen entre los circuitos lógicos como son las compuertas

nand o los inversores schmitt trigger con el microprocesador hacen que el

sistema funcione correctamente.

Comenzamos el sistema alimentándolo a 12 volts de entrada gracias a

la pila la cual nos entrega ese voltaje a 4 Ah, como la mayoría de los

circuitos requieren voltaje TIL es necesario bajar el voltaje de

entrada, 12 volts, a voltaje de 5 volts, esto se hace mediante los

tres reguladores que se encuentran montados sobre la tarjeta, dichos

dispositivos tienen 3 pmes, en uno entra el voltaje de

alimentación, el otro pm es de tierra y el último es el de salida,

dando los 5 volts. Como se pueden dar cuenta se utilizan capacitores

entre la entrada de 12 volts y tierra así como la salida de 5 volts a

tierra, ésto se hace para que no exista ruido en el sistema. Como los

reguladores bajan el voltaje de 12 volts a 5 volts disipando la

energía en calor, los 7805 se calientan demasiado, es por eso que

utilizamos tres dispositivos para que así la corriente se divida y no se

sobrecaliente demasiado el regulador.

Después de haber analizado el sistema de entrada pasamos a las

conexiones entre el microcontrolador y las compuertas lógicas. El

robot va a disparar a su oponente mediante leds infrarrojos, para

poder lograr esto lo único que se hace es conectar la salida del

puerto a la parte positiva del led y la parte negativa conectándola a

tierra, así se logra que la corriente pase por el led dando como

TECNOLÓGICO DE MONTERREY~

19

Page 20: Arte de guerra - repositorio.tec.mx

resultado un tren de disparos a su oponente, como el robot también recibe

disparos, se tiene una configuración de leds, transistores y resistencias para

la recepción. Como la señal que viaja del transmisor al receptor infrarrojo

tiende a caer se tiene que levantar ese voltaje para que el microcontrolador lo

pueda entender, ésto lo hacemos mediante el ensamblado de una

configuración de transistores. El hecho de que la salida del emisor del

transistor de la izquierda, esté conectado a la base del otro

transistor hace que la ganancia de corriente sea mucho más alta que

para un único transistor -de hecho es el producto de las ganancias de

corriente individuales de los dos transistores que forman el par- y la

corriente que soporta en el emisor-colector sea mayor, ahora como

tenemos una resistencia también conectada con tierra, hacemos que la

corriente baje y cierta parte se vaya para la base del transistor dos y otra

parte se vaya para la resistencia.

Un valor típico de ganancia de corriente puede ser de 1000. Lo que

quiere decir que la corriente que pasa por el colector hacia el

emisor, es unas mil veces mayor que la corriente que entra por la

base, en el caso de que no exista resistencia a tierra en el emisor del primer

transistor.

Los transistores se alimentan con voltaje TTL y el fotodiodo se

alimenta con 6 volts, para conseguir este valor utilizamos un divisor de

voltaje con los 12 volts.

En total son 4 disparadores y 8 receptores por lo que van a ser 8

configuraciones antes mencionadas, todas las salidas están

conectadas a un 74HC14 o inversor Schmitt trigger el cual nos da como

resultado una salida TTL la cual va a poder ser entendida por el

microprocesador, pero antes de esto para ahorrar puertos del

TECNOLÓGICO DE MONTERREY~

20

Page 21: Arte de guerra - repositorio.tec.mx

microcontrolador, cada salida de los schmitt va a una compuerta nand de

ocho entradas (74LS30) logrando utilizar una línea de puerto en lugar de

ocho

El reloj del sistema es un cristal de 16 MHz que nos permite un

desempeño a una mayor velocidad tanto para la ejecución del código como

para la transmisión serial que se realiza a 34800 baudios.

Figura 9

TECNOLÓG1CO DE MONTERREY ..

21

Page 22: Arte de guerra - repositorio.tec.mx

2. Software

La parte de Software se encontrará implementada en su totalidad dentro del

microcontrolador. Este contará con un programa el cual fue desarrollado para

cumplir específicamente con las tareas que se le puedan presentar al robot dentro de

un escenario de batalla. El archivo que puede interpretar el microcontrolador es un

archivo hexadecimal (*.hex), el cual es tan sólo una traducción de un archivo en

bajo nivel llamado ensamblador (* .asm). Para poder desarrollar estos dos archivos

es necesario utilizar el paquete computacional Code Vision, en el cual se escribirá

todo el código en lenguaje de alto nivel, en este caso C, y se migrará y ensamblará

para tener los archivos necesarios para programar el microcontrolador.

La ventaja de programar en un lenguaje de alto nivel es que es mucho más

intuitivo y fácil de interpretar ya que a diferencia de los lenguajes de bajo nivel tiene

más parecido con el lenguaje humano. Por otro lado permite el uso de métodos y

variables que dan al programador más herramientas para cumplir con los objetivos.

Es por ello que el desarrollo de los programas para los robots se llevó a cabo en este

ambiente.

i. Idea básica del Programa

La idea básica del programa se menciona a continuación.

1. Inicialización de constantes y modo de ejecución.

2. Inicialización y reconocimiento de la cámara de video.

3. Interrupción vía Serial (USART)

4. Recepción de confirmación por parte de la cámara.

5. Envío de configuración y modo de operación.

6. Adquisición y reconocimiento de la imagen.

7. Interrupción vía Serial (USART)

8. Reconocimiento e interpretación de la imagen.

9. Toma de decisión con base en la imagen.

a. Realizar Disparo

b. Moverse

TECNOLÓGICO DE MONTERREY.

22

Page 23: Arte de guerra - repositorio.tec.mx

e ln'clo )

CooUl:!ttta veloctdar(de rx y

RX

Activa inteirup,ciooes

I claliza ir\lerrvp;;ioneS,

il'xtemas

1 O. Realizar banido ultrasónico.

a. Detectar y esquivar Obstáculos.

11. Tomar decisiones con base en el resultado del banido.

a. Movimiento de Motores.

12. Aplicar lógica difusa en caso de ser necesario.

13. Detección de disparo por medio de Interrupción Externa.

a. Validación del disparo

b. Muerte.

ii. Descripción del Software por bloques.

a. Diagrama General

!nlclal!za fntertupc!mies de

contaoor

lr.icializ.a <:ámara .

MooltOfes de. tracldng ·

Dotocdó de obst.ácutoo co l~

Figura 10

NO

TECNOLÓOCO De MONTERREY.,

Sigue rodf;md<, hasta emcornrar

éMmlg<>

Da Vlfl}il{ls pQt 3 segundos

1

Ois.panul #tití .90

23

Page 24: Arte de guerra - repositorio.tec.mx

NO

Joício

Envio de seoueooia de inicios de la

cámara

Recepci6n de confirmación por

parte de la ~mara

En una vista general (figura 1 O), el programa pasa por el

proceso de inicialización de puertos, comunicación serial,

interrupciones, reloj y cámara. Después se mantiene revisando en

forma cíclica si hay obstáculos o si se encuentra al enemigo, cuando

lo encuentra y nota que está a una distancia de disparo realiza el

disparo, a la vez puede recibir disparos del enemigo, mismos que

recibe por una interrupción externa, al detectarse muerto gira durante

3 segundos para que el observador note el hecho, después de este

punto reinicia los valores y repite la secuencia mencionada.

b. Diagrama de la cámara

$ 1

l Envioo,e

resolución

R~epcloooo oonfwmación

Figura 11

l:nvio de ·mooo de tracking

R~ión de confumación

SI

cn'<'ió para medias, deRGB

1 $1

+

En la parte de hardware se mencionaron las capacidades de la

cámara utilizadas en el proyecto y los comandos que se deben enviar

para su funcionamiento. La secuencia consiste primero en detectar 24

TECNOLÓGlCO DE MONTERREY ..

Page 25: Arte de guerra - repositorio.tec.mx

que la cámara tiene comunicación con el microprocesador, mientras

no se tenga la comunicación se siguen enviando comandos de prueba

a través del microprocesador hasta que la cámara responde en la

manera indicada. El paso siguiente es el de enviar la resolución al

nivel alto para tener una detección más fina de los colores ya que

contamos con el doble de pixeles; después de un envío satisfactorio

del comando se envían los límites RGB para la detección de los

colores que se quieren seguir (amarillo o rojo) y se termina el proceso

con el envío del comando que permite obtener las medidas de las

medias RGB detectadas en la imagen, utilizadas para la lógica difusa.

c. Diagrama de tracking o monitoreo del color enemigo

l • Recepciór. de dalOSde la cár?i3ra por

interrupción serial

Checar posición en'Y

' "--··~,.,s,.,..,.,., ... , .. -···"·

Figura 12

TECNOLÓCICO DE MONTERREY ..

Girar izquierda

1

1 !

l ! ~

25

Page 26: Arte de guerra - repositorio.tec.mx

Se realiza la recepción serial del paquete T que se describe a

continuación:

T mx my xl yl x2 y2 pixeles confianza \r

La cámara está colocada en forma horizontal para tener un mayor

rango de visibilidad (356 en "y" contra 292 en "x"), de esta forma los

valores del paquete T utilizados son:

T - Identifica el paquete

my - centro de masa en "y" que permite tomar decisiones sobre la

posición del enemigo

pixeles - Brinda el centro de masa de la imagen detectada, lo que

permite tomar la decisión sobre la distancia a la que se realiza un

disparo válido (menor a 30 cm).

d. Diagrama de Servos

Inicia contador delos de m;iquír.a

El ·'-''''""''''"'

Valor in ici!l 1 ,. OCR1A•

OCR1B (Ancho del P'M'.1)

• !

~-N01 '=: 1

SI

lr~rernen!a en uno el oodlo del PINM

Guarda valor

NO

Manda sefial dePWM

Figum 13

TECNOLÓGICO ,,, De MONTERREY ..

OeófQfl)ei\10 i;

u110 el ancho del PWM

NO

26

Page 27: Arte de guerra - repositorio.tec.mx

Los servos son encargados de cambiar la posición de los

sensores que detectan obstáculos y como se mencionó en la parte de

hardware su posición se determina mediante la modulación de ancho

de pulso o PWM. Se utiliza un contador que limita el tiempo en que

se incrementa/disminuye el ancho de la señal, si el contador es

mantenido constante los servos no cambian de posición, dentro del

código lo que se hace es incrementar el ancho de pulso hasta 115 y

después disminuirlo hasta 85, permitiendo así que los servos se

muevan cíclicamente hacia el frente y a los lados.

e. Diagrama puente h

Puente 2: Camino hacia delan!e, 1ll(>l0f' actív~do

Puente 2: Camioo hacia attás, motor

activado con Polaridad inver.ida

Poonte 2: Dersnci6n

inmediaia de motor

j • ¡ ¡

NO

~

¡

NO i •

Aimenta et puente H

NO ! ¡

¡

¡ NO

Figura 14

VSS•5V VS• 12V

GNO

EnableA= t Enable B" t

NO

NO ..

Puer.te 1; Camino 1--+o hacia delante,

trolClr BC"Jvado

Puente 1: Camno hacía atrás, motor s1- activado oon µolaridad Invertida

Puente 1:

.s,-- Detención Inmediata de

molor

El movimiento de llantas se realiza mediante el control de un

puente h que recibe una señal de habilitación y 2 de control, la señal

TECNOLÓCtCO OE MONTERREY.,

27

Page 28: Arte de guerra - repositorio.tec.mx

de habilitación debe estar en alto para que funcione el puente h, el

primer bit en alto y el segundo en bajo indican un movimiento hacia

delante e invertidos un movimiento hacia atrás, cualquier

combinación en la que los dos bits de control sean iguales provoca un

paro total del motor. Para cada motor es necesario utilizar un puente

h, por lo tanto para los 2 robots se utilizan en total 4 puentes h.

f. Receptores de disparo

Figura 15.

Aumenta. tu.'ime<o de di paro$

La recepción de los disparos se realiza a través de una

interrupción externa dentro de la cual se incrementa un contador cada

vez que se recibe un pulso de entrada, el disparo consta de un tren de

pulsos, por lo tanto, cuando el contador alcanza el valor de 50 se

considera que el robot ha muerto.

TECNOLÓCi1CO DE MONTERREY.

28

Page 29: Arte de guerra - repositorio.tec.mx

g. Sensores de proximidad

Reinicia las constantes de

tiempo

SI

Figura 16.

El funcionamiento de los sensores de proximidad se divide en

dos etapas la primera está en la interrupción de 30 us donde se

reinicia el contador y se aumentan los arreglos que guardan la

distancia a la que está el obstáculo cada 30us que equivale a un cm de

distancia. Cada 30 ms se envía la señal de habilitación a los sensores

para que inicien el barrido de obstáculos.

Cambia flanco de .,.____·NO---ínterrupción ~-

• l-á-1 cambia flanco de la inlemlpción

--~e Fin )+---

TECNOLÓGICO DE MONTERREY ..

Figura 17.

29

Page 30: Arte de guerra - repositorio.tec.mx

Reversa y giro S1

Los sensores mandan su respuesta o eco a través de una

interrupción externa, por lo tanto, la segunda parte de la lógica de los

sensores consiste en detectar el flanco por el cual entra a la

interrupción, si es por flanco de subida reinicia los arreglos de

distancia ya que este flanco nos indica que se empezó el sensado, en

forma inversa cuando entra por flanco de bajada indica que se

terminó el sensado y por lo tanto se guarda la distancia a la que

detectó el obstáculo más cercano; este valor de distancia es el que se

utilizará para determinar cuando se detectó un obstáculo que pueda

significar un peligro para la integridad del robot.

g. Detección de obstáculos.

r-~-·,.,-.. ~.u.u,umm,.,,.,h. "'~. ,----~---~-·-··'·'"')

* ·-{_Fin_)-·-Figura 18.

SI

Gira Manta izquierda

Cuando el robot detecta que hay un obstáculo a una distancia

menor al límite establecido de 45 cm gira a la derecha si detectó el

obstáculo a la izquierda y viceversa.

TECNOLÓC1CO DE MONTERREY ..

30

Page 31: Arte de guerra - repositorio.tec.mx

111. RESOL T ADOS

La mejor forma de evaluar los resultados del proyecto es mediante la revisión del

estado de cada uno de los objetivos propuestos y que se describen a continuación:

a. Hardware

Motores que proporcionen tanto potencia como torque suficiente para mover

todo el mecanismo. Después de realizar las pruebas hemos descubierto que el robot se

mueve a una velocidad razonable para las funciones que debe desarrollar, no hay que

olvidar que la velocidad de los robots va disminuyendo conforme la carga en las

baterías disminuye, de esta forma concluimos que los motores utilizados son óptimos

para las funciones a realizar.

Acoplamiento de las llantas a los motores El diseño requirió de la asistencia de un

tornero para acoplar las llantas, el resultado no fue el óptimo ya que constantemente hay

que apretar las llantas a los motores, sin embargo, con la ayuda de un pegamento se

evita este problema.

Propuesta adecuada de los sensores que van a detectar los obstáculos en el

espacio del robot. Los sensores funcionan a la perfección y se acoplan correctamente a

nuestro diseño ya que no necesitamos que detecten los obstáculos a grandes distancias,

el tiempo de respuesta a los obstáculos que nos brindan es óptimo ya que permite que el

robot reaccione en el momento indicado para evitarlos.

Selección de los motores que moverán a los sensores (servos). Los servos

permiten un desplazamiento correcto de los sensores y no generan ruido al circuito, en

proyectos pasados hemos tenido que separar la alimentación del circuito principal de

los motores por esta causa. El poder controlarlos mediante PWM nos ayuda a llevarlos

a la posición indicada y a detenerlos en el momento deseado.

TECNOLÓOCO DE MONTERREY~

31

Page 32: Arte de guerra - repositorio.tec.mx

Selección de los disparadores y receptores. Los receptores y disparadores

funcionan correctamente, sin embargo, la limitación en cuanto al presupuesto nos

impidió elegir un modelo con mayor alcance, sin embargo, el modelo actual nos

permite demostrar la aplicación funcional del disparo y recepción del mismo.

Selección de la cámara para el seguimiento de color y procesamiento de

imágenes. La cámara fue la mejor inversión del proyecto ya que después de investigar

descubrimos que es uno de los modelos más avanzados en el campo de procesamiento

de imágenes a bajo costo, además de que su programación no es tan complicada como

en otros modelos. Nos permite seguir los colores contrastantes mismos con los que es

posible detectar al enemigo.

Integración de todos los elementos de Hardware mediante la creación de un

sistema mínimo. La parte más importante dentro del hardware es la de lograr que todos

los elementos interactúen entre sí para tomar una decisión o realizar una función

específica, el lograr que cada elemento funcione por separado no es suficiente para un

proyecto de ingeniería ya que los fabricantes garantizan el correcto funcionamiento, el

verdadero valor agregado del proyecto se demuestra al lograr la unión de todos los

componentes para un funcionamiento en conjunto, en nuestro caso se realizó esta

interacción y correcto funcionamiento.

b. Software

Toda la parte del software funciona conforme a los objetivos como se

demostró en páginas anteriores en los diagramas de bloques de cada función, la

integración de cada parte de la lógica del programa se realizó satisfactoriamente y

es por esto que se puede mostrar un diagrama general de cada elemento

interactuando con los demás y por lo tanto al unirlo con el hardware tenemos como

resultado el correcto funcionamiento de los robots.

32

. TECNOLÓCICO DE MONTERREY.

Page 33: Arte de guerra - repositorio.tec.mx

Como resultado final tenemos un programa desarrollado en C que puede ser

portable para implementarse con algún otro micro controlador. Así mismo es

mucho más sencillo hacer cambios o anexar trabajos futuros.

c. Estudio de mercado y análisis financiero

Antes de comenzar con más detalle la parte del análisis financiero es importante

tener en mente que los robots se encuentran en fase de desarrollo e investigación, por lo

que en general la inversión se hace mayor. El costo de cada uno de los robots es de

$4,365.15 (cuatro mil trescientos sesenta y cinco pesos 15/100 m.n.). El costo de estos

robots se atribuye en su totalidad a las piezas de hardware ya que el diseño, desarrollo

del software y el armado del mismo fue realizado por nosotros y está libre de cargo.

Al momento de realizar un modelo como prototipo o parte de un proceso de

investigación y desarrollo, se tienen ciertos errores en los gastos ya sea por materiales

no tan provechosos o que de alguna manera pudieran ahorrarse. Todo esto es parte de

un proceso de investigación y elaboración por parte de los desarrolladores. A pesar de

que el costo pueda sonar un poco excesivo, no lo es del todo si consideramos que tiene

tecnología de punta en las cámaras, las cuales son el principal gasto.

Si se deseara producir los robots en serie, el costo se bajaría de manera imortante,

ya que no será necesario utilizar materiales que sólo sirven para el desarrollo, si no más

bien utilizar materiales más baratos y adecuados para su venta. Un aspecto muy

importante a considerar, es la circuitería del mismo ya que podría ser incluida en su

mayoría en un circuito impreso, lo que reduciría notablemente el espacio. Al reducir el

espacio de los circuitos se reducirá el volumen de la carcasa, por consiguiente, el peso y

la pila podrá reducirse en tamaño y peso. Como nos podemos dar cuenta el proyecto

tiene la posibilidad de reducir mucho sus costos, siendo posible una reducción de hasta

un 35% del precio original.

TECNOLÓGICO DE MONTERREY,,

33

Page 34: Arte de guerra - repositorio.tec.mx

De esta manera logramos que tenga un precio mucho más accesible. Sin embargo

las intenciones inmediatas no es sacarlo al mercado, si no, pretendemos trabajar con el

área de desarrollo. Un posible mercado lo encontramos en las universidades o

empresas que se encargan de investigación, ya que los robots y sus encuentros, podrán

simular situaciones bélicas en las que dichos investigadores consideren posibilidades de

guerra sin estar inmersos en ella.

IV. CONCLUSIONES

Al trabajar con un proyecto tan extenso como lo es este, tuvimos la necesidad de

poner en práctica todos aquellos conocimientos que adquirimos estos años en el

transcurso de la carrera. La integración de todo lo aprendido tanto teórico como

práctico tuvo su clímax en el desarrollo de "Arte de Guerra".

Podemos decir que nos sentimos satisfechos por haber logrado la integración de

tan diversas teorías, conocimientos que fuimos adquiriendo de manera paulatina, dando

tiempo de maduración a nuestra capacidad de aprendizaje que en esta ocasión se puso a

prueba durante un largo periodo de tiempo. Un aspecto muy importante es la

organización tanto de tiempos como de trabajo, para un proyecto de la magnitud de

este, fue trascendental saber llevar esto a cabo. A pesar de ser capaces para realizar la

mayoría de las diversas tareas es importante tener a un encargado de monitorear un

bloque específico así se respetarán tanto los tiempos como el ritmo de trabajo.

Es importantísimo para nosotros aclarar que "Arte de Guerra" a pesar del nombre

no tiene fines bélicos bajo ninguna circunstancia, ya que nosotros nos oponemos

rotundamente a la guerra, pero no al desarrollo tecnológico que nace con desarrollo

militar. "Arte de Guerra" es un proyecto que busca evitar confrontaciones de manera

real, por lo que nos sentimos orgullosos de haber alcanzado casi en su totalidad los

objetivos propuestos.

En lo que respecta a la parte de los objetivos que propusimos en un inicio, al

comenzar este proyecto, podemos estar satisfechos que se cumplieron en su mayoría ya

TECNOLÓCitCO DE MONTERREY ..

34

Page 35: Arte de guerra - repositorio.tec.mx

que de alguna u otra manera logramos cubrir las necesidades que se fueron presentando

a lo largo de todo este desarrollo.

Con lo que respecta a la parte de Hardware, todos los objetivos se cumplieron de

sobremanera. Esto lo corroboramos fácilmente pues se hizo una adecuada propuesta de

Hardware por bloques, que además debían interactuar entre ellos de alguna u otra

manera. Parte importante del desarrollo de hardware es saberlo trabajar a la par por

bloques que simplifiquen la idea total. Así mismo es de suma importancia que cada

uno de los bloques haya funcionado bien para posteriormente unirlo al sistema mínimo.

La culminación del buen desarrollo de Hardware concluyó al unir todos los

bloques en un mismo sistema donde se integraron todas las partes y gracias a esto y al

buen funcionamiento del mismo se pudo concluir que el trabajo fue realizado de

manera adecuada y correcta, pues se acertó que las actividades propuestas fueron

cubiertas alcanzando el grado de funcionalidad deseado.

Por otro lado manejamos los aspectos de los objetivos enfocados más hacia el

software o la parte lógica. Para este caso los alcances no fueron tan bastos como en el

rubro anterior, sin embargo se concluyó adecuadamente con los puntos más importantes

propuestos en un inicio.

El hecho de desarrollar un software que controlara la plataforma de manera

adecuada hace que los objetivos básicos de la parte lógica se cubran. Todas las señales

de control para todo el circuito funcionan de manera adecuada aunque con ciertas

limitaciones. Una de las ciertas limitaciones que se tiene en este proyecto es que todas

las decisiones que se presentan en el programa son decisiones de Sí o No. Visto de otra

forma las decisiones que se pueden tomar son de encendido y apagado. A pesar de

cubrir todos los aspectos considerados como importantes con una lógica sencilla en

algún momento se contempló como una actividad extra plantear una lógica que diera

más versatilidad y robustez al diseño.

A pesar de no incluir en el programa ningún tipo de lógica más compleja que la

antes mencionada, se realizó una investigación sobre Lógica Difusa y de que manera se

podría implementar para nuestro diseño. Para este punto extra no tuvimos el alcance

desado debido a la falta de tiempo. Sin embargo el hecho de comenzar a investigar un

TECNOLÓGtCO DE MONTERREY ..

35

Page 36: Arte de guerra - repositorio.tec.mx

punto como el anterior, puede sentar las bases para que se siga con el proyecto en un

futuro, con los objetivos de mejorar las decisiones que se toman en todo el programa.

A pesar de que no se cubrieron en tu totalidad los objetivos extra, éstos sentan la

base para dar pie a que se siga con la investigación y perfeccionamiento de las

plataformas.

i. Perspectivas y trabajo a futuro

Para nosotros, la fase de desarrollo ha concluido, sin embargo, esto no quiere

decir que "Arte de Guerra" tenga por qué quedarse estático en el punto donde nosotros

hemos de dejarlo. Gracias a su gran versatilidad tiene la opción de ser retomado en un

futuro y seguir por el mismo camino o incluso llegar a ser usado para otras

aplicaciones, lo cual dependerá enteramente de los futuros desarrolladores.

Como se llegó a mencionar anteriormente, una de las bases más importantes que

se puede segur como un trabajo futuro es manejar todo un software de lógica difusa.

Ya se ha manejado que la lógica difusa puede ser utilizada para detección de color,

comprobación de si es un enemigo o no y casi cualquiera de las actividades que realice

la plataforma. Así mismo otra opción de la lógica difusa es que tiene también

aplicación en el control de los motores, ya que se puede buscar que estos manejen

distintas velocidades dependiendo de la situación en la cual se encuentre en un

momento determinado.

El hecho de que en este momento se mencione la lógica difusa como principal

camino de desarrollo no quiere decir que éste sea el único, si no que tan sólo es una

sugerencia de nuestra parte. Finalmente como se mencionó en varias oaciones, la

versatilidad de la plataforma permite que el camino que siga el proyecto no es único, y

más bien dependerá de las necesidades que se planteen en un futuro.

ii. Comentarios

Ante una sociedad tan cambiante como lo es en la que vivimos hoy en día, el

desarrollo de nuevas ideas, siempre será una vacante para quien quiera ocuparla. Para

TECNOLÓGICO DE MONTERREY~

36

Page 37: Arte de guerra - repositorio.tec.mx

nosotros conjuntar diversas áreas de conocimiento en ingeniería Fue el área a la cual

nosotros pretendimos quitar la bacante, pero que sabemos siempre estará ahí para todos

aquellos que quieran tener una oportunidad en ella.

Sólo queda agregar que nosotros como desarrolladores de este proyecto nos

sentimos realmente satisfechos por la gran calidad de trabajo que logramos a lo largo de

este tiempo. Los resultados que se obtuvieron son fruto de muchas horas de trabajo y

dedicación, que además repercuten en nuestra alegría ahora que finalizamos esta etapa

de nuestras vidas, lo hacemos con un excelente proyecto.

V. REFERENCIAS i. http://www.cbsnews.com/stories/2003/0 l/l 3/tech/main536254.shtml

u. http://www.engineeringtalk.com/news/vyd/vyd 108.html m. http://www.fanuc.co.jp/en/product/cnc/l 5i l 50i/hrv/hrv.html 1v. http://www.acroname.com/robotics/parts/R27 l-SRF05.html v. http://www.robot-electronics.eo.uk/htm/srfü4tech.htm

vi. http://www.creaturoides.com/anterior/srvesp.htm vii. http://www.unicrom.com/ Art historiaReguladoresLineales.asp

VI. ANEXOS a. En el cd se encuentra el póster con la descripción del proyecto, éste documento, todos

los documentos o data sheets relacionados con el proyecto, video del mismo funcionando y código fuente del mismo.

TECNOLÓCilCO DE MONTERREY ..

37

Page 38: Arte de guerra - repositorio.tec.mx

b. Esquemático

~ TECNOLÓGICO ~- DE MONTERREY.

38

Page 39: Arte de guerra - repositorio.tec.mx
Page 40: Arte de guerra - repositorio.tec.mx

/********************************************* This program was produced by the CodeWizardA VR VI .23.8a Professional Automatic Program Generator © Copyright 1998-2003 HP InfoTech s.r.l. http://www.hpinfotech.ro e-mail:[email protected]

Project: Version: Date : 28/03/2006 Author : Rodrigo Eddy, Yamil Ramos, Pablo Ayala Company: Comments:

Chip type : ATmega32 Program type : Application Clock frequency : 16.000000 MHz Memory model : Small Externa} SRAM size : O Data Stack size : 512 *********************************************/

#include <mega32.h> #include <delay.h> #include <stdio.h>

char info[SO]; void valida(); void tracking(); bit dp=O,lectura=O, cam=O,ack,sensorl=O,sensor2=0,servoA,servoB,bdisparo,bservo=O,DERECHA,IZQUIE RDA; unsigned int valorsensor[2],valorsensort[2],habilitasensor=O,contadorA=O,contadorB=O,car=O, golpedelamuerte; unsigned int hit=O; bit enemigo=O, bMUERTO=O; #define sensora PORTC.O //habilita sensor izq #define sensorb PORTC. l //habilita sensor derecha

// INTERRUPCION EXTERNA 1 PARA EL SENSOR DERECHO interrupt [EXT_INTI] void ext_intl_isr(void){ i f ( sensor 1 ==O){

TECNOLÓG1CO DE MONTERREY.

40

Page 41: Arte de guerra - repositorio.tec.mx

MCUCR-=OblOO;// cambia entrada a interrupcion por flanco de bajada valorsensort[O]=O; // inicia el conteo de la distancia que detecta el sensor sensorl =l; }

else if(sensorl=l){ MCUCR+=OblOO; // cambia entrada a interrupcion por flanco de subida sensorl=O; valorsensor[O]=valorsensort[O]; // guarda el valor de la distancia detectada por el

sensor }

}

// INTERRUPCION EXTERNA O PARA EL SENSOR IZQUIERDO, realiza las mismas funciones que la interrupcion anterior interrupt [EXT _ INTO] void ext_intO _isr(void){ if (sensor2==0){

MCUCR-=l; valorsensort[ 1 ]=O; sensor2=1; }

else if(sensor2=1){ MCUCR+=l; sensor2=0; valorsensor[ 1 ]=valorsensort[ 1]; }

}

/******************************************* * FIN SENSORES * *******************************************/

#define RXB8 1 #define TXB8 O #define UPE 2 #define OVR 3 #define FE 4 #define UDRE 5 #define RXC 7 #define limitel 45 //45 limite deteccion de pared #define FRAMING _ ERROR (1 <<FE) #define PARITY_ERROR (l<<UPE) #define DATA_OVERRUN (l<<OVR)

TECNOLÓGICO DE MONTERREY ..

41

Page 42: Arte de guerra - repositorio.tec.mx

#define DATA_REGISTER_EMPTY (l<<UDRE) #define RX _ COMPLETE (1 <<RXC) #define CAMARA PORTA.6 // Led que se enciende cuando el micro logra comunicacion e inicializacion de la camara #define DISPARO PORTD.6 // salida a los leds infrarrojos de disparo #define MUERTO PORTA.7 // led que indica que el robot ha muerto #define phizqe PORTA.O// salida para el puente h #define phizqc PORTA.2 #define phizqd PORTA.3 #define phdere PORTA.1 #define phderc PORTA.4 #define phderd PORTA.5

// Externa} Interrupt 2 service routine interrupt [EXT _ INT2] void ext_int2_isr(void) //recibe el disparo { // Place your code here //delay ms(50); // if (PORTB.2==1){

golpedelamuerte++;// incrementa cada vez que recibe un disparo if(golpedelamuerte>5) {

// } }

} else{

}

MUERTO=!; bMUERTO=l;

MUERTO=O; bMUERTO=O;

// USART Receiver buffer #define RX BUFFER SIZE 8 - -char rx _ buffer[RX _BUFFER_ SIZE]; unsigned char rx _ wr _index,rx _rd _index,rx _ counter; // This flag is set on USART Receiver buffer overflow bit rx _buffer_ overflow;

// USART Receiver interrupt service routine #pragma savereg-interrupt [USART_RXC] void uart_rx_isr(void) { char status,data; #asm

push r26

TECNOLÓGICO oe MONTERREY.

42

Page 43: Arte de guerra - repositorio.tec.mx

push r27 push r30 push r31 in r26,sreg push r26

#endasm status=UCSRA; data=UDR; if((status & (FRAMING_ERROR I PARITY_ERROR I DATA_OVERRUN))==O)

{ rx buffer[ rx wr index ]=data;

- - -info[car]=data; // guarda en info la informacion recibida por el serial if(data==13){ //revisa si se recibio un retomo de carro que indica el fin de la instruccion

car=O; // regresa el valor del apuntador de info lectura= 1 ;//indica que ya leyo un comando completo valida(); //descifra la informacion recibida

} else{

car++; } if(++rx_wr_index = RX_BUFFER_SIZE) rx_wr_index=O; if(++rx_counter = RX_BUFFER_SIZE)

};

{ rx _ counter=O; rx _buffer_ overflow= 1; };

#asm pop r26 out sreg,r26 pop r31 pop r30 pop r27 pop r26

#endasm }

#pragma savereg+

#ifndef DEBUG TERMINAL 10 - -// Get a character from the USART Receiver buffer #define AL TERNA TE GETCHAR - - -#pragma used+ char getchar(void) // recibe comando por el puerto serial {

TECNOLÓGICO DE MONTERREY.

43

Page 44: Arte de guerra - repositorio.tec.mx

char data; while (rx counter==O); data=rx _ buffer[ rx _rd _index ]; if (++rx_rd_index = RX_BUFFER_SIZE) rx_rd_index=O; #asm("cli") --rx _ counter; #asm("sei") retum data; } #pragma used­#endif

// USART Transmitter buffer #define TX _BUFFER_ S IZE 8 // envia comando por el puerto serial char tx buffer[TX BUFFER SIZE]; - - -unsigned char tx _ wr _index,tx _rd _index,tx _ counter;

// USART Transmitter interrupt service routine #pragma savereg-interrupt [USART_TXC] void uart_tx_isr(void) { #asm

· push r26 pushr27 push r30 push r31 in r26,sreg push r26

#endasm if (tx _ counter)

{ --tx _ counter; UDR =tx _ buffer[ tx _rd _index]; if (++tx_rd_index = TX_BUFFER_SIZE) tx_rd_index=O; } ;

#asm pop r26 out sreg,r26 pop r31 pop r30 pop r27 pop r26

#endasm } #pragma savereg+

TECNOLÓC1CO . DE MONTERREY ..

44

Page 45: Arte de guerra - repositorio.tec.mx

#ifndef DEBUG TERMINAL 10 - -// Write a character to the USART Transmitter buffer #define AL TERNA TE PUTCHAR - - -#pragma used+ void putchar( char c) { while (tx_counter == TX_BUFFER_SIZE); #asm("cli") if(tx_counter 11 ((UCSRA & DATA_REGISTER_EMPTY)==O))

{ tx _ buffer[ tx _ wr _index ]=c; if(++tx_wr_index = TX_BUFFER_SIZE) tx_wr_index=O; ++tx _ counter; }

else UDR=c; #asm("sei") } #pragma used­#endif

// Standard Input/Output functions int contador-O; // INTERRUPCION DE TIMER CADA 30us interrupt [TIMO_ OVF] void timerO _ ovf_isr(void) { TCNTO=OxCS; if((habilitasensor++)==966){ // cada 30 ms envía un trigger al sensor para que empiece la medicion

habilitasensor=O; sensora=l; sensorb=l; }

else { sensora=O; sensorb=O; }

valorsensort[O]++; //incrementa 1 cm la distancia detectada cada 30 us valorsensort[ 1 ]++; } void valida() {

while(lectura!=l); // espera a que se reciba el comando completo lectura=O; if(info[O]=':'){ //senal para saber que recibio correctamente el comando enviado

dp=l; }

else if(info[O]='C'&&info[l]=='M'&&info[2]=='U'){ //letras que indican que se inicio la comu

-

TECNOLÓGICO DE MONTERREY ..

45

Page 46: Arte de guerra - repositorio.tec.mx

}

}

//nicacion con la camara cam= 1; I /bit que indica que se detecto la camara

else if(info[O]='T'){ tracking(); // se trata de un paquete T y se llama a la funcion tracking

}

void tracking() {

int celda=O; // variable para recorrer el arreglo info int unidad=O;// recorre cada uno de los 8 elementos del arreglo T (tracking) int valor=O; // es el valor numerico de cada uno de los elementos int conta=O;// contador de los espacios en el paquete T while( conta<8) {

if(info[ celda]=' 'llinfo[ celda]=32){ con ta++; if(conta==211conta=7){

unidad=O; celda++;

while (info[celda+unidad]!=32llinfo[celda+unidad]!=' '){//recorre cada valor por separado hasta un espacio o CR

unidad++;// para saber cuantos digitos tiene el numero }

if(unidad=l){//se convierten los caracteres a un int de O a 255 valor= info[celda]-48;

} else if(unidad==2){

valor= (info[ celda ]-48)* 1 O+info[ celda+ 1 ]-48; }

else if(unidad==3) { valor = (info[ celda ]-48)* 1 OO+(info[ celda+ 1 ]-

48)* 1 O+info[ celda+2]-48; }

if(conta==2){ //posicionen la que se detecto al enemigo if( valor<=? 5&&valor> 1) { // se detecto el enemigo a la

derecha

}

DERECHA=O; IZQUIERDA=l;

else if(valor>=200){ // detecto enemigo a la izquierda DERECHA=l;

}

---

IZQUIERDA=O;

TECNOLÓCICO DE MONTERREY.

46

Page 47: Arte de guerra - repositorio.tec.mx

}

}

} else{

}

} else{

}

else{ // detecto enemigo a la derecha DERECHA=!; IZQUIERDA=l;

} } if( conta==7) {// valor de la masa detectada if(valor> 135){// el enemigo esta a una distancia de disparo

bdisparo= 1 ;//se activa el disparo if(DISPARO=l){

}

}

DISPARO=O;

} else if(DISPARO=O){

DISPARO=!; delay us(IOO);

}

else{ bdisparo=O;

}

celda++;

celda++;// continua recorriendo el arreglo

// Declare your global variables here

void main(void) {

// Declare your local variables here

// Input/Output Ports initialization // Port A initialization // FuncO=Out Func 1 =Out Func2=0ut Func3=0ut Func4=0ut Func5=0ut Func6=0ut Func7=0ut // StateO=O Statel=O State2=0 State3=0 State4=0 State5=0 State6=0 State7=0 PORTA=OxOO;

. TECNOLÓGtCO DE MONTERREY.

47

Page 48: Arte de guerra - repositorio.tec.mx

DDRA=OxFF;

// Port B initialization // FuncO=In Funcl =In Func2=In Func3=In Func4=In Func5=In Func6=In Func7=In // StateO=T Statel=T State2=T State3=T State4=T State5=T State6=T State7=T PORTB=OxOO; DDRB=OxOO;

// Port C initialization // FuncO=In Funcl =In Func2=In Func3=In Func4=In Func5=In Func6=In Func7=In // StateO=T Statel=T State2=T State3=T State4=T State5=T State6=T State7=T PORTC=OxOO; DDRC=Ox03;

// Port D initialization // FuncO=In Funcl=In Func2=In Func3=In Func4=In Func5=In Func6=In Func7=In // StateO=T Statel =T State2=T State3=T State4=T State5=T State6=T State7=T PORTD=OxOO; DDRD=Ox70;

// Timer/Counter O initialization // Clock source: System Clock // Clock value: Timer O Stopped // Mode: Normal top=FFh // OCO output: Disconnected TCCRO=Ox02;//30 us TCNTO=OxC5; OCRO=OxOO;

// Timer/Counter 1 initialization // Clock source: System Clock // Clock value: Timer 1 Stopped // Mode: Normal top=FFFFh // OC 1 A output: Discon. // OCIB output: Discon. // Noise Canceler: Off // Input Capture on Falling Edge TCCRlA=OxA2; // PWM TCCR1B=Ox03; TCNTIH=OxOO; TCNTl L=OxOO; OCRIAH=OxOO; OCRIAL=Ox55; OCRIBH=OxOO; OCR1BL=Ox55;

--

TECNOLÓGICO DE MONTERREY~

48

Page 49: Arte de guerra - repositorio.tec.mx

// Timer/Counter 2 initialization // Clock source: System Clock // Clock value: Timer 2 Stopped // Mode: Normal top=FFh // OC2 output: Disconnected ASSR=OxOO; TCCR2=0x00; TCNT2=0x00; OCR2=0x00;

// Externa} Interrupt( s) initialization // INTO: On // INTO Mode: Falling Edge // INTl: Off // INT2: Off GICRl=OxEO; MCUCR=Ox05;//0F MCUCSR=Ox40; GIFR=OxEO;

// Timer(s)/Counter(s) Interrupt(s) initialization TIMSK=OxOl;

// USART initialization // Communication Parameters: 8 Data, 1 Stop, No Parity // USART Receiver: On // USART Transmitter: On // USART Mode: Asynchronous // USART Baud rate: 38400 UCSRA=OxOO; UCSRB=OxD8; //D8 UCSRC=Ox86; UBRRH=OxOO; UBRRL=Ox 19;// 19

// Analog Comparator initialization // Analog Comparator: Off // Analog Comparator Input Capture by Timer/Counter 1: Off // Analog Comparator Output: Off

ACSR=Ox80; SFIOR=OxOO;

// Global enable interrupts

----- -

TECNOLÓGICO DE MONTERREY-

49

Page 50: Arte de guerra - repositorio.tec.mx

#asm("sei")

while(cam!=l){ // mientras no haya con la comunicacion con la camara se sigue intentando

putchar('g'); putchar('v'); putchar('\r'); delay _ ms(l 00);

}

//envia alta resolucion poniendo un 1 en el registro dp=O; while(!dp) { putchar('H'); putchar('R'); putchar(' '); putchar(' l '); putchar('\r'); delay _ ms(l 00); } //inicializar tracking con TC y RGB min y max dp=O; while(!dp ){

//amarillo putchar('T'); putchar('C'); putchar(' '); putchar('9'); //114 240 16 48 43 78 putchar('5');

// putchar('4'); putchar(' '); putchar('l '); putchar('7'); putchar('O'); putchar(' '); putchar('l '); putchar('2'); putchar('O'); putchar(' '); putchar('l '); putchar('7'); putchar('6 '); putchar(' '); putchar('l '); putchar('5');

// putchar('l ');

--

TECNOL.ÓOCO DE MONTERREY.,

50

Page 51: Arte de guerra - repositorio.tec.mx

putchar(' '); // putchar('2');

putchar('2 '); putchar('5'); putchar(13); dela y_ ms( 100);

//rojo /*

}

putchar('T'); putchar('C'); putchar(' '); putchar('l '); putchar('2'); putchar('5'); putchar(' '); putchar(' l '); putchar('9'); putchar('5'); putchar(' '); putchar('l '); putchar('5'); putchar(' '); putchar('4 '); putchar('5'); putchar(' '); putchar(' 1 '); putchar('l '); putchar(' '); putchar('2'); putchar(' 1 '); putchar(13); delay_ms(lOO); */

CAMARA=l; //termina la inicializacion de la camara bMUERTO=O; MUERTO=O; golpedelamuerte=O;

while (1){ if(bMUERTO=O){

if( contador++==550) { if(bservo==O){ //incrementa el ancho del PWM

OCR 1 B=OCRI A; if((OCRIA++)=Oxl 15)bservo=l;

TECNOLÓGICO DE MONTERREY ..

51

Page 52: Arte de guerra - repositorio.tec.mx

}

}

} if(bservo==l){ //decrementa el ancho del PWM

OCR 1 B=OCRI A; if( ( OCR 1 A--)=Ox85)bservo=O;

contador-O;

//Deteccion de obstaculos if( valorsensor[ O]<limite 1 &&valorsensor[ 1 ]<limite 1 ){ // obstaculo detectado en

sensor izquierdo

}

contador= 100;// para que no sigan avanzando los servos phizqe= 1 ;//secuencia de movimiento hacia atras y despues a la izquierda phdere=l; phizqc=O; phizqd=l; phderc=O; phderd=l; delay_ms(SOO); phizqe=l; phdere=l; phizqc=l; phizqd=O; phderc=O; phderd=l; delay _ ms(SOO);

else if(valorsensor[O]<limitel){ //obstaculo detectado en sensor izquierdo contador=IOO;// para que no sigan avanzando los servos phizqe=l; // se mueve a la derecha phdere=l; phizqc=l; phizqd=O; phderc=O; phderd=l;

}

else if(valorsensor[l]<limitel){//obstaculo detectado en sensor derecho contador= 100;// para que no sigan avanzando los servos

phizqe=l;//se mueve a la izquierda phdere=l; phizqc=O; phizqd=l;

TECNOLÓOCO DE MONTERREY ..

52

Page 53: Arte de guerra - repositorio.tec.mx

} else{

}

phderc=l; phderd=O;

if(bdisparo==O) {

}

phizqe= 1 ;// sigue avanzando phdere=l; phizqc=l; phizqd=O; phderc=l; phderd=O;

//deteccion de enemigo if(DERECHA&&!IZQUIERDA){//DETECTO AL ENEMIGO A LA IZQ

// contador=lOO; //detiene los servos y gira a la izquierda phizqe=l; phdere=l; phizqc=O; phizqd=l; phderc=l; phderd=O;

} else if(!DERECHA&&IZQUIERDA){//DETECTO AL ENEMIGO A LA DER

// contador= 100;// detiene los servos y gira a la derecha phizqe=l;

} else{

}

phdere=l; phizqc=l; phizqd=O; phderc=O; phderd=l;

if(bdisparo==O) {

}

phizqe=l ;//sigue avanzando phdere=l; phizqc=l; phizqd=O; phderc=l; phderd=O;

if(bdisparo==l){//detener al robot

TECNOLÓCtCO DE MONTERREY.

53

Page 54: Arte de guerra - repositorio.tec.mx

} else{

} }; }

}

contador= 100; //para que no sigan avanzando los servos phizqe=l; phdere=l; phizqc=l; phizqd=l; phderc=l; phderd=I;

phizqe=l;//gira circulos phdere=l; phizqc=l; phizqd=O; phderc=O; phderd=l; delay _ ms(8000); bMUERTO=O; MUERTO=O; golpedelamuerte=O;

TECNOLÓGICO , DE MONTERREY.

54