Sunteți pe pagina 1din 16

UNIVERSIDAD TECNOLÓGICA DE LA REGIÓN DE LA

REGIÓN CARBONÍFERA

NIVEL SUPERIOR

MATERIA:
Máquinas Eléctricas

ALUMNO:
Jaime Limones Martínez

DOCENTE:
José Francisco Mona Guajardo

GRADO Y ESPECIALIDAD:
5 “M”

MATRICULA:
17005039

NOMBRE DE TRABAJO:
Seguidor de Línea

CARRERA:
Técnico Superior Universitario en Mecatrónica Área
Instalaciones Eléctricas Eficientes

San Juan de Sabinas, Coah. 05 de abril del 2019


INTRODUCCIÓN

Los robots seguidores son interesantes, ya que son un punto de entrada a la robótica, y
además permiten a la persona que los realiza tener la libertad de poderlo diseñar utilizando
una variada gama de tecnología. Este reporte pretende adentrarnos un poco en los pasos son
necesarios para la construcción de un robot seguidor de línea.
En el mundo de la robótica, cuando hablamos de un robot seguidor de línea se piensa en un
dispositivo que, utilizando unos fotodiodos, va siguiendo una línea negra sobre un fondo
blanco. La reacción de estos fotodiodos es muy rápida y, por tanto, si se dispone de un buen
dispositivo de control, el robot se mueve rápidamente por el mapa siguiendo ágilmente la
línea. Este reporte pretende adentrarnos un poco en los pasos son necesarios para la
construcción de un robot seguidor de línea desde su concepción hasta el proceso de armado
del mismo.

MARCO TEORICO

ROBOTICA.
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.

PROGRAMACIÓN ARDUINO

La programación de Arduino es la programación de un microcontrolador. El lenguaje de


programación de Arduino es C++. No es un C++ puro sino que es una adaptación que
proveniente de avr-libc que provee de una librería de C de alta calidad para usar con GCC
(compilador de C y C++) en los microcontroladores AVR de Atmel y muchas utilidades
específicas para las MCU AVR de Atmel.

ELECTRONICA.

Es el campo de la ingeniería y de la física aplicada relativo al diseño y aplicación de


dispositivos, por lo general circuitos electrónicos, cuyo funcionamiento depende del flujo
de electrones para la generación, transmisión, recepción, almacenamiento de información,
entre otros. Esta información puede consistir en voz o música como en un receptor de radio,
en una imagen en una pantalla de televisión, o en números u otros datos en un ordenador o
computadora.
COMPONENTES BASICOS 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).

Sensores. Un seguidor detecta la línea a seguir por medio de sensores. Hay muchos tipos de
sensores que se pueden usar para este fin; sin embargo, por razones de costos los más
comunes son los sensores infrarrojos (IR), que normalmente constan de un LED infrarrojo
y un fototransistor.

Sensor QTR-8A. El sensor de reflectancia de QTR-8A está pensado como sensor de línea.
El módulo es un portador de ocho pares emisores y recibidores (fototransistor) de IR
uniformemente espaciados, Cada fototransistor está conectado a una resistencia pull-up
para formar un divisor de voltaje que produce una salida de voltaje análogo entre 0 V y
VIN

Motor Pololu 10:1 . Son los encargados del trabajo mecánico del robot, estos motores son
de bajo consumo y encienden con un voltaje de 5 Volts.

Placa Arduino UNO. Arduino Uno es una placa electrónica basada en el microcontrolador
ATmega328. Cuenta con 14 entradas/salidas digitales, de las cuales 6 se pueden utilizar
como salidas PWM (Modulación por ancho de pulsos) y otras 6 son entradas analógicas.

Driver TB6612FNG. El controlador de motor TB6612FNG puede controlar hasta dos


motores de corriente continua a una corriente constante de 1,2 A (3.2A pico). Dos señales
de entrada (IN1 e IN2) se puede utilizar para controlar el motor en uno de los cuatro modos
de funcionamiento. Es la responsable de lo lograr la variación de velocidad en los motores.

Objetivo General

Como objetivo se ha buscado el desarrollo de una idea teniendo en cuenta la importancia de


la aplicación de conceptos que tienen relación con la ingeniería para lograr buenas bases y
junto con la investigación crear un robot seguidor de línea implementando la programación
de Arduino para poder lograr la lógica de control y la autonomía del robot de la mejor
manera posible.
Objetivos Específicos

