Sei sulla pagina 1di 23

“Año del Buen Servicio al Ciudadano”

“UNIVERSIDAD NACIONAL PEDRO RUÍZ


GALLO”
“FACULTAD DE CIENCIAS FÍSICAS Y MATEMÁTICAS”

ESCUELA PROFESIONAL:
Ingeniería Electrónica

CURSO:
Control I

DOCENTE:
Mg. Sandra Lisette Aznarán Guevara

ALUMNOS:
Balarezo Quesquen Anthony
Solorzano Larreatigue Leo Jair
Paredes Mendoza Angel
Ramírez Agurto Tito
Ramírez Sánchez Robinson
Sánchez Benavides Jasson
Tiravanti Díaz Miguel
Tume Samamé Junior
Tullume Farroñay Junior
Verona Flores Paúl

CICLO ACADÉMICO:
2016-II
ROBOT SEGUIDOR DE LINEA

1. INTRODUCCIÓN:
Hoy en día en las empresas de mayor reconocimiento mundial, en algunos organismos
políticos, en recintos históricos 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 difíciles, cansadas e incluso mortales, tareas que necesitan
más de una persona lo cual económicamente genera gastos, las empresas u organismos
de cualquier índole lo que buscan hoy en día 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 elaboración y programación de un robot seguidor


de línea. 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 línea, que funcione mediante sensores y usando
componentes necesarios que para mejorar su rendimiento.
 Profundizar en el estudio y desarrollo tecnológico, despertando la creatividad,
imaginación y motivación en los estudiantes de la Escuela Profesional de
Ingeniería Electrónica – UNPRG.
 Conocer más acerca de la robótica, así como analizar las ventajas y desventajas
de los robots.
3. MARCO TEORICO:

3.1. LA ELECTRÓNICA

La electrónica es la rama de la física que estudia y emplea sistemas cuyo funcionamiento


se basa en la conducción y el control del flujo de los electrones u otras partículas
cargadas eléctricamente, desde las válvulas termoiónicas hasta los semiconductores. El
diseño y la construcción de circuitos electrónicos para resolver problemas prácticos, forma
parte de los campos de la Ingeniería electrónica, electromecánica y en el diseño de
software en su control la Ingeniería informática. El estudio de nuevos dispositivos
semiconductores y su tecnología se suele considerar una rama de la Física y química
relativamente.

3.2. LA ROBÓTICA

La robótica es la ciencia y la tecnología de los robots. Se ocupa del diseño, manufactura y


aplicaciones de los robots. La robótica combina diversas disciplinas como son: la
mecánica, la electrónica, la informática, la inteligencia artificial y la ingeniería de control.
Otras áreas importantes en robótica son el álgebra, los autómatas programables y las
máquinas de estados.

3.3. LEYES DE LA ROBÓTICA

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

1. Un robot no debe dañar a un ser humano o, por su inacción, dejar que un ser
humano sufra daño.
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 protección no entre
en conflicto con la Primera o la Segunda Ley.
3.4. COMPONENTES BÁSICOS DE UN ROBOT

Los robots seguidores de línea (o robots rastreadores) cumplen una única misión: seguir
una línea marcada en el suelo (normalmente una línea negra sobre un fondo blanco o
línea blanca en fondo negro). Estos robots pueden variar desde los más básicos (van tras
una línea única) hasta los robots que recorren laberintos.

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

Básicamente estos sensores se utilizan


en pines digitales, también se pueden
utilizar en pines analógicos pero
previamente configurados como digitales.
Es por ello que estos sensores son muy
versátiles y además tienen una mayor
distancia en sensado a comparación de
los analógicos).

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 después 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 librería en arduino que hace todo este procedimiento de forma
automática, 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 posición que es lo que nos interesa para el algoritmo de control del robot
seguidor de línea.

 Arduino (nano)

En teoría se podría utilizar cualquier arduino,


