Revenge Sumo

Revenge Sumo

+

Robot Sumo

El robot luchador de sumo, deberá mantenerse dentro de una superficie de competencia circular, llamada Dohyo, mientras lucha por empujar con su cuerpo a otro robot presente en esta misma área de combate hasta sacarlo de competencia.
Los robots de sumo deben ser totalmente autónomos, lo que significa que los robots participantes no pueden ser manipulados a control remoto o recibir ayuda de algún tipo una vez iniciada la competencia. El robot debe tomar sus propias decisiones.

Descripción

Revenge Sumo es el nombre dado a un Robot sumo capaz de detectar y expulsar a su oponente del cuadrilátero sin salirse del mismo, para realizar esta funcion de manera correcta y esperada utilizara dos motoreductores y un sensor ultrasonico de referencia HC-SR04, el sensor es capaz de captar al enemigo a distancia y los motoreductores capaces de darle traccion a las llantas.

Todos estos elementos se conectaran a un microcontrolador ATMega 16 previamente programado en lenguaje C++ para que realice todas las funciones anteriormente mencionadas las cuales son mostradas en la seccion de codigo de esta pagina.

Objetivo General

- Diseñar un Robot sumo haciendo uso de microcontroladores y lenguajes de programación vistos en clase.

Objetivos Especificos

- Diseñar la armazón del robot con el fin de que represente una ventaja ante sus oponentes a la hora del combate
- Lograr que el robot tenga una autonomía para realizar maniobras de búsqueda del oponente y posteriormente busque desplazarlo hacia afuera del cuadrilátero.
- Lograr que el robot se desplace dentro del cuadrilátero sin que se salga del mismo.

Requerimientos

- El robot Tendrá unas dimensiones de 20 x 20 cm.
- No pesará más de 3 kg.
- No contendrá más de 5 sensores.
- Deberá usar un microcontrolador ATMega 16.

Alcances

- El robot será capaz de detectar la proximidad de sus oponentes gracias a los sensores instalados en cada uno de los frentes del robot.
- Sera capaz de dar giros completos y desplazarse en el cuadrilátero para buscar a sus oponentes.
- Contará con 2 motoreductores de gran capacidad que le ayudarán en el desplazamiento de los oponentes hacia el cuadrilátero.

Materiales

- (1) Microcontrolador ATMEGA16.
- (2) Dos motoreductores.
- (4) Cuatro Baterias de 9v - 1800mAh.
- (2) Dos ruedas.
- (1) Un sensor ultrasonico HC-SR04.
- (1) Una Lámina de acrílico de 60x60cm.
- (4) Cuatro transistores.
- (1) Un regulador de voltaje.
- (1) Un puente H.
- (2) Dos laminas de aluminio 15x15cm.
- (1) Un sensor QRD1114.

Microcontrolador ATMEGA16:

El ATMGEGA16 es un microcontrolador AVR de 8 bit de alto rendimiento y bajo consumo. Los AVR son una familia de microcontroladores RISC del fabricante estadounidense Atmel. La arquitectura de los AVR fue concebida por dos estudiantes en el Norwegian Institute of Technology, y posteriormente refinada y desarrollada en Atmel Norway, la empresa subsidiaria de Atmel, fundada por los dos arquitectos del chip. Cuenta con bastantes aficionados debido a su diseño simple y la facilidad de programación. Se pueden dividir en los siguientes grupos :

- ATxmega: procesadores muy potentes con 16 a 384 kB de memoria flash programable, encapsulados de 44, 64 y 100 pines (A4, A3, A1), capacidad de DMA, eventos, criptografía y amplio conjunto de periféricos con DACs.

- ATmega: microcontroladores AVR grandes con 4 a 256 kB de memoria flash programable, encapsulados de 28 a 100 pines, conjunto de instrucciones extendido (multiplicación y direccionamiento de programas mayores) y amplio conjunto de periféricos.

- ATtiny: pequeños microcontroladores AVR con 0,5 a 8 kB de memoria flash programable, encapsulados de 6 a 20 pines y un limitado set de periféricos.

- AT90USB: ATmega integrado con controlador USB

- AT90CAN: ATmega con controlador de bus CAN
Tipos especiales: algunos modelos especiales, por ejemplo, para el control de los cargadores de baterías, pantallas LCD y los controles de los motores o la iluminación.

