tutoriales.com

Construye tu Propio Robot Seguidor de Línea con Arduino: Guía Definitiva

En este tutorial completo aprenderás a ensamblar, cablear y programar desde cero un robot seguidor de línea utilizando una placa Arduino, un controlador de motores y sensores ópticos infrarrojos. Descubre los secretos de la robótica móvil básica con una explicación detallada de la lógica de control.

Intermedio12 min de lectura4 views
Reportar error

🤖 Introducción al Mundo de los Robots Seguidores de Línea

El diseño y construcción de un robot seguidor de línea es uno de los proyectos más clásicos, divertidos y educativos dentro de la robótica y la electrónica con Arduino. ¿Alguna vez te has preguntado cómo los vehículos autónomos o los sistemas de transporte industrial (AGV) se desplazan sin intervención humana? La respuesta radica en principios muy similares a los que implementaremos hoy.

Un seguidor de línea es un vehículo autónomo capaz de detectar y seguir una trayectoria marcada sobre una superficie (por lo general, una línea negra sobre fondo blanco, o viceversa). Para lograrlo, nuestro sistema utilizará un conjunto de sensores ópticos capaces de diferenciar el contraste de la superficie, procesando esa información a través de un Arduino y traduciéndola en órdenes precisas para los motores.

💡 Consejo: Este proyecto es el punto de partida perfecto para adentrarte en competiciones de robótica educativa como la Robocup Junior o simplemente para experimentar con control en lazo cerrado a nivel básico.

En este tutorial exhaustivo cubriremos:

  • La lista completa de materiales y componentes necesarios.
  • El diagrama esquemático de conexiones eléctricas.
  • El ensamblaje mecánico del chasis.
  • La lógica de programación y el código optimizado.
  • Consejos de calibración y solución de problemas comunes.

🛠️ Materiales y Componentes Necesarios

Antes de ensamblar nuestro robot, es fundamental reunir todos los elementos físicos necesarios. Asegúrate de contar con cada uno de los componentes listados en la siguiente tabla:

ComponenteCantidadDescripciónPropósito
Placa Arduino Uno1Microcontrolador ATmega328PCerebro del robot
Chasis para Robot 2WD1Kit con plataforma, ruedas y motoresEstructura mecánica
Driver L298N o L9110S1Controlador de motores de doble puente HAmplifica la señal para mover los motores
Módulo de Sensores IR (TCRT5000)1 ó 2Sensores infrarrojos de reflectanciaDetectan la línea en el suelo
Portapilas 18650 o 9V1Alimentación externa (7.4V - 9V)Suministra energía estable al sistema
Cables de conexión (Jumpers)15+Macho-Macho, Macho-HembraRealizan el cableado eléctrico
Protoboard pequeña (opcional)1Placa de pruebas para conexiones limpiasFacilita la distribución de energía
⚠️ Advertencia: Nunca alimentes los motores directamente desde los pines de 5V de la placa Arduino. Los motores consumen picos de corriente elevados que pueden quemar el regulador de voltaje de tu Arduino. Utiliza siempre una fuente de alimentación externa para la etapa de potencia.

📐 Arquitectura y Diagrama de Conexiones

Para que nuestro robot comprenda su entorno y actúe en consecuencia, debemos conectar los sensores de reflectancia infrarroja a los pines digitales o analógicos del Arduino, y las señales de control de los motores al driver correspondiente.

Sensor IR S1 Sensor IR S2 Arduino Uno Microcontrolador Driver L298N Control Puente H Motor DC + Rueda Motor DC + Rueda Batería (Alimentación) Señal PWM VCC Riel de Potencia

A continuación, detallamos paso a paso el mapa de cableado eléctrico:

Paso 1: Alimentación: Conecta el positivo (+) de la batería al pin de entrada de voltaje del Driver de Motores y el negativo (-) a la tierra (GND) común del circuito.
Paso 2: Driver de Motores: Conecta los pines de control IN1, IN2, IN3 e IN4 del driver a los pines digitales del Arduino (por ejemplo, pines 4, 5, 6 y 7).
Paso 3: Sensores Infrarrojos: Conecta el pin VCC del módulo de sensores a 5V del Arduino, GND a GND, y las salidas digitales (OUT1 y OUT2) a los pines digitales 2 y 3 del Arduino.
Paso 4: Motores DC: Conecta los terminales de cada motorreductor del chasis a las salidas OUT1-OUT2 y OUT3-OUT4 del driver de motores.

🧠 Lógica de Funcionamiento del Seguidor de Línea

El principio operativo de un seguidor de línea básico de dos sensores se basa en la lectura binaria o analógica del contraste del suelo:

  • Superficie blanca: Refleja la luz infrarroja emitida por el LED del sensor. El fototransistor receptor conduce y entrega una señal baja (LOW o 0).
  • Línea negra: Absorbe la luz infrarroja. El fototransistor receptor no conduce y entrega una señal alta (HIGH o 1).

Basándonos en esta premisa, la tabla de verdad para el comportamiento de nuestro robot ante una línea negra sobre fondo blanco es la siguiente:

Sensor IzquierdoSensor DerechoAcción del RobotComportamiento de Motores
Blanco (0)Blanco (0)Avanzar de frenteAmbos motores giran hacia adelante a velocidad normal
Negro (1)Blanco (0)Girar a la izquierdaMotor izquierdo se detiene/retrocede, motor derecho avanza
Blanco (0)Negro (1)Girar a la derechaMotor izquierdo avanza, motor derecho se detiene/retrocede
Negro (1)Negro (1)Estado de parada o búsquedaEl robot se detiene o continúa el último estado registrado
📌 Nota: Esta lógica básica se puede enriquecer notablemente utilizando control proporcional (PID) si empleamos una barra de 5 o más sensores analógicos, logrando un desplazamiento mucho más fluido y veloz.

