You are on page 1of 22

Ao del Buen Servicio al Ciudadano

UNIVERSIDAD NACIONAL PEDRO RUZ


GALLO
FACULTAD DE CIENCIAS FSICAS Y MATEMTICAS

ESCUELA PROFESIONAL:
Ingeniera Electrnica

CURSO:
Control I

DOCENTE:
Mg. Sandra Lisette Aznarn Guevara

ALUMNOS:
Balarezo Quesquen Anthony
Solorzano Larreatigue Leo Jair
Paredes Mendoza Angel
Ramrez Agurto Tito
Ramrez Snchez Robinson
Snchez Benavides Jasson
Tiravanti Daz Miguel
Tume Samam Junior
Tullume Farroay Junior
Verona Flores Pal

CICLO ACADMICO:
2016-II
ROBOT SEGUIDOR DE LINEA

1. INTRODUCCIN:
Hoy en da en las empresas de mayor reconocimiento mundial, en algunos organismos
polticos, en recintos histricos e incluso religiosos podemos observar la actividad y
trabajo de robots; maquinas hechas por el hombre que se encargan de facilitar o incluso
realizar completamente las tareas humanas de mayor riesgo, peligro y esfuerzo. Tareas
que para el hombre resultan difciles, cansadas e incluso mortales, tareas que necesitan
ms de una persona lo cual econmicamente genera gastos, las empresas u organismos
de cualquier ndole lo que buscan hoy en da es reducir gastos, pero no disminuir la
calidad de sus trabajos o productos.

Solamente a un sistema motorizado que tome decisiones mediante sensores se le puede


llamar robot. Los robots reducen el trabajo del hombre, costos y tiempo en la vida
empresarial, trabajan con eficiencia y en periodos largos de tiempo.

En el siguiente informe presentamos la elaboracin y programacin de un robot seguidor


de lnea. Est basado en un "Arduino Nano", "Sensores QTR 8RC Pololu", "Driver
drv8833 Pololu" y "Micromotores Pololu 30:1".

2. OBJETIVOS:
Construir un robot seguidor de lnea, que funcione mediante sensores y usando
componentes necesarios que para mejorar su rendimiento.
Profundizar en el estudio y desarrollo tecnolgico, despertando la creatividad,
imaginacin y motivacin en los estudiantes de la Escuela Profesional de
Ingeniera Electrnica UNPRG.
Conocer ms acerca de la robtica, as como analizar las ventajas y desventajas
de los robots.
3. MARCO TEORICO:

3.1. LA ELECTRNICA

La electrnica es la rama de la fsica que estudia y emplea sistemas cuyo funcionamiento


se basa en la conduccin y el control del flujo de los electrones u otras partculas
cargadas elctricamente, desde las vlvulas termoinicas hasta los semiconductores. El
diseo y la construccin de circuitos electrnicos para resolver problemas prcticos, forma
parte de los campos de la Ingeniera electrnica, electromecnica y en el diseo de
software en su control la Ingeniera informtica. El estudio de nuevos dispositivos
semiconductores y su tecnologa se suele considerar una rama de la Fsica y qumica
relativamente.

3.2. LA ROBTICA

La robtica es la ciencia y la tecnologa de los robots. Se ocupa del diseo, manufactura y


aplicaciones de los robots. La robtica combina diversas disciplinas como son: la
mecnica, la electrnica, la informtica, la inteligencia artificial y la ingeniera de control.
Otras reas importantes en robtica son el lgebra, los autmatas programables y las
mquinas de estados.

3.3. LEYES DE LA ROBTICA

A lo largo de la historia han surgido leyes para esta ciencia a partir de la proteccin de los
seres humanos. Las tres leyes de la robtica son un conjunto de normas escritas por
Isaac Asimov, las cuales todo robot debe cumplir:

1. Un robot no debe daar a un ser humano o, por su inaccin, dejar que un ser
humano sufra dao.
2. Un robot debe obedecer las rdenes que le son dadas por un ser humano, excepto
si estas rdenes entran en conflicto con la Primera Ley.
3. Un robot debe proteger su propia existencia, hasta donde esta proteccin no entre
en conflicto con la Primera o la Segunda Ley.

3.4. COMPONENTES BSICOS DE UN ROBOT


