Bắt đầu với mạch driver L298N
7 phút đọc22/04/2024Đỗ Văn Khoa

Hướng dẫn kết nối và điều khiển động cơ DC với mạch driver L298N. Trong bài viết này, chúng ta sẽ cùng tìm hiểu chi tiết và ứng dụng thực tế trong robot.
Bắt đầu với mạch driver L298N
L298N là gì?
L298N là IC dual H-bridge driver — có thể điều khiển 2 motor DC hoặc 1 motor bước. Cho phép Arduino (3.3–5V logic) điều khiển motor 6–35V 2A.
Sơ đồ chân L298N module
code
+---+---+---+---+
|IN1|IN2|ENA| |
+---+---+---+ |
↕ | L298N
+---+---+---+ |
|IN3|IN4|ENB| |
+---+---+---+---+
OUT1,OUT2 → Motor A
OUT3,OUT4 → Motor B
+12V → nguồn motor (6–35V)
+5V → output cấp cho Arduino (nếu dùng jumper 5V)
GND → mass chungBảng chân thật
| Chân | Ý nghĩa |
|---|---|
| IN1, IN2 | Chiều quay motor A |
| IN3, IN4 | Chiều quay motor B |
| ENA | Enable motor A (PWM tốc độ) |
| ENB | Enable motor B (PWM tốc độ) |
| OUT1/2 | Motor A terminals |
| OUT3/4 | Motor B terminals |
| +12V | Nguồn motor (tên nhầm, thực tế 6–35V) |
| +5V | Ra 5V cho MCU (khi dùng jumper) |
| GND | Mass |
Bảng điều khiển chiều quay
| IN1 | IN2 | Motor A |
|---|---|---|
| HIGH | LOW | Tiến |
| LOW | HIGH | Lùi |
| HIGH | HIGH | Phanh cứng |
| LOW | LOW | Tự do (coasting) |
Code điều khiển 2 motor với L298N
cpp
// Kết nối
// ENA → Arduino Pin 9 (PWM)
// IN1 → Pin 4, IN2 → Pin 5
// ENB → Arduino Pin 10 (PWM)
// IN3 → Pin 6, IN4 → Pin 7
const int ENA=9, IN1=4, IN2=5;
const int ENB=10, IN3=6, IN4=7;
void setup() {
for (int p : {ENA, IN1, IN2, ENB, IN3, IN4}) pinMode(p, OUTPUT);
}
void motorA(int speed) {
speed = constrain(speed, -255, 255);
if (speed > 0) { digitalWrite(IN1, HIGH); digitalWrite(IN2, LOW); }
else if (speed < 0) { digitalWrite(IN1, LOW); digitalWrite(IN2, HIGH); speed = -speed; }
else { digitalWrite(IN1, LOW); digitalWrite(IN2, LOW); }
analogWrite(ENA, speed);
}
void motorB(int speed) {
speed = constrain(speed, -255, 255);
if (speed > 0) { digitalWrite(IN3, HIGH); digitalWrite(IN4, LOW); }
else if (speed < 0) { digitalWrite(IN3, LOW); digitalWrite(IN4, HIGH); speed = -speed; }
else { digitalWrite(IN3, LOW); digitalWrite(IN4, LOW); }
analogWrite(ENB, speed);
}
// Robot car: tiến, lùi, rẽ trái, rẽ phải
void forward(int spd=200) { motorA(spd); motorB(spd); }
void backward(int spd=200) { motorA(-spd); motorB(-spd); }
void turnLeft(int spd=160) { motorA(-spd); motorB(spd); }
void turnRight(int spd=160){ motorA(spd); motorB(-spd); }
void stop() { motorA(0); motorB(0); }
void loop() {
forward(); delay(2000);
turnLeft(); delay(600);
forward(); delay(2000);
stop(); delay(1000);
}Lưu ý thực tế
- Tản nhiệt: L298N nóng khi tải > 1A/kênh. Gắn tản nhiệt hoặc bôi thermal paste
- Diode flyback: module thường đã có sẵn, bảo vệ IC khỏi back-EMF motor
- Jumper 5V Enable: khi nguồn motor < 12V, bỏ jumper và cấp 5V riêng cho VCC_Logic
- Công suất tối đa: L298N chịu 2A/kênh continuous, peak 3A — đủ cho motor TT nhỏ, không đủ cho motor 775
Gợi ý dùng bài viết trong lớp học
Câu hỏi khởi động
- Linh kiện/kỹ thuật trong bài giải quyết vấn đề gì trong robot thật?
- Nếu nối sai nguồn hoặc đọc sai tín hiệu, robot sẽ biểu hiện như thế nào?
- Có cách nào đo hoặc quan sát hiện tượng thay vì đoán lỗi không?
Hoạt động thực hành nhanh
- Giáo viên cho học viên xem linh kiện hoặc sơ đồ liên quan đến chủ đề Bắt đầu với mạch driver L298N.
- Học viên dự đoán chân nguồn, chân tín hiệu và dữ liệu đầu ra.
- Chạy code mẫu ở cấu hình an toàn, sau đó thay đổi một tham số.
- Mỗi nhóm ghi nhận lỗi gặp phải và cách kiểm tra theo thứ tự nguồn, GND, tín hiệu, code.
Checklist kỹ thuật
- Luôn kiểm tra điện áp hoạt động trước khi nối với board điều khiển.
- In dữ liệu ra Serial Monitor khi làm việc với cảm biến hoặc thuật toán.
- Với motor/servo, cấp nguồn tải riêng và nối chung GND với board.
- Ghi lại thông số đã calibration để lần sau không phải chỉnh lại từ đầu.
Câu hỏi ôn tập
- Thông số nào quan trọng nhất khi chọn linh kiện này cho robot?
- Lỗi nào dễ xảy ra nhất trong lớp học và cách phát hiện nhanh nhất là gì?
- Có thể mở rộng kiến thức này thành dự án robot nào?
Tài nguyên tải về
Tải bản PDF của bài viết để in giáo án hoặc gửi trước cho học viên.
Chia sẻ bài viết