[go: up one dir, main page]

0% encontró este documento útil (0 votos)
90 vistas10 páginas

Proyecto de Robótica Móvil

Este documento presenta el trabajo realizado en un laboratorio de robótica móvil en la Universidad Nacional de Colombia. Se construyeron cuatro robots móviles, uno sin sensores y tres con diferentes sensores (de gas, calor y proximidad) y sus respectivos códigos para que realicen funciones como girar al detectar un estímulo. El objetivo era adquirir conocimientos sobre aplicaciones de robótica móvil mediante la integración de sensores, motores y Arduino.
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
90 vistas10 páginas

Proyecto de Robótica Móvil

Este documento presenta el trabajo realizado en un laboratorio de robótica móvil en la Universidad Nacional de Colombia. Se construyeron cuatro robots móviles, uno sin sensores y tres con diferentes sensores (de gas, calor y proximidad) y sus respectivos códigos para que realicen funciones como girar al detectar un estímulo. El objetivo era adquirir conocimientos sobre aplicaciones de robótica móvil mediante la integración de sensores, motores y Arduino.
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 10

Laboratorio - Robótica móvil

Materia
Introducción a la robótica - Semestre 02-2022

Profesor
Jovani Alberto Jimenez Builes

Monitor
Alejandro Quiroz Estrada

Integrantes:
Juan Diego Marín Rodríguez
Bolkar Leimar Ocampo Montoya
Cristian David Quinchia Ramirez
Juan Jose Salazar Cardona

UNIVERSIDAD NACIONAL DE COLOMBIA

SEDE MEDELLÍN

FACULTAD DE MINAS
Introducción

La robótica móvil son robots capaces de moverse autónomamente y de ejecutar


determinadas acciones. Podemos utilizar diferentes herramientas para sus
aplicaciones, entre ellas el arduino, con esto tiene un espectro de aplicación casi
ilimitado ya que, gracias a la tecnología inteligente se pueden utilizar aparatos
respectivos de muy diversas maneras, tales como sensores, puente H y demás para
hacer que los robots móviles se muevan y realicen diferentes funciones. A pesar de
que la robótica móvil actualmente aún se encuentra en un estadio relativamente
temprano de su desarrollo, hace varios años que se utilizan prototipos y productos en
serie en diferentes sectores.

Para este trabajo se realizaron cuatro ensambles, uno de ellos sin sensor, y tres con
sensores aplicando diferentes funcionalidades, en donde se adquirieron nuevos
conocimientos respecto a las aplicaciones de la robótica móvil; Incluso tocó soldar el
robot oruga para que funcionara correctamente.
Práctica

Materiales:

• Robot (Carro)
• Puente H
• Cables
• Protoboard
• Baterías
• Arduino UNO
• Sensor de gas
• Sensor de calor
• Sensor de proximidad

Procedimiento

Conectamos el Puente H a los motores de las ruedas del carro las cuales eran unas
ruedas de tipo oruga, también hacemos conexión al arduino en el cual usaremos el
puerto VIN para el Puente H, el pin GND y pines analogicos y digitales para sensores,
conectamos una línea de tierra en la protoboard para tener todo más ordenado, luego
generamos el código para qué el carro se mueva ya sea en línea recta o hacia los
lados según sea nuestra necesidad.

Coche sin sensores


Sensor de gas
Para la primera aplicación haremos el ensamble del primer sensor qué será el sensor
de gas, al detectar gas comenzará a girar sobre su propio eje hacia la derecha durante
4 segundos si deja de detectar gas o indeterminadamente si lo detecta
constantemente.

https://www.youtube.com/shorts/JKTxzTpdv-A

Código implementado

Sensor de gas:

Para poder dar uso de ese sensor se pensó en la funcionalidad de que al momento de
detectar una cantidad considerable de gas, se procediera a encender las llantas del
vehículo para generar un desplazamiento y que la persona notara que había un
aumento de gas en el aire. Esto se hizo definiendo un valor mínimo de gas para
encender el motor obtenido luego de pruebas de mediciones sobre el ambiente.

El código implementado sería:

Definición de variables