- AT90S: tipos obsoletos, los AVRs clásicos
Bajo el nombre AVR32, Atmel tiene una arquitectura RISC de 32 bits con soporte de DSP y SIMD. A pesar de la similitud de sus nombres y logotipos, las dos arquitecturas tienen poco en común.

~ Arquitectura RISC avanzada.

- 131 instrucciones. La mayoría de un simple ciclo de clock de ejecución.
- 32 x 8 registros de trabajo de propósito general.
- Capacidad de procesamiento de unos 16 MIPS a 16 MHz.
- Funcionamiento estático total.
- Multiplicador On-Chip de 2 ciclos

~ Memorias de programa y de datos no volátiles.

- 16K bytes de FLASH autoprogramable en sistema.
Resistencia: 1.000 ciclos de escritura / borrado.
- Sección de código añadida opcional con bits de bloqueo independientes.
Programación en sistema con el programa añadido On-Chip.
Operación de lectura durante la escritura.
- 512 bytes de EEPROM.
Resistencia: 100.000 ciclos de escritura / borrado.
- 1K bytes de SRAM interna.
- Bloqueo (cerradura) programable para la seguridad del software.

~ Interface JTAG.

- Mantenimiento de eliminación de errores On-Chip.
- Programación de FLASH, EEPROM, fusibles y bits de bloqueo a través de la interface JTAG.
- Capacidades de Boundary Scan de acuerdo con el Standard (norma) JTAG.

~ Características de los periféricos.

- Dos Timer/Contadores de 8 bits con prescaler separado y modo comparación.
- Un Timer/Contador de 16 bits con prescaler separado, modo comparación y modo de captura.
- Comparador analógico On-Chip.
- Timer watchdog programable con oscilador separado On-Chip.
- Interface serie SPI maestro/esclavo.
- USART serie programable.
- Contador en tiempo real con oscilador separado.
- ADC de 10 bit y 8 canales.
8 canales de terminación simple
7 canales diferenciales sólo en el encapsulado TQFP.
2 canales diferenciales con ganancia programable a 1x, 10x o 200x.
- 4 canales de PWM.
- Interface serie de dos hilos orientada a byte.

~ Características especiales del microcontrolador.

- Reset de Power-on y detección de Brown-out programable.
- Oscilador RC interno calibrado.
- Fuentes de interrupción externas e internas.
- 6 modos de descanso: Idle, reducción de ruido ADC, Power-save, Power-down, Standby y Standby extendido.

~ I/O y encapsulados

- 32 líneas de I/O programables.
- PDIP de 40 pines, TQFP y MLF de 44 pines.

~ Tensiones de funcionamiento.

- 2.7 - 5.5V (ATmega16L).
- 4.5 - 5.5V (ATmega16).

~ Niveles de velocidad.

- 0 - 8 MHz (ATmega16L).
- 0 - 16 MHz (ATmega16).

764big_1422622666.jpg

Motoreductores:

Los Reductores ó Motorreductores son apropiados para el accionamiento de toda clase de máquinas y aparatos de uso industrial, que necesitan reducir su velocidad en una forma segura y eficiente.

Las transmisiones de fuerza por correa, cadena o trenes de engranajes que aún se usan para la reducción de velocidad presentan ciertos inconvenientes.

Al emplear REDUCTORES O MOTORREDUCTORES se obtiene una serie de beneficios sobre estas otras formas de reducción. Algunos de estos beneficios son:

- Una regularidad perfecta tanto en la velocidad como en la potencia transmitida.
- Una mayor eficiencia en la transmisión de la potencia suministrada por el motor.
- Mayor seguridad en la transmisión, reduciendo los costos en el mantenimiento.
- Menor espacio requerido y mayor rigidez en el montaje.
- Menor tiempo requerido para su instalación.

Los motorreductores se suministran normalmente acoplando a la unidad reductora un motor eléctrico normalizado asincrónico tipo jaula de ardilla, totalmente cerrado y refrigerado por ventilador para conectar a redes trifásicas de 220/440 voltios y 60 Hz, Para proteger eléctricamente el motor es indispensable colocar en la instalación de todo Motorreductor un guarda motor que limite la intensidad y un relé térmico de sobrecarga. Los valores de las corrientes nominales están grabados en las placas de identificación del motor.

