DESCRIPCIÓN GENERAL
En Nuestro proyecto de ciclo pretendemos realizar 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 L9110) , dos sensores Interruptor IR, para obtener las comunicación con el entorno físico estos sensores son conocidos como sensores de proximidad, colocaremos una Rueda de balero o rueda loca, todos estos componentes irán controlados por un firmware programado en Arduino con un Atmega 328 en lenguaje C, todo el circuito estará alimentado de corriente por un Modulo porta baterías que contendrá 6 unidades “AA” de 1.5v.
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 del sensor. 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 ya que tiene la capacidad de desplazarse 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.
Bloque Mecánico.
Estructura Mecánica: Esta será como el Esqueleto de nuestro 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.
Además nuestro robot tendrá un sistema de potencia que estará a cargo de brindar la energía que necesita para moverse, este sistema estará basado en un porta baterías de 6 unidades “AA” de 1.5 v.
Esquema digital
Componentes o dispositivos a utilizar.
1- kit de chasis (incluye Chasis Rojo+Ruedas+motores+Balero+Porta baterias)
2- Juegos de cables macho-hembra(20 Cables)
2- Sensores Interruptor IR (sensor de proximidad)
1- Modulo Drivers para motores (IC L9110)
1- Arduino Uno
Proceso de ensamble
Iniciamos el ensamble o construcción de nuestro mini robot que estara hecho en forma de carro, continuación los componentes que utilizaremos.
En el Kit del carro NO se incluyen los sensores el arduino y modulo de drivers.
comenzamos colocando las base de nuestro carro en la que irán anclado los motores la rueda de balero
y los demás dispositivos es el chasis del robot
colocamos los motores en el chasis y los fijamos con los tornillos que trae el kit
Teniendo ya los motores sujetos al chasis colocaremos el balero o rueda loca
Luego colocamos las llantas de nuestro robot las cuales van directamente a los motores DC
Ahora solo nos queda cargar la instrucciones al ARDUINO el cual describimos a continuación.
Programa o Firmware:
Las instrucciones que harán que nuestro robot realice la tarea que le hemos programado están basadas en el lengua C++.
//Programa para control de MiniRobot Evita Obstáculos
// por Wilfredo Rosales
//Universidad Tecnológica de El Salvador
//ASIGNACIÓN DE PINES
int GND =A0; //utilizaremos como gnd el pin A0
int VCC1 =A2; //utilizaremos como VCC el pin A2
int VCC=A1; //utilizaremos como VCC el pin A1
int A1A=11; //IRA CONECTADO EL MOTOR A
int A1B=10; //IRA CONECTADO EL MOTOR A
int B1A=9; //IRA CONECTADO EL MOTOR B
int B1B=6; //IRA CONECTADO EL MOTOR B
int A=7; //IRA CONECTADO EL SENSOR A (DERECHA)
int B=8; //IRA CONECTADO EL SENSOR B (IZQUIERDA)
int sensorA; //GUARDARÁ EL VALOR DEL SENSOR A (DERECHA)
int sensorB; //GUARDARÁ EL VALOR DEL SENSOR B (IZQUIERDA)
int pwma;
//CONFIGURACIONES
void setup(){
pinMode(VCC1, OUTPUT); //pin A2 como salida
pinMode(GND, OUTPUT); //pin A0 como salida
pinMode(VCC, OUTPUT);//pin A1 como salida
pinMode(A, INPUT);// Pin7 como entrada
pinMode(B, INPUT);// Pin7 como entrada
pinMode(A1A, OUTPUT); //pin 11 como salida
pinMode(A1B, OUTPUT); //pin 10 como salida
pinMode(B1A, OUTPUT);//pin 9 como salida
pinMode(B1B, OUTPUT);//pin 6 como salida
pwma=185; //Valor de voltaje inyectado para control de velocidad
}
//PROGRAMA PRINCIPAL
void loop(){
digitalWrite(VCC, 1); digitalWrite(GND, 0); digitalWrite(VCC1, 1); //lectura de los pines analogos
sensorA=digitalRead(A); //CAPTURA DE VALOR TOMADO POR EL SENSOR
sensorB=digitalRead(B); //CAPTURA DE VALOR TOMADO POR EL SENSOR
//HACIA ADELANTE
//si ambos sensores estan en 1
if(sensorA==1 && sensorB==1){
analogWrite(A1A, pwma);analogWrite(A1B, 0);
analogWrite(B1A, pwma);analogWrite(B1B,0);
}
//HACIA ATRAZ
//si ambos sensores estan a cero
if(sensorA==0 && sensorB==0){
analogWrite(A1A, 0);analogWrite(A1B, pwma);
analogWrite(B1A, 0);analogWrite(B1B,pwma);
}
// DERECHA
//si el sensor A esta a 0
if(sensorA==0 && sensorB==1){
analogWrite(A1A, 0);analogWrite(A1B, 0);
analogWrite(B1A, 0);analogWrite(B1B,0);
delay(500);
analogWrite(A1A, pwma);analogWrite(A1B, 0);
analogWrite(B1A, 0);analogWrite(B1B,pwma);
delay(500);
analogWrite(A1A, 0);analogWrite(A1B, 0);
analogWrite(B1A, 0);analogWrite(B1B,0);
delay(500);
}
// IZQUIERDA
//si el sensor B esta a 0
if(sensorA==1 && sensorB==0){
analogWrite(A1A, 0);analogWrite(A1B, 0);
analogWrite(B1A, 0);analogWrite(B1B,0);
delay(500);
analogWrite(A1A, 0);analogWrite(A1B, pwma);
analogWrite(B1A,pwma );analogWrite(B1B,0);
delay(500);
analogWrite(A1A, 0);analogWrite(A1B, 0);
analogWrite(B1A, 0);analogWrite(B1B,0);
delay(500);
}
}
//FIN DEL PROGRAMA
// por Wilfredo Rosales
//Universidad Tecnológica de El Salvador
//ASIGNACIÓN DE PINES
int GND =A0; //utilizaremos como gnd el pin A0
int VCC1 =A2; //utilizaremos como VCC el pin A2
int VCC=A1; //utilizaremos como VCC el pin A1
int A1A=11; //IRA CONECTADO EL MOTOR A
int A1B=10; //IRA CONECTADO EL MOTOR A
int B1A=9; //IRA CONECTADO EL MOTOR B
int B1B=6; //IRA CONECTADO EL MOTOR B
int A=7; //IRA CONECTADO EL SENSOR A (DERECHA)
int B=8; //IRA CONECTADO EL SENSOR B (IZQUIERDA)
int sensorA; //GUARDARÁ EL VALOR DEL SENSOR A (DERECHA)
int sensorB; //GUARDARÁ EL VALOR DEL SENSOR B (IZQUIERDA)
int pwma;
//CONFIGURACIONES
void setup(){
pinMode(VCC1, OUTPUT); //pin A2 como salida
pinMode(GND, OUTPUT); //pin A0 como salida
pinMode(VCC, OUTPUT);//pin A1 como salida
pinMode(A, INPUT);// Pin7 como entrada
pinMode(B, INPUT);// Pin7 como entrada
pinMode(A1A, OUTPUT); //pin 11 como salida
pinMode(A1B, OUTPUT); //pin 10 como salida
pinMode(B1A, OUTPUT);//pin 9 como salida
pinMode(B1B, OUTPUT);//pin 6 como salida
pwma=185; //Valor de voltaje inyectado para control de velocidad
}
//PROGRAMA PRINCIPAL
void loop(){
digitalWrite(VCC, 1); digitalWrite(GND, 0); digitalWrite(VCC1, 1); //lectura de los pines analogos
sensorA=digitalRead(A); //CAPTURA DE VALOR TOMADO POR EL SENSOR
sensorB=digitalRead(B); //CAPTURA DE VALOR TOMADO POR EL SENSOR
//HACIA ADELANTE
//si ambos sensores estan en 1
if(sensorA==1 && sensorB==1){
analogWrite(A1A, pwma);analogWrite(A1B, 0);
analogWrite(B1A, pwma);analogWrite(B1B,0);
}
//HACIA ATRAZ
//si ambos sensores estan a cero
if(sensorA==0 && sensorB==0){
analogWrite(A1A, 0);analogWrite(A1B, pwma);
analogWrite(B1A, 0);analogWrite(B1B,pwma);
}
// DERECHA
//si el sensor A esta a 0
if(sensorA==0 && sensorB==1){
analogWrite(A1A, 0);analogWrite(A1B, 0);
analogWrite(B1A, 0);analogWrite(B1B,0);
delay(500);
analogWrite(A1A, pwma);analogWrite(A1B, 0);
analogWrite(B1A, 0);analogWrite(B1B,pwma);
delay(500);
analogWrite(A1A, 0);analogWrite(A1B, 0);
analogWrite(B1A, 0);analogWrite(B1B,0);
delay(500);
}
// IZQUIERDA
//si el sensor B esta a 0
if(sensorA==1 && sensorB==0){
analogWrite(A1A, 0);analogWrite(A1B, 0);
analogWrite(B1A, 0);analogWrite(B1B,0);
delay(500);
analogWrite(A1A, 0);analogWrite(A1B, pwma);
analogWrite(B1A,pwma );analogWrite(B1B,0);
delay(500);
analogWrite(A1A, 0);analogWrite(A1B, 0);
analogWrite(B1A, 0);analogWrite(B1B,0);
delay(500);
}
}
//FIN DEL PROGRAMA
referencia
Una pregunta como conectan los motorreductores???
ResponderEliminarGenial Gracias a Dios, y muchas Gracias por compartir se agradece Muchisimo, Y mas si compartieran el Modulo de driver, Gracias por permitir que otros Prueben el Modelo.
ResponderEliminarAunque creo que en otro Video Cambiaron el punte H, y el pic tiene mala calidad gracias. de antemano jojo Feliz navidad.
ResponderEliminarDaniel Arzate los motores Dc esta conectados al modulo drivers
ResponderEliminar+ - y + - y este conectado al Arduino de la siguiente manera
A1A=11; //IRA CONECTADO EL MOTOR A
A1B=10; //IRA CONECTADO EL MOTOR A
B1A=9; //IRA CONECTADO EL MOTOR B
B1B=6; //IRA CONECTADO EL MOTOR B
Carlos el este proyecto esta proyecto esta hecho con Arduino una plataforma mejor que el pic y el Modulo Drivers para motores es IC L9110 el cual aparece en una de las fotos
ResponderEliminarme gustaria pudieses poner un diagrama explicito de como va conectado los motores con el modulo y el arduino
ResponderEliminarRonny en una de las imagenes esta como va conectado con lo que tienes que tener cuidado solo es el VCC y GND que van a VCC y GND del arduino luego los demas pines pueden ir al pin que tu le asignes dentro del firmware
ResponderEliminarBuen proyecto, con que programa hiciste el esquema digital?
ResponderEliminarMe puedes vender el material y eso?
ResponderEliminarCOMO PUEDO COMPRARTE EL MATERIAL
ResponderEliminaraparte de esos sensores que otros puedo utilizar??
ResponderEliminarUna pregunta qe tipo de sensores son los que utilizas como los puedo comprar?? Interruptores Ir solo así? Por qe me dicen que hay muchos interruptores ir qe les especifique con un código agradecería su respuesta
ResponderEliminaramigo que tipo de motores utilizaste, son motorreductores o servomotes.
ResponderEliminarMil gracias por vuestro aporte!!
ResponderEliminarSe podría usar el mismo proceso pero usando Raspberry Pi (sabiendo de antemano que la programación es diferente)
De nuevo... Mil gracias
Mil gracias por vuestro aporte!!
ResponderEliminarSe podría usar el mismo proceso pero usando Raspberry Pi (sabiendo de antemano que la programación es diferente)
De nuevo... Mil gracias