#define MQ1 (0) //define la entrada analogica para el sensor


#define RL_VALOR (5) //define el valor de la resistencia mde carga en
kilo ohms
#define RAL (9.83) // resistencia del sensor en el aire limpio / RO,
que se deriva de latabla de la hoja de datos
#define GAS_LP (0)
String inputstring = ""; //Cadena recibida desde el PC
float LPCurve[3] = { 2.3, 0.21, -0.47 };
float Ro = 10;

// definimos las variables que van conectadas al motor


int E2 = 7;
int M2 = 6;

int E1 = 5;
int M1 = 4;

Funciones para la calibración del sensor de gas

float calc_res(int raw_adc) {


return (((float)RL_VALOR * (1023 - raw_adc) / raw_adc));
}

float Calibracion(float mq_pin) {


int i;
float val = 0;
for (i = 0; i < 50; i++) { //tomar múltiples muestras
val += calc_res(analogRead(mq_pin));
delay(500);
}
val = val / 50; //calcular el valor medio
val = val / RAL;
return val;
}

float lecturaMQ(int mq_pin) {


int i;
float rs = 0;
for (i = 0; i < 5; i++) {
rs += calc_res(analogRead(mq_pin));
delay(50);
}
rs = rs / 5;
return rs;
}

int porcentaje_gas(float rs_ro_ratio, int gas_id) {


if (gas_id == GAS_LP) {
return porcentaje_gas(rs_ro_ratio, LPCurve);
}
return 0;
}

int porcentaje_gas(float rs_ro_ratio, float *pcurve) {


return (pow(10, (((log(rs_ro_ratio) - pcurve[1]) / pcurve[2]) +
pcurve[0])));
}

Setup de los motores y calibración del sensor de gas

void setup() {
pinMode(E2, OUTPUT); // Input4 conectada al pin
pinMode(M2, OUTPUT); // Input3 conectada al pin
pinMode(E1, OUTPUT); // Input4 conectada al pin
pinMode(M1, OUTPUT); // Input3 conectada al pin

Serial.begin(9600);
Serial.println("Iniciando ...");
//configuracion del sensor
Serial.print("Calibrando sensor de gas...\n");
//Calibrando el sensor. Por favor de asegurarse que el sensor se
encuentre en una zona de aire limpio mientras se calibra
Calibracion(MQ1);
Serial.print("Calibracion finalizada...\n");
}

Lógica de ejecución

void loop() {
int lectura_gas = 0;

lectura_gas = porcentaje_gas(lecturaMQ(MQ1) / Ro, GAS_LP);


Serial.println(lectura_gas);

if (lectura_gas >= 500) {


// Motor gira en un sentido
digitalWrite(E2, HIGH);
digitalWrite(M2, LOW);
digitalWrite(E1, HIGH);
digitalWrite(M1, LOW);
delay(4000);

// Motor no gira
digitalWrite(M2, LOW);
digitalWrite(M1, LOW);
digitalWrite(E2, LOW);
digitalWrite(E1, LOW);
}
}

Sensor calor
En la siguiente aplicación usaremos el sensor de calor el cual detectara el calor
humano en adelante y cada qué el lo detecte girara sobre su propio eje, con un
funcionamiento similar al de la aplicación anterior.

https://www.youtube.com/shorts/gnyYg-XFPL0

Código sensor de calor


Para poder dar uso de ese sensor se pensó en la funcionalidad de que al momento de
detectar una cantidad considerable de temperatura alta, se procediera a encender las
llantas del vehículo para generar un desplazamiento. Esto se hizo definiendo un valor
mínimo de calor para encender el motor obtenido luego de pruebas de mediciones
sobre el ambiente.

El código implementado sería:

Definición de variables

// definimos las variables que van conectadas al motor


int E2 = 7;
int M2 = 6;
int E1 = 5;
int M1 = 4;

Setup de los motores

void setup() {
pinMode(E2, OUTPUT); // Input4 conectada al pin
pinMode(M2, OUTPUT); // Input3 conectada al pin
pinMode(E1, OUTPUT); // Input4 conectada al pin
pinMode(M1, OUTPUT); // Input3 conectada al pin
Serial.begin(9600);
}
Lógica de ejecución:

