Driver & IC

Bắt đầu với mạch driver L298N

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

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 chung

Bảng chân thật

ChânÝ nghĩa
IN1, IN2Chiều quay motor A
IN3, IN4Chiều quay motor B
ENAEnable motor A (PWM tốc độ)
ENBEnable motor B (PWM tốc độ)
OUT1/2Motor A terminals
OUT3/4Motor B terminals
+12VNguồn motor (tên nhầm, thực tế 6–35V)
+5VRa 5V cho MCU (khi dùng jumper)
GNDMass

Bảng điều khiển chiều quay

IN1IN2Motor A
HIGHLOWTiến
LOWHIGHLùi
HIGHHIGHPhanh cứng
LOWLOWTự 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ế

  1. 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
  2. Diode flyback: module thường đã có sẵn, bảo vệ IC khỏi back-EMF motor
  3. Jumper 5V Enable: khi nguồn motor < 12V, bỏ jumper và cấp 5V riêng cho VCC_Logic
  4. 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

  1. 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.
  2. Học viên dự đoán chân nguồn, chân tín hiệu và dữ liệu đầu ra.
  3. Chạy code mẫu ở cấu hình an toàn, sau đó thay đổi một tham số.
  4. 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.

Tải PDF
Chia sẻ bài viết

Mục lục bài viết

Tác giả

Đ

Đỗ Văn Khoa

Kỹ sư điện tử & Lập trình viên

Thực hành với bộ kit robot

Tự tay lắp ráp và lập trình robot với bộ kit từ Học Lập Trình Robot!

Xem bộ kit