You are on page 1of 6

Fundación Universitaria de San Gil. UNISANGIL.

Facultad de Ciencias Naturales e Ingeniería
Ingeniería Electrónica.
Yopal - Casanare

Abstract— Make a robot follow a line has many utilities such as de programación y que mejor forma de hacerlo que
tracing paths with lines for robots move on these roads while introduciéndonos en el amplio campo de la robótica
performing some task. Line followers can be built with one light concursando y poniendo en práctica los conocimientos y
sensor, or two, or a dozen or however many you happen to have. habilidades adquiridas.
In general, the more light sensors you have the better you can
follow a line. Here we'll limit ourselves to four single light sensor.
Even with a single sensor we should be able to build a robot that
II. DESCRIPCION TECNICA
can track the line very precisely even if the line has curves in it.
The thing you usually loose with a single sensor is the ability to
follow the line while moving fast. Often, the more sensors you A. Objetivos de diseño
have the faster the robot can move while it follows the line.

Resumen - Hacer un robot siga una línea tiene muchas utilidades - Realizar el diseño de un robot seguidor de línea buscando
como el seguimiento de las trayectorias con líneas de robots se que sea económico pero muy preciso.
mueven en estos caminos mientras se realiza alguna tarea. seguidores
de línea se pueden construir con un sensor de luz, o dos, o una - Implementar la programación y control del seguidor
docena o sin embargo muchos le sucede que tiene. En, los sensores mediante control proporcional.
más generales de luz tenga, mejor se puede seguir una línea. Aquí nos
- Verificar el funcionamiento adecuado del seguidor
limitaremos a cuatro sensor de luz sola. Incluso con un único sensor
que debemos ser capaces de construir un robot que puede realizar un eliminando al máximo cualquier margen de error.
seguimiento de la línea de forma muy precisa, incluso si la línea tiene
curvas en ella. Lo que por lo general suelta con un solo sensor es la
capacidad de seguir la línea mientras se mueve rápido. A menudo, B. Estructura mecánica del robot
los más sensores que tienen el más rápido que el robot puede
moverse mientras se sigue la línea. La estructura mecánica de nuestro seguidor de línea está
realizada en vaquela o (PCB) con el circuito impreso para
Key words— Error, motors, proportional controller, Sensors turn
reducir el peso de nuestro robot y evitar así la reducción de
la velocidad y algún tipo de incidente por cables sueltos.
I. INTRODUCCION Esta misma sirve de soporte para los demás componentes
de nuestro robot como lo son: arduino nano, puente H,
Hacer que un robot siga una línea tiene muchas utilidades
motores, sensores, ruedas entre otros.
como por ejemplo la de trazar caminos con líneas para que los
robots se muevan sobre estos caminos mientras realizan
alguna tarea. A simple vista parece algo sencillo de hacer pero
tiene algunos detalles que complican un poco las cosas. En
este documento se mostrara la forma de hacer que el robot,
equipado con cuatro sensores de luz, siga una línea. Se partirá
de la solución trivial la cual se irá mejorando hasta obtener un
resultado aceptable, pero no el mejor posible. El resultado
final será la implementación de un controlador proporcional
encargado de guiar al robot. El controlador se programará con
ARDUINO NANO. Como mencionamos es un resultado
aceptable pero susceptible de ser mejorado, ya sea mediante
un ajuste más preciso de los parámetros del controlador
proporcional o mediante el uso de controladores más
sofisticados. Se decidió realizar este robot seguidor ya que
como estudiantes de ingeniería electrónica queremos aprender
Fundación Universitaria de San Gil. UNISANGIL.
Facultad de Ciencias Naturales e Ingeniería
Ingeniería Electrónica.
Yopal - Casanare