Los robots seguidores de lnea (o robots rastreadores) cumplen una nica misin: seguir
una lnea marcada en el suelo (normalmente una lnea negra sobre un fondo blanco o
lnea blanca en fondo negro). Estos robots pueden variar desde los ms bsicos (van tras
una lnea nica) hasta los robots que recorren laberintos.

3.5. MATERIALES
QTR 8RC (matriz de 8 sensores de la casa Pololu)

Bsicamente
estos
sensores se utilizan en pines digitales,
tambin se pueden utilizar en pines
analgicos pero previamente
configurados como digitales. Es por ello
que estos sensores son muy verstiles y
adems tienen una mayor distancia en
sensado a comparacin de los
analgicos).

La forma de funcionamiento de estos sensores se fundamenta en base del principio de


carga y descarga del condensador que est en serie con los foto-transistores, cuando
est sobre una superficie blanca el capacitor tendera a no retener carga por lo tanto la
salida ser de 0 volts, pero por el contrario, si se encuentra en una superficie oscura
(cuerpo oscuro absorbe luz), el foto transistor no saturara, de esta forma el capacitor
retendr carga, produciendo un voltaje positivo. Previamente se tiene que configurar los
pines respectivos del micro controlador como salida mandando un pulso de unos cuantos
micro-segundos, y luego despus de mandar el pulso configurarlo como entrada
haciendo una lectura digital, esto se debe hacer continuamente en un bucle para obtener
datos de sensado.
Es as como se puede saber si est en una superficie blanca o negra. Estos sensores ya
cuentan con una librera en arduino que hace todo este procedimiento de forma
automtica, solo tendremos que declarar los pines que utilizaremos y haremos los
llamados a las respectivas funciones de calibrados, funciones de lectura de sensores y
lecturas de posicin que es lo que nos interesa para el algoritmo de control del robot
seguidor de lnea.

Arduino (nano)

En teora se podra utilizar cualquier arduino, pero


lo recomendable para un robot seguidor de lnea
(que por lo general son muy livianos) es utilizar un
arduino nano o mini pro. En nuestro caso
utilizamos el arduino nano ya que nos permitira
cargar el programa directamente desde el USB,
pero en el caso del mini pro se necesita un
convertido USB serial aparte para cargar el
programa, pero la ventaja del mini pro es que es
mucho ms pequeo y liviano que el arduino
nano.

Una recomendacin es que pueden utilizar los pines analgicos (A0, A1, A2, A3, A4, A5)
del arduino para las lecturas de los sensores, ya que estos no cuentan con mdulos
extras como el que traen los pines digitales como: pwm, interrupcin, de comunicacin
serial, spi, etc.

Nota:

En el caso del pines analgico A6 y A7 del arduino nano, no es posible configurarse como
pines digitales, pues segn el datasheet estos pines solo son bypass analgicos, por lo
que solo es posible utilizarse para lecturas analgicas.
Micro Metal Gearmotor (motores con reductora de la casa Pololu)

Este es elemento principal y crtico que determinara las


caractersticas de nuestro robot, ya que de l depender el
desempeo del robot, se debe considerar que tipo de
reduccin, consumo y torque que posee, por lo general se
utilizan los " High Power" o "HP" con reducciones de 10:1 y
30:1. La reduccin se refiere a cuantas vueltas dar el motor
para que los engranajes produzcan una vuelta a la salida del
eje. Se le suelen llamar a los engranajes como reductoras,
pues obviamente reducen la velocidad a la salida del motor.
La ventaja que conlleva tener una reductora, es que al reducir las revoluciones del motor,
se convertir en una mayor torque, o lo vulgarmente decimos "fuerza". Es decir, un motor
de reduccin 10:1 utilizar engranajes que reducen 10 vueltas del motor en un 1
produciendo un torque relativamente mayor, por ejemplo:

Un motor de reduccin 10:1 tendr mucha ms velocidad que un motor 30:1, pero
poseer menor torque que el motor 30:1. He aqu el dilema Qu tipo de motor utilizar?
Pues si tienes un robot que te va a salir un poco pesado, es decir que este por 200 a 400
gramos, puedes utilizar los motores 30:1. Pero en cambio si tienes un robot liviano de
unos 100 gramos, puedes utilizar uno de reduccin 10:1.

Lo anterior fue una parte de lo que debemos tener en cuenta para el motor del robot,
Ahora est el consumo de los motores. Pololu, empresa de venta de articulos para
robtica, posee 3 tipos de motores, los de consumo: High Power o HP, Medium Power MP
y los Low Power LP.

