# Construye tu Robot Minisumo



## elprofetellez

Para todos aquellos aficionados a las luchas de *Robots Sumo*, aquí dejo uno de tantos esquemas que se pudieran utilizar para hacer un montaje se un* robot clase mini sumo *del tipo básico; recordemos que sus dimensiones no deben exceder de 10 centímetros por lado y un peso total de 500 gramos.

El presente mini sumo básico, consta de dos motorreductores de 1.4 kg, ruedas de 6 cms de diámetro, y tiene una altura de 86 milímetros.

Para el momento de las fotos y pruebas aún no se le han colocado lastres para hacerlos llegar a su máximo peso (estarán en "engorda", ya que les faltan 230 gramos aún).

La electrónica esta formada por dos simples LM358 en modo comparador para los sensores CNY70 montados al frente y debajo del robot con la finalidad de no salir del tatami, así como del sensor Sharp GPD que detecta la presencia del oponente.

Estos datos son comunicados a un PIC 16F628A y este controla un integrado L293D que se encarga de los motores.

Como pueden ver es muy básico y sencillo de construír, sin embargo puede bien ser utilizado en competencias si le dan su toque personal con algunos micromotores de alto par y alta velocidad, como los pololu, pueden tambien adicionar otro sensor Sharp, o más CNY.

En fin, siéntanse libres de utilizar el esquema y adicionarle, quietarle o adapatarle lo que mejor parezca cubrir sus necesidades.

Anexo tambien el archivo .hex por si algún entusiasta decide montarlo rápidamente y quiere verlo funcionar; aclaro que el programa anexo es básico, solo para no salir del tatami y detectar al oponente, ya cada quien adoptará su propia estrategia.

Es tan pequeño el circuito que muy bien puede montarse en un protoboard chico y tenerlo funcionando en un par de horas.

para la carcasa de ocupó plastico de 3mm y lámina galvanizada calibre 32.

Dejo el video con las primeras pruebas:






Espero que les agrade y séa de ayuda para alguien, 

saludos cordiales.


----------



## 0002

Bueno el aporte , en la universidad donde trabajo unos alumnos andan con ideas de hacerse uno de estos , está en proceso la idea, ya que por estos lares no es muy común ver este tipo de engendros , estamos cerca a ver si algún logramos hacer unas "luchitas" .

Saludos.


----------



## el-rey-julien

elprofetellez dijo:
			
		

> Anexo tambien el archivo .hex por si algún entusiasta decide montarlo rápidamente y quiere verlo funcionar; aclaro que el programa anexo es básico, solo para no salir del tatami y detectar al oponente, ya cada quien adoptará su propia estrategia.


no encontré el .hex ,si pudieras subirlo comprimido en zip,por favor.
esta bueno el mini-sumo ¡¡¡


----------



## elprofetellez

Es cierto, les pido me disculpen, es que entre tanto archivo que subí no me di cuenta que el .hex no lo admite directo, sino comprimido.

Pero ahora sí, aqui se los dejo y en verdad espero que se diviertan con los sumo, sobre todo los que tienen la suerte de vivir en la misma ciudad.

Ojalá y pudieran subir fotos de sus sumo.

Saludos!


----------



## ivan2013

discúlpame la duda amigo los censores infrarrojos que tiene el robot como los estas ubicando según el diagrama veo dos y dime que códigos son ya que no parece ser los cny 70 alguno de los censor se dirige al piso para cuando se sale uno del cuadrilátero ---- discúlpame mi duda te prometo armarlo mínimo  unas 5 el primero para armarlo seré yo  el profesor --- te estaré yo muy agradecido --- y porsupuesto te subo en los creditos sobro todo te aseguro un espacion en nuestro grupo de faceboock llamado = ROBOTECH7


----------



## elprofetellez

Hola ivan. Si son sensores CNY70, los dos van al frente del robot, detras de la "pala", uno a la izquierda y otro a la derecha, ambos mirando al piso a unos 5 mm de alto.

El sensor marcado como Sharp GPY es el que va mirando al frente para detectar al rival.

Saludos!


----------



## ivan2013

gracias esta semana te traere resultados ire a comprar  los componentes espero encontral los GPY antes solo los e visto en la cabeza de los Lego Mindstorms de unos 400 dolares americanos


----------



## elprofetellez

