Está en la página 1de 68

Universidad Nacional Mayor de San Marcos Robots Per

PROYECTO SUMO
UNIVERSIDAD NACIONAL MAYOR DE SAN MARCOS
ROBOTS PER

Proyecto Robot-Sumo

Universidad Nacional Mayor de San Marcos Robots Per

Dedicatoria:
A toda la comunidad
Robotera del Per.

Proyecto Robot-Sumo

Universidad Nacional Mayor de San Marcos Robots Per


NDICE
Pgina
1. Dominio de la aplicacin
1.1. Identificacin
1.2. Sistema en general (objetivo)
1.3. Generalidades del documento
2.

Referencias del Documento


2.1. Especificaciones
6
2.2. Normas
2.3. Otros

3. Exigencia del sistema


3.1. Sistema
3.2. Caractersticas
3.2.1. Caractersticas de la performance (funciones)
3.2.2. Relacin entre las funciones
3.2.3. Exigencia sobre el interfaz externo
3.2.4. Caractersticas fsicas
3.2.5. Factor de calidad del sistema
3.2.5.1 Fiabilidad
3.2.5.2 Mantenimiento
3.2.5.3 Disponibilidad
3.2.6. Condicin de ambiente
3.2.7. Movilidad
3.2.8. Componentes y materiales
4. Concepcin y Realizacin
4.1. Planificacin y ejecucin
4.2. Documentacin
ELECTRNICA
o Alimentacin
o Lgica
o Potencia
o Eagle
MECNICA
o Forma
Motores
o Estructura Final
PROGRAMACIN
o Movimiento del Robot-SUMO
Mdulo PWM
Funcin Motor
o Diagrama de Flujo
o Cdigo en CCS
o Deteccin del Color Negro y Blanco
Mdulo ADC
Proyecto Robot-Sumo

8
10

11

12
13
16
18
20
21
22
23
25
26
28
29
31
33
34

Universidad Nacional Mayor de San Marcos Robots Per


Diagramas del ADC
Uso de los comandos
Diagrama de flujo
Cdigo en CCS
o Deteccin de objetos usando
Sensor Ultrasnico
Diagrama de flujo de deteccin
de objetos simple
Diagrama de flujo de deteccin
de objetos con filtro
Cdigo en CCS
Mdulo TIMER
Explicacin
o Giro Inicial
o Persecucin de Objetos
Principio de Persecucin
Diagrama de Flujo de la funcin Perseguir
Cdigo en CCS
o Funcin BATALLA
4.3. Logstica
4.3.1. Personal
4.3.2. Formacin
4.4. Participacin
INTERCON 2010
III KANTUROBOT 2010
FOINTEC 2010
VILLATRONICA 2010
COINTEC 2010
CER 2010
5. Costo
6. Agradecimientos

Proyecto Robot-Sumo

35
36
37
38
39
42
43
44
44
45
47
49
50
51
52
53
60

61

62

63
67

Universidad Nacional Mayor de San Marcos Robots Per

Informe del proyecto: Sumo Thor


1.

Dominio de la aplicacin
1.1.

Identificacin
Robtica: Es la ciencia y la tecnologa de los robots. Se ocupa del
diseo, manufactura y aplicaciones de los robots. La robtica combina
diversas disciplinas como son: la mecnica, la electrnica, la informtica,
la inteligencia artificial y la ingeniera de control.
Automatizacin: Es un sistema donde se trasfieren tareas de
produccin, realizadas habitualmente por operadores humanos a un
conjunto de elementos tecnolgicos.
Control: Proceso para asegurar que las actividades reales se ajusten a
las actividades planificadas. Permite mantener a la organizacin sistema
en buen camino.

1.2.

Sistema en general (objetivo)


Se busca tener un robot sumo con un sistema robusto que cumpla con el
reglamento de la categora. Este sistema debe ser fiable y estable en las
condiciones y ambientes de batalla. Adems debe fcil de manipular y
calibrar durante la competencia.

1.3.

Generalidades del documento

2.

Diseo de la placa impresa


Diseo de la estructura
Variar la velocidad de los motores
Reconocimiento de la lnea del borde de la plataforma
Detectar la proximidad de un objeto
Hacer una interfaz

Referencias del Documento


2.1.

Especificaciones
Conocer los dispositivos y componentes electrnicos
Uso de los datasheets

Disear el layout
Manejo del programa Eagle

Disear la Mecnica
Uso de Solidworks
Controlar la velocidad del motor
Uso del PWM
Saber el color de la superficie
Uso del sensor infrarrojo CNY70
Proyecto Robot-Sumo

Universidad Nacional Mayor de San Marcos Robots Per


Saber si hay un objeto dentro de un rango de sensado
Uso del sensor ultrasnico SRF05
Comunicarse con la PC
Uso de Visual Basic 2010

2.2.

Normas
Uso de los datasheets
Saber la distribucin de pines de los integrados
Saber la configuracin y polarizacin de los componentes
Conocer los mdulos del PIC
Manejo del programa Eagle
Conocer las conexiones de los componentes
Hacer un esquemtico del circuito
Usar componentes superficiales
Saber las condiciones de diseo
Usar una sola placa para el control y potencia
Uso de Solidworks
Tener una mecnica solida
Tener estabilidad en el movimiento
Respetar las dimensiones
Uso del PWM
Programacin del PIC
Uso del timer
Uso del sensor infrarrojo CNY70
Uso de ADC
Uso del sensor ultrasnico SRF05
Uso del timer
Uso de Visual Basic 2010
Uso del Protocolo RS-232
Uso del UART
Estabilidad del interfaz
Uso del cable Serial-USB FTDI

2.3.

Otros
Grabacin del pic
Uso del datasheet del PICkit 2
Modo de grabacin va ICSP

3.

Exigencia del sistema


3.1.

Sistema
Diseo de una tarjeta electrnica con el fin de detectar a un oponente e ir
hacia l.

Proyecto Robot-Sumo

Universidad Nacional Mayor de San Marcos Robots Per


3.2.

Caractersticas
3.2.1.

3.2.2.

Caractersticas de la performance (funciones)


Control del sentido de giro y de la velocidad de los motores
Deteccin del color de la superficie
Medicin de distancia hasta 4m
Medicin de distancia hasta una distancia especifica
Medicin del rango dentro de 4m
Deteccin de objetos dentro a un rango especfico
Persecucin de un objeto
Selector del sentido del giro inicial
Selector de inicio de operacin
Lectura de la tensin de la batera
Comunicacin serial
Relacin entre las funciones

Modo Sumo-batalla
Control del sentido de giro y de la velocidad de los motores
Deteccin del color de la superficie
Deteccin de objetos dentro a un rango especfico con filtro
Persecucin de un objeto
Selector del sentido del giro inicial
Selector de inicio de operacin
Modo Rastreador
Control del sentido de giro y de la velocidad de los motores
Deteccin de objetos dentro a un rango especfico
Persecucin de un objeto
Selector de inicio de operacin
Modo seguidor de lneas
Control del sentido de giro y de la velocidad de los motores
Deteccin del color de la superficie
Selector de inicio de operacin
Modo control desde la PC
Control del sentido de giro y de la velocidad de los motores
Deteccin del color de la superficie
Medicin de distancia hasta 4m
Medicin de distancia hasta una distancia especifica
Medicin del rango dentro de 4m
Deteccin de objetos dentro a un rango especfico
Persecucin de un objeto
Selector del sentido del giro inicial
Selector de inicio de operacin
Lectura de la tensin de la batera
Comunicacin serial

Proyecto Robot-Sumo

Universidad Nacional Mayor de San Marcos Robots Per


3.2.3.

Exigencia sobre el interfaz externo

Para una mejor modo de testeo, se cre una interfaz en Visual


Basic 2010. Dicho programa se comunica va serial (protocolo RS232) con el sumo usando un conversor Serial-USB.

Forma de conexin con la


PC.

Icono de programa una vez que se cre su


ejecutable

Esta es la ventana inicial donde se configura la comunicacin.

Proyecto Robot-Sumo

Universidad Nacional Mayor de San Marcos Robots Per

Si el sumo no est conectado o encendido aparecer una


ventana indicando hay un problema

Ventana para el testeo de los sensores

Ventana para el testeo del modo Sumo-Batalla

Proyecto Robot-Sumo

Universidad Nacional Mayor de San Marcos Robots Per

Ventana para el testeo de los motores

3.2.4.

Caractersticas fsicas
En la implementacin de la placa se usaron componentes
superficiales SMD de talla 1206.
Cuenta con dos pulsadores y un botn para la configurar el
modo Sumo-batalla.
Tiene un botn de pnico tipo hongo para facilitar el encendido
y apagado del sistema.
La mecnica cuenta con 4 puntos de apoyo.
Toda la estructura fue hecha de aluminio en barras de 14cm.
Las dimensiones de robot sumo son 20x20x20cm.
Se tiene una rampa para facilitar la embestida.

3.2.5.

Factor de calidad del sistema

3.2.5.1 Fiabilidad
La probabilidad de correcto funcionamiento del sistema es muy
alta, en una prueba de testeo se hicieron 100 accionamientos en
los cuales se obtuvo un correcto funcionamiento en 97
oportunidades.
3.2.5.2 Mantenimiento
El mayor problema que afronta este proyecto es el cableado, por
tanto su mantenimiento debe ser constante, revisar continuidad en
los cables adems de la correcta funcionalidad de los sensores.
Estos problemas son fcilmente encontrados gracias al testeo
mediante el interfaz grfico.

Proyecto Robot-Sumo

Universidad Nacional Mayor de San Marcos Robots Per


3.2.5.3

Disponibilidad

Este proyecto se encuentra disponible en el Instituto de


Investigacin de la facultad de Ingeniera Electrnica de la
Universidad Nacional Mayor de San Marcos.

3.2.6.

Condicin de ambiente
EL rea de combate (dojo) es un crculo de 150cm de dimetro
de color negro con un borde de 5cm de color blanco.
Que el pblico y el jurado se encuentre a ms de 1m del rea
de combate.

3.2.7.

Movilidad
Para poder movilizar el robot se tiene que tener la aprobacin de
director del instituto de investigacin.

3.2.8.

Componentes y materiales