pero lo recomendable para un robot seguidor de
línea (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
permitiría 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 más pequeño y liviano que el
arduino nano.

Una recomendación es que pueden utilizar los pines analógicos (A0, A1, A2, A3, A4, A5)
del arduino para las lecturas de los sensores, ya que estos no cuentan con módulos
extras como el que traen los pines digitales como: pwm, interrupción, de comunicación
serial, spi, etc.

Nota:

En el caso del pines analógico A6 y A7 del arduino nano, no es posible configurarse


como pines digitales, pues según el datasheet estos pines solo son bypass analógicos,
por lo que solo es posible utilizarse para lecturas analógicas.
 Micro Metal Gearmotor (motores con reductora de la casa Pololu)

Este es elemento principal y crítico que determinara las


características de nuestro robot, ya que de él dependerá el
desempeño del robot, se debe considerar que tipo de
reducción, consumo y torque que posee, por lo general se
utilizan los " High Power" o "HP" con reducciones de 10:1 y
30:1. La reducción 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 reducción
10:1 utilizará engranajes que reducen 10 vueltas del motor en un 1 produciendo un
torque relativamente mayor, por ejemplo:

Un motor de reducción 10:1 tendrá mucha más 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 reducción 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
robótica, 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 más de 100mA,
por lo que el driver de motor seguirá siendo una opción 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 propósito 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.
 Batería

Las baterías de lipo son siempre la mejor opción, lo recomendable es que sean de 7.4
voltios, ya que nuestros micros motores funcionan a ese voltaje. Un aspecto importante
también es la capacidad A/h (amperios hora que es capaz de entregar la batería 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 LIBRERÍA QTRSensors

Los sensores QTR8RC necesitan de líneas de E/S digitales para su funcionamiento. No


es necesario usarlos exclusivamente con pines analógicos, aunque la mayoría de los
pines analógicos de un micro controlador también pueden ser configurados como
digitales, en comparación con los QTR8A, que si utilizan entradas exclusivamente
analógicas (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 analógica, 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
combinación de analógico 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 medición del tiempo de carga, y pues para tal tarea no es necesario un pin
analógico, solo basta con uno digital y la librería hará el trabajo de obtener esos tiempos y
convertirlos en una medición cuasi analógica.

Si quizás no puedes comprar este módulo directamente de Pololu, pues siempre está la
opción de diseñar nuestro propio circuito del sensor basándose 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 fácilmente remplazado por un transistor 2n2222a, que es
un transistor NPN muy común y fácil de encontrar.

Los diodos emisores del sensor están 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 típica estándar para la lectura de un sensor con estas características es la


siguiente:

1. Encender los LEDs IR (opcional).

2. Establecer Un pin como salida y hacer un HIGH o "1" lógico.

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 descomposición de la tensión en el pin hasta que sea 0.

6. Apague LEDs IR (opcional).

Estos pasos normalmente se pueden ejecutar en paralelo en varias líneas de E / S.

Esto lo hace de manera automática la librería <QTRSensors.h>

4.2. INSTALANDO LA LIBRERÍA

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

Ya descargada la librería, 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
sería todo , ahora si tenemos disponible la librería de los sensores.
Disposición de los pines a utilizar:

 GND: tierra "-"


 Vcc: Alimentación 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 LIBRERÍA

#include <QTRSensors.h> // Es siempre necesario la inclusión de la librería 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 calibración antes de utilizar los sensores, esta función no devuelve valor
alguno.

qtrrc.readLine(sensorValues, QTR_EMITTERS_ON, 0);

Realiza la lectura de los sensores, y devuelve el valor de posición estimada de los


sensores, la estimación se hace con un promedio ponderado de cada sensor. El tercer
parámetro es para indicar si se requiere leer una superficie blanca con un línea 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


realimentación que calcula la desviación o error entre un valor medido y el valor que se
quiere obtener (set point, target position o punto de consigna), para aplicar una acción
correctora que ajuste el proceso.

En el caso del robot seguidor de


línea, el controlador PID, (que es una
rutina basada matemáticamente),
procesará los datos del sensor, y lo
utiliza para controlar la dirección
(velocidad de cada motor), para de
esta forma mantenerlo en curso.

Error: Llamamos a la diferencia entre la posición objetivo y la posición 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 línea, o lo que es el caso de los sensores, mantenerlo centrado y así no se llegue a
salir de la línea.

4.6. PARÁMETROS:

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


inmediata, es decir, si nos encontramos en el centro de la línea, los motores,
tendrán en respuesta una velocidad de igual valor, si nos alejamos del centro, uno
de los motores reducirá su velocidad y el otro aumentará.

Proporcional = (posición) - punto_consigna

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


propósito 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 acción 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 función es mantener el error al mínimo,


corrigiéndolo proporcionalmente con la misma velocidad que se produce, de esta
manera evita que el error se incremente, en otra palabra, anticipara la acción
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 pequeño, 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 amortiguación. provocando
inestabilidad.

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


4.8. SINTONIZACION PID

Sintonización PID, es aquí donde se tendrá que buscar las constantes que correspondan
a las características físicas del robot, la forma más fácil 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 línea, incluso si es muy inestable. Si el robot llega más allá y pierde la
línea, 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 línea, 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 línea 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 rápidamente. 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 línea con una buena precisión, se puede
aumentar la velocidad y ver si todavía es capaz de seguir la línea. La velocidad
afecta el controlador PID y requerirá re sintonizar los cambios de velocidad.
4.9. CÓDIGO EN ARDUINO
4.10. FOTOS DEL SEGUIDOR DE LÍNEA
4.11. PCB
Gráfica de la constante proporcional del robot desarrollado en MATLAB
Gráfica de la constante derivativa del robot desarrollado en MATLAB

5. BIBLIOGRAFÍA

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/