COCHE SUMO

Con un mismo montaje el vehículo puede realizar dos funciones:

– Busca un oponente y lo empuja (lucha de sumo)
– Circula evitando obstáculos (laberinto/explorador)

Funcionamiento

El coche dispone de un sensor ultrasónico que envía una señal a la tarjeta Arduino cuando detecta un objeto a una cierta distancia. Esta señal la utilizará la tarjeta para valorar si acudir hacia el objeto o cambiar su dirección según la función que estemos programando (sumo o explorador).

Lista de materiales

1 Bola de rodadura LOG 36

2 Ruedas 4 en 1 LOG 46

1 Perfil de aluminio LOG 260

4 Tornillos M3 x 10 mm LOG 464

8 Tornillos M3 x 16 mm LOG 464M

4 Tornillos M4x 10 mm LOG 466

2 Tornillos de M2 x 10 mm LOG 474P

2 Tuercas de M2 LOG 480P

12 Tuercas M3 LOG 480

4 Tuercas M4 LOG 481

1 Portapilas plano 4xR6 LOG 534E

1 Controlador de motores L298N LOG 8444

1 Sensor ultrasónico HC-SR04 LOG 8446

1 Conector 9V para Arduino LOG 7734

1 Latiguillo M-M LOG S7519

8 Latiguillos M-H largos LOG S7518

8 Bulones de plástico LOG S220P

2 Soportes para micro reductora LOG 3D16

1 Plataforma móvil LOG DM8080

2 Micro reductoras con cable LOG S13R200

1 Hoja Técnica H1403

Construcción de la plataforma y conexión de los motores

Conexión del sensor ultrasonido

El sensor ultrasonido dispone de 4 pines:

  •  VCC: se conecta a la salida de 5V de la tarjeta Arduino.
  • GND: se conecta a una toma tierra (gnd) de la tarjeta Arduino.
  • TRIG: se conecta a un pin digital de la tarjeta Arduino y su función será pedir al sensor que lance un pulso de sonido.
  • ECHO: se conecta a un pin digital de la tarjeta Arduino y su función será medir el tiempo que tarda el pulso de sonido en llegar a un obstáculo.
 

 

Programación

int pinSondeo = 12; // Pin para activar el sensor LOG 8446
int pinEcho = 11; // valor del sensor de ultrasonidos LOG 8446
int motor1Avance = 5; // pin para el sistema motriz LOG 49
int motor1Atras = 6; // pin para el sistema motriz LOG 49
int motor2Avance = 9; // pin para el sistema motriz LOG 49
int motor2Atras = 10; // pin para el sistema motriz LOG 49
void setup() {
  Serial.begin (9600);
  pinMode(pinSondeo, OUTPUT);
  pinMode(pinEcho, INPUT);
  pinMode(motor1Avance, OUTPUT); //pin de motores en modo salida
  pinMode(motor1Atras, OUTPUT);
  pinMode(motor2Avance, OUTPUT);
  pinMode(motor2Atras, OUTPUT);
}
void loop() {
  long duration, distance;
  digitalWrite(pinSondeo, LOW);
  delayMicroseconds(2);
  digitalWrite(pinSondeo, HIGH); //envío de pulso de luz
  delayMicroseconds(10);
  digitalWrite(pinSondeo, LOW);
  duration = pulseIn(pinEcho, HIGH); //lectura del tiempo que tardó
  Serial.println(«Duration»);
  Serial.println(duration);
  distance = (duration/2) / 29.1; //calcula la distancia
  if (distance<20){
    analogWrite(motor2Avance, 200);
    analogWrite(motor2Atras, 0);
    analogWrite(motor1Avance, 200);
    analogWrite(motor1Atras, 0);

  }
  else{
    analogWrite(motor2Avance, 200);
    analogWrite(motor2Atras, 0);
    analogWrite(motor1Avance, 0);
    analogWrite(motor1Atras, 200);
    Serial.println(«Buscando»);
  }
}

Calibración

– En los programas, el control de los motores se realiza a través del envío de señales analógicas a los pares de salidas 5-6 y 9-10. Cada motor está controlado por dos pines de la tarjeta controladora, y cada pin determinará el sentido de giro del motor, permitiendo que el robot circule de frente o marcha atrás. Estos pines serán tratados como señales analógicas, enviándoles datos de 0 a 255 para poder controlar la velocidad del motor.

– Si en ambas salidas enviamos un 0, el coche se parará.

– La lógica nos dice que para que el coche circule en línea recta habrá que enviar a ambas salidas el mismo dato (mayor que 0). Si hacemos la prueba observamos que el coche tiende a girar en un determinado sentido. Esto es debido a la imprecisión de este tipo de motores. La mejor solución es regular la velocidad por programación enviando a un motor una señal ligeramente inferior con respecto al otro motor.

– Para que el coche gire en un sentido, disminuiremos notablemente la velocidad de uno de los motores (enviando un dato de valor inferior a su salida de Arduino) provocando el giro gracias a la diferencia de velocidad entre ambos motores.

– En cuanto al sentido de giro de los motores, éste viene controlado por las conexiones al puente H. Si observamos que cada rueda gira en un sentido, tendremos que modificar el cableado. Por ejemplo si tenemos los motores conectados a las salidas 1 y 3 del puente H y cada motor gira en un sentido, tendremos que cambiar uno de los motores y o bien pasarle de la salida 1 a la 2 o sino de la salida 3 a la 4.

Detalles de tipo práctico

– Desconectar la alimentación del controlador de motores L298N cuando no se esté utilizando para no gastar las pilas.

– Necesita 4 pilas R6 de 1,5 V y 1 pila 6F22 de 9 V.

– Tiempo de construcción: 6 H.

– Nivel: Difícil

Pruebas

– Aumentar o disminuir la velocidad de los motores