Control de Carro con el driver L298N

Funcionamiento

El objetivo principal es controlar el movimiento de un carro accionado por dos motores DC, utilizando la placa Arduino para enviar señales al driver L298N. El driver actúa como intermediario, regulando la dirección y la velocidad de los motores según las instrucciones del Arduino. Este proyecto puede ampliarse para incluir funcionalidades como control remoto, sensores de obstáculos o seguimiento de líneas.


Componentes

  • Arduino (cualquier modelo, como Arduino Uno).
  • 1 driver de motor L298N.
  • 2 motores DC con su caja de reducción.
  • 4 llantas(2 van a los motores).
  • 1 batería o fuente de alimentación externa(5v – 12v)
  • Cables jumpers .

Conexiones

  • Conexión de motores:
  • Conecta el motor “A” a la salida A del L298N
  • Conecta el motor “B” a la salida B del L298N
  • Conecta el pin VCC del sensor al pin de 5V del Arduino.
  • Conexión de batería (5v-12v):
  • Conecta el positivo de la batería a VIN del L298N(NO QUITAR EL JUMPER REGULADOR del L298N)
  • Conecta el negativo de la batería a GND del L298N(NO QUITAR EL JUMPER REGULADOR del L298N)
  • Conexión de arduino:
  • Conecta VIN de arduino a 5v(no a VIN) del L298N
  • Conecta GNG de arduino a GND de la bateria.
  • Conecta pin 2 del arduino a IN1 del L298N.
  • Conecta pin 3 del arduino a IN2 del L298N.
  • Conecta pin 5 a EN-A del L298N.
  • Conecta pin 7 del arduino a IN3 del L298N.
  • Conecta pin 8 del arduino a IN4 del L298N.
  • Conecta pin 10 a EN-B del L298N.

NOTA:

No remover el jumper regulador del L298N si se usa una batería de entre 5v y 12v.


Código

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
#include <Arduino.h>

void aForward(int vel);
void bForward(int vel);
void aBack(int vel);
void bBack(int vel);
void stop();

int IN1 = 2;			// IN1 a pin digital 2
int IN2 = 3;			// IN2 a pin digital 3
int ENA = 5;			// ENA a pin digital 5
int IN3 = 7;			// IN3 a pin digital 7
int IN4 = 8;			// IN4 a pin digital 8
int ENB = 10;			// ENA a pin digital 10

int Velocity;			// variable velocidad

void setup(){
  pinMode(IN1, OUTPUT);		// IN1 como salida	
  pinMode(IN2, OUTPUT);		// IN2 como salida
  pinMode(ENA, OUTPUT);		// ENA como salida
  pinMode(IN3, OUTPUT);		// IN3 como salida
  pinMode(IN4, OUTPUT);		// IN4 como salida
  pinMode(ENB, OUTPUT);		// ENB como salida
}

void loop(){
  Velocity = 255;		// valor de velocidad   

  aForward(Velocity);		// motor A avanza
  bForward(Velocity);		// motor b avanza
  delay(1000);	// demora 1 seg.
  
  stop();		// detener motores
  delay(1000);			// demora 1 seg.

  aForward(Velocity);		// motor A avanza
  delay(1000);	// demora 1 seg.

  stop();		// detener motores
  delay(1000);	// demora 1 seg.

  aForward(Velocity);		// motor A avanza
  bForward(Velocity);		/// motor B avanza
  delay(1000);	// demora 1 seg.

  stop();		// detener motores
  delay(1000);	// demora 1 seg.

  bForward(Velocity);		// motor B avanza
  delay(1000);	// demora 1 seg.

  stop();		// detener motores
  delay(1000);	// demora 1 seg.

  aBack(Velocity);	// motor A retrocede
  bBack(Velocity);	// motor B avanza
  delay(1000);	// demora 1 seg.

  stop();		// detener motores
  delay(1000);	// demora 1 seg.

  bForward(Velocity);		// motor B avanza
  delay(1000);	// demora 1 seg.

  stop();		// detener motores
  delay(1000);	// demora 1 seg.

}

void aForward(int vel){	// función avance de motor A
  analogWrite(ENA, vel);	
  digitalWrite(IN1, LOW);
  digitalWrite(IN2, HIGH);
}

void bForward(int vel){	// función avance de motor B
  analogWrite(ENB, vel);	
  digitalWrite(IN3, LOW);	
  digitalWrite(IN4, HIGH);	
}

void aBack(int vel){	// función retroceso de motor A
  analogWrite(ENA, vel);	
  digitalWrite(IN1, HIGH);	
  digitalWrite(IN2, LOW);	
}

void bBack(int vel){	// función retroceso de motor B
  analogWrite(ENB, vel);	
  digitalWrite(IN3, HIGH);	
  digitalWrite(IN4, LOW);	
}

void stop(){		// función detener ambos motores
  analogWrite(ENA, 0);		
  analogWrite(ENB, 0);		
}


Diseños


Videos


Conclusión

Este proyecto es ideal para aprender a trabajar con motores, drivers y microcontroladores. Además, constituye una base sólida para proyectos más complejos, como robots autónomos o vehículos controlados de manera remota.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Carrito de compra