PIC 18F4550
L6203 DRIVER
L5973D REGULADOR CMS
SENSOR SRF05
SENSOR CNY70
RESISTENCIA de 4.7K
RESISTENCIA de 2.5 K
CONDENSADOR de 10uF
CONDENSADOR de 22nF
CONDENSADOR de 220pF
CONDENSADOR de 0.1uF
CONDENSADOR de 15nF
CONDENSADOR de 15pF
CONDENSADOR de 220nF
DIODO RECTIFICADOR
DIODO LED ROJO
DIODO LED VERDE
DIODO LED AMARILLO
BOBINA de 15uH
CRISTAL OSCILADOR de 20M
MOLEX MACHO DE 2
MOLEX MACHO DE 4
MOLEX MACHO DE 5
MOLEX HEMBRA DE 2
MOLEX HEMBRA DE 4
MOLEX HEMBRA DE 5
BASE MOLEX HEMBRA DE 5
BASE MOLEX MACHO DE 5
ALAMBRE PARA MOLEX

Proyecto Robot-Sumo

RESISTENCIA de 7.5 K
RESISTENCIA de 5.1 K
RESISTENCIA de 10 K
RESISTENCIA de 220
RESISTENCIA de 10
RESISTENCIA de 30
CONDENSADOR de 330uF
CONECTORES DE 2 PARA
CNY70
CABLE USB/SERIAL
MOTOR DC
LLANTAS DE CAUCHO
BALL CASTER
BATERA 12V 1.3AH
BOTON DE PANICO
BOTONES
PULSADORES
CABLE BIPOLAR
ESTAO
ARCO DE SIERRA MACHO
CUCHILLA
ACRILICO
ALUMINIO TIPO L
BISAGRA
RAMPA DE FIERRO
JUEGO DE TORNILLOS Y
TUERCAS
CINTA AISLANTE
SILICONA

Universidad Nacional Mayor de San Marcos Robots Per


4.

Concepcin y Realizacin

4.1.

Planificacin y ejecucin
May

Jun

Jul Ago

Set Oct

Nov Dic

Ene Feb Mar

Maqueta
Diseo de la
mecnica
Diseo de la
placa
Implementacin
Programacin
Interfaz

Planificado
Ejecutado

Proyecto Robot-Sumo

Abri

Universidad Nacional Mayor de San Marcos Robots Per

4.2.

Documentacin
ELECTRNICA

Para la parte de la electrnica en este proyecto usamos componentes


superficiales en una placa impresa que diseamos en el Cad Soft Eagle Layout
Designer 5.6.
Una de las principales razones para usar este tipo de componentes fue el
ahorro de espacio (ya que son ms pequeos) lo que nos permitira tener ms libertad
al momento de disear la mecnica. Adems, al ser muchos de estos componentes
tambin de uso industrial existe una mayor confianza en su desempeo y menos
probabilidad de que fallen en condiciones extremas como el frio y la altura.
Dentro del diseo de la placa, la principal preocupacin fue la configuracin de
los 3 integrados utilizados; eso ser explicado a continuacin:

Alimentacin
Para alimentar todo el mdulo usamos una batera recargable de 12v con
1.3AH, lo cual nos present con la necesidad de tener que reducir ese voltaje a 5V
para el funcionamiento de los dems integrados.
Lo que estbamos buscando era una forma de reducir el voltaje, sin que se
produjera una prdida innecesaria de potencia.
Por ejemplo, supongamos que estamos trabajando con un regulador de voltaje
como el 7805 y que ste alimenta un integrado que trabaja con 5v y 100mA.

12v 200mA

5v 100mA
7805

El regulador consume 200mA y entrega los 100mA necesarios, habiendo reducido el


voltaje de 12 a 5 v. Hacemos los clculos:
Sabemos que:

Rendimiento

Entonces el regulador trabaja con el 20.8% de eficiencia, lo que significa que casi el
80% de la potencia de entrada se desperdicia.
Fueron estos resultados los que nos llevaron a buscar un regulador de voltaje ms
eficiente.
El regulador de voltaje, usado para la alimentacin de los componentes lgicos de la
placa fue el integrado L5973D.
Proyecto Robot-Sumo

Universidad Nacional Mayor de San Marcos Robots Per


Algunas de sus principales caractersticas

El regulador L5973D es capaz de entregar hasta 2.5 A con voltajes de salida que
varan entre 1.235 a 35v. Trabajando con voltajes de entrada entre los 4.4 y 35v.
Cuenta con proteccin contra corto circuito.
Presenta un sistema de retroalimentacin que ayuda a alcanzar una eficiencia del
90%.

El L5973D se presenta como un integrado de 8 pines:

Encapsulado
Funcin de los pines:

Nro. Nombre

Descripcin

OUT

Salida del regulador

SYNC

INH

COMP

FB

VREF

Es el pin de sincronizacin
Una seal lgica deshabilita el dispositivo. Con INH mas alto
que 2.2v el dispositivo est apagado y con INH ms bajo que
0.8v el dispositivo esta prendido.
Si INH no es usado, el pin debe ir a tierra
Usado para compensar la frecuencia
Si conectamos el voltaje de salida directamente a este pin, el
voltaje de salida resultante es de 1.235V. Para voltajes de
salida ms altos se requiere de un divisor externo resistivo
Voltaje de referencia de 3.3V.

GND

Tierra

VCC

Voltaje DC de entrada

Proyecto Robot-Sumo

Universidad Nacional Mayor de San Marcos Robots Per


La funcin de los pines 1 y 8, como lo dice en la tabla, son de entrada y salida
respectivamente. La entrada es donde conectamos la batera de 12v.
El pin 2 slo es utilizado cuando queremos sincronizar 2 o ms dispositivos con el
regulador, en este caso no necesitamos usarlo, as que lo dejamos abierto.
Conectamos el pin 3 a tierra, ya que no tenemos razn para estar habilitando y
deshabilitando el regulador mientras lo utilizamos.
El pin 5 es muy importante, ya que nos ayuda a definir el valor del voltaje de salida.
Para esto usamos la siguiente frmula:

Donde R1 es la resistencia entre el voltaje de salida y el pin 5 y R2 es la resistencia


entre el pin 5 y tierra. Si sabemos por la tabla que el valor de
es 1.235V y que
nuestro voltaje de salida deseado es 5v, reemplazando en la frmula:

Entonces obtenemos la relacin entre R1 y R2:


Escogemos valores para R1 y R2 que se acerquen a los usados en los circuitos
modelos en la hoja de datos (que veremos ms adelante) y que tambin cumplan la
condicin ya establecida.
Finalmente elegimos los valores de 7.5K para R1 y 2.5K para R2.
El pin 6 lo dejamos abierto, el voltaje de referencia solo nos sirve como un indicador de
que el regulador est funcionando correctamente.
En la hoja de propiedades se plantean diferentes formas de usar el regulador, variando
tanto el voltaje de salida como el de entrada. Veamos algunos de estos posibles
circuitos:

Este es el circuito bsico de demostracin donde el voltaje de entrada puede variar de


4.4v a 25v y el de salida desde 1.235v hasta el valor de V CC.
Proyecto Robot-Sumo

Universidad Nacional Mayor de San Marcos Robots Per


Hay ms ejemplos, pero este es el circuito que vamos a estudiar para realizar nuestro
propio diseo.
Ya hemos calculado los valores de R1 y R2. Es as que obtenemos una configuracin
que trabaja de la forma deseada, que usa como voltaje de entrada 12v y nos entrega
5v de manera eficiente.

Configuracin Final de Alimentacin

Lgica
En lo correspondiente a la parte lgica, usamos el pic 18f45550 TQFP. Al momento
de elegir, tomamos en cuenta la cantidad de pines que presenta y la versatilidad que
nos da su forma encapsulada.
Este modelo presenta entradas tanto analticas como digitales, as como la opcin de
usar los dos canales disponibles para el PWM.

Distribucin de pines

Proyecto Robot-Sumo

Universidad Nacional Mayor de San Marcos Robots Per


Las parejas de pines 6-7, 28-29 y 21-22 van conectados uno a tierra y el otro a fuente
(VSS= tierra y VDD=fuente) y entre ellos se coloca un condensador.
El pin 18, conocido como el Master Clear funciona como un interruptor, si se encuentra
a 0 el pic se resetea. La configuracin de conexin es la siguiente:
El diodo ayuda a descargar rpidamente el condensador
cuando se apaga la fuente.
Se recomienda una R<40k y una R1>1K

Entre los pines 30(OSC1) y 31(OSC2) se conecta el cristal oscilador. La configuracin


de esta conexin est en la hoja de propiedades:

Tambin se nos da una tabla donde se


exponen los valores definidos de los
condensadores para cada valor particular del
cristal oscilador.
Para nuestro caso, que usamos un cristal de
20M, los condensadores son de 15pF.

Usamos dos pines analgicos como entrada para los sensores cny70, cuatro pines de
salida para controlar los dos puentes h, cuatro pines (2 como entrada y 2 como salida)
para los sensores ultrasonidos, los pines 1(RX) y 44(TX) para la comunicacin serial y
ambos pines de PWM (35 y 36).
Teniendo en cuenta todos estos puntos, armamos la configuracin final del PIC:

Configuracin Final del Pic

Proyecto Robot-Sumo

Universidad Nacional Mayor de San Marcos Robots Per

Potencia
Con respecto a la parte de potencia, usamos el puente H L6203 MULTIWATT para
controlar 2 motores DC que veremos despus.
Algunas de sus principales caractersticas:

La corriente mxima que bota es de 4A y la corriente de pico 5A debido a que el


motor que se va utilizar es el PGHM-01 de 12vdc-20:1-300rpm, dicho motor utiliza
una corriente mxima de 4A.
Este puente H tiene un feedback (retroalimentacin) de la corriente de control del
motor.
Tiene la opcin de colocar un disipador de temperatura.

Encapsulado

Distribucin de pines

Funcin de los pines:

Nro.
1
2
3
4
5
6
7
8
9
10
11

Nombre
OUT2
VS
OUT1

Descripcin
Salida de la segunda mitad del puente
Fuente de voltaje
Salida de la primera mitad del puente
Un capacitor boostrap conectado a este pin asegura un
BOOT1
funcionamiento eficiente del transistor DMOS superior
IN1
Entrada digital del controlador del motor
GND
Tierra comn
IN2
Entrada digital del controlador del motor
Un capacitor boostrap conectado a este pin asegura un
BOOT2
funcionamiento eficiente del transistor DMOS superior
Voltaje interno de referencia. Se recomienda usar un capacitor entre
Vref
este pin y tierra.
Una resistencia Rsense conectada a este pin proporciona
SENSE
retroalimentacin que nos permite controlar la corriente del motor
Cuando se tiene una entrada lgica alta en este pin los transistores
ENABLE DMOS son habilitados para ser manejados selectivamente por IN1 e
IN2

