Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
MECÁNICA
INSTRUMENTACIÓN MECATRÓNICA
PROYECTO Nº2
NRC: 2384
GRUPO Nº4
INTEGRANTES:
ROBINSON CHILUISA
CHARLY CHIRIBOGA
MARX YÉPEZ
ii
ÍNDICE DE CONTENIDOS
RESUMEN ...................................................................................................................... iv
ABSTRACT .....................................................................................................................v
OBJETIVOS ................................................................................................................... 1
PROCEDIMIENTO ....................................................................................................... 2
RESULTADOS ............................................................................................................. 13
CONCLUSIONES ........................................................................................................ 14
RECOMENDACIONES .............................................................................................. 14
ANEXOS........................................................................................................................ 16
iii
LISTA DE FIGURAS
Figura 3 Direcciones a seguir por el robot de acuerdo a la línea Fuente: Wikipedia ....................4
Figura 5 Conexión de los motores y su drive con la placa Arduino Fuente: Propia realizada en
TinkerCAD ....................................................................................................................................5
Figura 6 Conexión de la regleta de sensores QTR Fuente: Propia realizada en TinkerCAD. .........6
RESUMEN
construcción de un robot móvil seguidor de una línea negra con fondo blanco, utilizando
una placa de ARDUINO UNO. Se utilizaron dos motores de corriente directa el motor
ambiente dado. Los robots móviles son un punto importante de la investigación actual y
casi cada universidad importante que tiene uno o más laboratorios que se centran en la
y los servicios.
Hoy en día la Robótica Móvil se ha convertido en un tema de gran interés, con grandes
adelantos debido a una gran cantidad de proyectos que se han desarrollado en todo el
mundo y como estudiantes del nivel bachillerato consideramos que es necesario presentar
alternativas que puedan satisfacer las necesidades antes planteadas, nuestro proyecto
ABSTRACT
In this document, the methodology followed for the design and construction of a
mobile robot following a black line with a white background is presented, using an
ARDUINO ONE plate. Two direct current motors were used, the motor for the steering
The general functioning of the robot is adequate; however, its operation can be
optimized by changing some aspects of its programming or using lighter materials in its
background, all base their functioning on sensors, however, depending on the complexity
environment. Mobile robots are an important point of current research and almost every
major university that has one or more laboratories that focus on the research of mobile
Nowadays Mobile Robotics has become a topic of great interest, with great advances
due to a large number of projects that have been developed around the world and as
can satisfy the needs previously raised, our project presents a "robot line follower".
1
OBJETIVOS
de eventos competitivos.
destreza.
MATERIALES Y EQUIPOS
• PC Portátil
• 2 Motores 10 a 1 de 6V
• 1 Rueda loca.
• Cautín.
• Estaño
2
PROCEDIMIENTO
1. Construcción de la base del robot
Esta parte del proyecto es muy importante ya que de ella depende la movilidad
del robot, así como de su rigidez para soportar los elementos electrónicos que
reglamento del concurso las cuales fueron 20.5 cm de largo y 16.5 cm de ancho y
un espesor de 3mm como espesor mínimo para ser impreso en 3D que pueda
La rueda es una rueda igual a la que usan los carritos de supermercado y las
sillas de oficina, esta tiene un movimiento libre de 360º que facilita los giros del
robot.
3
constituida por los dos moto-reductores y sus respectivas ruedas, cada uno de
estos puede ser controlado independientemente y son los que le dan dirección al
robot, cabe destacar que si uno gira en sentido opuesto al otro respectivamente se
puede obtener un giro de 360º sobre el eje del robot, lo que permite un amplio
rango de movimiento.
Motores
El robot se mueve utilizando motores uno en cada lado y estos son los
Sensores QTR
Los sensores QTR ubicados como pivotes del robot son los encargados de
de los motores.
según corresponda.
Ruedas
Las ruedas del robot son movidas por los motores. Normalmente se usan
Fuente de energía
Codificación
#include <QTRSensors.h>
//entradas
//#define btn1 0
//#define btn2 1
//salidas
#define stb 10
#define led1 4
#define led_on 4 //~
#define mi1 9
#define mi2 8
#define pwmi 3 //~
#define md1 11
#define md2 12
#define pwmd 5 //~
int integral = 0;
int salida_pwm = 0;
int proporcional_pasado = 0;
int position = 0;
/*
////////////////////Parametros PID/////////////////////////////////
int velocidad = 92;
//float KP=0.15, KD=2.2, KI=0.006; //reaccion rapida
float KP = 0.16, KD = 2.1 , KI = 0.005; //reaccion rapida
///////////////////////////////////////////////////////
*/
////////////////////Parametros PID/////////////////////////////////
int velocidad = 100;
//float KP=0.15, KD=2.2, KI=0.006; //reaccion rapida
float KP = 0.17, KD = 2.1 , KI = 0.005; //reaccion rapida
///////////////////////////////////////////////////////
///////////////////Labview////////////////
char datocalibracion = 'I';
String velo = String(velocidad * 100);
String kp = String(KP * 1000);
String kd = String(KD * 1000);
String ki = String(KI * 1000);
String selector;
/////////////////parametros de sensado/////////////////////////////
int linea = 0; //0 linea negra, 1 para linea blanca
int flanco_color = 0 ;
int en_linea = 500 ;
int ruido = 30;
/////////////////////////////////////////////////////////
//int boton1=7;
//int boton2=7;
void setup()
{
pinMode(stb, OUTPUT);
pinMode(led_on, OUTPUT);
pinMode(mi1, OUTPUT);
pinMode(mi2, OUTPUT);
pinMode(pwmi, OUTPUT);
pinMode(md1, OUTPUT);
pinMode(md2, OUTPUT);
pinMode(pwmd, OUTPUT);
digitalWrite(stb, HIGH);
Serial.begin(9600);
//Serial.begin(115200);
//Serial.println();
8
/*while(true)
{
botones();
if(boton2==0)
{
delay(20);
digitalWrite(led1,HIGH);
delay(100);
digitalWrite(led1,LOW);
delay(100);
break;
}
}
*/
//bt.println("Hello, world?");
}
void loop()
{
if (datocalibracion == 'I') {
if (Serial.available())
{
datocalibracion = Serial.read();
if (datocalibracion == 'O')
{
datocalibracion = 'R';
calibra();
} else
{
datocalibracion = 'I';
}
}
}
if (datocalibracion == 'R')
{
if (Serial.available())
{
selector = Serial.read();
switch (selector.toInt()){
case 1:
velo=Serial.read();
velocidad=velo.toInt()/100;
break;
case 2:
kp=Serial.read();
KP=kp.toInt()/1000;
break;
case 3:
kd=Serial.read();
9
KD=kd.toInt()/1000;
break;
case 4:
ki=Serial.read();
KI=ki.toInt()/1000;
break;
}
}
pid(0, velocidad, KP, KI, KD);
frenos_contorno(600);
delay(2);
}
}
void calibra()
{
digitalWrite(led1, HIGH); // turn on Arduino's LED to indicate we are in
calibration mode
for (int i = 0; i < 200; i++) // make the calibration take about 10 seconds
{
qtra.calibrate(); // reads all sensors 10 times at 2.5 ms per six sensors (i.e.
~25 ms per call)
}
digitalWrite(led1, LOW);
}
void pid(int linea, int velocidad, float Kp, float Ki, float Kd)
{
// Serial.println(position);
proporcional = (position) - 3500; // set point es 3500, asi obtenemos el error
integral = integral + proporcional_pasado; //obteniendo integral
derivativo = (proporcional - proporcional_pasado); //obteniedo el derivativo
int ITerm = integral * KI;
if (ITerm >= 255) ITerm = 255;
if (ITerm <= -255) ITerm = -255;
if (salida_pwm < 0)
{
int der = velocidad - salida_pwm; //(+)
int izq = velocidad + salida_pwm; //(-)
10
proporcional_pasado = proporcional;
}
}
}
{
break;
}
}
}
digitalWrite(led1, LOW);
}
Diagramas de bloques
Descripción de la VI
funcionamiento del seguidor, sea esta velocidad, kp, kd o ki. Los valores de
como modificar los datos en tiempo real y conseguir una mayor calibración
del funcionamiento.
RESULTADOS
CONCLUSIONES
de un robot desde cero, requiere de una gran variedad de consideraciones desde su diseño
comunicación.
RECOMENDACIONES
correctamente la práctica.
15
BIBLIOGRAFÍA
Carrión L., et al. (2009). Desarrollo e implementación de una conexión de las placas
ANEXOS