LINE-BOT FASE 4


 




LINEBOT FASE 4

FUNCIONAMIENTO DE MOTORES

PROGRAMA INGENIERÍA ELECTRÓNICA


ASIGNATURA: INTRODUCCIÓN A LA INGENIERÍA ELECTRÓNICA

CÓDIGO: 710100M


ESTUDIANTES:

JUAN FELIPE ESCOBAR BARAHONA

CÓDIGO: 2124417

JUAN ANTONIO PATIÑO HERRERA

CÓDIGO: 2123605

MIGUEL ÁNGEL TOVAR ROA

CÓDIGO: 2126064


DOCENTE ASIGNADO: ASFUR BARANDICA LÓPEZ

1. INTRODUCCIÓN

Para la cuarta fase, se implementará al sistema del robot el driver que se utilizará para controlar los motores, que en este caso será el circuito integrado H L298n, este se utilizará para regular el comportamiento de los motores según los estímulos que sean entregados por los sensores. De igual manera, también se presentará el código que se utilizó para la programación de esta fase junto con un diagrama de flujo explicativo del comportamiento del robot e imágenes y videos alusivos del funcionamiento del sistema, simuladas en tinkercard y físicas. Del mismo modo, también se incluirá un diagrama de bloques que represente las conexiones hechas.

2. ESPECIFICACIONES DEL PUENTE H

Un puente H, en este caso el H L298n que estamos utilizando para el funcionamiento de nuestro robot seguidor de línea es un circuito electrónico que generalmente se usa para permitir a un motor eléctrico DC girar en ambos sentidos, avance y retroceso.

Chip

L298n

Canales

2 (soporta 2 motores DC o 1 motor PAP)

Voltaje lógico

5V

Voltaje de potencia

(V motor): 5V - 35V DC

Consumo de corriente

0 a 36 mA

Capacidad de corriente

2 A (Hasta picos de 3 A)

Potencia máxima

Hasta 25 W

Dimensiones

43 x 43 x 27 mm

Peso

30 g


Imagen






3. DIAGRAMA DE BLOQUES

El diagrama de bloques se utiliza para describir los componentes y funcionamiento del robot y sus conexiones mediante un esquema que utiliza figuras geométricas para la fácil comprensión del mismo. Aquí en el presente se evidencia las conexiones y funcionamiento básico.



4. DIAGRAMA DE FLUJO

El diagrama de flujo se utiliza para comprender más fácilmente el algoritmo de programación, dado a esto, para describir la programación que se utilizó para poder controlar los motores según los estímulos que arrojaban los sensores es la siguiente.



    CÓDIGO

int sensorU=A3; //sensor ir en A3
int lecturaU=0; //lectura del sensor trasero
int velocidadmax=0;
int velocidadalta=0;
int velocidadmed=0;
int velocidadmin=0;
void setup()
{
  pinMode(2, OUTPUT);
  pinMode(4, OUTPUT);
  pinMode(7, OUTPUT);
  pinMode(8, OUTPUT);
  pinMode(10,OUTPUT);
  pinMode(11,OUTPUT);
  pinMode(3,OUTPUT);
  pinMode(5,OUTPUT);
  pinMode(6,OUTPUT);
  pinMode(9,OUTPUT);
  pinMode(sensorD,INPUT);
  pinMode(sensorF,INPUT);
  pinMode(sensorI,INPUT);
  pinMode(sensorU,INPUT);
}
void loop()
{
velocidadmax=80;
velocidadmin=velocidadmax-80;
lectura();
if(lecturaD==1 && lecturaF==0 && lecturaI==0 && lecturaU==0){
derecha();
analogWrite(10,velocidadmin);
analogWrite(11,velocidadmax);
}
if(lecturaD==0 && lecturaF==1 && lecturaI==0 && lecturaU==0){
derecha();
analogWrite(10,velocidadmax);
analogWrite(11,velocidadmax);
}
if (lecturaD==1 && lecturaF==1 && lecturaI==1 && lecturaU==0){
derecha();
analogWrite(10,velocidadmin);
analogWrite(11,velocidadmax);
}
if (lecturaD==0 && lecturaF==1 && lecturaI==1 && lecturaU==0){
derecha();
analogWrite(10,velocidadmax);
analogWrite(11,velocidadmax);
}
if(lecturaD==0 && lecturaF==0 && lecturaI==1 && lecturaU==0){
derecha();
analogWrite(10,velocidadmax);
analogWrite(11,velocidadmax);
}
if(lecturaD==0 && lecturaF==1 && lecturaI==1 && lecturaU==1){
derecha();
analogWrite(10,velocidadmax);
analogWrite(11,velocidadmin);
}
if(lecturaD==0 && lecturaF==0 && lecturaI==0 && lecturaU==1){
derecha();
analogWrite(10,velocidadmax);
analogWrite(11,velocidadmin);
}
if(lecturaD==0 && lecturaF==0 && lecturaI==0 && lecturaU==0){
derecha();
analogWrite(10,velocidadmin);
analogWrite(11,velocidadmin);
}
}

void derecha(){
  digitalWrite(2,HIGH);
  digitalWrite(4,LOW);
  digitalWrite(7,HIGH);
  digitalWrite(8,LOW);
}
void lectura(){
//lectura de sensores ir
digitalWrite(3,HIGH);
digitalWrite(5,HIGH);
digitalWrite(6,HIGH);
digitalWrite(9,HIGH);   
lecturaD=digitalRead(sensorD);
lecturaF=digitalRead(sensorF);
lecturaI=digitalRead(sensorI);
lecturaU=digitalRead(sensorU);

// impresion de sensores ir
Serial.print(lecturaD);
Serial.print(lecturaF);
Serial.print(lecturaI);
Serial.print(lecturaU);
}


En este caso usamos señales análogas para los motores y poder disminuir su potencia en función de las señales de los sensores infrarrojos que arrogan señales de 0 y 1, siendo 0 cuando no está sobre la línea negra y 1 cuando está sobre ella. Y que pudiese tener un funcionamiento óptimo, de igual manera se adjuntarán archivos audiovisuales del código simulado y físico para retratar su funcionamiento.

IMÁGENES


Giro a la izquierda

Seguir adelante


Giro a la derecha

Debido a la carencia de sensores en el simulador se utilizaron fotocapacitores para simular su comportamiento y se evidencia su eficiencia.

VIDEO



Comentarios

Entradas populares de este blog

Robot laberinto Kastelean

Fase 4 Robot seguidor de linea

FASE 2 ROBOT SEGUIDOR DE LINEA