Proyecto Robot-Sumo

Universidad Nacional Mayor de San Marcos Robots Per


Conectamos los pines 5 y 7 a una salida del pic cada uno. Es por medio de estos
pines que el pic controla al puente h.
El pin 6 es conectado a tierra.
Se recomienda usar un capacitor entre el pin 9 y tierra. Un valor de 0.22nF es
suficiente para la mayora de las aplicaciones
En la hoja de propiedades se plantean diferentes formas de usar el puente h.

En este circuito se usa el integrado para el control bidireccional de un motor DC, de


este modelo sacamos la configuracin de los pines 1, 3, 4 y 8, es decir, los valores de
los condensadores y resistencias.
Teniendo en cuenta todo esto, planteamos una configuracin final:

Configuracin Final del Puente H


Proyecto Robot-Sumo

Universidad Nacional Mayor de San Marcos Robots Per

Eagle
Eagle es un programa que nos permite disear placas. Para disear una nueva placa
primero creamos un esquema de la misma y luego diseamos el circuito impreso.
Ya tenemos la configuracin de cada uno de los integrados as que armamos el
esquema uniendo los componentes para formar el circuito final.

Proyecto Robot-Sumo

Universidad Nacional Mayor de San Marcos Robots Per

MECNICA
La estructura del modulo sumo est compuesta en su mayora por un armazn de
aluminio, que forma un esqueleto solido sin ser muy pesado

Forma
Cuando comenzamos con el diseo de este proyecto uno de los primeros temas de
discusin fue la forma que debera tener, queramos una distribucin adecuada del
peso que a la vez nos permitiera cumplir la funcin principal de un robot sumo que es
empujar a su contrincante fuera del dojo.
Concordamos que una forma bsica sera lo mejor:

Una rampa adelante, lo ms pegada al piso y con menos inclinacin posible. Y el resto
de la estructura en forma de cubo.
Para que la estructura sea estable se construyo primero un esqueleto que luego sera
cubierto con placas de aluminio:

Esqueleto
1er prototipo de Thor

Los motores, las bateras y la placa se acomodan dentro del cuerpo formando pisos,
con la placa en el piso superior para tener acceso fcil a ella.
En la parte externa superior de la estructura fijamos un botn grande que nos permite
apagar el robot sin necesidad de abrirlo o desconectar la placa.

Proyecto Robot-Sumo

Universidad Nacional Mayor de San Marcos Robots Per


En el primer prototipo del modulo los sensores ultrasonidos se encontraban en la parte
frontal, sobre las bateras, que a su vez estaban frente a los motores en la base de la
estructura.
Tambin cambiamos la rampa que planebamos usar en la parte de adelante por una
pala:

1er prototipo de Thor


completado

MOTORES
Usamos dos motores DC de 12v, 300rpm y una reduccin de 20:1, como podemos
observar en la figura:

Como parte de la estructura del sumo, estos motores se encontraban en la parte


posterior y en un mismo eje

Proyecto Robot-Sumo

Universidad Nacional Mayor de San Marcos Robots Per

Estructura Final
Despus de nuestra primera participacin en un concurso decidimos hacer una nueva
estructura, ms estable y que contenga nuestra idea original de usar una rampa.
Agregamos dos ruedas de apoyo adelante y retrocedimos la posicin de los motores
para que se encuentren lo mas pegados a la pared posterior posible.

4 puntos de
apoyo

SOLIDWORKS

Estructura final del mdulo robot sumo: Thor

Solidworks es un programa de diseo para modelado mecnico. El programa permite


modelar piezas y conjuntos y extraer de ellos tanto planos como otro tipo de
informacin necesaria para la produccin.

Proyecto Robot-Sumo

Universidad Nacional Mayor de San Marcos Robots Per


Empezamos el diseo creando las piezas y luego realizando el ensamblaje, es
importante tener en cuenta las medidas de cada pieza para que stas encajen
correctamente al momento del ensamblaje.
Para realizar un ensamblaje primero debemos tener las piezas, as que empezamos
con eso y luego las ensamblamos:

Diseo Final de la estructura del Thor

Proyecto Robot-Sumo

Universidad Nacional Mayor de San Marcos Robots Per

PROGRAMACIN
La programacin fue desarrollada en lenguaje C con el compilador CCS usando el
entorno de MPLAB. Para un mejor entendimiento del cdigo se dividi en funcin a los
mdulos usados dentro del PIC.

MOVIMIENTO DEL ROBOT-SUMO


Este robot utiliza dos motores DC (PGHM-01) de 300prm alimentado por 12v.
Estos motores se encargan de los movimientos del robot (avanzar, retroceder, girar
derecha y girar izquierda). Estos movimientos consisten en la conmutacin de ambos
motores que son controlados por el pic a travs del puente H de la siguiente forma:

IN1_MOTOR1
IN2_MOTOR2
IN1_MOTOR1
IN2_MOTOR2
Tabla1

Avanzar Retroceder Girar Derecha Girar Izquierda


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

Este cuadro representa los bits que tiene que enviar el pic al puente H para
poder mover los motores. Hasta este punto solo podemos controlar el movimiento del
robot ms no la velocidad del mismo. Para poder controlar la velocidad de los motores
utilizaremos el mdulo PWM.

Proyecto Robot-Sumo

Universidad Nacional Mayor de San Marcos Robots Per

Mdulo PWM
La modulacin por ancho de pulsos (tambin conocida como PWM, siglas en
ingls de Pulse-Width Modulation) de una fuente de energa es una tcnica en la que
se modifica el ciclo de trabajo de una seal peridica, para controlar la cantidad de
energa que se enva a una carga. Este principio fue usado en el proyecto para poder
variar fcilmente la velocidad de los motores en tiempo real, conectando la salida de
PWM al pin enable del puente H. De esta manera al enviar este tren de pulsos del
PWM dara el mismo resultado que prender y apagar el puente H rpidamente,
reduciendo as la velocidad.
Para poder utilizar el modulo PWM del pic primero hay que configurarlo, para
trabajar de una manera ms ordenada crearemos una funcin llamada initPWM() para
configurar el PWM.
void initPWM()
{
setup_ccp1(CCP_PWM);
setup_ccp2(CCP_PWM);

// Definimos la primera salida de PWM para el motor 1


// Definimos la primera salida de PWM para el motor 2

//******** configuracin del periodo PR2 ***********


setup_timer_2(T2_DIV_BY_1 ,255, 1);

// Se define por defecto as: (Prescaler, PR2, 1)

// El tiempo de cada ciclo, PERIODO (seg) = (1/clock)*4*T2div*(period+1)


// En este programa clock=20000000 y el periodo=255, ***PR2=255***
// Para diferentes cycle el tiempo es:
// (1/20000000)*4*1*256 = 51.2 us or 19.5 KHz
// (1/20000000)*4*4*256 = 204.8 us or 4.9 KHz
// (1/20000000)*4*16*256 = 819.2 us or 1.22 KHz
// Usaremos el comando set_pwm1_duty(valor de 0 a 255) para cambiar la velocidad
set_pwm1_duty(0);
// inicializamos con velocidad 0 el motor 1
set_pwm2_duty(0);
// inicializamos con velocidad 0 el motor 2
}

En la funcin initPWM utilizamos el mdulo TIMER_2 ya que el PWM necesita


una frecuencia de trabajo. Adems segn el datasheet del pic 18F4550 se debe utilizar
el TIMER_2 cuando se usa la salida CPP como PWM.
La frecuencia es muy importante en un PWM ya que mientras la frecuencia es mayor
obtendremos mayor fuerza de los motores lo cual es favorable para nuestro propsito.
Por ese motivo escogimos esta configuracin:

setup_timer_2(T2_DIV_BY_1, 255, 1)

Prescalar: El periodo
es dividido entre ste
nmero para obtener
diferentes periodos:
i.e.
T2_DIV_BY_1
T2_DIV_BY_4
T2_DIV_BY_16

Proyecto Robot-Sumo

PR2: Es el mximo
ancho de pulso:
255 100%

Se asigna
por defecto
el numero 1

Universidad Nacional Mayor de San Marcos Robots Per


Para poder asignar controlar el porcentaje de velocidad se usara el comando:

set_pwm1_duty(valor desde 0 a 255);


Este valor representa el ancho de
pulso del PR2 que estar en alto

set_pwm1_duty(127);
set_pwm1_duty(255);

TPR2 Terico=
TPR2 simulado=
TDuty Cycle Terico=
TDuty Cycle simulado=

TDuty Cycle Terico=


TDuty Cycle ORC =

TPR2 Terico=
TPR2 simulado=
TDuty Cycle Terico=
TDuty Cycle simulado=

TDuty Cycle Terico=


TDuty Cycle simulado=

Proyecto Robot-Sumo

Universidad Nacional Mayor de San Marcos Robots Per


Segn lo observado en las grficas es posible variar la velocidad de los
motores enviando pulsos por el PWM. Dichos anchos de pulsos varan conforme al
valor ingresado en el comando set_pwm1_duty(valor).
Hasta el momento ya podemos controlar la direccin del movimiento como la
velocidad de los motores. Ahora veremos un algoritmo que une estos dos puntos para
poder controlar la direccin y la velocidad con un solo parmetro.

Funcin Motor

motor(velocidad)
Esta funcin se encarga de enviar el sentido y la velocidad a los motores
utilizando un solo nmero para representar ambos datos. La funcin motor(velocidad)
requiere que se le asigne un valor de -100 a 100, este nmero representa el
porcentaje de velocidad, adems si el nmero es positivo girar en un sentido y si es
negativo girar en el sentido contrario. Cabe resaltar que el valor de -100 a 100 es el
porcentaje del valor que ingresamos en la comando set_pwm1_duty(valor).
Para entender mejor esta lgica observaremos la siguiente grafica:

Porcentaje de la
Velocidad del motor
motor(velocidad*)

velocidad%

motor(50)

50 %

motor(-50)

50 %

motor(100)

100 %

motor(0)

0%

Valor de Duty
Cycle del PWM

Sentido de giro
del motor

stop

Tabla 2
Como podemos observar es muy sencillo controlar el sentido y la velocidad del motor
haciendo uso de esta funcin. Ahora veremos el algoritmo de esta funcin en un
diagrama de flujo y luego en cdigo.
* velocidad es una variable que representa el porcentaje de velocidad del motor.

Proyecto Robot-Sumo

Universidad Nacional Mayor de San Marcos Robots Per

