Proyecto: Robot seguidor de linea - Fase IV
Fase IV - Robot Seguidor de Línea
noviembre 13, 2020
Por: Andrea Catalina Buesaquillo Rosales - 1944021
Gustavo Adolfo Hernández Ramos - 2023934
Brayan Camilo Giraldo jurado - 2041720
Oscar Andrés Flórez Ramos - 1942692
Introducción
En éste informe se describe el driver empleado para el control de los motores seleccionados junto con los elementos del robot, acompañado de un diagrama de flujo que muestra el funcionamiento del programa implementado en Arduino y las evidencias del avance físico del robot.
Driver L293D
Con el objetivo de implementar el sistema del robot seguidor de linea, con respecto a la alimentacion y control de los motores que determinan el movimiento, se ha optado por utilizar el Driver tipo puente H con referencia l293D el cual consta de un circuito integrado de cuatro canales cuyo propósito es controlar cargas inductivas con una salida máxima de corriente de 600mA por canal.
DRIVER
//---------------------------Sensores--------------------------------------------------------------------------
int Sens1= A0; //Declaramos una variable entera para asignar el Sensor 1 al pin analógico A0
int Sens2= A1; //Declaramos una variable entera para asignar el Sensor 2 al pin analógico A1
int val1; // Se define una variable para almacenar estado del sensor 1
int val2; // ""
//-------------------------------------------------------------------------------------------------------------
//----------------------------Motor 1--------------------------------------------------------------------------
int IN1= 2; //Declaramos IN1 del puente H, como una variable entera para asignarla al pin digital 2
int IN2= 3; //Declaramos IN2 del puente H, como una variable entera para asignarla al pin digital 3
//----------------------------Motor 2--------------------------------------------------------------------------
int IN3= 4; //Declaramos IN3 del puente H, como una variable entera para asignarla al pin digital 4
int IN4= 5; //Declaramos IN4 del puente H, como una variable entera para asignarla al pin digital 5
void setup() {
//----------------------------Sensores-------------------------------------------------------------------------
pinMode(Sens1, INPUT); // declaramos Sens1 como una entrada
pinMode(Sens2, INPUT); // declaramos Sens2 como una entrada
//-------------------------------------------------------------------------------------------------------------
//----------------------------Motor 1--------------------------------------------------------------------------
pinMode(IN1, OUTPUT); // declaramos IN1 como salida
pinMode(IN2, OUTPUT); // declaramos IN2 como salida
//-------------------------------------------------------------------------------------------------------------
//----------------------------Motor 2--------------------------------------------------------------------------
pinMode(IN3, OUTPUT); // declaramos IN3 como salida
pinMode(IN4, OUTPUT); // declaramos IN4 como salida
//-------------------------------------------------------------------------------------------------------------
}
void loop() {
//---------------------------Sensores------------------------------------------------------------------------------------------
val1= digitalRead(Sens1); // En esta acción el arduino leera el estado del sensor y la almacenara en el valor correspondiente
val2= digitalRead(Sens2); //"
//-----------------------------------------------------------------------------------------------------------------------------
//---------------------------Funcionamiento motores----------------------------------------------------------------------------
if(val1==0 & val2==0)// Si ambos sensores estan en cero, entonces estan sobre la linea negra y los dos motores estaran girando hacia adelante a la mayor velocidad
{
//Motor 1 (motor izquierdo)
digitalWrite(IN1,0);//in1=0 y in2=1 el motor 1 gira hacia adelante
analogWrite(IN2,255);// Con este valor se activa el motor 1 a la máxima velocidad.
//Motor 2 (motor derecho)
digitalWrite(IN3,0);//in3=0 y in4=1 el motor 2 gira hacia adelante
analogWrite(IN4,255);// Con este valor se activa el motor 2 a la máxima velocidad.
}
if(val1==0 & val2==1)// Si el sensor1=0 y sensor2=1 entonces el robot debe girar a la izquierda.
{
//Motor 1 (motor izquierdo)
digitalWrite(IN1,0);
analogWrite(IN2,25);// Con este valor el motor 1 estará girando a muy poca velocidad.
//Motor 2 (motor derecho)
digitalWrite(IN3,0);
analogWrite(IN4,215);// Con este valor se activa el motor 2 disminuye su velocidad, pero gira más rapido que el motor 1 para girar a la izquierda
}
if(val1==1 & val2==0)// Si el sensor1=1 y sensor2=0 entonces el robot debe girar a la derecha.
{
//Motor 1 (motor izquierdo)
digitalWrite(IN1,0);
analogWrite(IN2,215);// Con este valor se activa el motor 1 disminuye su velocidad, pero gira más rapido que el motor 2 para girar a la derecha.
//Motor 2 (motor derecho)
digitalWrite(IN3,0);
analogWrite(IN4,25);// Con este valor el motor 2 estará girando a muy poca velocidad.
}
if(val1==1 & val2==1)// Si el sensor1=1 y sensor2=1 es porque el robot ha salido de la linea por completo, ambos motores retrocederan a una velocidad media hasta encontrarla
{
//Motor 1
digitalWrite(IN1,1);// invertimos el sentido de giro del motor 1
analogWrite(IN2,125);
//Motor 2
digitalWrite(IN3,1);// invertimos el sentido de giro del motor 2
analogWrite(IN4,125);
}
}
Comentarios
Publicar un comentario