Está en la página 1de 21

ROBOT SEGUIDOR DE

LNEA CON SOFTWARE Y


HARDWARE LIBRE
July Paola Chitiva Ortiz
Jhosman Alfonso Lizarazo

Universidad Distrital Francisco Jos de Caldas


Facultad Tecnolgica
Tecnologa en Sistematizacin de Datos
Vehculo Controlado Mediante un Computador: se podra
controlar un vehculo (Robot pequeo de ruedas) que
avance, retroceda o gire mediante instrucciones que se
impartan desde el computador, o se podra hacer que este
vehculo en vez de seguir instrucciones desde el PC, siga una
ruta determinada mediante sensores infrarrojos. Este ser
constituido por ruedas, motores, fuente de energa, y tarjeta de
control (micro controlador Arduino ATmega168) programado en
lenguaje Arduino.

PROBLEMA PLANTEADO
FASE DE DISEO
ELECTRNICO
El robot actuar como un mvil seguidor de lnea
negra haciendo uso de sensores infrarrojos, los
cuales detectan la lnea y envan una seal al resto
del circuito del robot. All, de acuerdo a la
programacin realizada, se tomar una decisin
respecto a las acciones que el robot debe realizar
para mantenerse en el camino y llegar a la meta.
Este diseo electrnico cuenta con dos sistemas:
percepcin y potencia.
PERCEPCIN
En el sensor infrarojo lo que hace es enviar y recibir una
seal muy pequea que determina la transmisin de
luz infraroja que dependiendo de las condiciones del
espacio puede darnos varios valores, estos van
conectados a unas resistencias R2 y R4 controlan el
flujo de corriente, la cual desbloquear su base y
permitir la amplificacin de la seal. Las resistencias
R1 y R3 actan como proteccin de los led
disminuyendo el flujo de corriente hacia stos.
CNY70
Es importante tener presente que el sensor infrarrojo
tambin es sensible a la luz ambiente, razn por la cual
tanto el led infrarrojo como el fotodiodo deben
recubrirse con cinta aislante negra (u otro material
oscuro), formando una especie de conducto que
limita la incidencia de esta luz y facilita que el haz de
luz infrarroja se emita en una sola direccin. O
reprogramar la sensibilidad de los sensores CNY70
dentro de la programacin.
POTENCIA
La seal de salida obtenida de los sensores infrarrojos
se convierte en la seal de entrada a la fase de
programacin, en la que interviene un mdulo
electrnico (Arduino) para el control del robot. Para
ello se utilizar un componente (SN754410NE) o el
componente (L293D) quienes realizarn la funcin de
indicar a los motores que actividad realizar
dependiendo del momento

FUNCIONAMIENTO DEL PUENTE H


S1 S2 S3 S4 Resultado
1 0 0 1 El motor gira en avance
0 1 1 0 El motor gira en retroceso
El motor se detiene bajo su
0 0 0 0
inercia
1 0 1 0 El motor frena (fast-stop)
DISEO MECANICO
El robot cuenta con traccin diferencial, ya
que utiliza dos ruedas que son controladas
de manera individual y soportadas en un eje
central comn (rueda loca) para el balance.
Las dos ruedas tienen un recubrimiento de
caucho que permite mayor adhesin a la
superficie plana del entorno; la rueda loca
adems facilita el movimiento del robot al
contar con un giro libre de 360 grados. Las
dos ruedas principales son controladas por
un motor de corriente continua que cuenta
con un sistema de engranajes que ayuda a
aumentar la potencia en el movimiento.
En la figura 7 se observa la ubicacin de las ruedas en el robot;
la rueda loca se encuentra en la parte posterior de ste. Las
formas de avance con las que cuenta robot son hacia adelante,
girar a la izquierda y girar a la derecha y hacia atrs si as se
requiere. En la figura 8 se indica la posicin en el robot de los
sensores para el avance del seguimiento de lnea:

UBICACIN DE LAS RUEDAS DEL


ROBOT
Como ya se ha descrito en la fase de diseo mecnico la
traccin de los robots es diferencial, pero se hace necesario
controlar su movimiento (detenerse, avanzar, girar) y adems
garantizar el correcto funcionamiento de los sensores para seguir
un camino. Para solucionar esto se propone hacerlo a travs de
un entorno de programacin, teniendo en cuenta la poblacin
principal a la cual va dirigida la actividad, por lo que es
importante que sea de fcil acceso y uso.
De esta manera, el control de los robots se realiza a travs el IDE
de programacin de Arduino www.arduino.cc.

