LINETBJS - FASE 5

                                   

                                        ____________________________________________________________________________


_______________________________________________________________________________

 FASE 5 - LINEBJS

Gonzales Ceballos Santiago - 202127452
Narváez Castillo Julián Eduardo - 202123055
Grueso Rodriguez Brayan Andres - 202123435 
_______________________________________________________________________________



INTRODUCIÓN

Esté es el informe final del robot seguidor de línea llamado LINEBJS en el cual se presentaran todos los componentes que llegamos a utilizar para la creación del robot, además veremos su estructura, planos, circuitos y el código utilizado para poder construir un LINEBJS y como extra dejaremos un diagrama de flujo y de bloques para llegar a entenderlo mejor, no siendo más comencemos. 


ESPECIFICACIONES DE LOS COMPONENTES UTILIZADOS EN LINEBJS



ilustración de los motores

Motores (3V-9V)

Este es el elemento encargado de darle le movimiento al robot mediante la orden que se obtiene del microcontrolador. Dichos motores tienen un consumo de 80-100 mA, cuenta con un voltaje de operación de 3 a 12 Voltios, su velocidad se encuentra en: 3v = 80 rpm / 5v=120 rpm / 9v= 300 rpm, posee también una caja reductora que va de 1:48

tabla de especificaciones de los motores





ilustración de los leds

LEDS

Un LED es un diodo emisor de luz, es decir, un tipo particular de diodo que emite luz al ser atravesado por una corriente eléctrica. Los diodos (emisor de luz, o no) son unos de los dispositivos electrónicos fundamentales.

tabla de especificaciones de los diferentes tipos de led
                  






ilustración de resistencias

RESISTENCIA (10k & 220 A)

Es un dispositivo o componente electrónico, que como su propio nombre indica tiene por misión ofrecer resistencia (oponerse) al paso de la corriente eléctrica dentro de un circuito.

                            




ilustración de pulsadores

Micro pulsador (Sw-765)

sirven para habilitar las señales de mando de otras unidades de control, este posee un tamaño de 6x6x11mm.
                    






ilustración de baterías

Baterías (9V)

La batería es un dispositivo que almacena energía en forma electroquímica y es el más ampliamente usado para almacenar energía en una variedad de aplicaciones.

                                       




Arduino Mega (2560)

Es una placa de desarrollo basada en el microcontrolador ATmega2560. Tiene 54 entradas/salidas digitales (de las cuales 15 pueden ser usadas como salidas PWM), 16 entradas analógicas, 4 UARTs, un cristal de 16Mhz, conexión USB, jack para alimentación DC, conector ICSP, y un botón de reseteo.
                   



Módulo Arduino (driver motor L298N)

son placas que podremos conectar a las ciertas tarjetas Arduino y dotarlas de nuevas funcionalidades.
                                                                                                                                     


RUEDA LOCA (36 mm)

La rueda loca (Caster Wheel en inglés) es una rueda sin tracción, simple o doble, que puede girar libremente y que generalmente está situada en la parte inferior de una estructura. Se utiliza en carros de la compra, sillas de oficina o vehículos, en este caso la utilizaremos para poder girar el seguidor de linea con los motores.

ilustración de la rueda loca

 COSTE DE COMPONENTES 





  Diagrama de bloques

En el diagrama podemos evidenciar como la mayoría de componentes están conectados a el chasis que en este caso es la protoboard, a través de la cual las baterías se encargan de alimentar el “driver” y el “Arduino-Mega” a el mismo tiempo, después en la parte de arriba encontramos los sensores, los cuales se encargan de enviar las lecturas obtenidas a el módulo de “Arduino”, por consiguiente, este a través de los leds nos indica los valores obtenidos anteriormente.





PLANOS DE LINEBJS









CIRCUITO DE LINEBJS


Diagrama de flujo del código


     Sensor_L = Sensor izquierdo                  Sensor_R = Sensor derecho

Sensor Izquierdo

Sensor Derecho

Dirección del Code&Drive

0

0

Adelante

0

1

Izquierda

1

0

Derecha

1

1

Atrás







Primer caso: El diagrama comienza evaluando el Sensor_L, si se encuentra apagado el led_L se prosigue a evaluar Sensor_R, si se encuentra apagado el led_R se recopilan los valores obtenidos los cuales son “0,0“ lo cual me indica la dirección de movimiento del robot en este caso “adelante”.

Segundo caso: El diagrama comienza evaluando el Sensor_L, si se encuentra apagado el led_L se prosigue a evaluar Sensor_R , si se encuentra encendido el led_R se recopilan los valores obtenidos los cuales son “0,1“ lo cual me indica la dirección de movimiento del robot en este caso “izquierda”, en este caso el Sensor_R, se encuentra leyendo la línea negra por lo que se debe aplicar una rotación (en este caso definida como 10°) con ayuda del Motor_L de izquierda a derecha.