💻 Programando el Arduino

A continuación se muestra el código completo para configurar nuestro robot seguidor de línea de dos sensores. Este código es limpio, comentado y listo para cargar en tu placa.

// Definición de pines para los motores (Driver L298N)
const int enA = 10;
const int in1 = 4;
const int in2 = 5;
const int in3 = 6;
const int in4 = 7;
const int enB = 11;

// Definición de pines para los sensores infrarrojos
const int sensorIzquierdo = 2;
const int sensorDerecho = 3;

void setup() {
  // Configurar pines de motores como salidas
  pinMode(enA, OUTPUT);
  pinMode(enB, OUTPUT);
  pinMode(in1, OUTPUT);
  pinMode(in2, OUTPUT);
  pinMode(in3, OUTPUT);
  pinMode(in4, OUTPUT);

  // Configurar pines de sensores como entradas
  pinMode(sensorIzquierdo, INPUT);
  pinMode(sensorDerecho, INPUT);

  // Establecer velocidad inicial de los motores (0 - 255)
  analogWrite(enA, 180);
  analogWrite(enB, 180);
}

void loop() {
  // Leer el estado actual de los sensores
  int valIzq = digitalRead(sensorIzquierdo);
  int valDer = digitalRead(sensorDerecho);

  // Lógica de control condicional
  if (valIzq == LOW && valDer == LOW) {
    // Ambos ven blanco: Avanzar en línea recta
    avanzar();
  } 
  else if (valIzq == HIGH && valDer == LOW) {
    // Sensor izquierdo sobre línea negra: Girar a la izquierda
    girarIzquierda();
  } 
  else if (valIzq == LOW && valDer == HIGH) {
    // Sensor derecho sobre línea negra: Girar a la derecha
    girarDerecha();
  } 
  else {
    // Ambos sobre negro: Detenerse por seguridad
    detener();
  }
}

// Funciones de movimiento
void avanzar() {
  digitalWrite(in1, HIGH);
  digitalWrite(in2, LOW);
  digitalWrite(in3, HIGH);
  digitalWrite(in4, LOW);
}

void girarIzquierda() {
  digitalWrite(in1, LOW);
  digitalWrite(in2, HIGH);
  digitalWrite(in3, HIGH);
  digitalWord(in4, LOW);
}

void girarDerecha() {
  digitalWrite(in1, HIGH);
  digitalWrite(in2, LOW);
  digitalWrite(in3, LOW);
  digitalWrite(in4, HIGH);
}

void detener() {
  digitalWrite(in1, LOW);
  digitalWrite(in2, LOW);
  digitalWrite(in3, LOW);
  digitalWrite(in4, LOW);
}

🧪 Calibración, Pruebas y Resolución de Problemas

Una vez que hayas cargado el código en tu Arduino y ensamblado el circuito, es momento de realizar pruebas en pista. Es muy probable que en el primer intento el robot no se desplace de forma perfecta. Sigue estos consejos para optimizar su desempeño:

  1. Ajuste de los potenciómetros del sensor IR: La mayoría de los módulos TCRT5000 cuentan con un potenciómetro azul. Giralo con un destornillador pequeño para ajustar la sensibilidad del sensor según la iluminación ambiental de tu habitación.
  2. Inversión de giro de motores: Si al programar el comando avanzar() el robot retrocede o gira sobre sí mismo, simplemente intercambia los cables del motor correspondiente en los bornes del driver o invierte los estados HIGH y LOW en el código.
  3. Velocidad de los motores: Si el robot se sale constantemente de la pista por ir demasiado rápido, reduce el valor PWM enviado a los pines enA y enB (por ejemplo, bajándolo de 180 a 130).
💡 Consejo Pro: Utiliza cinta aislante negra de buena calidad sobre una superficie blanca brillante de madera o cartulina para crear tu circuito de prueba. Esto maximizará el contraste y facilitará la lectura de los sensores ópticos.

❓ Preguntas Frecuentes (FAQ)

¿Puedo utilizar un sensor ultrasónico además de los sensores IR?Sí, puedes añadir un sensor HC-SR04 en la parte frontal para que tu robot además detecte obstáculos y se detenga o esquive objetos mientras sigue la línea.
¿Qué tipo de baterías son las más recomendadas?Se recomienda utilizar dos baterías recargables de litio tipo 18650 en serie (entregando aproximadamente 7.4V - 8.4V) debido a su excelente relación de peso, tamaño y capacidad de corriente.
¿Cómo puedo hacer que el robot siga una línea blanca sobre fondo negro?Simplemente debes invertir la lógica de lectura en tu código de Arduino, cambiando las evaluaciones de `LOW` a `HIGH` y viceversa.

🎓 Conclusión

¡Felicidades! Has completado la construcción y programación de tu propio robot seguidor de línea con Arduino. A través de este tutorial has integrado conceptos fundamentales de mecánica robótica, electrónica de potencia y programación de sistemas embebidos. Este es tan solo el primer paso; ahora puedes experimentar añadiendo más sensores, mejorando el algoritmo con control proporcional o incorporando conectividad Bluetooth para control remoto. ¡Sigue creando y divirtiéndote con la electrónica!

Tutoriales relacionados

Comentarios (0)

Aún no hay comentarios. ¡Sé el primero!