Los HP tienen consumos de corriente de 120mA libre a 1600 mA en paro


obteniendo mayores revoluciones por minuto 10:1 -> 3000 rpm, 30:1 -> 1000
rpm.
Los MP tienen consumos de 40mA libre a 700mA en paro obteniendo revoluciones
relativamente altas 10:1 -> 2200 rpm, 30:1 -> 730 rpm
Los LP tienen consumos de 40mA libre a 360mA en paro obteniendo revoluciones
bajas pero a menor consumo 10:1 -> 1300 rpm, 30:1 -> 440 rpm

En el caso de nuestro robot, utilizamos motores 30:1 HP 1000 rpm.


Driver de motor

Hasta la fecha no existe un micro controlador que sea capaz de entregar ms de 100mA,
por lo que el driver de motor seguir siendo una opcin obligatoria. Los driver que se
pueden utilizar son los siguientes:

TB6612FNG. Este driver posee 2 canales (para dos


motores) es capaz de entregar 1 amperio continuo de
corriente y 3 A pico por canal. soporta hasta los 13 Voltios y
va bien con los motores HP.
En nuestro caso usaremos este driver.

DRV8833. Este driver es de 2 canales y entrega una corriente de 1.2A continuos


y 2A pico por cada canal soporta hasta 10.8 Voltios, este driver es simple de
utilizar, cuenta con los pines necesarios para el control de cada motor, a un pin lo
puedes usar para dar el sentido de giro al motor y
al otro para el pwm, cumple su propsito muy
bien, se utiliza para motores MP.

Llantas

Solarbotics RW2. Estas llantas son lo mejor que tiene pololu, no es lo ideal pero
se pueden conseguir otras opciones, esto ya depende de
cada uno, as que para empezar estas llantitas van bien,
pero no son lo ideal.
Estas llantitas se acoplan bien a los micros motores de
pololu as que no hay problema hasta.

Batera
Las bateras de lipo son siempre la mejor opcin, lo recomendable es que sean de 7.4
voltios, ya que nuestros micros motores funcionan a ese voltaje. Un aspecto importante
tambin es la capacidad A/h (amperios hora que es capaz de entregar la batera antes de
agotarse).

BRAKETS (Pololu)

Sirven para unir los motores con el chasis del robot, estos brackets son estandarizados
para los motores pololu.

4. PROCESO
4.1. USANDO LA LIBRERA QTRSensors

Los sensores QTR8RC necesitan de lneas de E/S digitales para su funcionamiento. No


es necesario usarlos exclusivamente con pines analgicos, aunque la mayora de los
pines analgicos de un micro controlador tambin pueden ser configurados como
digitales, en comparacin con los QTR8A, que si utilizan entradas exclusivamente
analgicas (Esa es la ventaja de los QTR8RC de poder ser usados en pines digitales).

Hay que tener en cuenta que los QTR8RC no funcionan de manera analgica, tampoco
de manera completamente digital como se piensa a primer momento (no te va dar "1" y
"0" si los utilizas de manera directa), su funcionamiento se puede decir que es una
combinacin de analgico y digital. Juega con la carga y descarga del condensador
ubicado en el colector del foto-transistor de cada sensor, de esta manera se puede hacer
una medicin del tiempo de carga, y pues para tal tarea no es necesario un pin
analgico, solo basta con uno digital y la librera har el trabajo de obtener esos tiempos y
convertirlos en una medicin cuasi analgica.

Si quizs no puedes comprar este mdulo directamente de Pololu, pues siempre est la
opcin de disear nuestro propio circuito del sensor basndose en el esquema de sensor
pololu, los sensores pueden variar, pueden ser desde utilizar un CNY70 o TCR5000, no
necesariamente el que usa en el modulos qtr8rc (que son los qrd1114).
El transistor mosfet, puede ser fcilmente remplazado por un transistor 2n2222a, que es
un transistor NPN muy comn y fcil de encontrar.

Los diodos emisores del sensor estn de 2 en 2 con una resistencia de 47 y seguido de
otros 2 dos resistores en paralelos de 47 ohms (usado para el bypass, pero se puede
eliminar esta etapa, con tan solo colocar una resistencia de 100 ohms). Y claro cada diodo
emisor esta con su respectivo fototransistor (8 en total).

La secuencia tpica estndar para la lectura de un sensor con estas caractersticas es la