motorreductor-electrico-tornillo-sin-fin-angulo-recto-5242-2339039.jpg

Sensor ultrasonico HC-SR04:

El HC-SR04 es un sensor de distancias por ultrasonidos capaz de detectar objetos y calcular la distancia a la que se encuentra en un rango de 2 a 450 cm. El sensor funciona por ultrasonidos y contiene toda la electrónica encargada de hacer la medición. Su uso es tan sencillo como enviar el pulso de arranque y medir la anchura del pulso de retorno. De muy pequeño tamaño, el HC-SR04 se destaca por su bajo consumo, gran precisión y bajo precio por lo que esta reemplazando a los sensores polaroid en los robots mas recientes.

CARACTERISTICAS:

- Dimensiones del circuito: 43 x 20 x 17 mm
- Tensión de alimentación: 5 Vcc
- Frecuencia de trabajo: 40 KHz
- Rango máximo: 4.5 m
- Rango mínimo: 1.7 cm
- Duración mínima del pulso de disparo (nivel TTL): 10 μS.
- Duración del pulso eco de salida (nivel TTL): 100-25000 μS.
- Tiempo mínimo de espera entre una medida y el inicio de otra 20 mS.

PINES DE CONEXION

- VCC
- Trig (Disparo del ultrasonido)
- Echo (Recepción del ultrasonido)
- GND

Distancia = {(Tiempo entre Trig y el Echo) * (V.Sonido 340 m/s)}/2

sensor-ultrasonico-hc-sr04-637-MEC3620628448_012013-O.jpg

sensor QRD1114:

Sensor optico compuesto por un diodo infrarojo y un fototransistor para detectar el reflejo de luz infraroja y así poder detectar lineas negras sobre blanco en un rango desde 0.5 a 1 centímetro.

sensor-reflectivo-qrd1114.jpg

Limitaciones

- Debido a la clase de sensores a utilizar, el cuadrilátero debe encontrarse sobre una superficie elevada lo que implica que el robot dejara de atacar en el momento que no detecte la presencia del oponente.
- La ubicación de los sensores será fundamental ya que esta puede llegar a tener puntos muertos y hacer que el robot se salga del cuadrilátero.
- El peso del robot y la capacidad de los motorreductores podrán limitar la capacidad del robot para desplazar a su oponente.

Presupuesto

Para el siguiente proyecto se requiere el siguiente presupuesto:

s23zib.jpg

Desarrollo del proyecto

Como desarrollo de la primera parte del proyecto se realizó un diseño computarizado de las partes de robot

XXXXXXXXXXX ---Imagen Diseño AutoCAD ----XXXXXXXXX

Posteriormente se procedido con el armado de la estructura del robot, en la primera parte se el armado de las piezas en acrílico y en la segunda parte se le agrego la lámina frontal y se Ajustaron los motorreductores en las partes laterales del robot

2v7e1.jpg

En la segunda Semana se realizó l montaje del circuito en una protoboard

t9xtv6.jpg

Posteriormente se le agregaron los sensores

cbR_TMtiItE1gxcRpIgFYZxFludFxE_p3kPQ0_1SBxMDkW1r5ZWflZ3oDribmEicXKiHw8Fj4j_Y1NT9TYR2SguuggO3m7wh_Oq1JLf07vfTpLh-sk-SIT5i_Qvj8QTtXFr9ov97v8T6s94vDUU-za-VtSVjL4Co336GjTILa7LcCsuV2Ph0oPBVGE1HjMsWg0Cl7i4EvPe2kLm-bE3mtVPt24RnDMsOw3O6EFxjfU9OdDKkIwBGtoV2Exui6x3G1KvROQ37e5d9ToxIhd21ryqvKvIQef8GeuIYAgc5mH8wHYbxbXnj69Eym53OefgCH8ZdloaxINibGdh2TJ557LjbhcL0yEYKwvN6TDK54MKSogg8bc2Mp5UYQ-1O5I5LjJu01VV-oOkm-O9vLW1B5oL04xAJl-cu39y4ZNyuimZzSYXmEvfjxsnpzaECqY-pPMPuTS_IVyyi8UD5AK0QW3N8F1Laf1UjH3iQaQJQNZrz7U_1lYIRDbrkJpawQ9JEFMXbwDZeGnjG9yxCX8oPhpjtqNNyQHilCpcY6JjV4RyWr6zXCix9IiPEqeVPIJfOYud-5N4Z_Mypd-Yh1ESIDMocZi-Z0yTgPfl77LGIBUei5_wow8qqpGdDSlAL9KdfWUf2gQysWm-ZnRIXTSlh5q9GXbUFdnnBozEOjQ=w1342-h523-l75-ft