Tercer caso: El diagrama comienza evaluando el Sensor_L, si se encuentra encendido el led_L se prosigue a evaluar Sensor_R, si se encuentra apagado el led_R se recopilan los valores obtenidos los cuales son “1,0” lo cual me indica la dirección de movimiento del robot en este caso “derecha”, en este caso el Sensor_L, se encuentra leyendo la línea negra por lo que se debe aplicar una rotación (en este caso definida como 10°) con ayuda del Motor_R de derecha a izquierda.

Cuarto caso: El diagrama comienza evaluando el Sensor_L, si se encuentra encendido el led_L se prosigue a evaluar Sensor_R, si se encuentra encendido el led_R se recopilan los valores obtenidos los cuales son “1,1” lo cual me indica la dirección de movimiento del robot en este caso “atrás”.

Después de que el diagrama determine de que caso específicamente se trata según la respuesta de los sensores, se reinicia el diagrama volviéndolo un ciclo infinito.








CODIGO FINAL DE LINEBJS 

const int LedV = 9;// Led Izquierdo
const int LedR1 = 8;//Led Derecho
const int sensor1 = 6; //Izquierdo 
const int sensor2 = 7; //derecho
int estadoS1 = 0; //guarda el estado del sensor izquierdo
int estadoS2 = 0; //guarda el estado del sensor derecho

//Motor Derecho ENA
const int ENA = 12;
const int IN1 = 11;
const int IN2 = 10;
//Motor Izquierdo ENB
const int ENB = 3;
const int IN3 = 5;
const int IN4 = 4;
  
void setup()
{
  Serial.begin(9600);
  pinMode(sensor2, INPUT);
  pinMode(9, OUTPUT);
  pinMode(8, OUTPUT);
  pinMode(ENA, OUTPUT);
  pinMode(IN1, OUTPUT);
  pinMode(IN2, OUTPUT);
  pinMode(ENB, OUTPUT);
  pinMode(IN3, OUTPUT);
  pinMode(IN4,OUTPUT);
  pinMode(sensor1, INPUT);
}
void loop()
{
  estadoS1 = digitalRead(sensor1);
  estadoS2 = digitalRead (sensor2);
  if ((estadoS1 == LOW)&&(estadoS2 == LOW)){ //MOTOR IZQUIERDO Y MOTOR DERECHOS PRENDIDOS HACIA ADELANTE
    analogWrite(ENA,255);
    digitalWrite(IN1,LOW); 
    digitalWrite(IN2,HIGH); 

    analogWrite(ENB,255);
    digitalWrite(IN3,LOW); 
    digitalWrite(IN4,HIGH);  

    digitalWrite(LedV,HIGH);
    digitalWrite(LedR1,HIGH);
    
  } else if ((estadoS1 == LOW)&&(estadoS2 == HIGH)){ //Motor izquierdo baja potencia y derecho a maxima
    
    analogWrite(ENA,127);//Bajar potencia del motor izquierdo
    digitalWrite(IN1,LOW); 
    digitalWrite(IN2,HIGH); 

    analogWrite(ENB,255);//Aumentar potencia del motor derecho
    digitalWrite(IN3,LOW); 
    digitalWrite(IN4,HIGH); 
    

    digitalWrite(LedV,HIGH);
    digitalWrite(LedR1,LOW);
    
    } else if ((estadoS1 == HIGH)&&(estadoS2 == LOW)){
    
    analogWrite(ENA,255);//Aumentar potencia del motor izquierdo
    digitalWrite(IN1,LOW); 
    digitalWrite(IN2,HIGH); 

    analogWrite(ENB,127);//Bajar potencia del motor derecho
    digitalWrite(IN3,LOW); 
    digitalWrite(IN4,HIGH); 
    

    digitalWrite(LedV,LOW);
    digitalWrite(LedR1,HIGH);
    
    } else if ((estadoS1==HIGH)&&(estadoS2==HIGH)){ //MOTOR IZQUIERDO Y DERECHO PRENDIDOS HACIA ATRAS
      
      analogWrite(ENA,255);
      digitalWrite(IN1,HIGH);
      digitalWrite(IN2,LOW);

      analogWrite(ENB,255);
      digitalWrite(IN3,HIGH);
      digitalWrite(IN4,LOW);

      digitalWrite(LedV,LOW);
      digitalWrite(LedR1,LOW);
      }

}


Comentarios

Entradas populares de este blog

Robot laberinto Kastelean

Fase 4 Robot seguidor de linea

FASE 2 ROBOT SEGUIDOR DE LINEA