Enfocarse hacia la parte de investigación de tal manera que sirva como punto de partida para
analizar opciones que ayuden a lograr el mejor resultado. Lograr tener una visión de los
factores que afecten el desempeño. La aplicación y la práctica de los conocimientos
adquiridos a través de toda la carrera que han sido recopilados y que hoy son materia principal
para el logro de nuestros objetivos. Poder desarrollar un robot seguidor de línea rápido y
eficiente que cumpla el circuito establecido en el menor tiempo posible.

Desarrollo

A continuación, se muestra una tabla de los materiales utilizados en la construcción del


robot seguidor de línea111

MATERIAL CANTIDAD
ARDUINO UNO 1
SENSOR QTR-8A 1
DRIVER TB6612FNG 1
MOTOREDUCTOR POLOLU 10:1 2
BASE 1
LLANTASPOLOLU 3MM SEGUIDO 2
LLANTA LOCA POLOLU 1/2 1
BRACKET SUJETADOR POLOLU 2

El procedimiento que se siguió fue el siguiente

1-. Diseño de la base. El primer paso que se realizo fue el diseño de una base sobre la cual
se montarían los componentes necesarios, el diseño se realizó en un programa de CAD 3D
el cual sirve para crear modelados de piezas en 3D, el software elegido para tal fin fue
Solidworks en su versión 2016.
2-. Impresión de la base. Una vez obtenido el diseño con las medidas correspondientes se
procedió cargar el diseño en una impresora 3D para su posterior impresión en material
plástico
3-. Organizar componentes. Después de haber terminado la impresión de la base se
procedió a organizar los componentes en sus respectivos lugares buscando la mejor
posición para ellos.

4-. Conexión de Componentes. Como siguiente paso se realizó la conexión de todos los
componentes de acuerdo con los diagramas correspondientes.
5-. Cargar el código del seguidor. Como penúltimo paso se cargó el código correspondiente
al arduino, el código es el encargado de hacer funcionar al robot seguidor pues es el
encargado de mandar las señales a los sensores, así como también interpreta las señales
provenientes de los mismos.
Código

#include <QTRSensors.h> // En esta parte del código agregamos la librería para los sensores

//Mapeo de pines

#define STBY 9

#define AIN1 3

#define AIN2 4

#define PWMB 5

#define PWMA 6

#define BIN1 8

#define BIN2 7

#define NUM_SENSORS 6

#define NUM_SAMPLES_PER_SENSOR 4

#define EMITTER_PIN 11

#define LED 13 //

// Constantes para PID

float KP = 0.01;

float KD = 1.0;

float Ki = 0.006;

// Regulación de la velocidad Máxima

int Velmax = 80;

// Data para intrgal

int error1=0;
int error2=0;

int error3=0;

int error4=0;

int error5=0;

int error6=0;

// Configuración de la librería QTR-8A

QTRSensorsAnalog qtra((unsigned char[])

{A0, A1, A2, A3, A4, A5}

, NUM_SENSORS, NUM_SAMPLES_PER_SENSOR, EMITTER_PIN);

unsigned int sensorValues[NUM_SENSORS];

// Función accionamiento motor izquierdo

void Motoriz(int value)

if ( value >= 0 )

digitalWrite(BIN1,HIGH);

digitalWrite(BIN2,LOW);

else

digitalWrite(BIN1,LOW);

digitalWrite(BIN2,HIGH);

value *= -1;

analogWrite(PWMB,value);

}
// Función accionamiento motor derecho

void Motorde(int value)

if ( value >= 0 )

digitalWrite(AIN1,HIGH);

digitalWrite(AIN2,LOW);

else

digitalWrite(AIN1,LOW);

digitalWrite(AIN2,HIGH);

value *= -1;

analogWrite(PWMA,value);

//Accionamiento de motores

void Motor(int left, int righ)

digitalWrite(STBY,HIGH);

Motoriz(left);

Motorde(righ);

}
//función de freno

void freno(boolean left, boolean righ, int value)

digitalWrite(STBY,HIGH);

if ( left )

digitalWrite(BIN1,HIGH);

digitalWrite(BIN2,HIGH);

analogWrite (PWMB, value);

if ( righ )

digitalWrite(AIN1,HIGH);

digitalWrite(AIN2,HIGH);

analogWrite (PWMA, value);

void setup()

// Declaramos como salida los pines utilizados

pinMode(LED ,OUTPUT);
pinMode(BIN2 ,OUTPUT);

pinMode(STBY ,OUTPUT);

pinMode(BIN1 ,OUTPUT);

pinMode(PWMB ,OUTPUT);

pinMode(AIN1 ,OUTPUT);

pinMode(AIN2 ,OUTPUT);

pinMode(PWMA ,OUTPUT);