siguiente:

1. Encender los LEDs IR (opcional).

2. Establecer Un pin como salida y hacer un HIGH o "1" lgico.

3. Deje por lo menos 10us que el condensador se cargue.

4. Hacer el pin como entrada (alta impedancia).

5. Mida el tiempo de la descomposicin de la tensin en el pin hasta que sea 0.

6. Apague LEDs IR (opcional).

Estos pasos normalmente se pueden ejecutar en paralelo en varias lneas de E / S.

Esto lo hace de manera automtica la librera <QTRSensors.h>

4.2. INSTALANDO LA LIBRERA

Link: https://mega.nz/#F!78FVmD7Q!auGJgTr0Muo9qkNtl9CuLA

Ya descargada la librera, lo que hay que hacer es descomprimir el archivo y copiar la


carpeta "QTRSensors". Luego ir al directorio donde est la carpeta del programa
"Arduino": arduino-1.0.5 / libraries ... luego pegar ah la Carpeta "QTRSensors", y eso
sera todo , ahora si tenemos disponible la librera de los sensores.

Disposicin de los pines a utilizar:


GND: tierra "-"
Vcc: Alimentacin de 5 volts "+"
Led On: es un "Switch" que enciende y apaga los leds infrarrojos de cada uno de
los sensores, de manera predeterminada esta encendido "High" , para apagar se
necesita dar un estado digital "Low"
Pines 1,2...7,8: Son los respectivos pines de para la lectura de cada sensor.
3.3v Bypass: Utilizar si es que se requiere alimentar con 3.3v. los sensores, por
defecto se alimenta con 5 v. Es mejor no utilizarlo.

4.3. ENTENDIENDO ALGUNAS DEFINICIONES DE LA LIBRERA

#include <QTRSensors.h> // Es siempre necesario la inclusin de la librera de los qtr


antes de utilizar sus funciones

Hay que reconocer definiciones que se usan para los sensores:

#define NUM_SENSORS 8 // Aqu definimos cuantos sensores estamos utilizando,


en este caso el arreglo es de 8 sensores.

#define TIMEOUT 2500 // Este ser el tiempo que esperaremos para que se de
los resultados de lectura de los sensores. El tiempo optimo esta entre los 1500us a
2500us.

#define EMITTER_PIN 6 // este es el pin del "led on" es necesario especificar en


qu pin se utilizara, en este caso es el D6.

4.4. FUNCIONES IMPORTANTES:

qtrrc.calibrate();
Es necesaria la calibracin antes de utilizar los sensores, esta funcin no devuelve valor
alguno.

qtrrc.readLine(sensorValues, QTR_EMITTERS_ON, 0);

Realiza la lectura de los sensores, y devuelve el valor de posicin estimada de los


sensores, la estimacin se hace con un promedio ponderado de cada sensor. El tercer
parmetro es para indicar si se requiere leer una superficie blanca con un lnea negra,
este valor ser de "0". Si se quiere leer una superficie negra con una linea Blanca, se
tiene que cambiar el valor a "1". Para usarlo es necesario almacenarlo en una variable
entera por ejemplo:

int posicion=qtrrc.readLine(sensorValues, QTR_EMITTERS_ON, 0);

qtrrc.read(sensorValues);

Realiza Lecturas en bruto de cada sensor, para obtener estos valores es necesario leer
el ndice de array donde se guarda los valores de cada sensor. Por ejemplo si queremos
saber el valor de reflactancia que tiene el sensor numero 1 tenemos que crear una
variable y asignar el valor del array que contiene el valor del sensor:

int sensor_1=sensorValues[0];

int sensor_2=sensorValues[1];

4.5. ALGORITMO PID


El PID (control proporcional, integral y derivativo) es un mecanismo de control por
realimentacin que calcula la desviacin o error entre un valor medido y el valor que se
quiere obtener (set point, target position o punto de consigna), para aplicar una accin
correctora que ajuste el proceso.

En el caso del robot seguidor de


lnea, el controlador PID, (que es una
rutina basada matemticamente),
procesar los datos del sensor, y lo
utiliza para controlar la direccin
(velocidad de cada motor), para de
esta forma mantenerlo en curso.

Error: Llamamos a la diferencia entre la posicin objetivo y la posicin medida del error.
(Que tan lejos del punto de consigna se encuentra el sensor, en nuestro caso el objetivo
es tener los sensores centrados).

