Seguidor de Linea MultiCarBot
El modo “Seguidor de Línea” permite que el Multicarbot detecte y siga trayectorias negras (o blancas) impresas sobre el suelo gracias a dos sensores ópticos TCRT5000 colocados en los extremos delanteros del chasis. Con esta práctica, los estudiantes comprenderán cómo interactúan sensores de reflexión infrarroja, lógica de decisión y control de motores de corriente continua.
Componentes necesarios
Ítem | Cantidad | Observaciones |
---|---|---|
Sensor infrarrojo TCRT5000 | 2 uds | Módulo con salida digital (LOW = línea detectada) electropeak.com |
Arduino Uno | 1 ud | Microcontrolador principal |
Driver L298N | 1 ud | Control dual H-Bridge para motores TT projecthub.arduino.cchowtomechatronics.com |
Motores TT 6 V con caja reductora | 2 uds | ~200 RPM a 6 V; torque 0,8 kg·cm adafruit.com |
Ruedas + soporte omnidireccional | 1 juego | — |
Pack baterías 9 V* | 1 ud | Una pila rectangular de 9 V rinde poco (<250 mAh); usa mejor un portapilas 6×AA Ni-MH o Li-ion 2S para mayor autonomía forum.arduino.ccforum.arduino.cc |
Cables dupont y tornillería | — | — |
- Esquema de conexiones
Esquema conexion
Pines sugeridos
Componente | Pin Arduino | Comentario |
---|---|---|
Sensor izquierdo | A0 | digitalRead() |
Sensor derecho | A1 | digitalRead() |
L298N ENA | D5 (PWM) | Velocidad motor A |
L298N IN1 | D2 | Sentido motor A |
L298N IN2 | D3 | Sentido motor A |
L298N IN3 | D4 | Sentido motor B |
L298N IN4 | D7 | Sentido motor B |
L298N ENB | D6 (PWM) | Velocidad motor B |
Conecta VCC de los sensores a +5 V del Arduino y GND común. La salida digital de cada TCRT5000 va a su pin analógico sólo a modo de entrada digital (puedes cambiar por otros pines digitales libres).
Código Arduino completo
/* Control Bluetooth Turbobot Desarrollado por RDC - Robotica de Colombia Visitanos: www.facebook.com/roboticadecolombia www.youtube.com/@RoboticadeColombia www.instagram.com/roboticadecolombia/ Mercadolibre: www.mercadolibre.com.co/perfil/ROBOTICADECOLOMBIA */ #define ENA 5 // PWM Motor A #define IN1 2 #define IN2 3 #define IN3 4 #define IN4 7 #define ENB 6 // PWM Motor B #define SENSOR_LEFT A0 #define SENSOR_RIGHT A1 const uint8_t BASE_SPEED = 150; // 0-255 const uint8_t TURN_FACTOR = 75; // reducción al girar void setup() { pinMode(ENA, OUTPUT); pinMode(ENB, OUTPUT); pinMode(IN1, OUTPUT); pinMode(IN2, OUTPUT); pinMode(IN3, OUTPUT); pinMode(IN4, OUTPUT); pinMode(SENSOR_LEFT, INPUT); pinMode(SENSOR_RIGHT, INPUT); Serial.begin(9600); } void loop() { bool left = digitalRead(SENSOR_LEFT) == LOW; // LOW = línea detectada bool right = digitalRead(SENSOR_RIGHT) == LOW; if (left && right) { // Sobre la línea forward(BASE_SPEED); } else if (left && !right) { // Línea a la izquierda turnLeft(); } else if (!left && right) { // Línea a la derecha turnRight(); } else { // Línea perdida stopMotors(); } } /*─── Funciones de movimiento ───*/ void forward(uint8_t speed) { analogWrite(ENA, speed); analogWrite(ENB, speed); digitalWrite(IN1, HIGH); digitalWrite(IN2, LOW); digitalWrite(IN3, HIGH); digitalWrite(IN4, LOW); } void turnLeft() { // rueda derecha más rápida analogWrite(ENA, BASE_SPEED - TURN_FACTOR); analogWrite(ENB, BASE_SPEED); digitalWrite(IN1, HIGH); digitalWrite(IN2, LOW); digitalWrite(IN3, HIGH); digitalWrite(IN4, LOW); } void turnRight() { // rueda izquierda más rápida analogWrite(ENA, BASE_SPEED); analogWrite(ENB, BASE_SPEED - TURN_FACTOR); digitalWrite(IN1, HIGH); digitalWrite(IN2, LOW); digitalWrite(IN3, HIGH); digitalWrite(IN4, LOW); } void stopMotors() { analogWrite(ENA, 0); analogWrite(ENB, 0); }
Ajustes opcionales
- Invertir lógica si la pista es blanca sobre fondo oscuro: cambia la comparación
== LOW
por== HIGH
. - Incrementa
BASE_SPEED
si el robot avanza muy lento; ajustaTURN_FACTOR
para giros más cerrados.
El algoritmo se basa en lógica condicional sencilla inspirada en ejemplos de dos sensores y puede mejorarse con un control proporcional (PID).
4. Pruebas rápidas
- Coloca el Multicarbot sobre la línea y enciéndelo.
- Observa si avanza recto; si serpentea demasiado, aumenta
TURN_FACTOR
. - Si se detiene, revisa que los sensores lean correctamente: con el monitor serie imprime los valores y confirma que cambian a LOW sobre la línea. projecthub.arduino.cc
Inserta aquí un video corto mostrando el robot siguiendo la línea (bloque Video).
5. Resolución de problemas comunes
Síntoma Posible causa Solución Robot se detiene tras pocos segundos Batería 9 V agotada (alta caída de tensión) Usa pack de AA Ni-MH o batería Li-ion 7,4 V 18650 Gira en un solo sentido Sensor del lado contrario está demasiado alto Ajusta altura a ~5 mm del suelo Motores no responden ENA/ENB sin PWM o L298N sin puente ENA/ENB a 5 V Verifica puente y pines Vibración excesiva Ruedas o ejes desalineados Asegura transmisiones de los motores TT
6. Marcadores multimedia
Para facilitar la edición en Gutenberg, sustituye los bloques siguientes por tus propios recursos:
<!-- BLOQUE IMAGEN: FotoMontajeSensores -->
<!-- BLOQUE VIDEO: DemoSeguimientoLinea -->
<!-- BLOQUE IMAGEN: EsquemaConexiones -->
Siguientes pasos
Con este tutorial tu Multicarbot ya sigue líneas usando un sistema minimalista de dos sensores. Como reto adicional, implementa un PID para giros más suaves y añade más sensores para mejorar la precisión en curvas cerradas. ¡Comparte tus resultados en la comunidad de Robótica de Colombia!
Debes ser conectado to post a comment.