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.


Diagrama de cables y componentes en Thinkercad



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); } }


EVIDENCIAS






Comentarios

Entradas más populares de este blog

SENKU: El robot que resuelve laberintos (Fase 5)

Fase 5 -- Robot Seguidor De Línea

Seguidor de Línea