Construir un coche con Arduino que pueda ser dirigido por un control remoto.
Funcionamiento
El coche lleva instalado un Módulo TSOP que recibe las señales que envía el emisor infrarrojo del mando a distancia. Este módulo pasa la señal a Arduino, que se encargará de procesarla y generar el movimiento correspondiente en el vehículo.
Lista de materiales
1 Plataforma móvil LOG 8080
2 Tornillos M2 LOG 474P
6 Tornillos M3 x 16 mm LOG 464M
2 Tuercas M2 LOG 480P
6 Tuercas M3 LOG 480
1 Conector 9V para Arduino LOG 7734
1 Mando a distancia + receptor LOG 8401
1 Controlador de motores L298N LOG 8444
5 Latiguillos macho-macho LOG S7519
7 Latiguillos macho-hembra LOG S7518
6 Bulones de plástico LOG S220P
1 Hoja Técnica H1405
Construcción
- Montar la plataforma móvil según sus instrucciones.
- Soldar un latiguillo macho-macho a cada uno de los terminales de las reductoras.
- Atornillar el Arduino UNO en la plataforma superior, utilizando 2 tornillos M3 LOG 464, 2 bulones de plástico y 2 tuercas M3 LOG 480.
- Atornillar el controlador de motores con 4 tornillos M3 LOG 464, 4 bulones de plástico y 4 tuercas M3 LOG 480.
- Atornillar el receptor TSOP con los tornillos LOG 474P y las tuercas LOG 480P
Conexión del controlador de motores
El esquema incluye un controlador de motores L298N puente H. Un puente H consiste en 4 interruptores que nos permiten controlar la polaridad de la corriente que llega a los dos motores conectados al controlador de motores. Así en función de la polaridad podemos controlar el sentido de giro de los motores. Además funcionan como regulador de corriente, pudiendo determinar una velocidad de giro de 0 a 255.
Para poder controlar la velocidad de giro de los motores, se han conectado a las salidas 5, 6, 9 y 10 de Arduino que permiten la modularidad (PWM).
Conexión del módulo tsop
El módulo TSOP esta formado por 3 pines que conectaremos a:
– 5V de Arduino
– GND
– Señal 11 PWM
Cuando realizamos una lectura de los datos, la señal 11 nos devolverá un valor numérico según la siguiente tabla:
– Flecha arriba : 6375
– Flecha abajo : 19125
– Flecha derecha :4335
– Flecha izquierda : 23205
– Botón central OK: 14535
Programación con arduino ide
Arduino IDE es una herramienta de programación por códigos basado en C++.
Una vez instalado Arduino IDE, abrir el software e instalar la librería IRremote, para ello pulsar en el menú:
– Programa > Incluir librería > Administrar Bibliotecas
– Buscar en el cuadro de busqueda IRremote e instalar la librería «IRremote by shirriff».
Por último realizar la conexión con la tarjeta:
– Pinchar en la pestaña «Herramientas», seleccionar donde pone «Placa» y pinchar en «Arduino/Genuino UNO».
– Pinchar en la pestaña «Herramientas», seleccionar donde pone «Puerto» y pinchar en «COM*Numero* Arduino/Genuino UNO».
Ya podemos empezar a programar.
– Es posible que los códigos que recibe el coche del mando varíen con respecto al programa de esta documentación. Es recomendable revisar los códigos realizando lecturas y visualizaciones a través del monitor del puerto serie
#include <IRremote.h>
const byte IR_RECEIVE_PIN = 11;
int motor1Avance = 6; // usamos un pin de salida al motor
int motor1Atras = 5; // usamos un pin de salida al motor
int motor2Avance = 9; // usamos un pin de salida al motor
int motor2Atras = 10; // usamos un pin de salida al motor
void setup()
{
Serial.begin(9600);
Serial.println(«IR Receive test»);
IrReceiver.begin(IR_RECEIVE_PIN, ENABLE_LED_FEEDBACK);
pinMode(motor1Avance, OUTPUT);
pinMode(motor1Atras, OUTPUT);
pinMode(motor2Avance, OUTPUT);
pinMode(motor2Atras, OUTPUT);
analogWrite(motor1Avance, 0);
analogWrite(motor1Atras, 0);
analogWrite(motor2Avance, 0);
analogWrite(motor2Atras, 0);
}
void loop() {
if (IrReceiver.decode())
{
int value = IrReceiver.decodedIRData.command;
Serial.println(value, DEC);
IrReceiver.resume();
if (value==24){
Serial.println(«delante»);
analogWrite(motor1Avance, 255);
analogWrite(motor1Atras, 0);
analogWrite(motor2Avance, 255);
analogWrite(motor2Atras, 0);
}
if (value==28){
Serial.println(«parar»);
analogWrite(motor1Avance, 0); //La plaforma LOG 8080 para
analogWrite(motor1Atras, 0);
analogWrite(motor2Avance, 0);
analogWrite(motor2Atras, 0);
}
if (value==82){
Serial.println(«atras»);
analogWrite(motor1Avance, 0); //La plataforma LOG 8080 retrocede
analogWrite(motor1Atras, 255);
analogWrite(motor2Avance, 0);
analogWrite(motor2Atras, 255);
}
if (value==8){
Serial.println(«IZQUIERDA»);
analogWrite(motor1Avance, 100); //La plataforma gira a la izquierda
analogWrite(motor1Atras, 0);
analogWrite(motor2Avance, 250);
analogWrite(motor2Atras, 0);
}
if (value==90){
Serial.println(«DERECHA»);
analogWrite(motor1Avance, 250); //La plataforma gira a la derecha
analogWrite(motor1Atras, 0);
analogWrite(motor2Avance, 100);
analogWrite(motor2Atras, 0);
}
}
}
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.
Si lo que queremos es 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
Necesita 4 pilas R6 de 1,5 V, 1 pila 6F22 de 9 V y 1 pila botón CR2025.
Tiempo de construcción: 6 H.
Nivel: Difícil
Pruebas
– Aumentar o disminuir la velocidad de los motores