Acerca de este proyecto
Este es mi segundo robot seguidor de línea (versión 4). A diferencia del anterior, yo he realizado el diseño del circuito impreso utilizando EasyEDA. Este circuito impreso actúa como el chasis del robot. La fabricación de PCB ha sido realizada por JLCPCB y debo decir que superaron mis expectativas con una calidad impresionante y un envío en un tiempo récord.
El siguiente video muestra el resultado final del prototipo en el que he incluido los modelos 3D diseñados en TinkerCAD.
En el siguiente video muestro las pruebas realizadas con el Mini Motor Driver (MX1508).
En el siguiente video muestro las pruebas con los 8 sensores CNY70. Estos sensores se miden de forma analógica, a través de los puertos A0 a A7 del Arduino Nano. Utilizo un algoritmo inicial para calibrar los sensores normalizando el rango de 0 a 1000, donde 0 representa el fondo blanco y 1000 la línea negra. Al completar la calibración, ingresa al lazo e inicia el ciclo de lectura, calculando la posición de 0 a 7000, que representa el sensor izquierdo al sensor derecho respectivamente. Este valor de posición se utiliza para calcular el error proporcional P. El rango de P es de -3500 (izquierda) a 3500 (derecha), siendo 0 el valor central. El algoritmo memoriza el valor de la posición del último sensor (izquierdo o derecho) que detectó la línea negra, esto con el propósito de utilizar estos datos para acciones de frenado y recuperación de línea.
La prueba final con el circuito montado al 95%, se muestra en el siguiente video. Una última prueba de amperaje con un consumo máximo de 200 mA.
Esta es la última versión del circuito impreso del robot, lista para ser fabricada en JLCPCB.
Este es el unboxing.
En el tramo final y ya con el total de piezas, muestro el montaje de mi primer Robot Speed Follower.
Finalmente y con mucho esfuerzo ya tengo el prototipo totalmente construido, a continuación muestro cómo cargar el código (Code Load Mode), cómo se pueden probar los sensores y por supuesto las pruebas en pista. Muy contento con la operación, el código de prueba logra controlar muy bien el código. He utilizado un algoritmo PID (completo) para suavizar las correcciones y recuperar el curso de la línea. Como todo se puede mejorar, seguiré jugando con el código para lograr una versión más eficiente.
Como complemento, realicé la simulación de este robot en la aplicación Webots. Aún está en proceso de mejora pero les comparto este video para que puedan apreciar una forma de realizar pruebas mecánicas y lógicas (Código) para controlar un robot en un entorno virtual y que ayude a entender el funcionamiento de un robot construido físicamente.
Código
Código para controlar Speed Line Follower Robot V4
https://github.com/DrakerDG/Speed-Line-Follower-Robot/commit/12a807aed92c570dce12452064a5d6fe5053cb71