¿Cómo hacer un Robot Seguidor de Línea con Arduino? Un robot seguidor de línea, como su nombre indica, es un vehículo guiado automatizado, que sigue una línea visual incrustada en el suelo o el techo. Normalmente, la línea visual es la trayectoria en la que va el robot seguidor de línea y será una línea negra sobre una superficie blanca, pero la otra forma (línea blanca sobre una superficie negra) tambin es posible. !iertos robots avanzados seguidores de linea utilizan el campo magntico invisible en sus caminos. "os robots grandes seguidores de líneas se usan generalmente en industrias para ayudar en el proceso de producci#n automatizado. $ambin se utilizan en aplicaciones militares, en prop#sito de asistencia humana, servicios de entrega, etc. %l &obot seguidor de línea es uno de los primeros robots que los principiantes y los estudiantes realizaran como su primera e'periencia rob#tica.
Diagrama de circuito %n este proyecto, hemos diseado un &obot de seguidor de línea simple con rduino y algunos otros componentes.
Diagrama de bloques del proyecto %l robot seguidor de línea construido en este proyecto se divide en * bloques. "a siguiente imagen muestra el diagrama de bloques del robot seguidor de línea.
Descripción del Diagrama de Bloques +ensores (+ensor &)- emos utilizado el & +ensor /odule como sensor de detecci#n de línea para el proyecto. +e compone de un & "%0 y un fotodiodo y algunos otros componentes como comparador, "%0, etc
!omo se mencion# anteriormente, hemos utilizado un sensor & preensamblado. %n caso de que no tenga uno, puede hacer su propio sensor utilizando el siguiente circuito.
%l funcionamiento del sensor de infrarro1os y su alcance en este proyecto se e'plicará en el funcionamiento real del robot de seguidor de línea. Controlador Arduino !"#$- rduino UN2 es el controlador principal del proyecto. "os datos de los
sensores (& +ensors) se entregará a rduino y dará las seales correspondientes al /otor 0river !. %otor Dri&er L'()D$* "3450 /otor 0river ! se utiliza en este proyecto para impulsar los motores
del robot. &ecibe seales de rduino basadas en la informaci#n de los +ensores &. Nota- "a fuente de alimentaci#n de los motores debe ser dada por el ! del motor. 6or lo tanto, eli1a la fuente de alimentaci#n adecuada que es suficiente para todos los componentes, incluidos los motores. %otores +eared %otors$* emos utilizado dos motores engranados en la parte trasera del robot
seguidor de línea. %stos motores proporcionan más torque que los motores normales y pueden ser usados para transportar cierta carga tambin.
,uncionamiento del Robot Seguidor de Línea con Arduino %n este proyecto, hemos diseado un robot seguidor de linea basado en rduino. %l funcionamiento del proyecto es bastante simple- detectar la línea negra en la superficie y moverse a lo largo de esa línea. %l traba1o detallado se e'plica aquí. !omo se menciona en el diagrama de bloques, necesitamos sensores para detectar la línea. 6ara la l#gica de detecci#n de línea, hemos utilizado dos sensores &, que consiste en & "%0 y 6hotodiode. +e colocan de una manera reflectante, es decir, lado a lado, de manera que cada vez que llegan a la pro'imidad de una superficie reflectante, la luz emitida por el "%0 & será detectada por el fotodiodo. "a siguiente imagen muestra el funcionamiento de un típico +ensor & (& "%0 7 6ar de fotodiodos) delante de una superficie de color claro y una superficie negra. medida que la reflectancia de la superficie de color claro es alta, la luz infrarro1a emitida por el "%0 & será refle1ada al má'imo y será detectada por el 8otodiodo
%n el caso de la superficie negra, que tiene una ba1a reflectancia, la luz se absorbe completamente por la superficie negra y no llega al fotodiodo. Utilizando el mismo principio, configuraremos los sensores de & en el &obot de seguidor de línea de tal manera que los dos sensores & estn en ambos lados de la línea negra en el piso. continuaci#n se muestra la configuraci#n.
!uando el robot se mueve hacia delante, ambos sensores esperan a que se detecte la línea. 6or e1emplo, si el +ensor & 9 de la imagen anterior detecta la línea negra, significa que hay una curva a la derecha (o vuelta) por delante. rduino UN2 detecta este cambio y envía la seal al controlador del motor en consecuencia. 6ara girar a la derecha, el motor en el lado derecho del robot se ralentiza con 6:/, mientras que el motor en el lado izquierdo se e1ecuta a velocidad normal.
0el mismo modo, cuando el sensor & 3 detecta la línea negra en primer lugar, significa que hay una curva a la izquierda por delante y el robot tiene que girar a la izquierda. 6ara que el robot gire a la izquierda, el motor en el lado izquierdo del robot se ralentiza (o puede detenerse completamente o se puede girar en sentido opuesto) y el motor en el lado derecho se e1ecuta a velocidad normal. rduino UN2 monitorea continuamente los datos de ambos sensores y guia al robot seg;n la línea detectada por ellos.
CÓDIGO: int mot1=9; int mot2=6; int mot3=5; int mot4=3; int left=13; int right=12; int Left=0; int Right=0; oi! L"#$ %oi!&; oi! RIG'$ %oi!&; oi! ($O) %oi!&;
oi! *et+,%& ,in.o!e%mot1/O$)$&; ,in.o!e%mot2/O$)$&; ,in.o!e%mot3/O$)$&; ,in.o!e%mot4/O$)$&; ,in.o!e%left/I)$&; ,in.o!e%right/I)$&; !igitlrite%left/'IG'&; !igitlrite%right/'IG'&; oi! loo,%& nlogrite%mot1/255&; nlogrite%mot2/0&; nlogrite%mot3/255&; nlogrite%mot4/0&; hile%1& Left=!igitlRe!%left&; Right=!igitlRe!%right&; if%%Left==0 Right==1&==1& L"#$%&; el*e if%%Right==0 Left==1&==1& RIG'$%&; oi! L"#$ %oi!& nlogrite%mot3/0&; nlogrite%mot4/30&; hile%Left==0& Left=!igitlRe!%left&; Right=!igitlRe!%right&; if%Right==0& int l,re=Left; int r,re=Right; ($O)%&; hile%%%l,re==Left&%r,re==Right&&==1& Left=!igitlRe!%left&; Right=!igitlRe!%right&; nlogrite%mot1/255&; nlogrite%mot2/0&;
nlogrite%mot3/255&; nlogrite%mot4/0&; oi! RIG'$ %oi!& nlogrite%mot1/0&; nlogrite%mot2/30&; hile%Right==0& Left=!igitlRe!%left&; Right=!igitlRe!%right&; if%Left==0& int l,re=Left; int r,re=Right; ($O)%&; hile%%%l,re==Left&%r,re==Right&&==1& Left=!igitlRe!%left&; Right=!igitlRe!%right&; nlogrite%mot3/255&; nlogrite%mot4/0&; nlogrite%mot1/255&; nlogrite%mot2/0&; oi! ($O) %oi!& nlogrite%mot1/0&; nlogrite%mot2/0&; nlogrite%mot3/0&; nlogrite%mot4/0&;