Logica de progamación:

En el siguiente codigo esta el funcionamiento correcto del sensor ultrasonico y su correcta implementacion en el micro y en los motorreductores, haciendo comparacion de señales de salida y señales de entrada recibidas por el sensor.

void Initialize_timer0 (void);
 
unsigned char working;
unsigned char rising_edge;
uint16_t timer_value;
int distance_cm;
uint8_t error;
 
ISR (TIMER0_OVF_vect)
{
    if(rising_edge==1) //Mirar si el echo esta 
    {
        timer_value++;
        /*mirar si el echo esta fuera del rango*/
        if(timer_value > 91)
        {
            working = 0;
            rising_edge = 0;
            error = 1;
        }
    }
}
 
ISR (INT1_vect)
{
    if(working==1) //mirar si el escho esta en 1 para initializar el timer
    {
        if(rising_edge==0)
        {
            rising_edge=1;
            TCNT0 = 0;
            timer_value = 0;
        }
        else //mirar si el echo esta en 0 para evaluarar la distancia
        {
            rising_edge = 0;
            distance_cm = (timer_value*256 + TCNT0)/58;
            working = 0;
        }
    }
}
 
int main(void)
{
 
    DDRA=0XFF;// puertos para el sensor ultrasonico
    DDRB=0x00;// puerto para los sensores qdr1114
 
        /*initializar la interupción */
    Initialize_external_interrupt();
    Initialize_timer0();
 
    DDRB |=  (1 << PINB1);
    DDRD &=~ (1 << PIND3);
    DDRD |= (1 << PIND4);
    sei();
    while(1)
    {
                char value[2];
        itoa(distance_cm,value,10);
 
    if (distance_cm<=7)
    {
    PORTA=0b0101;
    _delay_ms(10);
    PORTA=0;
    _delay_ms(10);    
    }
 
    if(distance_cm==10)
    {        
        PORTA=0b1111;
        _delay_ms(10);
        PORTA=0;
        _delay_ms(10);        
    }
 
    if(distance_cm>20)
    {        
        PORTA=0b0111;
        _delay_ms(10);        
    }
    if(error == 1)
        {
 
        }
        Send_signal(); //volver a empezar otra conversación    
    }
}
 
void Send_signal()
{
    if(working ==0) //para estar seguro que termina la conversación
    {
        PORTD |= (1 << PIND4); //mandar 10us secondos de pulsos
        _delay_us(10);
        PORTD &=~ (1 << PIND4);
        working = 1;    //
        error = 0;        //limpiar errores
    }
}
 
void Initialize_external_interrupt()
{
    MCUCR |= (1 << ISC10); //cualcuier logica cambialo en  INT1
    GICR |= (1 << INT1); //Enable INT1
}
 
void Initialize_timer0()
{
    TCCR0 |= (1 << CS00); //sin prescalar
    TCNT0 = 0;            //resetea el tiempo
    TIMSK |= (1 << TOIE0); //para el overflow
}

Diagrama de bloques

?ui=2&ik=12a5486865&view=fimg&th=150f2db8dab90449&attid=0.1&disp=inline&realattid=f_igtrnv4t0&safe=1&attbid=ANGjdJ9bmO_WkbxV640Tfg6nj71bgMCKdCphTQobWVUHNOn-6qvgQ7F-iRaiK2HSKxu0BdieE2w7qi9iJojdhkBOxxP-hFat5N9JNclZle4EHByMt_Tsq1Lk0fmzpW4&ats=1447183487736&rm=150f2db8dab90449&zw&sz=w1342-h523
Unless otherwise stated, the content of this page is licensed under Creative Commons Attribution-ShareAlike 3.0 License