Skip to main content

1. Introducción

Esta es una serie de articulo para elaborar un carro seguidor de línea optimizado, que lo vamos a elaborar paso a paso, en este capitulo vamos a realizar el montaje básico y  realizaremos pruebas de funcionamiento para obtener datos para análisis y mejoras.

Antes de instalar los sensores de línea y programar la lógica de seguimiento, es fundamental comprobar que la parte mecánica y el sistema de potencia funcionen correctamente. En este primer paso construiremos la base móvil del proyecto y verificaremos las funciones básicas: avanzar, retroceder, girar a la derecha, girar a la izquierda y operar los motores a velocidad mínima y máxima.

El objetivo no es seguir una línea todavía. En esta etapa nos aseguraremos de que el Arduino Nano se comunique correctamente con el driver L298N y que ambos motores respondan en el sentido esperado.

te invito a ver el articulo :   Ventajas de trabajar con Arduino Nano y una base de conexiones

2. Materiales necesarios

  • 1 Arduino Nano.
  • 1 módulo controlador de motores L298N.
  • Sensor Infrarrojo Qtr-8a Seguidor De Línea.
  • 2 motores DC con caja reductora.
  • 2 ruedas compatibles con los motores.
  • 1 rueda loca o rueda giratoria.
  • 1 chasis para robot móvil.
  • 1 batería compatible con el voltaje de los motores.
  • Cables.
  • Interruptor, recomendado para desconectar la alimentación de los motores.

Importante: todos los módulos deben compartir tierra. Une el GND del Arduino Nano, el GND del L298N y el negativo de la batería.

mi recomendación si es la primera vez que lo vas a realizar, es comprar un kit de carro seguidor de líneas:

https://s.click.aliexpress.com/e/_c4bgAsMT

Nota: Este es un enlace de afiliado. Si compras a través de él, puedo recibir una pequeña comisión sin costo adicional para ti. Solo recomiendo productos que consideraría útiles para mis estudiantes.

el kit comercial es aproximadamente este :

kit seguidor de linea

kit seguidor de linea

 

Te invito a inventar y sonar, este es mi kit todo de materiales de reciclaje

kit seguidor de línea casero

kit seguidor de línea casero


circuito seguidor de línea

circuito seguidor de línea

3. Funciones que probaremos:

En esta primera prueba, el carro debe realizar los siguientes movimientos:

Función Acción del carro
Avanzar Los dos motores giran hacia adelante
Retroceder Los dos motores giran hacia atrás
Girar a la izquierda El carro rota hacia la izquierda
Girar a la derecha El carro rota hacia la derecha
Velocidad mínima Los motores reciben un valor PWM bajo
Velocidad máxima Los motores reciben el máximo valor PWM
Detener Los motores dejan de girar

4. Conexiones del L298N

El L298N permite controlar dos motores DC de forma independiente. Las entradas IN1  IN2 controlan el motor izquierdo, mientras que IN3  IN4 controlan el motor derecho. Los pines ENA  ENB permiten regular la velocidad mediante PWM.

L298N Arduino Nano Función
ENA D12 Control de velocidad del motor izquierdo
IN1 D11 Sentido de giro del motor izquierdo
IN2 D10 Sentido de giro del motor izquierdo
ENB D7 Control de velocidad del motor derecho
IN3 D9 Sentido de giro del motor derecho
IN4 D8 Sentido de giro del motor derecho
GND GND Tierra común

Conecta el motor izquierdo a las terminales OUT1 y OUT2 del L298N. Conecta el motor derecho a OUT3 y OUT4.

La batería debe conectarse a la entrada de alimentación del L298N. No alimentes los motores desde el pin de 5 V del Arduino Nano: los motores pueden demandar una corriente superior a la que la placa puede suministrar.

Para controlar la velocidad por PWM, retira los jumpers de ENA y ENB del módulo L298N, si tu versión los incluye.