Fig. 1: Foto del robot seguidor de línea terminado. E. Electrónica del robot
C. Sistema Sensorial Nuestro objetivo es que el robot siga la línea negra, Un
En el diseño de este robot seguidor se implementaron 4 dispositivo móvil que puede seguir una línea demuestra todas
sensores de luz QRD1114, Este sensor utiliza un diodo emisor las características de un verdadero robot. Utiliza el sensor para
infrarojo en combinación con un fototransistor infrarojo para recoger información sobre el mundo alrededor de él y cambia
detectar las señales infrarojas. Sirve para detectar transiciones su comportamiento dependiendo de esa información. En lugar
Negro-Blanco (robots sigue-líneas) o para detectar objetos de seguir la línea lo que realmente tenemos que hacer es
cercanos (0.5 a 1 cm). La señal emitida por este sensor es de seguir un borde de esta, Seguir un borde significa que
tipo análogo. seguiremos algún nivel de luz que este entre el color de la
línea y el color del suelo (superficie donde se dibuja la línea).
Por ejemplo: Si nuestro piso es blanco y para blanco el sensor
retorna digamos 50 (por poner un número) y la línea es negra
y para negro el sensor retorna digamos 40, entonces nuestro
robot tendría que seguir el 45 que representaría un borde de la
línea, una especie de "gris", entre blanco y negro (50+40)/2.
Teniendo en cuenta lo dicho podríamos definir un rango de
valores como el siguiente:

Fig. 2: sensores de luz QRD1114

D. Sistema de tracción
Los motores que fueron usados en este robot son motor
reductores DC de 6V a 250 rpm de GEAR MOTORS, se
escogio este tipo de motor ya que se adapta a nuestras De esta forma si el sensor retorna más de 45 (estaríamos sobre
necesidades pues su tamaño es apropiado y su peso es la línea) giramos hacia la izquierda, y si por el contrario el
reducido, la potencia de los motores esta controlado mediante sensor retorna menos de 45 (nos estaríamos alejado de la
un integrado Puente H. línea) entonces giramos hacia la derecha. Teniendo en cuenta
que conocemos que es lo que queremos que el robot haga
procedemos a idealizar el codigo fuente de programación
Este se realizó con un ARDUINO NANO, sus
especificaciones son:

Microcontrolador Atmel ATmega168 o ATmega328
Nivel lógico de operación de voltaje 5V
Voltaje de entrada (recomendado) 7-12V
Voltaje de entrada (limite) 6-20V
Pines I/O digital: 14 (6 proveen salida con PWM)
Pines de entrada análogos: 8
Corriente DC por pin I/O: 40ma
Fig.3: Motor reductor DC de 6v a 250rpm Memoria rápida: 16KB(ATmega168) o 32KB(ATmega328)
Sram: 1KB(ATmega168) o 2KB(ATmega328)
EEPROM: 512 bytes(ATmega168) o 1KB(ATmega328)
clock speed 16MHZ
dimensiones: 0.73x1.70 in
Fundación Universitaria de San Gil. UNISANGIL.
Facultad de Ciencias Naturales e Ingeniería
Ingeniería Electrónica.
Yopal - Casanare

longitude 45mm
ancho 18mm
peso: 5g.

Fig. 4: Arduino Nano

F. Sistema de alimentación
Para el funcionamiento de este robot hemos utilizado 2
baterías recargables tipo lipo de 3.7V a 400mA en serie para Fig. 6: Seguidor de línea proporcional; Lectura del sensor de
que se aumente el voltaje y mantenga las corriente y así luz.
mismo alimente el arduino nano, adicional a esto en nuestro
circuito tenemos un regulador de voltaje 7805 para que al En un seguidor de línea proporcional la vuelta varía
puente H le lleguen los 5 voltios que requiere para su suavemente entre dos límites. Si la lectura del sensor de luz
adecuado funcionamiento evitando algún tipo de daño en el o dice que estamos cerca de la línea entonces hace un pequeño
en los motores. giro. Si estamos lejos de la línea hacemos una vuelta grande.
Proporcional es un concepto importante. Proporcional
significa que existe una relación lineal entre dos variables.
Para ponerlo aún más simple, proporcional significa un
gráfico de las variables entre sí produce una línea recta (como
en el gráfico de arriba).