Iván, los GPY son sensores infrarrojos, y no son caros, quizas 20 a 30 Dlls.; los que comentas son sensores ultrasónicos, que es el que utiliza por ejemplo el NXT Mindstorms en su cabeza.
Saludos!


----------



## ivan2013

Aquí adjunto una imágenes mi amigo, lo arme en el protoboard y he demorado mucho pues no conseguía el sensor GPY SHARP

Funcionan los sensores , le adicione unos leds para ver que estén sensando

 ¿ Tendras la tarjeta de circuito impreso  ?

Desde ya te agradezco


----------



## xmagdielx

exelente el robot, apenas tenga algo de tiempo libre, me consigo los materiales y me armo unos, muchas gracias por el aporte amigo..
Saludos a todos!


----------



## Dario

La verdad, no lo habia visto este post. Excelente aporte profe


----------



## cyber

disculpa!! yo lo eh construido en el proto!! solo que cuando le doy voltaje, el led se queda encendido y nada funciona!! solo hasta despues de varios intentos de encender y apagar todo, es como comienza a funcionar!! a que se debera esto??


----------



## RalphET

cyber dijo:


> disculpa!! yo lo eh construido en el proto!! solo que cuando le doy voltaje, el led se queda encendido y nada funciona!! solo hasta despues de varios intentos de encender y apagar todo, es como comienza a funcionar!! a que se debera esto??



Intenta quitando el LED, creo que tambien tuve esos problemas pero no recuerdo bien como lo solucioné, yo ya lo arme hasta en placa. Si tienes una duda pregúntale y te ayudaré en lo que pueda. Dime mas detalles de lo que haces o no . (giran moteres, sirven los sensores... Etc.)


----------



## cyber

RalphET dijo:


> Intenta quitando el LED, creo que tambien tuve esos problemas pero no recuerdo bien como lo solucioné, yo ya lo arme hasta en placa. Si tienes una duda pregúntale y te ayudaré en lo que pueda. Dime mas detalles de lo que haces o no . (giran moteres, sirven los sensores... Etc.)



despues de encender y apagar varias veces el circuito, los motores comienzan a girar, paso por los sensores cny un fondo blanco y los motores invierten su polaridad, con un fondo negro un motor gira mas rapido que otro, todo funciona como debe funcionar, solo es el problema que menciono del que el led se queda encendido, y nada funciona...


----------



## RalphET

cyber dijo:


> despues de encender y apagar varias veces el circuito, los motores comienzan a girar, paso por los sensores cny un fondo blanco y los motores invierten su polaridad, con un fondo negro un motor gira mas rapido que otro, todo funciona como debe funcionar, solo es el problema que menciono del que el led se queda encendido, y nada funciona...



Intenta lo que te dije, quita el led que sale del PIC, yo lo puse directo a la alimentación de 5v. Espero se arregle con eso que te digo.


----------



## agustin84

Buenas, primero que nada quiero agradecerte por compartir este circuito con nosotros, parece ser sencillo...
Estoy armando un robot sumo el cual tiene que pesar como máximo 1.5kg y tiene que medir máximo 20x20x20cm, a este le voy a poner 2 motorreductores, los cuales se alimentan con 12v y unos 2ahm... Aquí esta mi problema, que el integrado L293D proporciona unos 600mAhm de salida...
Estaba pensando en implementar una etapa de potencia para estos motores, si me puedes echar una mano pasándome algún circuito para la etapa de potencia estaría realmente agradecido...

Desde ya muchas gracias..


----------



## SKYFALL

puedes reforzar la salida de los L293D con transistores, eso te permite llegar al nivel de corriente que buscas, incluso algo mas dependiendo del transistor, o podrías obviar por completo el uso del L293D y reemplazarlo directamente por transistores que te sirvan para hacer un puente H, para ese nivel de corriente puedes usar TIP41 y TIP42 respectivamente.


----------



## agustin84

Ya lo pude solucionar, reemplazare el L293D por un puente H con TIP´s.
Ahora, también quisiera poner 3 sensores Sharp, uno al frente, otro a la derecha y otro a la izquierda... Lo que no se es si se podrá usando el mismo PIC, ya que tendría que tener unas 5 entradas analógicas. Estuve leyendo el datasheet y dice que tiene 16 entradas I/O creo, lo que no entiendo bien es donde conectar los sensores, al igual que la programación, que va a ser algo complicado para alguien como yo que no sabe jeje..


----------



## riokan