Set point
o Target

Position: Cuando el error es 0 (cero). La idea es siempre mantenerlo en la lnea, o lo que


es el caso de los sensores, mantenerlo centrado y as no se llegue a salir de la lnea.
4.6. PARMETROS:

Proporcional: Es la respuesta al error que se tiene que entregar de manera


inmediata, es decir, si nos encontramos en el centro de la lnea, los motores,
tendrn en respuesta una velocidad de igual valor, si nos alejamos del centro, uno
de los motores reducir su velocidad y el otro aumentar.

Proporcional = (posicin) - punto_consigna

Integral: La integral es la sumatoria de los errores acumulados, tiene como


propsito disminuir y eliminar el error en estado estacionario provocado por el
modo proporcional, en otras palabras, si el robot velocista se encuentra mucho
tiempo alejado del centro (ocurre muchas veces cuando se encuentra en curvas),
la accin integral se ira acumulando e ira disminuyendo el error hasta llegar al
punto de consigna,

Integral = Integral + proporcional_pasado

Derivativo: Es la derivada del error, su funcin es mantener el error al mnimo,


corrigindolo proporcionalmente con la misma velocidad que se produce, de esta
manera evita que el error se incremente, en otra palabra, anticipara la accin
evitando as como las oscilaciones excesivas.

Derivativo = proporcional-proporcional_pasado

4.7. CONSTANTES

Factor (Kp) - Es un valor constante utilizado para aumentar o reducir el impacto de


Proporcional. Si el valor es excesivo, el robot tender responder inestablemente,
oscilando excesivamente. Si el valor es muy pequeo, el robot responder muy
lentamente, tendiendo a salirse de las curvas
Factor (Ki) - Es un valor constante utilizado para aumentar o reducir el impacto de
la Integral, el valor excesivo de este provocar oscilaciones excesivas, un valor
demasiado bajo no causara impacto alguno.
Factor (Kd) - Es un valor constante utilizado para aumentar o reducir el impacto de
la Derivada. Un valor excesivo provocara una sobre amortiguacin. provocando
inestabilidad.

Salida_pwm = ( proporcional * Kp ) + ( derivativo * Kd ) + (integral*Ki);

4.8. SINTONIZACION PID

Sintonizacin PID, es aqu donde se tendr que buscar las constantes que correspondan
a las caractersticas fsicas del robot, la forma ms fcil de hacerlo es por ensayo y error,
hasta obtener el valor deseado. Aqu hay unos pasos que ayudaran mucho a buscar esas
constantes:

1. Comience con Kp, Ki y Kd igualando 0 y trabajar con Kp primero. Pruebe


establecer Kp a un valor de 1 y observar el robot. El objetivo es conseguir que el
robot siga la lnea, incluso si es muy inestable. Si el robot llega ms all y pierde la
lnea, reducir el valor de Kp. Si el robot no puede navegar por una vez, o parece
lenta, aumente el valor Kp.
2. Una vez que el robot es capaz de seguir un poco la lnea, asignar un valor de 1 a
Kd .Intente aumentar este valor hasta que vea menos oscilaciones.
3. Una vez que el robot es bastante estable en la lnea siguiente, asigne un valor de
0,5 a 1,0 a Ki. Si el valor de Ki es demasiado alta, el robot se sacudir izquierda y
derecha rpidamente. Si es demasiado baja, no se ver ninguna diferencia
perceptible. El Integral es acumulativo por lo tanto el valor Ki tiene un impacto
significativo. puede terminar ajustando por 0,01 incrementos.
4. Una vez que el robot est siguiendo la lnea con una buena precisin, se puede
aumentar la velocidad y ver si todava es capaz de seguir la lnea. La velocidad
afecta el controlador PID y requerir re sintonizar los cambios de velocidad.
4.9. CDIGO EN ARDUINO
4.10. FOTOS DEL SEGUIDOR DE LNEA
4.11. PCB
Grfica de la constante proporcional del robot desarrollado en MATLAB
Grfica de la constante derivativa del robot desarrollado en MATLAB

5. BIBLIOGRAFA

http://aprendiendofacilelectronica.blogspot.pe/2014/12/robot-
velocista-de-competencia.html

https://es.wikipedia.org/wiki/Robot_seguidor_de_l%C3%ADnea

https://matto.io/seguidor-de-lineas/

You might also like