Como ustedes saben, la ecuación de una recta es:

y = mx + b

Donde y es la distancia hacia arriba (o abajo) el eje y, x la
distancia en el eje x, m es la pendiente de la recta y b es el
Fig. 5: Batería
intercepto de Y, el punto donde la línea cruza el eje y cuando x
G. Programación del robot
es cero. La pendiente de la recta se define como el cambio en
el valor de y dividido por el cambio en el valor de x con
cualquier par de puntos en la línea.

Es fácil de hacer. Para los 40 y 50 luz valor gama solo
restamos 45 (que es el promedio de 40 y 50, (40 + 50) / 2) de
todas nuestras lecturas de luz. Llamaremos a ese resultado el
error. Por lo tanto, si el valor ligero es 47 nos reste 45 y sale
un error= 2. El error nos dice que tan lejos estamos del borde
de la línea,Si el sensor de luz esta exactamente en el borde de
la línea nuestro error es cero puesto que el valor ligero es 45 y
restamos 45 de todas nuestras lecturas. Si el sensor está
completamente en blanco nuestro error es + 5. En el negro el
error es de -5.
Fundación Universitaria de San Gil. UNISANGIL.
Facultad de Ciencias Naturales e Ingeniería
Ingeniería Electrónica.
Yopal - Casanare

constante, lo que significa que el sensor de luz de lectura ya
no es proporcional al error.

En la literatura de PID el rango sobre el cual el sensor da una
respuesta proporcional se llama "gama proporcional" El
rango proporcional es otro concepto muy importante en PID.
En nuestro seguidor de linea el rango proporcional para el
sensor de luz es 40 a 50, el error es de 4:55. Nuestros motores
tienen también una gama proporcional, desde -100 (plena
potencia hacia atrás) a 100 (máxima potencia hacia adelante).
Sólo diré un par de cosas acerca de él la importancia de la
gama proporcional:

El sensor tiene que estar muy cerca del borde de la línea para
obtener una lectura que no sea "blanco" o "negro". el sensor
de luz sólo necesita mantenerse dentro de +-1/2 pulgada del
borde de línea para mantener una salida proporcional.

Desde P a los niveles de energía real del motor

Una manera de hacer las vueltas es definir un"Target power
nivel", que voy a llamar «Tp». TP es el nivel de potencia de
Fig. 7: Seguidor de línea proporcional; Lectura del error. ambos motores cuando el robot se supone que siga recto, lo
En el gráfico anterior he cambiado de puesto el eje mediante que hace cuando el error = 0. Cuando el error no es cero,
la conversión a escala de un error. Puesto que la línea ahora utilizamos la ecuación de vuelta = K *(error) para calcular
cruza el eje y en cero ese hombre b es cero y la ecuación de la cómo cambiar los niveles de potencia para los dos motores.
línea es un poco más simple; Un motor conseguirá un nivel de potencia de Tp+girar, el
y = mx otro motor conseguirá un nivel de potencia de Tp. Nota que
Vuelta = m *error desde nuestro error es 4:55 que significa girar puede ser
positivo o negativo que corresponde a vueltas en direcciones
No pero define lo que significa el eje de giro, así que por
opuestas. Resulta que eso es exactamente lo que queremos ya
ahora sólo diremos la gama de vueltas de -1 (dura vuelta a la
que ajustará automáticamente el motor correcto como el motor
izquierda) a + 1 (dura vuelta a la derecha) y un cero a su vez
rápido y uno lento motor. Un motor (asumiremos que es el
significa que vamos directamente. La pendiente de la línea en
motor del robot conectado a Puerto A la izquierda) siempre
el gráfico anterior se puede calcular utilizando los dos puntos recibirá el Tp+ valor devuelta como su nivel de potencia.
marcados en rojo (dos puntos cualesquiera sobre la línea Otros motor (lado derecho del robot, Puerto C) siempre
funcionará); pendiente = m = (cambio en y) / (cambio en x) = conseguirá Tp-gire como su nivel de potencia. Si el error es
(1-(-1)) / (-5-5) = 10/2 = - 0.2 positivo entonces gire es positivo y Tp+girar es mayor que el
Tp y el motor izquierdo se acelera mientras que desacelera el
La pendiente es una constante de proporcionalidad y es el
motor adecuado. Si el error cambia de signo y se convierte en
factor que se debe multiplicar el error (valor x) a convertir en
negativo (lo hemos cruzado de la línea borde y son "ver
una vuelta (y valor). Eso es una cosa importante para
negro") y luego Tp+vuelta es ahora menor que Tp y el motor
recordar. La "pendiente" tiene unos nombres que todos
izquierdo se frena y acelera el motor adecuado puesto que
significan lo mismo, al menos en este contexto se llama "K “
Vuelta de Tp es mayor que el TP. (Recordar que la negativa
Vuelta = K* (error) de una negativa es positiva).
1) Pseudo código para un controlador P
El valor de vuelta es la salida de nuestro controlador P y se
llama el "término de P" ya que este es solo un controlador Primero tenemos que medir los valores que el sensor de luz se
proporcional. Una vez que el sensor de luz esta demasiado vuelve blanco y negro. De esos dos números se puede calcular
lejos del borde de la linea comienza a dar una lectura el offset, es decir, la cantidad a restar una cruda luz de lectura
Fundación Universitaria de San Gil. UNISANGIL.
Facultad de Ciencias Naturales e Ingeniería
Ingeniería Electrónica.
Yopal - Casanare

