Robot detector de obstáculos HC-SR04
EN ESTE POST SE ENCUENTRA LA PLACA PCB Y EL CODIGO PARA DESCARGAR
NIVEL DE DIFICULTAD 4 DE UNA ESCALA DE 10
DESCRIPCIÓN GENERAL
Este proyecto se trata de un Mini Robot móvil, el cual estará diseñado como un carrito tendrá un chasis plástico que será el esqueleto de nuestro robot incluirá dos motores dc que permitirán el giro de las llantas que estarán conectadas al piñón de engranes que traen ya incorporados los motores, un Modulo driver para motores (IC L293D) , tres sensores ultrasonicos HC-SCR04, para obtener las comunicación con el entorno físico estos sensores son conocidos como sensoresde proximidad, colocaremos dos Ruedas de balero o ruedas locas, todos estos componentes irán controlados por un firmware programado en Arduino nano con un Atmega 328 en lenguaje C, todo el circuito estará alimentado por dos baterias un Modulo porta baterías que contendrá 4 unidades “AA” de 1.5v para alimentar a los motores y una bateria de 9v para alimentar al circuito.
La función de nuestro robot se basara en que cada vez que encuentre un obstáculo que le impida el paso hacia adelante este cambie su dirección, para lo cual se creara un sistema para que el robot sea capaz de moverse y evitar obstáculos. Esto requiere un sistema básico para el control del motor, y también para la lectura y la interpretación de la información de los sensores. El tratamiento para esto lo haremos usando un Arduino , que es una plataforma de código abierto de prototipos electrónicos utilizando un microcontrolador ATmega328.
El carrito evita obstáculos que vamos a desarrollar se clasifica de la siguiente manera.
Según su Nivel de Arquitectura.
Móvil. Según la arquitectura de nuestro mini robot se clasifica como móvil y que tiene la capacidad dedesplazarse al rededor de un espacio restringido o No.
Por su Nivel de inteligencia.
Inteligente. Lo podemos clasificar como inteligente ya que tiene un entendimiento completo de su entorno atreves del Firmaware y los Sensores. Según su Programación.
Nivel robot: Lo clasificamos por su programación dentro de los nivel–robot, ya que se basa en un sistema digital programable y se programara basado en tareas a ejecutar. Nuestro proyecto estar formado por los bloques funcionales siguientes que conformaran la estructura de nuestro Robot.
Estructura Mecánica: Esta será como el Esqueleto denuestro robot será la encargada de dar soporte y firmeza, formará el chasis de nuestro carro evita obstáculos, dicho chasis estará hecho de acrílico color rojo. Este es independiente de los motores y las ruedas, por lo tanto los motores y las ruedas no forman parte del chasis.Reductores: Para adaptar y modificar la velocidad y la fuerza del movimiento de salida de nuestros motores hacia las llantas de nuestro carro, los motores Dc que utilizaremos trae ya incorporado una caja donde se encuentra un sistema de engranajes que nos permitirán realizar dicha función.Elementos terminales: Para que nuestro robot pueda moverse y pueda apoyarse en el entorno físico colocaremos dos llantas que irán ensambladas a los motores que nos permitirán la movilidad de nuestro robot, a la vez también colocaremos una Rueda balero o rueda loca como es conocida común mente.
Bloque Electrónico.
Sistema de Accionamiento: Los elementos que brindaran el poder de movilizarse a nuestro robot serán dos actuadores eléctricos es decir dos motores DC, que brindara la fuerza necesaria para poder movilizarse en su arranque y cada vez que encuentre un obstáculo, marcaran la dirección tanto hacia adelante-atrás como a los lados.
Sistema Sensorial: Para que nuestro robot pueda realizar su tarea de evitar los obstáculos que encuentre, necesita hacer un reconocimiento de su entorno por lo tanto nuestro robot tendrá dos Sensores Interruptor IR (Sensor de proximidad) que nos permitirán que el robot pueda “ver” su entorno.
Componentes o dispositivos que utilizamos.
- 1- kit de chasis (incluye Chasisruedas+motores+Baleros+Porta baterias)
se la pueden descargar de aqui:
https://docs.google.com/file/d/0BykxU0qiVjQjMVZCd0w3U041VUk/edit
Programa o Firmware:
CODIGO PARA EL ROBOT
#include <Ultrasonic.h>
Ultrasonic ultrafront(3,2); // (Trig PIN,Echo PIN)
Ultrasonic ultraleft(4,5); // (Trig PIN,Echo PIN)
Ultrasonic ultraright(7,6); // (Trig PIN,Echo PIN)
int sensoradeval = 0;
int sensoriz = 0;
int sensordr = 0;
void setup() {
//Serial.begin(9600);
pinMode(8,OUTPUT);
pinMode(9,OUTPUT);
pinMode(10,OUTPUT);
pinMode(11,OUTPUT);
}
void loop()
{
SENSORADEL();
SENSORIZQ();
SENSORDER();
}
void SENSORADEL() {
//Serial.print("Front: " );
// Serial.print(ultrafront.Ranging(CM)); // CM or INC
// Serial.print(" cm " );
// delay(50);
if(ultrafront.Ranging(CM) > 15){
IRADELANTE();
}
else
{
IRATRAS();
delay(300);
IRDERECHA();
delay(200);
SENSORIZQ();
}
}
void SENSORIZQ() {
//Serial.print("Left: " );
//Serial.print(ultraleft.Ranging(CM)); // CM or INC
//Serial.print(" cm " );
// delay(50);
if(ultraleft.Ranging(CM) > 6){
SENSORADEL();
}
else
{
IRDERECHA();
//delay(200);
SENSORDER();
}
}
void SENSORDER() {
// Serial.print("Right: " );
// Serial.print(ultraright.Ranging(CM)); // CM or INC
// Serial.println(" cm" );
// delay(50);
if(ultraright.Ranging(CM) > 6){
SENSORADEL();
}
else
{
IRIZQUIERDA();
//delay(200);
SENSORIZQ();
}
}
void IRADELANTE(){
digitalWrite(8,LOW);
digitalWrite(9,HIGH);
digitalWrite(10,HIGH);
digitalWrite(11,LOW);
}
void IRATRAS(){
digitalWrite(8,HIGH);
digitalWrite(9,LOW);
digitalWrite(10,LOW);
digitalWrite(11,HIGH);
}
void IRIZQUIERDA(){
digitalWrite(8,HIGH);
digitalWrite(9,LOW);
digitalWrite(10,HIGH);
digitalWrite(11,LOW);
}
void IRDERECHA(){
digitalWrite(8,LOW);
digitalWrite(9,HIGH);
digitalWrite(10,LOW);
digitalWrite(11,HIGH);
}
void STOP(){
digitalWrite(8,LOW);
digitalWrite(9,LOW);
digitalWrite(10,LOW);
digitalWrite(11,LOW);
}

