1. Movil Esquiva Objetos
1
MÓVIL ESQUIVA OBJETOS
Pytel Lucas
E-mail: lucaspy59@gmail.com
RESUMEN: Este trabajo tiene la función de
esquivar objetos, siendo utilizado un sensor de
ultrasonido, un arduino, un puente H y dos motores cc;
para que en conjunto realicen este trabajo.
PALABRAS CLAVE: Ultrasonido, Control, Puente H,
Arduino.
1 INTRODUCCIÓN
Este proyecto, lo que se busca , es cumplir con las
ordenes básicas de avanzar, retroceder, doblar y
observar gracias a los conocimientos aprendidos.
2 PROYECTO
2.1 CARACTERÍSTICAS GENERALES
Dichas características consisten básicamente en el uso
y empleo básico de un arduino en coordinación con otros
objetos, llegando asi al proyecto final.
Una de las principales características, es el método de
programación, para poder utilizar la lógica en el
procedimiento con las librerias
2.2 PROCEDIMIENTOS
Para iniciar con el procedimiento primero que nada se
empleeo un trabajo de análisis a lo que seria el tipo de
estructura que llevaría al cabo el trabajo y luego lo que
seria la lógica tanto cableada y la programada.
Como segundo paso iniciamos con la programación del
arduino,enlistando las entradas de salida yentrada ,para
lo que seria para el puente H y el sensor de ultrasonido.
El tercer paso consiste en generar una constante y
declarar una variable para poder medir la distancia entre
punto y punto del sensor de ultrasonido.
Una vez llegado a eso, por ultimo se establecen
comandos digitales para las patas del motor ,ya que en
conjunto generan funciones ,como avanzar, retroceder y
girar( esta función se genera desactivando un motor y el
otro activarlo con una potencia inferior a la de trabajo
habitual).
3 PROGRAMACION
3.1 DECLARACION
int IN1 = 4;
int IN2 = 5;
int ENA = 6;
int IN3 = 7;
int IN4 = 8;
int ENB = 9;
int ECHO = 11;
int TRIG = 12;
long duracion, distancia;
En esta parte del programa sedeclaran las variables
a utilizar.
3.2 ENTRADAS Y SALIDAS
void setup() {
Serial.begin (9600);
pinMode (IN1, OUTPUT);
pinMode (IN2, OUTPUT);
pinMode (ENA, OUTPUT);
pinMode (IN3, OUTPUT);
pinMode (IN4, OUTPUT);
pinMode (ENB, OUTPUT);
pinMode (ECHO, INPUT);
pinMode (TRIG, OUTPUT);
pinMode(13, OUTPUT);
}
En esta secuencia , se indican cuales serán las
patas en las que se reciba y se envíen datos.
3.3 SENSOR ULTRASONIDO
void loop() {
digitalWrite(TRIG, LOW);
delayMicroseconds(2);
digitalWrite(TRIG, HIGH);
delayMicroseconds(10);
digitalWrite(TRIG, LOW);
duracion = pulseIn(ECHO, HIGH);
distancia = (duracion/2) / 29;
En esta parte se realiza la constante del sensor
ultrasonido para poder realizar un análisis del tiempo en
cuanto a la distancia.
3.4 CONDICIÓN BASICA
if (distancia >= 500 || distancia <= 0){
Serial.println("0");
}
Estas líneas dicen que si los valores 500,0 son
excedidos para + o =, el programa se frenara , ya que no
estaría recibiendo bien los datos del ultrasonido.
2. Movil Esquiva Objetos
2
3.5 CONDICIÓN 2
else {
Serial.print(distancia);
Serial.println("mm");
digitalWrite(13, 0);
En estas líneas se representa la distancia en que
medida va a realizar el trabajo.
3.6 CONDICIÓN 3 (EVASION)
if (distancia <= 10 && distancia >= 1)
{
digitalWrite(13, 1);
Serial.println("Objeto Detectado.");
digitalWrite(IN1,1);
digitalWrite(IN2,0);
digitalWrite(IN3,0);
digitalWrite(IN4,1);
analogWrite(ENA,130);
analogWrite(ENB,130);
delay(1000);
digitalWrite(IN1,0);
digitalWrite(IN2,0);
digitalWrite(IN3,1);
digitalWrite(IN4,0);
analogWrite(ENB,135);
delay(500);
}
En esta condición si la distancia es menor/igual a
10cm.y mayor/igual a 1cm,el objeto será detectado ypor
lo tanto realizara dos acciones, una inversión del motor
(para que gire hacia atrás) yluego de eso accionar unsolo
motor a una indicada potencia para que el móvil gire.
3.7 CONDICIÓN ÚLTIMA
else{
Serial.print(distancia);
Serial.println("cm");
digitalWrite(IN1,0);
digitalWrite(IN2,1);
digitalWrite(IN3,1);
digitalWrite(IN4,0);
analogWrite(ENB,135);
analogWrite(ENA,125);
delay(400);
}
}
}
La ultima condición lo que establece es que si
ninguna de las situaciones anteriores no suceden, el
móvil debe acelerar hacia adelante.
3.8 PROGRAMACOMPLETO
int IN1 = 4;
int IN2 = 5;
int ENA = 6;
int IN3 = 7;
int IN4 = 8;
int ENB = 9;
int ECHO = 11;
int TRIG = 12;
long duracion, distancia;
void setup() {
Serial.begin (9600);
pinMode (IN1, OUTPUT);
pinMode (IN2, OUTPUT);
pinMode (ENA, OUTPUT);
pinMode (IN3, OUTPUT);
pinMode (IN4, OUTPUT);
pinMode (ENB, OUTPUT);
pinMode (ECHO, INPUT);
pinMode (TRIG, OUTPUT);
pinMode(13, OUTPUT);
}
void loop() {
digitalWrite(TRIG, LOW);
delayMicroseconds(2);
digitalWrite(TRIG, HIGH);
delayMicroseconds(10);
digitalWrite(TRIG, LOW);
duracion = pulseIn(ECHO, HIGH);
distancia = (duracion/2) / 29;
Serial.print(distancia);
if (distancia >= 500 || distancia <= 0){
Serial.println("0");
}
else {
Serial.print(distancia);
Serial.println("mm");
digitalWrite(13, 0);
if (distancia <= 10 && distancia >= 1)
{
digitalWrite(13, 1);
Serial.println("Objeto Detectado.");
digitalWrite(IN1,1);
digitalWrite(IN2,0);
digitalWrite(IN3,0);
digitalWrite(IN4,1);
analogWrite(ENA,130);
analogWrite(ENB,130);
delay(1000);
digitalWrite(IN1,0);
digitalWrite(IN2,0);
digitalWrite(IN3,1);
digitalWrite(IN4,0);
analogWrite(ENB,135);
delay(500);
}
else{
Serial.print(distancia);