Diagrama de flujo

INICIO

motor(velocidad)

valor = velocidad&0b10000000

SI

Si valor = 128

NO

Girar en sentido anti horario


Girar en sentido horario
velocidad=-velocidad;

a=2.55*velocidad;
set_pwm1_duty(a);

FIN
Explicacin:
motor(velocidad)

Llamamos a la funcin motor(velocidad), donde velocidad es una


variable que representa el porcentaje de velocidad del motor.

Segn lo analizado, el sentido de giro del motor depende del signo del nmero
dentro de la funcin motor(velocidad). Para poder determinar el signo analizaremos el
nmero como binario. La variable velocidad es un int por lo tanto puede tomar valores
desde -127 hasta 127.
int =8 bits

Este bit indica el signo:


0: Positivo
1: Negativo
Proyecto Robot-Sumo

__ __ __ __ __ __ __ __

Estos bits generan los nmeros:

Universidad Nacional Mayor de San Marcos Robots Per


i.e.

1 == 0000 0000

2 == 0000 0001

3 == 0000 0010

-1 == 1111 1111

-2 == 1111 1110

-3 == 1111 110

Para determinar si un nmero es positivo o negativo


tenemos que analizar el primer bit de izquierda a
derecha. Este bit lo obtenemos de la siguiente
manera:

valor = velocidad&0b10000000

valor = velocidad&0b10000000

Ejemplo:
Si velocidad = 50 = 0b00110010
0

0
&

1 0 0 0 0 0 0 0
___________________________
Valor = 0 0 0 0 0 0 0 0

=0

Si velocidad = -50 = 0b11001110


1

0
&

1 0 0 0 0 0 0 0
___________________________
Valor = 1 0 0 0 0 0 0 0

= 128

De esta forma podemos obtener el primer bit de un nmero positivo o negativo. Si


Valor es igual a 0 el nmero es positivo, si valor es igual a 128 el nmero ser
negativo.

Si valor = 128

Preguntamos si la variable valor es igual a 128


(nmero negativo).

SI
Girar en sentido anti horario
velocidad= -1*velocidad;

Proyecto Robot-Sumo

Si la variable valor es igual a 128 (negativo) entonces


giramos los motores en sentido anti horario.
Ahora convertiremos la variable velocidad (nmero
negativo) a un nmero positivo multiplicndolo por -1.

Universidad Nacional Mayor de San Marcos Robots Per


Si la variable valor es igual a 0 (positivo) entonces
giramos los motores en sentido horario.

Girar en sentido horario

Hasta este punto el signo de la variable velocidad slo se us para determinar el


sentido de giro del motor. Adems esta variable ya es positiva para todos los casos ya
que se multiplic por -1 cuando era negativa.
Ahora usaremos el mdulo de la variable velocidad para asignar el valor del porcentaje
de la velocidad del motor en el PWM.

Como la variable velocidad representa el porcentaje


de la velocidad es un nmero entre 0 y 100%. Pero
hemos configurado el PR2 con 255.
Entonces se debe hacer un regla de tres simple para asignar el valor en el comando:
set_pwm1_duty(valor entre 0 y 255);
a=2.55*velocidad;
set_pwm1_duty(a);

% de velocidad

Duty Cycle

100

255

velocidad