DISEO DE PROGRAMACIN
Para que sea posible la programacin de la placa en el entorno
Arduino, primero debe descargarse el software Arduino y el
firmware que har posible el reconocimiento de dicha placa por
el entorno. En la pgina principal de Arduino se encuentran las
especificaciones de instalacin de acuerdo al tipo y versin del
sistema operativo con el que se cuente. En este proyecto se
utiliz la versin de Arduino para Ubuntu, el cual se puede
encontrar en el centro de Software para
Ubuntu: https://apps.ubuntu.com/cat/applications/arduino/

DISEO DE PROGRAMACIN
Programacin:
1) Instalar Arduino (sudo apt-get install arduino)
2) Conectar Arduino por USB
3) Abrir Arduino

PROGRAMACION
4) Seleccionar tarjeta (Herramientas/Tarjeta/Arduino Diecimila or
Duemileanve w/ Atmega168

PROGRAMACION
5) Verificar permisos USB (~$ ls -l /dev/tty*)

PROGRAMACION
6) Visualizar cual fue el puerto asignado ~$ dmesg

PROGRAMACION
7) Si no tiene permisos asignar permisos al puerto USB que se
asign a la placa (crwxrwxrwx 1 root dialout 188, 0 may 24 10:33
ttyUSB0)
~$chmod 777 ttyUSB0

PROGRAMACION
Este es un ejemplo del Hola Mundo para arduino

PROGRAMACION
PROGRAMACION
Cdigo para nuestro robot seguidor de } digitalWrite(M2A, LOW);
lnea con Arduino:
void loop() digitalWrite(M2B, HIGH);
#define M1A 19 //Motor 1A
{ void ATR(uint16_t time){ delay(time);
#define M1B 18 //Motor 1B
byte SDER = (analogRead(S1)> _UMBRAL_ digitalWrite(M1A, HIGH); }
#define M2A 17 //Motor 2A )?0:1;
digitalWrite(M1B, LOW);
#define M2B 16 //Motor 2B byte SIZQ = (analogRead(S2)> _UMBRAL_
)?0:1; digitalWrite(M2A, HIGH); void IZQ(uint16_t time){
#define PIN_PWM 11 //Modulacion por
ancho de pulso - Emular salida analogica digitalWrite(M2B, LOW); //Llanta Izquierda
con salida digital
if(SDER && SIZQ) delay(time); digitalWrite(M1A, LOW);
#define VEL 100 //Velocidad
STOP(0); } digitalWrite(M1B, HIGH);
#define S1 0 //IZQ
else if (!SDER && SIZQ)
#define S2 1 //DER
DER(0); void ADE(uint16_t time){ //Llanta Derecha
#define _UMBRAL_ 200 //Umbral de los
sensores else if (SDER && !SIZQ) digitalWrite(M1A, LOW); digitalWrite(M2A, HIGH);

unsigned long timeserial; IZQ(0); digitalWrite(M1B, HIGH); digitalWrite(M2B, LOW);

else digitalWrite(M2A, LOW); delay(time);

void setup (){ ADE(0); digitalWrite(M2B, HIGH); }

Serial.begin(9600); if(millis() - timeserial > 500){ delay(time);

timeserial = millis(); timeserial = millis(); } void STOP(uint16_t time){

pinMode(M1A, OUTPUT); Serial.print("Sensor1: "); digitalWrite(M1A, LOW);

pinMode(M1B, OUTPUT); //Serial.print(SDER); void DER(uint16_t time){ digitalWrite(M1B, LOW);

pinMode(M2A, OUTPUT); Serial.print(analogRead(S1)); //Llanta Izquierda digitalWrite(M2A, LOW);

pinMode(M2B, OUTPUT); Serial.print(" Sensor2: "); digitalWrite(M1A, HIGH); digitalWrite(M2B, LOW);

STOP(10000); //Serial.println(SIZQ); digitalWrite(M1B, LOW); delay(time);

analogWrite(PIN_PWM, VEL); Serial.println(analogRead(S2)); }

} } //llanta Derecha
Cantidad Componente

2 Led infrarrojo CNY70


2 Resistencias 220
2 Resistencias 47K
1 Driver para motor L293 B
SN754410NE Agradecimientos:
2 Secciones de acrlico de
12x12 cms de 10 mm. de
ancho para las partes Laura Romero
superior e inferior. Leonardo Urrego
Tornillos y Tuercas
2 Ruedas de 8 cm de Documentacin arduino.cc
dimetro Google y Wikipedia
1 Rueda loca
1 Twin Motor GrearBox Texas Instruments
1 Placa Arduino ATMega168
1 Protoboard
Cables para conexiones
5 Condensadores

ELEMENTOS NECESARIOS
FOTOGRAFIAS

También podría gustarte