// Calibramos con la función qtra.calibrate();, y dejamos parpadeando el led, mientras se produce


la calibración.

for ( int i=0; i<70; i++)

digitalWrite(LED, HIGH); delay(20);

qtra.calibrate();

digitalWrite(LED, LOW); delay(20);

delay(3000);

unsigned int position = 0;

//declaraos variables para utilizar PID

int proporcional = 0; // Proporcional

int integral = 0; //Intrgral

int derivativo = 0; // Derivativo


int diferencial = 0; // Diferencia aplicada a los motores

int last_prop; // Última valor del proporcional (utilizado para calcular la derivada del error)

int Target = 2500; // Setpoint (Como utilizamos 6 sensores, la línea debe estar entre 0 y 5000, por
lo que el ideal es que esté en 2500)

void loop()

position = qtra.readLine(sensorValues, true, true);

proporcional = ((int)position) - 2500;

if ( proporcional <= -Target )

Motorde(0);

freno(true,false,255);

else if ( proporcional >= Target )

Motoriz(0);

freno(false,true,255);

derivativo = proporcional - last_prop;

integral = error1+error2+error3+error4+error5+error6;

last_prop = proporcional;
error6=error5;

error5=error4;

error4=error3;

error3=error2;

error2=error1;

error1=proporcional;

int diferencial = ( proporcional * KP ) + ( derivativo * KD )+ (integral*Ki) ;

if ( diferencial > Velmax ) diferencial = Velmax;

else if ( diferencial < -Velmax ) diferencial = -Velmax;

( diferencial < 0 ) ?

Motor(Velmax+diferencial, Velmax) : Motor(Velmax, Velmax-diferencial);

Costos

MATERIAL CANTIDAD PRECIO


ARDUINO UNO 1 $140.00
SENSOR QTR-8A 1 $225.00
DRIVER TB6612FNG 1 $74.99
MOTOREDUCTOR POLOLU 2 $249.98
10:1
BASE 1 $0
LLANTASPOLOLU 3MM 2 $125.00
SEGUIDO
LLANTA LOCA POLOLU 1/2 1 $45.00
BRACKET SUJETADOR 2 $39.00
POLOLU
BATERIA LIPO 7,4V 1000mA 1 $284.99
CABLES DUPONT 20CM PQ. 1 $64.99
TOTAL $1123.45

ANALISIS DE RESULTADOS

Una vez concluido el prototipo se puso a prueba en dos circuitos con línea blanca para
verificar el funcionamiento del seguidor, el primer circuito constaba de con pocas curvas
aun así en la primera prueba se notó que el seguidor no recorría de manera eficiente el
circuito por lo tanto se llevó a revisión teniendo en cuenta diferentes hipótesis:
 El seguidor no recibe la señal de los sensores por lo tanto el microcontrolador
no responde adecuadamente
 La alimentación de voltaje no llega de manera adecuada a una parte del
circuito
Una vez terminada la inspección se pudo encontrar el problema, éste consistía en que los
sensores no estaban bien conectados en el microcontrolador por lo tanto no recibía la señal
de éstos.
Después se procedió a realizar una segunda prueba en el circuito numero dos el cual
consistía de mas curvas que el primero. En este nuevo circuito se pudo notar que ahora
surgía otro problema y este era que nuestro seguidor perdía la línea en algunas partes del
circuito, se hizo evidente que el diseño del seguidor tiene varios errores que se pueden
mejorar, para que de esta manera pueda recorrer el circuito con mayor velocidad.

CONCLUSIONES

Se diseñó e implementó, un robot seguidor de línea. El funcionamiento del robot fue


adecuado a la meta propuesta. Se demostró que a pesar de que se usaron componentes
básicos de electrónica son suficientes para realizar un proyecto interesante y vistoso. El
robot cumple las expectativas esperadas a demás este sirve como base para adentrarse en el
campo de la electrónica y robótica. Gracias a este proyecto se ha tenido la oportunidad de
observar como un proyecto tecnológico, aunque sea sencillo puede mejorarse
constantemente a fin de perfeccionarlo, hasta lograr obtener resultados más óptimos.
BIBLIOGRAFIA

https://www.arduino.cc/reference/en/language/structure/further-syntax/define/
https://store.robodacta.mx/
http://brettbeauregard.com/blog/wp-content/uploads/2012/07/Gu%C3%ADa-de-uso-PID-
para-Arduino.pdf
http://robots-argentina.com.ar/didactica/sensores-reflectivos-qtr-para-siguelineas/
http://aprendiendofacilelectronica.blogspot.com/2014/12/robot-velocista-de-
competencia_3.html

S-ar putea să vă placă și