para convertirla en un valor de error . El offset es moviendo demasiado rápido. Si Tp es muy pequeña entonces
simplemente el promedio de las lecturas del blancos y negros. casi cualquier valor de Kp funcionará ya que el robot se
Por simplicidad, supondré que el desplazamiento ya ha sido moverá muy lentamente. El objetivo es conseguir que el robot
medido y almacenado en una variable llamada offset. (Una móvil tan rápido como sea posible mientras que todavía
bonita actualización sería tener el robot medir los niveles de siendo capaz de seguir la línea de interés.
blancos y negros y calcular el offset.)
Habíamos estimado un valor inicial de Kp de 10. Para Tp
También necesitaremos una ubicación de almacenamiento podría empezar en incluso inferior al sugerido, quizás 15 (el
para la constante K , que llamaremos Kp (onstant Kpara el robot se moverá muy lento). Intentarlo y ver cómo funciona.
controlador de roportional de p). Y una suposición inicial en Si pierdes la línea porque el robot parece hacer inactivo
cuanto a lo que debería ser Kp . Hay muchas maneras de entonces incrementar Kp por una pareja e inténtelo de nuevo.
conseguir ese primer valor Kp . Pueden adivinar y luego Si pierdes la línea porque el robot parece hiperactivo en la
afinarla por ensayo y error. O, usted puede intentar calcular un caza y hacia atrás de la línea entonces disminuir Kp. Si el
valor basado en las características del sensor y el robot. Vamos robot parece seguir la línea bastante pues aumentar Tp y ver si
a hacer el último. Usaremos un Tp (poder blanco) de 50, puede seguir la línea a la velocidad más rápida. Para cada
cuando el error es que cero ambos motores se ejecutarán al nuevo Tp que tendrá que determinar un nuevo Kp, aunque Kp
nivel 50. Los rangos de error de -5 a + 5. A suponemos que generalmente no va a cambiar demasiado.
queremos el poder para ir de 50 a 0 cuando el error pasa de 0 a
-5. Esto significa que el Kp (Recuerde que la pendiente, el Siguiendo una línea recta suele ser bastante fácil. Siguiendo
cambio en y dividido por el cambio en x) es; una línea con suaves curvas es un poco más difícil. Siguiendo
una línea con curvas muy cerradas es la más difícil. Si el robot
se mueve lento bastante seguido casi cualquier línea puede ser,
KP = (0 - 50) / (0 -5) = 10. incluso con un controlador muy básico. Queremos hacer llegar
la siguiente línea buena, buena velocidad y la capacidad para
manejar las esquinas suaves. (Líneas con esquinas agudas
Dos parámetros ajustables del"" y una constante en este suelen tener seguidores de línea más especializadas).
controlador P. La constante es el valor de desplazamiento (el
promedio de las lecturas del sensor de luz blanca y negra). Es probable que el mejor controlador de P será diferente para
Usted tendrá que escribir un programa corto para medir los cada tipo de línea (grosor de línea, agudeza de curvas etc.) y
niveles de luz en su alfombra con su robot. Se necesita un de diferentes robots. En otras palabras, un controlador P (o un
"negro" un valor "blanco". Calcular el promedio y ponerlo en controlador PID para el caso) está ajustado para una clase
el programa de control de P en la variable de desplazamiento particular de línea y robot y no necesariamente trabajar bien
. Casi todos los seguidores de línea requieren que usted (o el en otras líneas o robots. El código funcionará para muchos
código escrito por usted y ejecutado por el robot) hacer este robots (y muchas de las tareas), pero los parámetros Kp, Tp y
paso. offset, tienen que ser ajustados para cada robot y cada
aplicación.
El valor de Kp y el poder del destino Tp son los parámetros
En el proceso de sintonización del controlador P usted se estar
ajustables. Un parámetro configurable debe determinarse por
afinando el valor de Kp hacia arriba y hacia abajo. Del rango
ensayo y error. KP controla cómo rápidamente el controlador
de valores que podrían ser Kp depende de qué hace
intentará volver a la línea de borde cuando ha derivado de ella.
exactamente el controlador P. ¿Cuál es el rango de entrada y
TP controla rapidez el robot móvil a lo largo de la línea.
¿cuál es el rango de salida? Nuestro regulador de seguidor P la
Si la línea es muy recta puede utilizar una gran Tp para línea la gama de la entrada es de 5 unidades de luz, y el rango
conseguir que el robot funcione a alta velocidad y un pequeño de salida es 100 unidades de energía, por lo que parece
Kp para que las vueltas (correcciones) son suaves. probable que Kp será cerca de 100/5 = 20.

