COCHE CONTROL REMOTO

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

 

COCHE SEGUIDOR DE LUZ

Construimos un modelo que se mueve siguiendo una fuente de luz.

FUNCIONAMIENTO

Las resistencias LDR se conectan a dos entradas analógicas de la tarjeta Arduino. Si las LDR detectan una luz, la tarjeta Arduino procesará la señal y dirigirá al robot hacia ella.

LISTA DE MATERIALES

1 Plataforma móvil LOG 8080
6 Tornillos M3x16mm LOG 464M
6 Tuercas M3 LOG 480
2 LDR LOG 731
2 Resistencias 10K LG 748 10K
1 Mini placa board 4.5×3.5cm LOG 885
1 Controlador de motores L298N LOG 8444
1 Conector 9V para Arduino LOG 7734
1 Conjunto de latiguillos LOG 7519
2 Latiguillos macho-hembra S7518
6 Bulones de plástico S 220P
1 Hoja Técnica H1404A

CONSTRUCCIÓN

Montar la plataforma móvil según las instrucciones.

Soldar un latiguillo macho-macho a cada uno de los terminales de las reductoras.

Pegar la placa board LOG 885 en la parte superior de la plataforma, como se indica en el dibujo.

Atornillar la placa Arduino UNO en la plataforma superior, utilizando 2 tornillos M3 LOG 646, 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.

 

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 DE LOS SENSORES LDR

El cometido de este vehículo es avanzar hacia una fuente de luz. Para detectar esa luz se han colocado en su frontal dos sensores basados en resistencias LDR. Estas resistencias están conectadas a dos entradas analógicas de la tarjeta Arduino (A1 y A2) y son alimentadas por la salida de 5V de su propia tarjeta.

El programa que se ha planteado lee la señal generada por las LDR y se dirige en la dirección de la LDR que mayor luz detecte.

 

PROGRAMACIÓN

Descargar programa en mblock

Descargar programa en Arduino IDE

int motor1Avance = 6; // pin para el sistema motriz LOG 48
int motor2Avance = 10; // pin para el sistema motriz LOG 48

void setup() {
pinMode(motor1Avance, OUTPUT); // pines de Salida
pinMode(motor2Avance, OUTPUT);
Serial.begin(9600);
}

void loop() {
int sensorLDR1 = analogRead(1); //leemos el valor de las LDRs LOG 731
int sensorLDR2 = analogRead(2);
Serial.print(sensorLDR1);
Serial.print(‘ ‘);
Serial.println(sensorLDR2);
if (sensorLDR1 > sensorLDR2+50) { //si LDR1 detecta mayor luz que LDR2
analogWrite(motor1Avance, 200);
analogWrite(motor2Avance, 0); // la plataforma gira hacia la izquierda
Serial.println(«Mas luz en la izquierda»);
}
if (sensorLDR2 > sensorLDR1+50) {
analogWrite(motor1Avance, 0);
analogWrite(motor2Avance, 200); // la plataforma gira hacia la izquierda
Serial.println(«Mas luz en la derecha»);
}
delay(200);
Serial.println(«Parado»); // la plataforma LOG 4080 para
analogWrite(motor1Avance, 0);
analogWrite(motor2Avance, 0);
}

COCHE EXPLORADOR

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 Plataforma móvil LOG 8080
4 Tornillos M3 x 16 mm LOG 464M
4 Tuercas M3 LOG 480
1 Sensor Ultrasónico LOG 8446
1 Controlador de motores L298N LOG 8444
1 Conector 9V para Arduino LOG 7734
4 Bulones de plástico LOG S220P
8 Latiguillos macho-hembra LOG S7518
1 Latiguillo macho-macho LOG S7519
1 Hoja Técnica H1403

Construcción

Montar la plataforma móvil según sus instrucciones. Atornillar el Arduino UNO y el controlador de motores a la plataforma superior, utilizando 2 tornillos M3 LOG 464, 2 bulones de plástico y 2 tuercas M3 LOG 480, por componente.
Cortar el latiguillo macho-macho por la mitad y soldar a los cables del portapilas.