Hola, yo quiero hacer un sumo de 1kg, solo que tengo problemas con los sensores de ultrasonidos que detectan a los oponentes.

Encontré un código, lo modifique pero no se donde puedo estar mal, alguien me puede ayudar ?




> __CONFIG _CP_OFF & _WDT_OFF & _PWRTE_ON & _XT_OSC
> 
> INCLUDE <P16F877A.INC>
> 
> CBLOCK .50
> Distancia                ; Se expresará en centímetros.
> ENDC
> 
> #DEFINE Disparo    PORTB,2            ; Disparo para iniciar la medida.
> #DEFINE Eco        PORTB,3        ; Pulso cuya anchura hay que medir.
> 
> MinimaDistancia    EQU    .3
> MaximaDistancia    EQU    .25
> TMR0_Carga60micros    EQU    -d'27'
> 
> ; ZONA DE CóDIGOS ********************************************************************
> 
> ORG     .0
> goto    Inicio
> 
> ORG        .4
> goto    ServicioInterrupcion
> 
> 
> Inicio
> 
> bsf    STATUS,RP0
> bcf    Disparo
> bsf    Eco
> movlw    b'00000000'            ; Prescaler de 2 para el TMR0.
> movwf    OPTION_REG
> 
> CLRF TRISD                ;D COMO SALIDA
> CLRF TRISC
> 
> bcf    STATUS,RP0
> bcf    Disparo                    ; Inicializa línea de disparo en bajo.
> 
> Principal
> clrf    Distancia            ; Inicializa el registro.
> bsf        Disparo                ; Comienza el pulso de disparo.
> call    Retardo_20micros    ; Duración del pulso.
> bcf        Disparo                ; Final del pulso de disparo.
> 
> Espera_Eco_1
> 
> btfss    Eco                    ; Si ECO=0, espera el flanco de subida de la se?al
> goto    Espera_Eco_1        ; de salida del sensor.
> movlw    TMR0_Carga60micros    ; Ya se ha producido el flanco de subida.
> movwf    TMR0                ; Carga el Timer 0.
> movlw    b'10100000'            ; Autoriza interrupción del TMR0 (T0IE).
> movwf    INTCON
> 
> Espera_Eco_0
> 
> btfsc    Eco                    ; Espera flanco de bajada de la se?al de la salida
> goto    Espera_Eco_0        ; del SRF04.
> clrf    INTCON                ; Se ha producido el flanco de bajada. Prohíbe interrup.
> call    Visualiza            ; Visualiza la distancia.
> call    Retardo_2s            ; Espera un tiempo hasta la próxima medida.
> goto    Principal
> 
> ; Subrutina "Interrupcion" ------------------------------------------------------
> 
> ServicioInterrupcion
> movlw    TMR0_Carga60micros    ; Carga el Timer 0.
> movwf    TMR0
> movlw    .1                    ; Se utiliza instrucción "addwf", en lugar de "incf"
> addwf    Distancia,F            ; para posicionar flag de Carry.
> movlw    MaximaDistancia        ; En caso de desbordamiento carga su máximo valor.
> btfsc    STATUS,C
> movwf    Distancia
> bcf        INTCON,T0IF
> retfie
> 
> ; Subrutina
> Visualiza
> 
> movlw    MinimaDistancia        ; Va a comprobar si es menor del mínimo admisible.
> subwf    Distancia,W            ; (W)=(Distancia)-MinimaDistancia
> btfss    STATUS,C            ; ?C=1?, ?(W) positivo?, ?(Distancia)>=MinimaDistancia?
> goto    DistanciaMenor        ; No ha resultado menor, y salta al mensaje de error.
> movf    Distancia,W            ; Va a comprobar si es mayor del máximo admisible.
> sublw    MaximaDistancia        ; (W)=MaximaDistancia-(Distancia)
> btfsc    STATUS,C            ; ?C=0?, ?(W) negativo?, ?MaximaDistancia<(Distancia)?
> goto    DistanciaFiable        ; No, la medida de la distancia entra dentro del rango.
> 
> 
> DistanciaMayor
> movlw    MaximaDistancia        ; La distancia es mayor que el máximo.
> movwf    Distancia
> goto    VisualizaDistancia
> 
> DistanciaMenor
> movlw    MinimaDistancia        ; La distancia es menor del mínimo fiable.
> movwf    Distancia
> goto    VisualizaDistancia
> 
> 
> DistanciaFiable
> BCF        PORTC,4
> return
> 
> 
> VisualizaDistancia
> BSF        PORTC,4
> return
> 
> INCLUDE <RETARDOS.INC>
> END


