ROBOT-SEGUIDOR-DE-LINEA-FINAL.docx

January 5, 2018 | Author: Junior T Farroñay | Category: Robotics, Electronics, Electrical Engineering, Electromagnetism, Technology
Share Embed Donate


Short Description

Download ROBOT-SEGUIDOR-DE-LINEA-FINAL.docx...

Description

“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 sensado

a

mayor distancia en

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

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 // 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/robotvelocista-de-competencia.html

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

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

View more...

Comments

Copyright ©2017 KUPDF Inc.
SUPPORT KUPDF