Si la línea tiene curvas, especialmente los agudos, habrá un
máximo valor de Tp que funcionará. Si Tp es mayor que
máximo no importa lo que es el Kp , el robot va a perder la
línea cuando se encuentra con una curva porque se está
Fundación Universitaria de San Gil. UNISANGIL.
Facultad de Ciencias Naturales e Ingeniería
Ingeniería Electrónica.
Yopal - Casanare

III. CONCLUSIONES

Se realizó el diseño de un robot seguidor de línea económico
pero muy preciso.
Se implementó la programación y control del seguidor
mediante control proporcional.
Se Verifico el funcionamiento adecuado del seguidor y se
eliminó al máximo cualquier margen de error.
Construir un robot seguidor de línea a simple vista parece un
trabajo sencillo, pero hay que tener en cuenta que debemos
seleccionar excelentes materiales que contribuyan a su buen
funcionamiento, la programación se debe hacer una y otra vez
hasta que el robot funcione

VII. REFERENCIAS
[1].http://robotmexico.com/index.php?
page=shop.product_details&flypage=shop.flypage&product_id
=36&category_id=9&manufacturer_id=0&option=com_virtue
mart&Itemid=54&vmcchk=1&Itemid=54
[2].http://aprender.tdrobotica.co/seguidor-de-
lineaprofesional/http://aprender.tdrobotica.co/seguidor-de-
lineaprofesional/
[3] https://www.arduino.cc/en/Main/ArduinoBoardNano
[4] http://www.lejosconlego.com/feeds/posts/default
[5]http://www.inpharmix.com/jps/PID_Controller_For_Lego_
Mindstorms_Robots.html