Cdigo en CCS
void motor(int velocidad )
{
unsigned int valor,a;
valor=velocidad&0b10000000;
if(valor==128)

// Definimos la funcin que tendr la entrada de un parmetro


// Definimos la variable valor como un entero sin signo (0 a 255)
// Obtenemos el primer bit del nmero para saber si positivo o
// negativo
// Si la variable valor es igual a 128 (significa que el nmero es
// negativo)

{
output_low(IN1_MOTOR1);
// Giramos el motor hacia atrs
output_high(IN2_MOTOR1);
velocidad=-velocidad;
}
else

// Multiplicamos la variable velocidad por -1 para que sea positiva


// Si la variable valor es diferente a 128 (significa que el nmero es
// positivo)

{
output_low(IN2_MOTOR1);
// Giramos el motor hacia adelante
output_high(IN1_MOTOR1);
}
a=2.55*velocidad;

// Hacemos de conversin de % de velocidad a Duty Cycle

set_pwm1_duty(a);

// Asignamos el valor de Duty Cycle al comando del PWM

Proyecto Robot-Sumo

Universidad Nacional Mayor de San Marcos Robots Per


Esta funcin la extrapolaremos para dos motores
void motor1(int velocidad1)
{
unsigned int valor1,a;
valor1=velocidad1&0b10000000;
if(valor1==128)
{
output_low(IN1_MOTOR1);
output_high(IN2_MOTOR1);
velocidad1=-velocidad1;
}
else
{
output_low(IN2_MOTOR1);
output_high(IN1_MOTOR1);
}
a=2.55*velocidad1;
set_pwm1_duty(a);
}
void motor2(int velocidad2)
{
unsigned int valor2,a;
valor2=velocidad2&0b10000000;
if(valor2==128)
{
output_low(IN1_MOTOR2);
output_high(IN2_MOTOR2);
velocidad2=-velocidad2;
}
else
{
output_low(IN2_MOTOR2);
output_high(IN1_MOTOR2);
}
a=2.55*velocidad2;
set_pwm2_duty(a);
}

Ahora crearemos una funcin motores para controlar dos motores usando la funcin
anterior.
void MOTORES(int velocidad1, int velocidad2)
{
motor1(velocidad1);
motor2(velocidad2);
}

Proyecto Robot-Sumo

// definimos la funcin que tendr la entrada de dos parmetros


// asignamos la variable velocidad1 al primer motor
// asignamos la variable velocidad2 al segundo motor

Universidad Nacional Mayor de San Marcos Robots Per

DETECCIN DEL COLOR NEGRO Y BLANCO


La deteccin del color negro y blanco es fundamental en la categora robot sumo para
no salirse del dojo. Para este propsito usamos el sensor infrarrojo CNY70.

(a)

(b)

(c)

La figura (a) es el encapsulado del sensor CNY70.


Este sensor tiene un led infrarrojo y un fototransistor (figura b).
En la figura (c) observamos la polarizacin del led y fototransistor. Adems de la
configuracin de emisor comn del fototransistor.
Este sensor funciona de la siguiente manera al estar sobre una superficie negra y
blanca en un caso ideal.
Superficie negra
En este caso la superficie es negra y
como sabemos el color negro
absorbe la luz, entonces el
fototransistor no es excitado.
De acuerdo a la figura (c) si la base
del fototransistor no es excitada la
salida es 1 lgico.

Superficie blanca
En este caso la superficie es blanca,
el color blanco no absorbe la luz,
entonces la luz es reflejada y el
fototransistor es excitado.
De acuerdo a la figura (c) si la base
del fototransistor es excitada la
salida es 0 lgico.

Proyecto Robot-Sumo

Universidad Nacional Mayor de San Marcos Robots Per


Como ya habamos sealado los casos anteriores son para casos ideales teniendo en
cuenta que:

Los sensores nunca son iguales.


La luminosidad es diferente en distintos lugares.
El color negro tiene varios matices dependiendo del material del que est
hecho.
Etc.

Por tanto la salida no ser 1logico (5 volts) ni 0 lgico (0 volts). Esto significa que la
salida ser analgica con tensiones entre 0 y 5 volts.
En nuestro caso usamos el mdulo ADC del pic 18f4550 para leer la tensin
analgica que obtenemos del sensor CNY70 y convertirla en digital dentro del pic. Esto
lo hacemos con el propsito de hacer un comparador dentro del pic.

Mdulo ADC
Este mdulo ADC consiste en la representacin de un voltaje analgico en un
valor digital. Quiere decir que podemos saber el valor de la tensin analgica dentro
del pic. Una vez que tengamos ese valor podremos analizar ese voltaje para
determinar si el color de la superficie es negro o blanco.
Lo que haremos primero es crear una funcin de inicializacin y configuracin del
mdulo ADC.
void initADC()
{
SETUP_ADC(ADC_CLOCK_INTERNAL);
setup_adc_ports(AN0_TO_AN9_ANALOG);

// Configuramos el ADC
// Usaremos el clock interno
// Habilitamos los pines que usaremos como entradas
// analgicas, en este caso del AN0 al AN9

Adems tenemos que configurar la resolucin del ADC en el .h . En nuestro caso


usaremos una resolucin de 10 bits.
#device adc=10

Proyecto Robot-Sumo

Universidad Nacional Mayor de San Marcos Robots Per


Una vez que el mdulo ADC ha sido configurado est listo para ser usado teniendo en
cuenta lo siguiente:

El mdulo ADC solo puede ser usado por un pin analgico a la vez.
El valor de la tensin analgica ser representada de 0 a 1024 porque estamos
usando una resolucin de 10 bits.
Si un pin est siendo usado como analgico ya no ser I/O digital y viceversa.
El pic necesita tener un VREF+ y VREF- para poder tener una referencia de un
mximo y mnimo valor de voltaje, en nuestro caso consideramos lo siguiente:
VREF+ = 5 volts y VREF- = 0 volts.

Diagrama de bloques del ADC

Como se puede observar solo se puede hacer una lectura a la vez teniendo en
cuantas los voltajes de referencia y la resolucin de 10 bits. Ahora veremos los dos
comandos usados para la lectura del mdulo ADC.

Proyecto Robot-Sumo

Universidad Nacional Mayor de San Marcos Robots Per


Uso de los comandos

SET_ADC_CHANNEL(0);

Colocamos el nmero
del pin analgico en el
cual queremos hacer
la lectura.

Este comando sirve para establecer que pin analgico har la lectura.
Ejemplo.
SET_ADC_CHANNEL(0);
SET_ADC_CHANNEL(4);
SET_ADC_CHANNEL(9);

Estamos estableciendo el AN0 cono pin de lectura


Estamos estableciendo el AN4 cono pin de lectura
Estamos estableciendo el AN9 cono pin de lectura

READ_ADC()
Una vez que se ha establecido que pin analgico har la lectura se usar este
comando para hacer la lectura propiamente dicha. Esta funcin es propia del
compilador y su caracterstica es que devuelve un valor, quiere decir que tenemos que
usar una variable para asignarle el valor.
Ejemplo
lectura=READ_ADC();
El valor de la variable lectura est en el rango de 0 a 1024 dependiendo de la tensin
de entrada.
Ejemplo
Considerando VREF+ = 5 volts y VREF- = 0 volts.
Si
Si
Si
Si

la tensin de entrada es 5 volts entonces la variable lectura ser 1024


la tensin de entrada es 0 volts entonces la variable lectura ser 0
la tensin de entrada es 2.5 volts entonces la variable lectura ser 512
la tensin de entrada es 1 volts entonces la variable lectura ser 205

Estos son los valores obtenidos al hacer la lectura por ADC, pero aun no son los
valores de la tensin analgica leda. Para obtener ese valor tenemos que hacer una
transformacin
Analizando estos valores podemos hallar una relacin con una regla de 3 simple.

VREF+
Proyecto Robot-Sumo

Universidad Nacional Mayor de San Marcos Robots Per


Ahora veremos el proceso de deteccin del color de la superficie

Diagrama de Flujo

INICIO

Establecemos que
pin analgico har
la lectura
Hacemos la lectura analgica a digital

Transformamos el valor digital


(entre 0 y 1024) a tensin
VREF+

Si voltaje <umbral

Color Negro

Color Blanco

FIN

La variable umbral que encontramos en el condicional es la tensin umbral. Esta


tensin es la tensin lmite entre las tensiones que representan el color blanco y negro.

Proyecto Robot-Sumo

Universidad Nacional Mayor de San Marcos Robots Per

Cdigo en CCS
#define VREF 5
int I;
void infrarrojo(float umbral)
{
float voltaje;
long lectura;
SET_ADC_CHANNEL(1);
lectura=READ_ADC();
voltaje=(VREF/1024.0)*(float)(lectura);
if(voltaje>=umbral)

// Definimos la variable como real


// Definimos la variable como entero largo
// Establecemos que el pin analgico AN1 har la lectura
// Hacemos la lectura
// Hacemos la transformacin
// Preguntamos si voltaje es mayor a la tensin umbral

{
I=1;

// Representa que el color es negro

I=0;

// Representa que el color es blanco

}
else
{
}
}

Para utilizar esta funcin lo haremos de la siguiente manera:


infrarrojo(4);

// Significa que la tensin umbral es 4 volts

Podemos ingresar cualquier valor entre 0 y 5 volts.

Ahora podemos extrapolar esta funcin para dos sensores cny70.


void infrarrojos(float umbral)
{
float cny70_der,cny70_izq;
long lectura;
SET_ADC_CHANNEL(0);
lectura=READ_ADC();
cny70_der =(VREF/1024.0)*(float)(lectura);

// seleccionamos canal 0 PARA EL CNY70(der)

SET_ADC_CHANNEL(1);
lectura=READ_ADC();
cny70_izq =(VREF/1024.0)*(float)(lectura);

// seleccionamos canal 1 PARA EL CNY70(izq)

if(cny70_der>=umbral)
{
I_DER=1;
}
else
{
I_DER=0;
}
if(cny70_izq>=umbral)
{
I_IZQ=1;
}
else
{
I_IZQ=0;
}
}

Proyecto Robot-Sumo

Universidad Nacional Mayor de San Marcos Robots Per

DETECCIN DE OBJETOS USANDO SENSOR ULTRASNICO


En esta seccin abordaremos al detalle el mtodo usado para detectar objetivos a una
determinada distancia. Para este fin usaremos el sensor ultrasnico SRF05.

Este sensor tiene 4 pines para su conexin: 5V, GND, ECO y DISPARO. De estos
pines los ms importantes son los siguientes:

Para que el sensor SRF05 funcione primero debemos aplicar un pulso de 10us al pin
DISPARO, luego debemos leer el ancho de pulso del pin ECO para saber la distancia
a la que se encuentra el objeto.

Proyecto Robot-Sumo

Universidad Nacional Mayor de San Marcos Robots Per


Del DIAGRAMA DE TIEMPOS podemos observar que despus que se envi el pulso
de inicio por el pin DISPARO el pin ECO se pondr a 1 durante la espera. Si
detecta algn objeto en ese instante el pin ECO se colocar a 0.
Ese comportamiento del pin ECO se muestra en las siguientes graficas de ancho de
pulso tomadas con el osciloscopio para diferentes distancias.

Hasta este punto no hemos mencionado como calcular la distancia, pero para esta
aplicacin no es necesario saber la distancia a la que se encuentra el objeto sino
saber si esta dentro de ese rango de distancia.

Proyecto Robot-Sumo

Universidad Nacional Mayor de San Marcos Robots Per

Para esta aplicacin es lo mismo que el objeto se encuentre en cualquiera de los


puntos azules ya que nuestro objetivo es saber si hay o no un objeto dentro de esa
distancia.
Ahora veremos cmo saber si hay o no un objeto dentro del rango. Para esto
usaremos el tiempo de espera como referencia. Calcularemos cual es el tiempo que se
demorara la onda en llegar al objeto y regresar.
Por cinemtica:

La velocidad del sonido es 340 m/s.


Hacemos la conversin de unidades.
Obtenemos una relacin entre el tiempo de
espera y la distancia.

Por ejemplo
Si queremos saber si un objeto se encuentra en el rango de 70cm:

El tiempo de espera ser 4060 s. Quiere decir que una vez que se haya
enviado el pulso de 10us al pin DISPARO se tendr que esperar 4060 s para
preguntar al pin ECO si se encuentra en 0 1.

Proyecto Robot-Sumo

Universidad Nacional Mayor de San Marcos Robots Per

Diagrama de flujo de deteccin de objetos simple

INICIO

Calculamos el tiempo de espera


Distancia =70 cm

Cada 30ms
Mandar pulso de
10s por el pin
DISPARO

Esperamos hasta que el pin ECO se ponga en


1 para empezar la lectura

Hacemos un retardo de
segundos
En esta caso

Si en pin ECO = 1

NO SE DETECTO OBJETO
DENTRO DEL RANGO
En este caso 70cm

SE DETECTO OBJETO
DENTRO DEL RANGO
En este caso 70cm

FIN

Proyecto Robot-Sumo

Universidad Nacional Mayor de San Marcos Robots Per

Diagrama de flujo de deteccin de objetos con filtro


INICIO

Calculamos el tiempo de espera


Distancia =70 cm

Cada 30ms
Mandar pulso de
10s por el pin
DISPARO

Esperamos hasta que el pin ECO se ponga en


1 para empezar la lectura

Hacemos un retardo de
segundos
En esta caso
V

F
Si en pin ECO = 0

contador=contador+1

No detect
contador=0
U=0
V

Detecto objeto
U=1
contador=0

FIN

Proyecto Robot-Sumo

Si contador=2

Universidad Nacional Mayor de San Marcos Robots Per


En este diagrama de flujo lo que se hace es asegurarnos de que encontr un objeto.
Esto lo hacemos con el fin de evitar el ruido y otras variables. Para que podamos
asegurar que hay un objeto en ese rango cada vez que supuestamente encuentre un
objeto tendr que validarlo con una segunda lectura.

Cdigo en CCS
Primero crearemos una funcin para mandar el pulso de 10 s al pin DISPARO.
void PULSO()
{
output_high(disparo);
delay_us(10);
output_low(disparo);
}

// Ponemos a 1 el pin DISPARO


// Hacemos un retardo de 10s
// Ponemos a 0 el pin DISPARO

Ahora crearemos la funcin de deteccin de objetos con filtro a una determinada


distancia
void distancia_filtro()
{
if(!input(eco))
{
contador++;
if(contador==2)
{
U=1;
contador=0;
}
}
else
{
contador=0;
U=0;
}
}

// Si el pin ECO esta en 0


// Aumentamos en uno la variable contador
// Si contador es igual a 2
// Aseguramos que encontr un objeto
// Inicializamos la variable contador

// Si el pin ECO esta en 1


// Inicializamos la variable contador
// Aseguramos que no encontr ningn objeto

Segn el diagrama de flujo el proceso de lectura se har cada 30ms. Para este
propsito usaremos el modulo TIMER0 del pic 18F4550.

Mdulo TIMER
El TIMER es un contador interno del pic el cual se puede configurar para que cada
cierto tiempo realice una accin. Para esta aplicacin haremos que cada 30ms haga la
lectura de los sensores ultrasonidos para detectar objetos.
Primero crearemos la funcin initTIMER0 para configurar e inicializar el modulo Timer0
void initTIMER0()
{
SETUP_TIMER_0(T0_INTERNAL| T0_DIV_256);
set_timer0(64950);
enable_interrupts(INT_timer0);
enable_interrupts(GLOBAL);
}

Proyecto Robot-Sumo

// Habilitamos interrupciones
// Habilitamos el interruptor global

Universidad Nacional Mayor de San Marcos Robots Per


Adems en el .h tenemos que establecer que usaremos 16 bits.
#define RTCC_16_BIT

0x00

Explicacin

SETUP_TIMER_0(T0_INTERNAL | T0_DIV_256);

Prescalar: El periodo
es dividido entre ste
nmero para obtener
diferentes periodos:
i.e.

Escogemos que clock


queremos usar

T0_DIV_BY_4
T0_DIV_BY_16
T0_DIV_BY_256

set_timer0(valor);

Estable un valor de
cuenteo del timer0

Para establecer el tiempo de interrupcin del TIMER0 se usa la siguiente frmula.

Donde:

fosc=Frecuencia del oscilador, en este caso ser el oscilador de 20MHz

Proyecto Robot-Sumo

Universidad Nacional Mayor de San Marcos Robots Per

Ejemplo
Para establecer el periodo de 30ms del timer0

Despejando:

Entonces:

Por lo tanto seteamos el comando:


set_timer0(64950);

Finalmente crearemos la funcin interrupcin para realizar la lectura cada 30ms. Cabe
resaltar que la variable tiempo_espera ser asignada en una funcin posterior.
#int_timer0
void Interrupcion()
{
PULSO();
while(!input(eco));
delay_us(tiempo_espera);
distancia_filtro();
set_timer0(64950);
}

Proyecto Robot-Sumo

// Mandamos el pulso de 10s para iniciar una nueva lectura


// Esperamos que el pic eco est en 1
// Hacemos un retardo usando el tiempo de espera
// Llamamos a la funcin de lectura explicada anteriormente

Universidad Nacional Mayor de San Marcos Robots Per


Las funciones explicadas en esta seccin se pueden extrapolar para el uso de dos
sensores.
void PULSO()
{
output_high(disparo1);
output_high(disparo2);
delay_us(10);
output_low(disparo1);
output_low(disparo2);
}

void distancia_filtro()
{
if(!input(eco1))
{
contador1++;
if(contador1==2)
{
U_DER=1;
contador1=0;
}
}
else
{
contador1=0;
U_DER=0;
}
if(!input(eco2))
{
contador2++;
if(contador2==2)
{
U_IZQ=1;
contador2=0;
}
}
else
{
contador2=0;
U_IZQ=0;
}
}

GIRO INICIAL
Segn las reglas de la categora sumo en el Per hay 4 formas de colocar al sumo al
inicio de la pelea.
El giro inicial es muy importante porque define quien atacar primero, y eso es una
gran ventaja en esta categora. Entonces al comienzo hay que girar en el sentido que
veamos primero al oponente.
Por ejemplo si estamos esta posicin:

Giraremos a la derecha
Proyecto Robot-Sumo

Universidad Nacional Mayor de San Marcos Robots Per


POSICIONES DE INICIO
Frente a frente

De costado hacia la izquierda

De costado hacia la derecha

De espaldas

Debido a que son al menos 3 posiciones diferentes (cuando es de espaldas podemos


girar a la derecha o izquierda) hemos usado 2 pulsadores para establecer el giro
inicial.

Proyecto Robot-Sumo

Universidad Nacional Mayor de San Marcos Robots Per


Adems de tener dos pulsadores para el giro inicial tambin se necesita tener un botn
para empezar a combatir.

Crearemos una funcin donde se escoger el sentido del giro y si se empieza a


combatir.
void botones()
{
if(input(pulsador_derecha))
{
giro=1;
}

// Si presionamos el pulsador de la derecha (azul)


// Esta variable representa el giro a la derecha

if(input(pulsador_izquierda))
{
giro=2;
}

// Si presionamos el pulsador de la izquierda (amarillo)

if(input(boton_batalla))
{
batalla(70);

// Si presionamos el botn del centro (negro)

// Esta variable representa el giro a la izquierda

// Esta funcin la explicaremos ms adelante pero significa empezar a


// combatir

}
}

Si no presionamos ningn pulsador de giro el sumo empezar avanzando.

PERSECUCIN DE OBJETOS
La persecucin del objetivo es uno de los puntos ms resaltantes de este proyecto.
Para esto tendremos que usar los mdulos expuestos en las secciones anteriores.

Proyecto Robot-Sumo

Universidad Nacional Mayor de San Marcos Robots Per


Principio de persecucin

Si estamos sobre una superficie blanca


entonces la orden ser retroceder.

Si estamos sobre una superficie negra y


ambos sensores de ultrasonido
detectan un objeto entonces la orden
ser avanzar.

Si estamos sobre una superficie negra y


solo el sensor de
ultrasonido de la derecha detecta un
objeto entonces la orden ser:

girar derecha. El objetivo es que


ambos sensores
detecten al objetivo para poder sacarlo.

Si estamos sobre una superficie negra y


solo el sensor de ultrasonido de la
izquierda detecta un objeto entonces la
orden ser:

girar izquierda. El objetivo es que


ambos sensores detecten al objetivo para
poder sacarlo.

En el caso que ninguno de los dos sensores de ultrasonido detecte algn objeto
seguir haciendo la rutina anterior.

Ahora plantearemos la lgica para la persecucin del robot sumo tomando como base
el principio explicado.

Proyecto Robot-Sumo

Universidad Nacional Mayor de San Marcos Robots Per

Diagrama de Flujo de la funcin Perseguir


INICIO

SI LOS CNY70s LEEN


BLANCO

Definimos estado=0b00000000
U_IZQ = 1 si detecta objeto el ultrasonido izq
U_IZQ = 0 si no detecta objeto el ultrasonido izq
U_DER = 1 si detecta objeto el ultrasonido der
U_DER = 0 si no detecta objeto el ultrasonido der

RETROCEDER

Estado = 0b 0 0 0 0 0 0 U_IZQ U_DER

RETARDO DE 1,5 ms

estado

STOP

RETARDO DE 200 ms

V
estado=0b00000001

GIRAR A LA DERECHA

F
estado=0b00000010

GIRAR A LA DERECHA

V
estado=0b00000011

GIRAR A LA IZQUIERDA

AVANZAR

Proyecto Robot-Sumo

Universidad Nacional Mayor de San Marcos Robots Per

Cdigo en CCS
void PERSEGUIR()
{
unsigned int estado=0;

// Definimos la variable estado como entero sin signo

for(;;)
{

// Creamos un bucle infinito


infrarrojos(4);

// Llamamos a la funcin infrarrojos con umbral 4volt para la


// lectura de los CNY70

if(I_DER==0 && I_IZQ==0)


// Si los dos CNY70 leen blanco
{
motores(-80,-80);
// Retrocedemos con 80% de la velocidad
delay_ms(1500);
// Hacemos un retardo de 1500 ms
motores(0,0);
// Stop
delay_ms(200);
// Retardo de 200ms para romper la inercia
motores(80,-80);
// Girar a la derecha
}
else
{
estado = (U_IZQ<<1)+U_DER;
// Colocamos las variables U_IZQ y U_DER
// en la variable estado
switch(estado)
{
case 0b00000001 :

// Hacemos el selector con la variable estado

motores(85,-85);
break;
case 0b00000010 :
motores(-85,85);
break;
case 0b00000011 :

// Si solo el ultrasonido der. detecta


// Giramos a la derecha al 85% de vel

// Si solo el ultrasonido izq. detecta


// Giramos a la izquierda al 85% de vel

// Si los dos ultrasonido detectan


motores(100,100); // Giramos a la izquierda al 85% de vel
break;

default

break;
}
}
}
}

Proyecto Robot-Sumo

// Si ningn ultrasonido detecta


// No se hace una nueva accin se
// continua con la anterior

Universidad Nacional Mayor de San Marcos Robots Per


Ahora juntaremos todas las funciones explicadas para crear la funcin batalla.

FUNCIN BATALLA
Esta funcin lo que hace es inicializar al sumo para que comience a luchar. En esta
funcin se asignar el tiempo de espera para los ultrasonidos , adems de efectuar el
giro inicial y llamar a la funcin PERSEGUIR donde se entrar en un bucle infinito.
void batalla(unsigned long rango)

// Esta funcin necesita la entrada del parmetro distancia del rango


// de pelea

{
tiempo_espera=rango*58;
motores(0,0);
delay_ms(5000);
//++++ giro inicial++++
if(giro==0)
{
motores(100,100);
}
else
{
if(giro==1)
{
motores(85,-85);
}
else
{
motores(85,-85);
}

// Calculamos el tiempo de espera que se utiliza para detectar objetos


// Iniciamos sin movimiento
// Esperamos 5 segundos de acuerdo a las reglas

// Si no se presion ningn pulsador


// Avanzar con el 100% de velocidad

// Si se presion el pulsador de la derecha(azul)


// Giramos a la derecha con el 85% de la velocidad
// Si se presion el pulsador de la izquierda(amarillo)
// Giramos a la izquierda con el 85% de la velocidad

}
delay_ms(500);
set_timer0(64950);
enable_interrupts(INT_TIMER0);
enable_interrupts(GLOBAL);

PERSEGUIR();
}

Proyecto Robot-Sumo

// Hacemos un retardo de medio segundo


// Seteamos el contador Timer0
// Habilitamos interrupciones
// Habilitamos el interruptor global
// Ahora cada 30ms se har una interrupcin para la lectura de
// los sensores de ultrasonido
// Entramos en el bucle infinito de la funcin PERSEGUIR

Universidad Nacional Mayor de San Marcos Robots Per


Finalmente presentaremos el cdigo completo

sumo.c
#include <sumo.h>
//++++++++++++++++++++++++++++++++++++++++++++++++
// declaracion de variables globales
//++++++++++++++++++++++++++++++++++++++++++++++++
unsigned int a;
int tiempo_espera;
int giro;
int U_DER,U_IZQ,I_DER,I_IZQ;
unsigned int contador1=0,contador2=0;

#int_timer0
void Interrupcion()
{
PULSO();
while(!input(eco1));
delay_us(tiempo_espera);
distancia_filtro();
set_timer0(64950);
}

// Mandamos el pulso de 10s para iniciar una nueva lectura


// Esperamos que el pic eco est en 1
// Hacemos un retardo usando el tiempo de espera
// Llamamos a la funcin de lectura explicada anteriormente

//++++++++++++++++++++++++++++++++++++++++++++++++
//PROGRAMA PRINCIPAL
//++++++++++++++++++++++++++++++++++++++++++++++++
void main()
{
initSYSTEM();
for(;;)
{
botones();
}
}
//++++++++++++++++++++++++++++++++++++++++++++++++
//DEFINICION DE FUNCIONES
//++++++++++++++++++++++++++++++++++++++++++++++++
void initPWM()
{
setup_ccp1(CCP_PWM);
setup_ccp2(CCP_PWM);

// Definimos la primera salida de PWM para el motor 1


// Definimos la primera salida de PWM para el motor 2

//******** configuracin del periodo PR2 ***********


setup_timer_2(T2_DIV_BY_1 ,255, 1);
// Se define por defecto as: (Prescaler, PR2, 1)
// El tiempo de cada ciclo, PERIODO (seg) = (1/clock)*4*T2div*(period+1)
// En este programa clock=20000000 y el periodo=255, ***PR2=255***
// Para diferentes cycle el tiempo es:
// (1/20000000)*4*1*256 = 51.2 us or 19.5 KHz
// (1/20000000)*4*4*256 = 204.8 us or 4.9 KHz
// (1/20000000)*4*16*256 = 819.2 us or 1.22 KHz
// Usaremos el comando set_pwm1_duty(valor de 0 a 255) para cambiar la velocidad
set_pwm1_duty(0);
// inicializamos con velocidad 0 el motor 1
set_pwm2_duty(0);
// inicializamos con velocidad 0 el motor 2
}
void initADC()
{
SETUP_ADC(ADC_CLOCK_INTERNAL);
setup_adc_ports(AN0_TO_AN9_ANALOG);
}

Proyecto Robot-Sumo

// Configuramos el ADC
// Usaremos el clock interno
// Habilitamos los pines que usaremos como entradas
// analgicas, en este caso del AN0 al AN9

Universidad Nacional Mayor de San Marcos Robots Per


void initTIMER0()
{
SETUP_TIMER_0(T0_INTERNAL| T0_DIV_256);
set_timer0(64950);
enable_interrupts(INT_timer0);
enable_interrupts(GLOBAL);
}

// Habilitamos interrupciones
// Habilitamos el interruptor global

void initULTRASONIDOS()
{
U_DER=0;
U_IZQ=0;
}
void initSYSTEM()
{
initPWM();
initTIMER0();
initULTRASONIDOS();
initADC();
giro=0;
}
void motor1(int velocidad1)
{
unsigned int valor1,a;
valor1=velocidad1&0b10000000;
if(valor1==128)
{
output_low(IN1_MOTOR1);
output_high(IN2_MOTOR1);
velocidad1=-velocidad1;
}
else
{
output_low(IN2_MOTOR1);
output_high(IN1_MOTOR1);
}
a=2.55*velocidad1;
set_pwm1_duty(a);
}
void motor2(int velocidad2)
{
unsigned int valor2,a;
valor2=velocidad2&0b10000000;
if(valor2==128)
{
output_low(IN1_MOTOR2);
output_high(IN2_MOTOR2);
velocidad2=-velocidad2;
}
else
{
output_low(IN2_MOTOR2);
output_high(IN1_MOTOR2);
}
a=2.55*velocidad2;
set_pwm2_duty(a);
}
void MOTORES(int velocidad1, int velocidad2)
{
motor1(velocidad1);
motor2(velocidad2);
}

Proyecto Robot-Sumo

// definimos la funcin que tendr la entrada de dos parmetros


// asignamos la variable velocidad1 al primer motor
// asignamos la variable velocidad2 al segundo motor

Universidad Nacional Mayor de San Marcos Robots Per


void infrarrojos(float umbral)
{
float cny70_der,cny70_izq;
long lectura;
SET_ADC_CHANNEL(0);
lectura=READ_ADC();
cny70_der =(VREF/1024.0)*(float)(lectura);

// seleccionamos canal 0 PARA EL CNY70(der)

SET_ADC_CHANNEL(1);
lectura=READ_ADC();
cny70_izq =(VREF/1024.0)*(float)(lectura);

// seleccionamos canal 1 PARA EL CNY70(izq)

if(cny70_der>=umbral)
{
I_DER=1;
}
else
{
I_DER=0;
}
if(cny70_izq>=umbral)
{
I_IZQ=1;
}
else
{
I_IZQ=0;
}
}
void PULSO()
{
output_high(disparo1);
output_high(disparo2);
delay_us(10);
output_low(disparo1);
output_low(disparo2);
}
void distancia_filtro()
{
if(!input(eco1))
{
contador1++;
if(contador1==2)
{
U_DER=1;
contador1=0;
}
}
else
{
contador1=0;
U_DER=0;
}
if(!input(eco2))
{
contador2++;
if(contador2==2)
{
U_IZQ=1;
contador2=0;
}
}
else
{
contador2=0;
U_IZQ=0;
}
}

Proyecto Robot-Sumo

Universidad Nacional Mayor de San Marcos Robots Per


void botones()
{
if(input(pulsador_derecha))
{
giro=1;
}

// Si presionamos el pulsador de la derecha (azul)


// Esta variable representa el giro a la derecha

if(input(pulsador_izquierda))
{
giro=2;
}

// Si presionamos el pulsador de la izquierda (amarillo)

if(input(boton_batalla))
{
batalla(70);

// Si presionamos el botn del centro (negro)

// Esta variable representa el giro a la izquierda

// Esta funcin la explicaremos ms adelante pero significa empezar


// a combatir

}
}

void PERSEGUIR()
{
unsigned int estado=0;

// Definimos la variable estado como entero sin signo

for(;;)
{

// Creamos un bucle infinito


infrarrojos(4);

// Llamamos a la funcin infrarrojos con umbral 4volt para la


// lectura de los CNY70

if(I_DER==0 && I_IZQ==0)


// Si los dos CNY70 leen blanco
{
motores(-80,-80);
// Retrocedemos con 80% de la velocidad
delay_ms(1500);
// Hacemos un retardo de 1500 ms
motores(0,0);
// Stop
delay_ms(200);
// Retardo de 200ms para romper la inercia
motores(80,-80);
// Girar a la derecha
}
else
{
estado = (U_IZQ<<1)+U_DER;
// Colocamos las variables U_IZQ y U_DER
// en la variable estado
switch(estado)
{
case 0b00000001 :

// Hacemos el selector con la variable estado

motores(85,-85);
break;
case 0b00000010 :
motores(-85,85);
break;

}
}
}

Proyecto Robot-Sumo

// Si solo el ultrasonido izq. detecta


// Giramos a la izquierda al 85% de vel

case 0b00000011 :

// Si los dos ultrasonido detectan


motores(100,100); // Giramos a la izquierda al 85% de vel
break;

default

break;
}

// Si solo el ultrasonido der. detecta


// Giramos a la derecha al 85% de vel

// Si ningn ultrasonido detecta


// No se hace una nueva accin y se
// continua con la anterior

Universidad Nacional Mayor de San Marcos Robots Per


void batalla(unsigned long rango)

// Esta funcin necesita la entrada del parmetro distancia del rango


// de pelea

{
tiempo_espera=rango*58;
motores(0,0);
delay_ms(5000);
//++++ giro inicial++++
if(giro==0)
{
motores(100,100);
}
else
{
if(giro==1)
{
motores(85,-85);
}
else
{
motores(85,-85);
}

// Calculamos el tiempo de espera que se utiliza para detectar objetos


// Iniciamos sin movimiento
// Esperamos 5 segundos de acuerdo a las reglas

// Si no se presion ningn pulsador


// Avanzar con el 100% de velocidad

// Si se presion el pulsador de la derecha(azul)


// Giramos a la derecha con el 85% de la velocidad
// Si se presion el pulsador de la izquierda(amarillo)
// Giramos a la izquierda con el 85% de la velocidad

}
delay_ms(500);
set_timer0(64950);
enable_interrupts(INT_TIMER0);
enable_interrupts(GLOBAL);

PERSEGUIR();
}

Proyecto Robot-Sumo

// Hacemos un retardo de medio segundo


// Seteamos el contador Timer0
// Habilitamos interrupciones
// Habilitamos el interruptor global
// Ahora cada 30ms se har una interrupcin para la lectura de
// los sensores de ultrasonido
// Entramos en el bucle infinito de la funcin PERSEGUIR

Universidad Nacional Mayor de San Marcos Robots Per

sumo.h
#include <18F4550.h>
#define VREF 5
#device adc=10
#FUSES NOWDT, WDT128, HS, NOPROTECT, BROWNOUT, BORV20, NOPUT, NOCPD, NOSTVREN
#FUSES NODEBUG, NOLVP, NOWRT, NOWRTD, NOIESO, NOFCMEN, NOPBADEN, NOWRTC
#FUSES NOWRTB, NOEBTR, NOEBTRB, NOCPB, MCLR, LPT1OSC, NOXINST, PLL1
#FUSES CPUDIV1, NOUSBDIV, VREGEN, NOICPRT
#use delay(clock=20000000)
#define RTCC_16_BIT

0x00

//Declaracion de pines
#define disparo1 PIN_B5
#define eco1 PIN_B4
#define disparo2 PIN_B7
#define eco2 PIN_B6
#define boton_batalla PIN_A4
#define pulsador_derecha PIN_A5
#define pulsador_izquierda PIN_E0
#define IN1_MOTOR1 PIN_D3
#define IN2_MOTOR1 PIN_D2
#define IN1_MOTOR2 PIN_D1
#define IN2_MOTOR2 PIN_D0

//Declaracion de funciones
void initPWM(void);
void initTIMER0(void);
void initULTRASONIDOS(void);
void initADC(void);
void initSYSTEM(void);
void motor1(int PWM1);
void motor2(int PWM2);
void MOTORES(int PWM1, int PWM2);
void PULSO(void);
void distancia_filtro(void);
void infrarrojos(float umbral);
void botones(void);
void PERSEGUIR(void);
void batalla(unsigned long rango);

Proyecto Robot-Sumo

Universidad Nacional Mayor de San Marcos Robots Per


4.3.

Logstica
4.3.1.

Personal
Luis A. Arellano Zea, naci en la ciudad de Lima, Per, en 1991.
Estudiante del quinto ciclo de la carrera de Ingeniera Electrnica de
la Universidad Nacional Mayor de San Marcos . Desde el ao 2009
hasta fecha viene desarrollando proyectos de investigacin en el
rea de Robtica y Telemetra. Ha obtenido el primer puesto en
diferentes concursos de Robotica a nivel nacional. Actualmente es
presidente del grupo de investigacin en Robtica y Automatizacin
de la UNMSM. (luis.arellano09@gmail.com).

Sandra Mariana Paredes Rojas. Naci en Lima, Per el 26 de


Noviembre de 1990. Estudiante del Quinto ciclo de la carrera de
Ingeniera Electrnica de la Universidad Nacional Mayor de San
Marcos. Ha desarrollado proyectos de investigacin en el rea de
Robtica en el ao 2009 hasta el presente, con lo cual ha obtenido el
primer puesto en diversos concursos nacionales. Habla Ingls fluido
y Francs bsico. (mariana.sandra@gmail.com).

Stephanie E. Tuesta Vizcarra, nacida en enero de 1991 en Lima,


Per. Ingreso a la Universidad Nacional Mayor de San Marcos en el
2009 y actualmente cursa su quinto ciclo en la carrera de Ingeniera
Electrnica. Participante de mltiples concursos de robtica donde
obtuvo los primeros puestos. Miembro del grupo de robtica y
automatizacin de la UNMSM. (stf.tuesta@gmail.com).

Jorge Abraham Salgado Hervias, naci en mayo del 1985, Lima Per.
Se diplomo de Ingeniero de electrnica e informtica industrial, con
un ao de especializacin en Sistemas embebidos, en el cole
Nationale Suprieure des Sciences Appliques et de Technologie.
ENSSAT 2011-FRANCIA, egresado de la Universidad Nacional Mayor
de San Marcos, 2008-Peru. Particip en la Copa de robtica en
Francia, 2010. Organiz y expuso sobre robtica en el Per en la
copa robtica de Tregor, Bretagne. Realiz dos videoconferencias de
robtica entre Per y Francia. Organiz el primer concurso nacional de robtica en la
UNMSM.Ganador de diversos concursos de robtica a nivel Nacional y un
sudamericano en la categora Sumo. Actualmente es administrador de RobotsPeru
y asesor principal del grupo de investigacin de robtica y Automatizacin.
(j.salgado@robotsperu.org).

4.3.2.

Formacin

Facultad de Ingeniera Electrnica de la Universidad Nacional Mayor de


San Marcos.

Proyecto Robot-Sumo

Universidad Nacional Mayor de San Marcos Robots Per


4.3.2.

Participacin

INTERCON 2010
El "XVII Congreso Internacional de Ingeniera Elctrica, Electrnica y
Sistemas - INTERCON 2010" se llev a cabo en la ciudad de Puno del 9 al
13 de Agosto del 2010.
Este fue el primer evento en el que participamos con el modulo robot sumo
Thor. Todos los miembros del grupo viajamos en diferentes fechas, por
avin, unos das antes del inicio de las conferencias, pero nos
hospedamos en el mismo hotel. Contamos con el apoyo de la facultad para
el hospedaje, alimentacin y transporte.
La primera dificultad que afrontamos fue al momento de la inscripcin, ya
que no estbamos enterados de que para participar en el concurso de
robtica a realizarse los das 11 y 12, debamos tener a por lo menos la
mitad de los miembros del grupo inscritos en el congreso. Despus de
realizar los pagos apropiados para la inscripcin al congreso se nos
permiti la inscripcin al concurso de robtica.
No tenamos la programacin en un estado ptimo para cuando viajamos,
as que pasamos los das antes del concurso programando, probando y
corrigiendo los errores. Pero el da antes de nuestra participacin los
sensores infrarrojos dejaron de funcionar y nuestros ultrasonidos
empezaron a fallar. Los problemas tenan origen en las conexiones de los
cables, que no podamos reparar en ese momento as que corregimos lo
que pudimos de los ultrasonidos con programacin y no usamos
infrarrojos.
Fueron 9 los sumos participantes, enfrentndose
eliminatorios. Ocupamos el 3er puesto.

en

encuentros

III KANTUROBOT 2010


Se llevo a cabo el 24 de setiembre del 2010 en la Universidad Nacional de
Educacin "Enrique guzmn y Valle" - La Cantuta.
Nuestra facultad nos proporciono con el transporte de ida y de vuelta a
todos los grupos participantes.
La categora sumo conto con la participacin de 2 concursantes
ecuatorianos. Se realizaron una serie de peleas eliminatorias hasta que
solo quedaron 3. Despus de eso se llevo a cabo una ronda de todos
contra todos en la que todos empatamos as que se hizo de nuevo.
Ocupamos el 1er puesto.

Proyecto Robot-Sumo

Universidad Nacional Mayor de San Marcos Robots Per


FOINTEC 2010
El VII Foro Internacional de Innovacin Tecnolgica - FOINTEC 2010" se
llevo a cabo en la Universidad Nacional San Luis Gonzaga-Ica del 15 al 17
de octubre.
Usando parte del premio ganado en el KANTUROBOT 2010 uno de
nosotros viajo a la ciudad de Ica la misma maana del concurso y regreso
ese mismo da en la noche. Obtuvimos el 1er puesto.

VILLATRONICA 2010
El III Concurso Nacional de Robots Villatrnica 2010 se llevo a cabo el
11 de Noviembre en la Universidad Nacional Federico Villareal.
Contamos con el apoyo de la facultad en lo correspondiente al transporte
de ida. Obtuvimos el 1er puesto.

COINTEC 2010
El concurso de robtica a realizarse el 12 de noviembre en el marco del II
Congreso Internacional de Tecnologa COINTEC 2010 se llevo a cabo
en la Universidad Privada Antenor Orrego en la ciudad de Trujillo.
Usando parte de los fondos que tenamos acumulados uno de nosotros
viajo a Trujillo. El principal problema para este viaje fue la fecha en la que
se realizo ya que fue solo un da despus del VILLATRONICA 2010 y eso
no nos daba mucho tiempo.
Partiendo el da anterior en la noche, solo horas despus de la
participacin en la Villareal se lleg el da del concurso en la maana y se
volvi a partir ese mismo da en la noche de regreso a Lima.
Obtuvimos el 1er puesto.

CER 2010
EL Concurso Ecuatoriano de Robtica 2010 realizado en la ciudad de
Guayaquil, Ecuador. Para este concurso se form parte de la delegacin
ROBOTS PER que represent al Per esta competicin.
Lamentablemente no se pudo ganar este concurso debido a que las
dimensiones estipuladas en las bases eran de 30x30 cm y nuestro robot
era de 20x20 cm. Pero se aprendi mucho y se obtuvo bastante
experiencia.

Proyecto Robot-Sumo

Universidad Nacional Mayor de San Marcos Robots Per


5.

Costo

Presupuesto invertido durante la realizacin del robot sumo

COMPONENTES
CANTIDAD

PRECIO POR
UNIDAD

PRECIO TOTAL

PIC 18F4550

S/ 50.00

S/ 50.00

L6203 DRIVER

S/ 44.20

S/ 88.40

L5973D
REGULADOR
CMS

S/ 11.24

S/ 22.48

SENSOR SRF05

S/ 100.00

S/ 200.00

SENSOR CNY70

S/ 15.00

S/ 30.00

RESISTENCIA
de 4.7K

50

S/ 0.15

S/ 7.50

RESISTENCIA
de 2.5 K

50

S/ 0.10

S/ 5.00

RESISTENCIA
de 7.5 K

50

S/ 0.08

S/ 4.00

RESISTENCIA
de 5.1 K

50

S/ 0.16

S/ 8.00

RESISTENCIA
de 10 K

50

S/ 0.15

S/ 7.50

RESISTENCIA
de 220

50

S/ 0.15

S/ 7.50

RESISTENCIA
de 10

50

S/ 0.12

S/ 6.00

Proyecto Robot-Sumo

Universidad Nacional Mayor de San Marcos Robots Per

RESISTENCIA
de 30

50

S/ 0.16

S/ 8.00

CONDENSADOR
de 330uF

10

S/ 1.12

S/ 11.20

CONDENSADOR
de 10uF

10

S/ 0.42

S/ 4.20

CONDENSADOR
de 22nF

10

S/ 0.14

S/ 1.40

CONDENSADOR
de 220pF

10

S/ 1.68

S/ 16.80

CONDENSADOR
de 0.1uF

10

S/ 0.14

S/ 1.40

CONDENSADOR
de 15nF

10

S/ 0.55

S/ 5.50

CONDENSADOR
de 15pF

10

S/ 0.46

S/ 4.60

CONDENSADOR
de 220nF

10

S/ 0.23

S/ 2.30

DIODO
RECTIFICADOR

S/ 0.32

S/ 2.56

DIODO LED
ROJO

10

S/ 0.46

S/ 4.60

DIODO LED
VERDE

10

S/ 0.66

S/ 6.60

DIODO LED
AMARILLO

10

S/ 0.36

S/ 3.60

BOBINA de
15uH

S/ 4.04

S/ 8.08

CRISTAL
OSCILADOR de
20M

S/ 1.00

S/ 1.00

Proyecto Robot-Sumo

Universidad Nacional Mayor de San Marcos Robots Per

MOLEX MACHO
DE 2

10

S/ 0.73

S/ 7.30

MOLEX MACHO
DE 4

10

S/ 0.70

S/ 7.00

MOLEX MACHO
DE 5

10

S/ 0.96

S/ 9.60

MOLEX
HEMBRA DE 2

10

S/ 0.62

S/ 6.20

MOLEX
HEMBRA DE 4

10

S/ 0.71

S/ 7.10

MOLEX
HEMBRA DE 5

10

S/ 0.96

S/ 9.60

BASE MOLEX
HEMBRA DE 5

S/ 8.40

S/ 8.40

BASE MOLEX
MACHO DE 5

S/ 3

S/ 3.00

ALAMBRE
PARA MOLEX

100

S/ 1.00

S/ 100.00

CONECTORES
DE 2 PARA
CNY70

20

S/ 0.20

S/ 4.00

CABLE
USB/SERIAL

S/ 45.00

S/ 45.00

PLACA
IMPRESA

S/ 15.00

S/ 30.00

INVERSION
TOTAL EN LOS
COMPONENTES

S/ 755.18

Proyecto Robot-Sumo

Universidad Nacional Mayor de San Marcos Robots Per

MATERIALES
CANTIDAD

PRECIO POR
UNIDAD

PRECIO
TOTAL

MOTOR DC

S/ 90.00

S/ 180.00

LLANTAS DE
CAUCHO

S/ 5.00

S/ 10.00

BALL CASTER

S/ 35.00

S/ 70.00

BATERA 12V
1.3AH

S/ 18.00

S/ 72.00

BOTON DE
PANICO

S/ 15.00

S/ 30.00

BOTONES

S/ 1.00

S/ 4.00

PULSADORES

S/ 1.00

S/ 8.00

CABLE
BIPOLAR

8m

S/ 0.70

S/ 5.60

ESTAO

1 rollo

S/ 40.00

S/ 40.00

ARCO DE
SIERRA
MACHO

S/ 18.00

S/ 18.00

CUCHILLA

S/ 8.00

S/ 8.00

ACRILICO

1m

S/ 8.00

S/ 8.00

ALUMINIO
TIPO L

4m

S/ 6.00

S/ 24.00

BISAGRA

S/ 1.00

S/ 5.00

Proyecto Robot-Sumo

Universidad Nacional Mayor de San Marcos Robots Per

6.

RAMPA DE
FIERRO

S/ 5.00

S/ 5.00

JUEGO DE
TORNILLOS Y
TUERCAS

S/ 5.00

S/ 5.00

CINTA
AISLANTE

S/ 1.00

S/ 4.00

SILICONA

10 barras

S/ 0.50

S/ 5.00

INVERSION
TOTAL EN
MATERIALES

S/ 501.6

INVERSIN
TOTAL EN LOS
COMPONENTES

INVERSIN
TOTAL EN
MATERIALES

INVERSIN TOTAL

S/ 755.18

S/ 501.6

S/ 1256.78

Agradecimientos

Al Mg. Bruno Vargas Tamani por la ayuda brindada incondicionalmente durante


el proceso de elaboracin del proyecto.

Al foro ROBOTS PERU http://www.robotsperu.org .

A Flor de Mara Gaviria Barneto por el apoyo recibido dentro del Instituto de
Investigacin.

A la Ing. Lita Soto Nieto por facilitarnos el uso de los laboratorios.

A Hugo Eduardo Manuel Flores por hacer la primera estructura del proyecto.

A Guillermo David Evangelista Adrianzn por la ayuda brindada


elaboracin del interfaz.

A Romain Fontaine por el apoyo en la elaboracin de la carta electrnica y el


uso de su interfaz.

A la comunidad de Robtica Peruana.

Proyecto Robot-Sumo

en la

También podría gustarte