----------



## diengel

sirve sin el sensor de presencia? que solo no se salga del tatami


----------



## xmagdielx

Buenas, claro que sirve sin el sensor de presencia, solo es cuestión de programación. Si tienes mas dudas solo comenta. 
Saludos!


----------



## looxy

se puede programar en el pic18f4550?


----------



## xmagdielx

Saludos, si puedes cargar el programa en el pic18f4550, pero si tienes a la mano un micro controlador mas económico el diseño final te saldría mas barato. De todas formas es cuestión de gustos! sigue animandote.
Saludos


----------



## ivan2013

Cuando das descargar no sale con extensión .rar sino con .php alguien lo pudo solucionar ? 

Ya encontré la solución le das abrir directamente con el winwar desde archivo abrir o cambien la extencion .php por la de .rar


----------



## Martino Arias

Me podrian ayudar mandando el codigo en extension .c por favor?


----------



## ruben90

Esto me trae varios recuerdos, igualito al que hice por primera vez, llegue a ganar el segundo lugar en los concursos locales de la uni, y la programación no era mas que una tabla de verdad para los sensores...


----------



## Jael Anquiara

Hola buenos días
Mi duda es,si puedo cambiar el sensor infrarojo sharp por un ultrasonico,manteniendo la misma programación? y si se puede cambiar,hay que modificar la programación?


----------



## 1463464

Hola 
necesito los codigos de programacion por favor 
Gracias


----------



## valeposada

aqui esta 
yo use los ultrasonicos pero aun no lo uso


----------



## egofrn

Estimados
Alguien dispone del código de instrucciones en lenguaje C????


----------



## jahir lizcano

Tengo que hacer un minisumo en la universidad entonces quisiera saber que recomendaciones me darian como los materiales y el numero de llantas o la capacidad del motor.


----------



## John Miller

Hola buen día visita esta página: http://lnrc.es/estudiantes/minisumo.php

MK.


----------



## Lucio Varela

Buen día estoy realizando un robot sumo pero tengo unos problemas con los ultrasonicos, quisiera ver si me podrian ayudar a ver que esta mal. anexo el codigo en arduino.



		Código:
	

void setup()
{
  pinMode(3,OUTPUT);  //DER AVANZA 
  pinMode(9,OUTPUT);  //IZQ AVANZA
  pinMode(5,OUTPUT);  //DER RETROCEDE
  pinMode(6,OUTPUT);  //IZQ RETROCEDE
  pinMode(A1,INPUT);  //SENSOR FRONTAL ANALOGO
  pinMode(A2,INPUT);  //SENSOR TRASERO ANALOGO
  pinMode(7,INPUT);   //SENSOR FRONTAL DETECTOR
  pinMode(11,INPUT);  //SENSOR DERECHA DETECTOR
  pinMode(10,INPUT);   //SENSOR IZQUIERDA DETECTOR  
}

void avanzar()
{
  analogWrite(3,255);
  analogWrite(9,255);
  analogWrite(5,0);
  analogWrite(6,0);
}

void retrocede()
{
  analogWrite(5,200);
  analogWrite(6,230);
  analogWrite(9,0);
  analogWrite(3,0);  
}

void parar() 
{
  analogWrite(9,0);
  analogWrite(6,0);
  analogWrite(5,0);
  analogWrite(3,0);
}

void izquierda() 
{
  analogWrite(5,0);
  analogWrite(6,0);
  analogWrite(3,255);
  analogWrite(9,190);
}

void derecha()
{
  analogWrite(3,150);
  analogWrite(9,255);
  analogWrite(5,0);
  analogWrite(6,0);
}

void retrocedeizq()
{
  analogWrite(5,255);
  analogWrite(6,100);
  analogWrite(3,0);
  analogWrite(9,0);
}

void loop()
{
  int SF=0;
  int ST=0;
  SF=analogRead(1);
  ST=analogRead(2);
  
if ((SF)<=800 and(ST)<=800)
  {
    avanzar(); 
  }
if ((SF)>=800 and (ST)<=800)
{
  retrocede();
  delay(800);
  retrocedeizq();
  delay(800);
}
if ((SF)<=800 and(ST)<=800 and digitalRead(2)==0)
{
  avanzar();
  izquierda();  
}
}


----------

