LINETBJS - FASE 5
____________________________________________________________________________
FASE 5 - LINEBJS
INTRODUCIÓN
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
![]() |
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)
![]() |
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 |
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
Publicar un comentario