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

8 Bulones de plástico LOG S220P

2 Soportes para micro reductora LOG 3D16

1 Plataforma Móvil LOG DM8080

1 Hoja Técnica H1401

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

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 A0 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


int motor1avanza=5;
int motor1atras=6;
int motor2avanza=9;
int motor2atras=10;

void setup() {
 
  Serial.begin(9600);
  pinMode(5, OUTPUT);
  pinMode(6, OUTPUT);
  pinMode(9, OUTPUT);
  pinMode(10, OUTPUT);
}

void loop() {
  Serial.print(«A0 = «);
  Serial.println(analogRead(A0));

  Serial.print(«A5 = «);
  Serial.println(analogRead(A5));
 
  if((analogRead(A5)<100) && (analogRead(A0)>100)){
    Serial.println(«izquierda»);
    analogWrite(motor1avanza,0);
    analogWrite(motor2avanza,0);
    analogWrite(motor1atras,150);
    analogWrite(motor2atras,0);
  }
  else{
    if((analogRead(A0)<100) && (analogRead(A5)>100)){
      Serial.println(«derecha»);
      analogWrite(motor1avanza,0);
      analogWrite(motor2avanza,0);
      analogWrite(motor1atras,0);
      analogWrite(motor2atras,150);
    }
    else{
      if((analogRead(A0)<100) && (analogRead(A5)<100)){
        Serial.println(«brusco»);
        analogWrite(motor1avanza,0);
        analogWrite(motor2avanza,0);
        analogWrite(motor1atras,100);
        analogWrite(motor2atras,0);
      }
      else{
        Serial.println(«recto»);
        analogWrite(motor1avanza,0);
        analogWrite(motor2avanza,0);
        analogWrite(motor1atras,100);
        analogWrite(motor2atras,100);
      }
    }
  }
}    

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