Racing Senna - Fase 4.
_______________________________________________________________________________________________________________________
_______________________________________________________________________________________________________________________
Introducción a la Ingeniera Electrónica
Pablo Esteban Brand Tegue
Juan Camilo Pavi Valencia
Docente Oscar Casas García
______________________________________________________________
________________________________
Continuando con la fase cuatro del proyecto final de ingeniería electrónica, se procede a describir el sistema funcional de movimiento del robot seguidor de linea. Se opto por utilizar el driver controlador de motores "L298N" gracias a su popularidad y simple uso. Para esta parte del trabajo, ya se tiene una maquina funcional capaz de moverse en distintas dirección de manera "autónoma" a través de señales en su ambiente.
DRIVER CONTROLADOR DE MOTORES
L298N
El módulo controlador de motores L298N nos permite controlar la velocidad y la dirección de dos motores de corriente continua a través de señales externas, como pueden ser las de una placa arduino de forma muy sencilla.
Características generales:
- Interfaz de potencia: 5V~35V
- Corriente máxima: 2A por canal
- Voltaje de control: 5V
- Corriente de control: 36mA
- Potencia de salida: 25W
__________________________________
CONEXIONES
__________________________________
________________________________________________________________
DIAGRAMA DE FLUJO DEL PROGRAMA
________________________________________________________________
________________________________________
________________________________________
int rs = 13; // Pin del sensor derecho
int ls = 2; // Pin del sensor izquierdo
int ledr=8;
int ledl=7;
// Pines de señal del módulo L298N
int in1 = 5;
int in2 = 6;
int in3 = 10;
int in4 = 11;
int leftValue; //izquierda
int rightValue; //derecha
void setup() {
pinMode(rs, INPUT);
pinMode(ls, INPUT);
pinMode(in1, OUTPUT);
pinMode(in2, OUTPUT);
pinMode(in3, OUTPUT);
pinMode(in4, OUTPUT);
pinMode(ledr, OUTPUT);
pinMode(ledl, OUTPUT);
Serial.begin(9600); // // Comunicación serial
}
void sensorReading(){
leftValue = digitalRead(ls); // Lectura - Pin izquierdo
rightValue = digitalRead(rs); //Lectura - Pin derecho
}
void forward(){
digitalWrite(in1, LOW);
digitalWrite(in2, HIGH);
digitalWrite(in3, LOW);
digitalWrite(in4, HIGH);
}
void turnRight(){
//Motor izquierdo
digitalWrite(in1, LOW);
digitalWrite(in2, HIGH);
// Motor derecho
digitalWrite(in3, LOW);
digitalWrite(in4, LOW);
}
void turnLeft(){
//Motor izquiero
digitalWrite(in1, LOW);
digitalWrite(in2, LOW);
// Motor derecho
digitalWrite(in3, LOW);
digitalWrite(in4, HIGH);
}
void stopMotors(){
//Motor izquierdo
digitalWrite(in1, LOW);
digitalWrite(in2, LOW);
// Motor derecho
digitalWrite(in3, LOW);
digitalWrite(in4, LOW);
delay(3000);
digitalWrite(in1, HIGH);
digitalWrite(in2, LOW);
digitalWrite(in3, HIGH);
digitalWrite(in4, LOW);
delay(3000);
}
void loop() {
sensorReading();
if(leftValue == 0 && rightValue == 1){
turnLeft();
}else if(leftValue == 1 && rightValue == 0 ){
turnRight();
}else if(leftValue == 1 && rightValue == 1){
stopMotors();
}
else if(leftValue == 0 && rightValue == 0){
forward();
}
{
if (rightValue==HIGH)
{
digitalWrite(ledr, HIGH);
}
else
{
digitalWrite(ledr, LOW);
}}
{
if (leftValue==HIGH)
{
digitalWrite(ledl, HIGH);
}
else
{
digitalWrite(ledl, LOW);
}
}
Serial.print(leftValue);
Serial.println(rightValue);
}//END
________________________________________________________
ENSABLAJES FINALES DEL ROBOT
________________________________________________________
________________________________________________________
ROBOT EN FUNCIONAMIENTO
________________________________________________________
Comentarios
Publicar un comentario