void loop() {
int valorSensor = analogRead(A2);
Serial.println(valorSensor);

if (valorSensor >= 300) {


// Motor gira en un sentido
digitalWrite(E2, HIGH);
digitalWrite(M2, LOW);
digitalWrite(E1, HIGH);
digitalWrite(M1, LOW);
delay(4000);

// Motor no gira
digitalWrite(M2, LOW);
digitalWrite(M1, LOW);
digitalWrite(E2, LOW);
digitalWrite(E1, LOW);
}
}

Sensor de proximidad

En la siguiente aplicación tendremos un sensor de proximidad qué se moverá hasta


encontrarse con un objeto; y esto lo hará sobre su propio eje, similar a las aplicaciones
anteriores.

https://www.youtube.com/shorts/XJFXsQpg8Og
Sensor de proximidad (ultrasonido):

Para este caso definimos un caso de uso que consiste en detener el motor cuando se
detecte una señal a menos de 15 CM, acorde a los datos obtenidos por el sensor
ultrasónico. Esto con el fin de evitar choques del carro con agentes externos.

El código implementado sería:

Definición de variables

int E2 = 7;
int M2 = 6;

int E1 = 5;
int M1 = 4;

const int Trigger = 2; //Pin digital 2 para el Trigger del sensor


const int Echo = 3; //Pin digital 3 para el Echo del sensor

Setup de los motores y sensor de proximidad

void setup() {
pinMode(E2, OUTPUT); // Input4 conectada al pin 4
pinMode(M2, OUTPUT); // Input3 conectada al pin 5
pinMode(E1, OUTPUT); // Input4 conectada al pin 4
pinMode(M1, OUTPUT); // Input3 conectada al pin 5
Serial.begin(9600);
pinMode(Trigger, OUTPUT); //pin como salida
pinMode(Echo, INPUT); //pin como entrada
digitalWrite(Trigger, LOW); //Inicializamos el pin con 0
}

Lógica de ejecución:

void loop() {
long tiempo; //timepo que demora en llegar el eco
long distancia; //distancia en centimetros

digitalWrite(Trigger, HIGH);
delayMicroseconds(10); //Enviamos un pulso de 10us
digitalWrite(Trigger, LOW);

tiempo = pulseIn(Echo, HIGH); //obtenemos el ancho del pulso


distancia = tiempo / 59; //escalamos el tiempo a una distancia en
cm

Serial.println(distancia);

while (distancia >= 15) {


digitalWrite(Trigger, HIGH);
delayMicroseconds(10); //Enviamos un pulso de 10us
digitalWrite(Trigger, LOW);

tiempo = pulseIn(Echo, HIGH); //obtenemos el ancho del pulso


distancia = tiempo / 59;

Serial.println(distancia);

if (distancia >= 15) {


digitalWrite(E2, HIGH);
digitalWrite(M2, LOW);
digitalWrite(E1, HIGH);
digitalWrite(M1, LOW);
} else {
digitalWrite(M2, LOW);
digitalWrite(M1, LOW);
digitalWrite(E2, LOW);
digitalWrite(E1, LOW);
}
}
}

Conclusiones

La robótica móvil tiene una amplia gama de aplicaciones, en donde existe una extensa
cantidad de herramientas para combinar y utilizar con un arduino, sensores y un coche.
Los ensambles aquí presentados sólo son una pequeña muestra de las funcionalidades
que puede llegar a tener la robótica móvil, y actualmente existen dispositivos con
integraciones e inteligencias artificiales tan complejas que satisfacen las necesidades
del ser humano en la actualidad.

Se generaron muchas fallas al momento de hacer el montaje, el coche inicial tenía


problemas y se tuvo que cambiar por un segundo coche (robot oruga), las baterías
tenían voltaje pero se quedaban sin corriente rápidamente, fallas de código y de
voltaje, pero al final se logró realizar todos los ensambles y adquirir una buena cantidad
de experiencia con todos los obstáculos presentados.

También podría gustarte