la conexion del Sensor Infrarrojo Qtr-8a Seguidor De Línea es opcional (no se va a usar en esta etapa

5. Código de prueba:

El siguiente programa ejecuta una secuencia automática de movimientos. Cada acción dura dos segundos y luego el carro se detiene brevemente antes de continuar con la siguiente prueba.

// Carro Seguidor de Línea (Paso 1)
// Pruebas básicas de motores con Arduino Nano y L298N

// Pines del L298N para el motor izquierdo
const int ENA = 12;
const int IN1 = 11;
const int IN2 = 10;

// Pines del L298N para el motor derecho
const int ENB = 7;
const int IN3 = 9;
const int IN4 = 8;

// Valores PWM: rango válido entre 0 y 255
const int VELOCIDAD_MINIMA = 80;
const int VELOCIDAD_MAXIMA = 255;
const int VELOCIDAD_GIRO = 150;

void setup() {
  pinMode(ENA, OUTPUT);
  pinMode(IN1, OUTPUT);
  pinMode(IN2, OUTPUT);

  pinMode(ENB, OUTPUT);
  pinMode(IN3, OUTPUT);
  pinMode(IN4, OUTPUT);

  Serial.begin(9600);

  detener();
}

void loop() {
  Serial.println("Avance a velocidad minima");
  adelante(VELOCIDAD_MINIMA);
  delay(2000);
  detenerPausa();

  Serial.println("Avance a velocidad maxima");
  adelante(VELOCIDAD_MAXIMA);
  delay(2000);
  detenerPausa();

  Serial.println("Retroceso");
  atras(VELOCIDAD_GIRO);
  delay(2000);
  detenerPausa();

  Serial.println("Giro a la izquierda");
  izquierda(VELOCIDAD_GIRO);
  delay(1500);
  detenerPausa();

  Serial.println("Giro a la derecha");
  derecha(VELOCIDAD_GIRO);
  delay(1500);
  detenerPausa();

  Serial.println("Fin de la secuencia. Nueva prueba en 3 segundos.");
  delay(3000);
}

// Función para avanzar
void adelante(int velocidad) {
  digitalWrite(IN1, HIGH);
  digitalWrite(IN2, LOW);

  digitalWrite(IN3, HIGH);
  digitalWrite(IN4, LOW);

  analogWrite(ENA, velocidad);
  analogWrite(ENB, velocidad);
}

// Función para retroceder
void atras(int velocidad) {
  digitalWrite(IN1, LOW);
  digitalWrite(IN2, HIGH);

  digitalWrite(IN3, LOW);
  digitalWrite(IN4, HIGH);

  analogWrite(ENA, velocidad);
  analogWrite(ENB, velocidad);
}

// Función para girar a la izquierda
void izquierda(int velocidad) {
  // Motor izquierdo hacia atrás
  digitalWrite(IN1, LOW);
  digitalWrite(IN2, HIGH);

  // Motor derecho hacia adelante
  digitalWrite(IN3, HIGH);
  digitalWrite(IN4, LOW);

  analogWrite(ENA, velocidad);
  analogWrite(ENB, velocidad);
}

// Función para girar a la derecha
void derecha(int velocidad) {
  // Motor izquierdo hacia adelante
  digitalWrite(IN1, HIGH);
  digitalWrite(IN2, LOW);

  // Motor derecho hacia atrás
  digitalWrite(IN3, LOW);
  digitalWrite(IN4, HIGH);

  analogWrite(ENA, velocidad);
  analogWrite(ENB, velocidad);
}

 

6. Cómo realizar la prueba:

  1. Antes de colocar el carro en el suelo, levanta el chasis para que las ruedas queden libres. Esto permite verificar el sentido de giro de cada motor de forma segura.
  2. Carga el programa en el Arduino Nano.
  3. Conecta la batería al L298N y enciende el sistema.
  4. Abre el monitor serial a una velocidad de 9600 baudios para identificar la función que se está ejecutando.
  5. Verifica la secuencia: avance lento, avance rápido, retroceso, giro a la izquierda y giro a la derecha.
  6. Cuando confirmes que el sentido de giro es correcto, realiza pruebas cortas sobre el suelo.

7. Ajuste de velocidad:

El Arduino controla la velocidad de los motores mediante PWM usando valores entre 0 y 255.

Valor PWM Resultado esperado
0 Motor detenido
60 a 100 Velocidad baja, dependiendo del motor y la batería
120 a 180 Velocidad media para pruebas iniciales
200 a 255 Velocidad alta

El valor VELOCIDAD_MINIMA debe ser suficiente para vencer la fricción y poner en marcha ambos motores. Si uno de los motores no comienza a girar con 80, aumenta gradualmente este valor hasta conseguir un movimiento estable.

8. Solución de problemas

El carro avanza hacia atrás

Si al ejecutar la función adelante() el carro se desplaza hacia atrás, intercambia los dos cables del motor correspondiente en las salidas del L298N. También puedes invertir la lógica de sus pines IN en el programa, pero intercambiar los cables suele simplificar el código.

El carro gira en lugar de avanzar recto

Comprueba que ambos motores estén conectados con el mismo criterio de polaridad. Si las ruedas giran en sentidos opuestos durante el avance, invierte los cables de uno de los motores.

Un motor no gira a velocidad baja

Aumenta el valor de VELOCIDAD_MINIMA. Cada motor tiene un umbral diferente para comenzar a girar, especialmente cuando el chasis ya está apoyado sobre el suelo.

El Arduino se reinicia al mover los motores

Revisa la alimentación. Los motores deben recibir energía desde una batería conectada al L298N y no desde el Arduino. Asegúrate además de que todos los GND estén conectados en común.

9. Próximo paso

Una vez verificadas las funciones básicas de desplazamiento, el chasis estará listo para incorporar los cinco sensores infrarrojos. En el siguiente paso se realizará la conexión, calibración y lectura de los sensores para comenzar a detectar la línea negra sobre la pista.

Loading

Telles Rafael

Profesor Especialista en Control Industrial, con mas de 20 Años de experiencia en electrónica digital

Leave a Reply

Close Menu

Wow look at this!

This is an optional, highly
customizable off canvas area.

About Salient

The Castle
Unit 345
2500 Castle Dr
Manhattan, NY

T: +216 (0)40 3629 4753
E: hello@themenectar.com