Aplicar una gota de pegamento termofusible en las esquinas del ultrasónico, para que se quede fijo en el soporte.

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 6 y 10 de Arduino que permiten la modularidad (PWM).

Conexión del sensor ultrasónico

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

Descargar programa en mblock

int pinSondeo = 12;
int pinEcho = 11;
int motor1Avance = 6; // Conexión del sistema motriz LOG 49
int motor1Atras = 5; // Conexión del sistema motriz LOG 49
int motor2Avance = 10; // Conexión del sistema motriz LOG 49
int motor2Atras = 9; // Conexión del sistema motriz LOG 49
void setup() {
  Serial.begin (9600);
  pinMode(pinSondeo, OUTPUT);
  pinMode(pinEcho, INPUT);
  pinMode(motor1Avance, OUTPUT); //Declara pin de Salida
  pinMode(motor1Atras, OUTPUT); //Declara pin de Salida
  pinMode(motor2Avance, OUTPUT); //Declara pin de Salida
  pinMode(motor2Atras, OUTPUT); //Declara pin de Salida }
void loop() {
  long duration, distance;
  digitalWrite(pinSondeo, LOW);
  delayMicroseconds(2);
  digitalWrite(pinSondeo, HIGH); //envía pulso de luz
  delayMicroseconds(10);
  digitalWrite(pinSondeo, LOW);
  duration = pulseIn(pinEcho, HIGH); //recibe el tiempo de desplazamiento
  Serial.println(«Duration»);
  Serial.println(duration);
  distance = (duration/2) / 29.1; //Constante para calcular distancia
  if (distance < 50) { //si estamos cerca del objeto
    analogWrite(motor1Avance, 0); // los motores se detienen
    analogWrite(motor1Atras, 0);
    analogWrite(motor2Avance, 0);
    analogWrite(motor2Atras, 0);
    int direccion = random(1, 3); //seleccionamos una dirección aleatoria
    Serial.println(direccion);
    if (direccion==1){
      Serial.println(«derecha»); // la plataforma gira a la derecha
      analogWrite(motor1Avance, 0);
      analogWrite(motor1Atras, 150);
      analogWrite(motor2Avance, 100);
      analogWrite(motor2Atras, 0);
    }
    else{
      Serial.println(«izquierda»); // la plataforma gira a la izquierda
      analogWrite(motor1Avance, 100);
      analogWrite(motor1Atras, 0);
      analogWrite(motor2Avance, 0);
      analogWrite(motor2Atras, 150);
    }
    delay(500);
    analogWrite(motor1Avance, 0); // la plataforma se detiene
    analogWrite(motor1Atras, 0);
    analogWrite(motor2Avance, 0);
    analogWrite(motor2Atras, 0);
  }
  else{
    analogWrite(motor1Avance, 150); // la plataforma avanza recto
    analogWrite(motor1Atras, 0);
    analogWrite(motor2Avance, 125);
    analogWrite(motor2Atras, 0);
    Serial.println(«avanzo, campo libre»);
  }
}

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

– 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

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 Plataforma móvil LOG 8080
4 Tornillos M3 x 16 mm LOG 464M
4 Tuercas M3 LOG 480
1 Sensor Ultrasónico LOG 8446
1 Controlador de motores L298N LOG 8444
1 Conector 9V para Arduino LOG 7734
4 Bulones de plástico LOG S220P
8 Latiguillos macho-hembra LOG S7518
1 Latiguillo macho-macho LOG S7519
1 Hoja Técnica H1403

Construcción

Montar la plataforma móvil según sus instrucciones. Atornillar el Arduino UNO y el controlador de motores a la plataforma superior, utilizando 2 tornillos M3 LOG 464, 2 bulones de plástico y 2 tuercas M3 LOG 480, por componente.
Cortar el latiguillo macho-macho por la mitad y soldar a los cables del portapilas.

Aplicar una gota de pegamento termofusible en las esquinas del ultrasónico, para que se quede fijo en el soporte.

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 6 y 10 de Arduino que permiten la modularidad (PWM).

Conexión del sensor ultrasónico

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

Descargar programa en mblock

Descargar programa en Arduino IDE

int pinSondeo = 12; // Pin para activar el sensor LOG 8446
int pinEcho = 11; // valor del sensor de ultrasonidos LOG 8446
int motor1Avance = 6; // pin para el sistema motriz LOG 49
int motor1Atras = 5; // pin para el sistema motriz LOG 49
int motor2Avance = 10; // pin para el sistema motriz LOG 49
int motor2Atras = 9; // 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 < 100) { //si la distancia < 100 digitalWrite(motor1Avance, HIGH); //avanza digitalWrite(motor1Atras, LOW);
digitalWrite(motor2Avance, HIGH);
digitalWrite(motor2Atras, LOW);
}
else{
digitalWrite(motor1Avance, LOW); //busca digitalWrite(motor1Atras, HIGH);
digitalWrite(motor2Avance, HIGH);
digitalWrite(motor2Atras, LOW);
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.

– 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

– 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

COCHE SEGUIDOR DE LÍNEA

El coche recorre un circuito creado con cinta aislante negra. Dispone de dos sensores en los bajos del coche. Cada uno de los sensores envía una señal analógica a la tarjeta Arduino. En función del valor de estas dos señales, la tarjeta decidirá si el coche debe continuar en la misma dirección o modificarla ligeramente para no salirse de la línea negra.

Lista de materiales

1 Plataforma móvil LOG 8080
8 Tornillos M3 x 16 mm LOG 464M
10 Tuercas M3 LOG 480
1 Rollo de cinta aislante negra LOG 445N
1 Controlador de motores L298N LOG 8444
2 Sensores de línea LOG 8451
1 Conector 9V para Arduino LOG 7734
5 Latiguillos M-M LOG S7519
8 Latiguillos M-H largos LOG S7518
8 Bulones de plástico LOG S220P
1 Hoja Técnica H1401

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 464M, 2 bulones de plástico y 2 tuercas M3 LOG 480.

Atornillar el controlador de motores con 4 tornillos M3 LOG 464M, 4 bulones de plástico y 4 tuercas M3 LOG 480.

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 6 y 10 de Arduino que permiten la modularidad (PWM).

Conexión de los sensores de línea

Los sensores de línea nos permiten medir el reflejo de la luz sobre una superficie y en función de su valor sabremos si el sensor está sobre una superficie blanca o negra.

Los sensores están colocados en la parte baja del coche. Cuando ambos sensores devuelven una señal analógica superior a 50, se considera que están colocados sobre la línea negra y por lo tanto el coche circula recto (los dos motores a la misma velocidad).

Si alguno de los sensores detecta un valor inferior a 50, la tarjeta Arduino entiende que está en zona blanca y debe realizar un ligero giro para modificar su dirección.

Estos sensores nos van a devolver un valor analógico, por lo que se conecta a las señales analógicas A4 y A5.

Los sensores tienen un potenciómetro en el centro, inicialmente los podemos poner en el centro e ir regulando dependiendo de la luz ambiental

Programación con Arduino IDE con 1 sensor

Arduino IDE es una herramienta de programación por códigos basado en C++. Para instalar el software de Arduino, entramos en  www.arduino.cc/en/Main/Software y descargamos el software Arduino IDE.

Una vez instalado, abrir «Arduino IDE»:

– 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».

Una vez realizado la conexión con la tarjeta ya podemos programar

void setup() {

pinMode(6, OUTPUT);
pinMode(10, OUTPUT);
Serial.begin(9600);

}
void loop() {

Serial.println(analogRead(A0));
if(analogRead(A0)<600){
analogWrite(6, 150);
analogWrite(10, 0);
Serial.println(«derecha»);

}
else{

analogWrite(10, 200);
analogWrite(6, 75);
Serial.println(«izquierda»);
}

}

Programación con mBlock con 2 sensores

mBlock es una herramienta de programación por bloques basado en scratch.

Para instalar el software, accede a https://mblock.makeblock.com/en/ y desde el apartado Download descarga e instala el software adecuado según tu sistema operativo.

Una vez instalado, ejecuta el software mBlock:

  • Pulsa en añadir (dentro de dispositivos), seleccionamos la placa «arduino uno» y pulsa en aceptar.
  • Si hay más dispositivos añadidos, pulsa en cada uno de ellos y elimínalos haciendo clic en la X de la esquina.
  • Conecta la placa al PC y pulsa en «conectar».
  • Pulsa en «Mostrar todos los dispositivos conectables», selecciona el puerto COM con el número mayor y pulsa en «conectar».

void setup() {
  pinMode(6, OUTPUT);
  pinMode(10, OUTPUT);
  Serial.begin(9600);
  }
void loop(){
  Serial.print(analogRead(A0));
  Serial.print(«-«);
  Serial.println(analogRead(A5));
  if(analogRead(A0)>50 && analogRead(A5)>50){ //RECTO
    analogWrite(6, 200);
    analogWrite(10, 200); }
  if(analogRead(A0)>50 && analogRead(A5)<50){ //IZQUIERDA
    analogWrite(6, 200);
    analogWrite(10, 0); }
  if (analogRead(A0)<50 && analogRead(A5)>50) { //DERECHA
    analogWrite(6, 0);
    analogWrite(10, 200);
  }
}
Calibración
En los programas, el control de los motores se realiza a través del envío de señales analógicas a las salidas 6 y 10 de la tarjeta Arduino. La señal analógica a enviar tendrá un valor desde 0 hasta 255. Cada salida controla un motor del coche.
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.
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.
Pruebas
Realizar distintos circuitos con la cinta aislante negra LOG 455N.
Aumentar o disminuir la velocidad de los motores

PLATAFORMA MÓVIL

Todos los modelos tienen en común la plataforma móvil que alberga los motores y los diferentes elementos característicos de cada robot. Se trata del kit LOG 8080.

Con este kit se construye una plataforma robótica versátil, adecuada para incorporar una tarjeta controladora tipo Arduino. Las bases tienen ranuras y orificios para facilitar el paso de cables y latiguillos así como el anclaje de otras placas, shields y elementos mecánicos o electrónicos para dotar al robot de diversas funciones.

Lista de materiales:

2 Bases ranuradas de plástico
8 Abrazaderas
2 Reductoras
2 Ruedas de goma
1 Portapilas LOG 534
4 Torretas cortas M3
4 Torretas largas M3
8 Tornillos M2,5 x 25 mm
8 Tuercas M2,5
8 Tuercas M3 LOG 480
8 Tornillos M3 x 6 mm LOG 464P
1 Bola de rodadura LOG 36
2 Tornillos M3 de 10 mm LOG 464
2 Tuercas M3 LOG 480
2 Arandelas M3 LOG 485
1 Hoja Técnica H 8080

Montaje de la plataforma:

Encajar las 4 piezas de plástico en sus respectivas ranuras según indica el dibujo.

Girar 180º la plataforma ranurada y encajar las reductoras entre las piezas de plástico.

Atornillar las reductoras utilizando 2 tornillos de M2,5 x 25 mm y 2 tuercas de M2,5

Atornillar las torretas largas a la base utilizando tuercas de M3.

Atornillar la segunda base ranurada a las torretas con tornillo de M3 x 6 mm.

MALETA DE COCHES ROBÓTICOS

En este kit se incluye el material necesario para construir 7 modelos de coche diferentes:

  1. Coche programado
  2. Coche seguidor de línea
  3. Coche bluetooth
  4. Coche bluetooth con dirección
  5. Coche sumo
  6. Coche explorador
  7. Coche seguidor de luz
  8. Coche control remoto