Động cơ bước L298N: cách tính nguồn, đấu nối, code Arduino và giới hạn cần biết
Điều khiển động cơ bước L298N là bài tập quen thuộc với người mới học Arduino, vì module L298N rẻ, dễ mua và có sẵn hai cầu H, vừa đủ cho một động cơ bước lưỡng cực hai pha. Tuy vậy, rất nhiều người gặp cùng một chuỗi rắc rối: động cơ chỉ rung không quay, IC nóng bỏng tay sau vài phút, động cơ nóng ngay cả khi đứng yên, hoặc chạy được nhưng yếu và mất bước ở tốc độ cao. Nguyên nhân gốc gần như luôn nằm ở một điểm: L298N là mạch cầu H điều khiển theo điện áp, không phải driver động cơ bước có giới hạn dòng.
Dưới đây là cách tính điện áp nguồn theo điện trở cuộn dây, đấu nối và cài jumper, code Arduino full step và half step, giảm nóng bằng PWM chân EN, dùng với 28BYJ-48, và so sánh với L293D, TB6612FNG, A4988, DRV8825, TMC2209.
Nội dung
- 1. IC L298 và module L298N: cấu tạo và thông số thật
- 2. Vì sao L298N không giới hạn dòng cho động cơ bước
- 3. Cách tính điện áp nguồn cho động cơ bước L298N theo điện trở cuộn dây
- 4. Đấu nối động cơ bước lưỡng cực với L298N và Arduino
- 5. Code Arduino điều khiển động cơ bước L298N
- 6. Vì sao động cơ bước nóng khi đứng yên và cách xử lý
- 7. Dùng L298N với động cơ 28BYJ-48 (chuyển sang lưỡng cực)
- 8. So sánh L298N với L293D, TB6612FNG, A4988, DRV8825, TMC2209
- 9. Lỗi thường gặp khi chạy động cơ bước L298N và cách khắc phục
- 10. Câu hỏi thường gặp về động cơ bước L298N
- 11. Kết luận
1. IC L298 và module L298N: cấu tạo và thông số thật
L298 là IC của STMicroelectronics gồm hai cầu H toàn phần (dual full-bridge) dùng transistor lưỡng cực BJT, đóng gói Multiwatt15 (loại cắm chân, có tai bắt tản nhiệt) hoặc PowerSO20. Chữ "N" trong L298N chỉ là mã kiểu vỏ Multiwatt chân thẳng. Mỗi cầu H điều khiển chiều dòng điện qua một cuộn dây, nên hai cầu H vừa đúng cho hai pha của một động cơ bước lưỡng cực.
Thông số chính của IC L298 theo datasheet
| Thông số | Giá trị |
| Điện áp nguồn công suất Vs | tối đa 46 V (đỉnh tuyệt đối 50 V) |
| Điện áp logic Vss | 4,5–7 V, điển hình 5 V |
| Mức logic vào | thấp ≤ 1,5 V; cao ≥ 2,3 V |
| Dòng DC mỗi kênh | 2 A |
| Dòng đỉnh lặp lại (80% on, ton = 10 ms) | 2,5 A |
| Dòng đỉnh không lặp lại (100 µs) | 3 A |
| Tổng sụt áp trên một cầu ở 1 A | điển hình 1,8 V, tối đa 3,2 V |
| Tổng sụt áp trên một cầu ở 2 A | tối đa 4,9 V |
| Công suất tiêu tán tối đa | 25 W (khi vỏ IC giữ ở 75 °C) |
| Nhiệt độ mối nối làm việc | –25 đến 130 °C |
| Bảo vệ | có bảo vệ quá nhiệt |
Con số 25 W chỉ đạt được khi vỏ IC được giữ ở 75 °C bằng tản nhiệt lớn; miếng tản nhôm nhỏ trên module thải nhiệt kém hơn nhiều.
Cấu tạo module L298N bán phổ biến
Module thường gặp gồm IC L298N trên tản nhiệt, ổn áp tuyến tính 78M05 tạo 5 V cho logic, 8 diode chống điện áp cảm ứng, hai tụ lọc và ba jumper:
- Jumper 5V: khi cắm, nguồn động cơ (cọc +12V) đi vào 78M05 và cọc +5V là ngõ ra 5 V. Khi rút, cọc +5V trở thành ngõ vào, phải cấp 5 V từ ngoài.
- Jumper ENA, ENB: nối chân Enable lên 5 V để hai cầu luôn hoạt động. Rút ra nếu muốn điều khiển EN bằng vi điều khiển.
- Các chân điều khiển IN1, IN2 (cầu A) và IN3, IN4 (cầu B); ngõ ra OUT1, OUT2 (cuộn A) và OUT3, OUT4 (cuộn B).
Trên phần lớn module, hai chân SENSE A, SENSE B được nối thẳng xuống GND, không có điện trở đo dòng, nên module không thể tự hạn chế dòng. Tụ lọc và 78M05 thường chỉ chịu 35 V, nên giới hạn an toàn của cả module là khoảng 35 V dù IC chịu 46 V.
2. Vì sao L298N không giới hạn dòng cho động cơ bước
Driver chopper như A4988, DRV8825, TMC2209 đo dòng qua cuộn dây và đóng cắt liên tục để giữ dòng đúng giá trị cài đặt, nên có thể cấp 24 V cho động cơ chỉ ghi 2,8 V. L298N không làm được việc đó: khi IN1 = 1, IN2 = 0, cầu H chỉ nối cuộn dây vào nguồn qua hai transistor, và dòng lúc đứng yên do định luật Ôm quyết định:
I = (Vs − Vsụt áp) / R cuộn dây
Trong đó Vs là điện áp nguồn, Vsụt áp là tổng sụt áp trên hai transistor của cầu H (khoảng 1,8 V ở 1 A, tới 3–4 V ở dòng lớn), R là điện trở một cuộn dây.
Hệ quả trực tiếp:
- Điện áp nguồn phải khớp với điện trở cuộn dây, không thể "cứ cấp 24 V cho mạnh".
- Động cơ điện trở thấp (1–3 Ω, loại phổ biến trong máy in 3D) cần nguồn rất thấp, trong khi L298N tự ăn mất vài vôn, nên gần như không chạy đúng dòng được.
- Ở tốc độ cao, điện cảm làm dòng không kịp tăng trong mỗi bước; L298N buộc phải chạy điện áp thấp nên mô-men giảm nhanh khi tăng tốc.
Sụt áp của transistor BJT biến thành nhiệt
Do dùng BJT, sụt áp của L298 lớn và tăng theo dòng. Ở full step cả hai cuộn đều có điện, nên nhiệt trên IC xấp xỉ:
P IC ≈ 2 × Vsụt áp × I
Ví dụ mỗi cuộn chạy 1 A, sụt áp điển hình 1,8 V: P ≈ 2 × 1,8 × 1 = 3,6 W, trường hợp xấu (3,2 V) lên tới 6,4 W. Với dòng 1,5 A, sụt áp khoảng 2,5–3,5 V, nhiệt trên IC đã ở mức 7–10 W, vượt xa khả năng của miếng tản nhiệt nhỏ trên module. IC sẽ chạm ngưỡng bảo vệ quá nhiệt, cầu H tự ngắt rồi đóng lại, động cơ chạy giật hoặc dừng từng lúc. Vì vậy, với tản nhiệt có sẵn của module, nên giữ dòng mỗi cuộn dưới khoảng 1 A khi chạy liên tục.
3. Cách tính điện áp nguồn cho động cơ bước L298N theo điện trở cuộn dây
Đây là bước quyết định động cơ bước L298N chạy được hay không:
1) Lấy dòng định mức và điện trở mỗi pha trên tem hoặc datasheet; nếu không có, đo điện trở một cuộn bằng đồng hồ thang 200 Ω (trừ điện trở que đo).
2) Tính điện áp cần đặt lên cuộn dây: Vcuộn = I định mức × R.
3) Ước lượng sụt áp L298 ở dòng đó: khoảng 1,5–2 V khi dưới 1 A, khoảng 2,5–3,5 V khi 1,5–2 A.
4) Điện áp nguồn Vs ≈ Vcuộn + Vsụt áp, chọn bằng hoặc thấp hơn một chút; chạy dưới định mức 10–20% vẫn ổn, động cơ mát hơn.
5) Mắc ampe kế nối tiếp một cuộn khi động cơ đứng yên có điện để kiểm tra dòng thực tế.
Ví dụ tính cho ba loại động cơ thường gặp
| Động cơ | Định mức mỗi pha | Vcuộn = I × R | Nguồn Vs cần | Đánh giá với L298N |
| Động cơ bước 42 ghi 12 V | 0,4 A, 30 Ω | 12 V | khoảng 13,5–14 V | Phù hợp, dùng nguồn 12 V cho dòng ~0,33 A |
| Động cơ bước 42 loại 17HS4401 | 1,7 A, 1,5 Ω | 2,55 V | khoảng 5,5–6 V | Không phù hợp: IC nóng hơn cả động cơ |
| 28BYJ-48 chuyển lưỡng cực (bản 5 V) | xem mục 7 | — | khoảng 8–10 V | Chạy được, mô-men nhỏ |
Với 17HS4401, cuộn dây chỉ cần 2,55 V trong khi L298 tự sụt khoảng 3 V ở 1,7 A: động cơ nhận khoảng 4,3 W mỗi cuộn, còn IC gánh khoảng 5 W mỗi cầu, tổng hơn 10 W. Sụt áp BJT lại thay đổi theo nhiệt độ, chỉ lệch 0,5 V là dòng qua cuộn 1,5 Ω đổi hơn 0,3 A. Cấp 12 V cho động cơ này thì dòng lý thuyết lên vài ampe, có thể hỏng cả module lẫn cuộn dây.
Quy tắc chọn động cơ cho L298N
- Ưu tiên động cơ có điện trở cuộn dây từ khoảng 10 Ω trở lên và điện áp danh định từ 5 V trở lên (thường ghi 6 V, 12 V, 24 V trên tem).
- Dòng định mức mỗi pha dưới 1 A để IC không quá nóng với tản nhiệt có sẵn.
- Tránh động cơ "dòng cao, áp thấp" (1,5–2,8 A, 1–3 V): loại này được thiết kế cho driver chopper.
Vì sao điện áp nguồn cao giúp giữ mô-men ở tốc độ cao được phân tích trong bài động cơ bước 24V.
4. Đấu nối động cơ bước lưỡng cực với L298N và Arduino
Xác định cặp cuộn dây bằng đồng hồ vạn năng
Màu dây không thống nhất giữa các hãng, nên hãy đo:
1) Để đồng hồ ở thang điện trở 200 Ω.
2) Đo lần lượt từng cặp trong 4 dây (có 6 tổ hợp).
3) Hai dây nào có điện trở vài ôm đến vài chục ôm là một cuộn; hai dây không thông nhau (OL) thuộc hai cuộn khác nhau.
4) Ghi lại: cặp 1 là cuộn A, cặp 2 là cuộn B.
Không có đồng hồ thì chập hai dây rồi xoay trục: chập đúng hai đầu một cuộn, trục quay nặng hẳn.
Hình dưới là cách bố trí thực tế một module L298N nối với động cơ bước size 42, cuộn A vào cọc OUT1–OUT2 và cuộn B vào cọc OUT3–OUT4.

Bảng đấu nối L298N – Arduino Uno – động cơ bước
| Chân module L298N | Nối tới | Ghi chú |
| +12V (VS) | Cực dương nguồn động cơ | Điện áp tính theo mục 3 |
| GND | Cực âm nguồn và GND Arduino | Bắt buộc nối GND chung |
| +5V | Xem phần jumper 5V bên dưới | Ngõ ra hoặc ngõ vào tùy jumper |
| IN1, IN2, IN3, IN4 | D8, D9, D10, D11 | Theo đúng thứ tự trong code |
| ENA, ENB | Giữ jumper, hoặc nối D9/D10 khi dùng PWM | Xem mục 5c |
| OUT1, OUT2 | Hai đầu cuộn A | Đảo hai dây này thì đảo chiều quay |
| OUT3, OUT4 | Hai đầu cuộn B |
Jumper 5V: khi nào cắm, khi nào rút
- Nguồn 7–12 V: cắm jumper, 78M05 tự tạo 5 V. Dưới khoảng 7 V, 78M05 không đủ áp, nên rút jumper và cấp 5 V từ ngoài.
- Nguồn trên 12 V: rút jumper, vì 78M05 tuyến tính tỏa nhiệt (Vào − 5 V) × dòng; nối cọc +5V với chân 5V của Arduino.
- Khi jumper đang cắm, cọc +5V là ngõ ra, không đưa thêm 5 V từ nguồn khác vào.
- Không vượt 35 V với module thông thường.
Mức logic 3,3 V
L298 nhận mức cao từ 2,3 V, nên ESP32, STM32, Raspberry Pi điều khiển trực tiếp các chân IN, không cần chuyển mức.
Động cơ bước 6 dây
Bỏ trống hai dây giữa (dây chung), dùng hai đầu ngoài mỗi cuộn. Điện trở khi đó gấp đôi nửa cuộn, hợp với L298N vì cần áp cao hơn, dòng thấp hơn.
5. Code Arduino điều khiển động cơ bước L298N
Các đoạn code dưới dùng động cơ 200 bước/vòng (1,8°/bước).
a. Full step với thư viện Stepper.h
Thư viện Stepper có sẵn trong Arduino IDE, chạy kiểu hai pha cùng có điện, cho mô-men lớn nhất ở full step. Khai báo chân theo thứ tự IN1, IN2, IN3, IN4.
#include <Stepper.h>
const int STEPS_PER_REV = 200; // 1,8 do/buoc
// IN1, IN2 -> cuon A ; IN3, IN4 -> cuon B
Stepper motor(STEPS_PER_REV, 8, 9, 10, 11);
const int IN_PINS[4] = {8, 9, 10, 11};
void releaseMotor() { // ngat dong cuon day khi dung
for (int i = 0; i < 4; i++) digitalWrite(IN_PINS[i], LOW);
}
void setup() {
motor.setSpeed(60); // 60 vong/phut
}
void loop() {
motor.step(200); // quay 1 vong thuan
releaseMotor();
delay(1000);
motor.step(-200); // quay 1 vong nghich
releaseMotor();
delay(1000);
}Một số điểm cần biết về Stepper.h:
- step() là hàm chặn: chương trình đứng chờ đến khi đi đủ số bước.
- Thời gian mỗi bước = 60.000.000 / (số bước mỗi vòng × RPM) µs; 200 bước ở 60 vòng/phút là 5.000 µs.
- Sau step(), các chân IN giữ trạng thái cuối nên cuộn dây vẫn có điện. Thư viện không có hàm nhả động cơ, vì vậy code tự viết releaseMotor() đưa 4 chân về LOW.
- Stepper.h không hỗ trợ half step; phải tự viết như mục b.
b. Half step tự viết, không cần thư viện
Half step xen trạng thái một cuộn có điện vào giữa các trạng thái hai cuộn, cho 8 trạng thái mỗi chu kỳ, 400 bước/vòng, chạy mịn và ít cộng hưởng hơn ở tốc độ thấp.
const uint8_t PINS[4] = {8, 9, 10, 11}; // IN1, IN2, IN3, IN4
// Moi hang: IN1, IN2, IN3, IN4
const uint8_t HALF_SEQ[8][4] = {
{1, 0, 0, 0}, // A+
{1, 0, 1, 0}, // A+ B+
{0, 0, 1, 0}, // B+
{0, 1, 1, 0}, // A- B+
{0, 1, 0, 0}, // A-
{0, 1, 0, 1}, // A- B-
{0, 0, 0, 1}, // B-
{1, 0, 0, 1} // A+ B-
};
int phase = 0;
void applyPhase(int p) {
for (int i = 0; i < 4; i++) digitalWrite(PINS[i], HALF_SEQ[p][i]);
}
// dir = 1 hoac -1 ; stepUs = thoi gian moi nua buoc (micro giay)
void moveHalfSteps(long count, int dir, unsigned long stepUs) {
for (long n = 0; n < count; n++) {
phase = (phase + dir + 8) % 8;
applyPhase(phase);
unsigned long t0 = micros();
while (micros() - t0 < stepUs) { }
}
}
void release() {
for (int i = 0; i < 4; i++) digitalWrite(PINS[i], LOW);
}
void setup() {
for (int i = 0; i < 4; i++) pinMode(PINS[i], OUTPUT);
applyPhase(phase);
}
void loop() {
moveHalfSteps(400, 1, 2500); // 1 vong thuan, 400 nua buoc/giay
release();
delay(1000);
moveHalfSteps(400, -1, 2500); // 1 vong nghich
release();
delay(1000);
}Ở trạng thái một cuộn có điện, mô-men chỉ còn khoảng 70% (1/√2) so với trạng thái hai cuộn vì L298N không tăng dòng bù được, nên khi tải nặng có thể mất bước ở các vị trí lẻ.
c. Giảm nóng bằng PWM chân ENA/ENB
Khi đứng yên giữ vị trí, có thể giảm dòng trung bình bằng PWM vào chân ENA, ENB:
1) Rút hai jumper ENA, ENB trên module.
2) Nối ENA vào D9, ENB vào D10 của Arduino Uno (hai chân PWM của Timer1).
3) Chuyển 4 chân IN sang D4, D7, D8, D12 để nhường D9, D10 cho PWM.
PWM mặc định ở chân 9, 10 của Uno khoảng 490 Hz nên động cơ sẽ rít. Code dưới đổi bộ chia Timer1 để PWM lên khoảng 31 kHz; việc này ảnh hưởng thư viện Servo nếu dùng chung, còn millis() và delay() không bị ảnh hưởng.
#include <Stepper.h>
const int IN1 = 4, IN2 = 7, IN3 = 8, IN4 = 12;
const int ENA = 9, ENB = 10;
const uint8_t RUN_DUTY = 255; // chay: 100%
const uint8_t HOLD_DUTY = 100; // giu: khoang 40% (chinh theo thuc te)
Stepper motor(200, IN1, IN2, IN3, IN4);
void setPower(uint8_t duty) {
analogWrite(ENA, duty);
analogWrite(ENB, duty);
}
void setup() {
pinMode(ENA, OUTPUT);
pinMode(ENB, OUTPUT);
// Timer1 (D9, D10) bo chia 1 -> PWM khoang 31,4 kHz
TCCR1B = (TCCR1B & 0b11111000) | 0x01;
motor.setSpeed(60);
}
void loop() {
setPower(RUN_DUTY);
motor.step(400); // 2 vong
setPower(HOLD_DUTY); // giam dong khi giu vi tri
delay(3000);
setPower(RUN_DUTY);
motor.step(-400);
setPower(0); // tat han cau H: truc quay tu do
delay(3000);
}Khi EN ở mức thấp, mọi transistor của cầu H tắt, dòng cuộn dây giảm nhanh qua diode về nguồn, nên dòng trung bình giảm theo hệ số PWM nhưng không tỉ lệ chính xác. Chỉnh HOLD_DUTY bằng thực nghiệm: tăng dần đến khi giữ được tải không trượt. Không băm PWM khi đang chạy nhanh vì mô-men vốn đã thấp.
6. Vì sao động cơ bước nóng khi đứng yên và cách xử lý
Khi đứng yên, cuộn dây vẫn có dòng một chiều liên tục để tạo mô-men giữ, toàn bộ năng lượng thành nhiệt (P = I² × R); khi quay nhanh, điện cảm và sức phản điện động làm dòng trung bình thấp hơn. Driver chopper giới hạn dòng giữ đúng định mức, còn với L298N, chỉ cần nguồn dư một chút là dòng giữ vượt định mức, cả động cơ lẫn IC cùng nóng.
Các cách giảm nóng, xếp theo hiệu quả
- Tính lại điện áp nguồn theo mục 3: đây là gốc rễ.
- Nhả động cơ khi không cần giữ (IN hoặc EN về LOW), phù hợp cơ cấu nằm ngang, có ma sát hoặc hộp số tự hãm.
- Giảm dòng giữ bằng PWM chân EN như mục 5c.
- Tăng tản nhiệt cho IC: tản lớn hơn, keo tản nhiệt, quạt nhỏ; không đóng kín module trong hộp không thông gió.
Động cơ bước làm việc ở nhiệt độ vỏ khá cao là bình thường, miễn là dòng không vượt định mức.
7. Dùng L298N với động cơ 28BYJ-48 (chuyển sang lưỡng cực)
28BYJ-48 là động cơ bước đơn cực 5 dây có hộp số, thường đi kèm mạch ULN2003. Có hai cách dùng với L298N.
Cách 1: giữ nguyên đơn cực, điều khiển từng nửa cuộn
Dây đỏ nối nguồn, 4 dây còn lại nối OUT1–OUT4. Cách này không có lợi gì so với ULN2003 vốn rẻ hơn, chỉ dùng khi không có ULN2003.
Cách 2: chuyển thành động cơ lưỡng cực
Cách này giúp 28BYJ-48 khỏe hơn:
1) Cạy nắp nhựa xanh nhỏ phía đuôi động cơ (chỗ dây đi vào).
2) Bên dưới có mạch in nhỏ với 3 đường mạch; đường giữa nối dây đỏ với hai điểm giữa của hai cuộn.
3) Dùng dao rọc giấy cắt đứt đường mạch giữa để tách hai cuộn ra, kiểm tra bằng đồng hồ: dây cam – hồng không còn thông với dây vàng – xanh dương.
4) Bỏ dây đỏ. Cuộn A là cặp dây xanh dương – vàng, cuộn B là cặp dây hồng – cam (kiểm tra lại bằng đồng hồ, điện trở mỗi cặp khoảng gấp đôi giá trị đo giữa dây đỏ và một dây khác trước khi cắt).
5) Nối cuộn A vào OUT1–OUT2, cuộn B vào OUT3–OUT4, dùng code Stepper.h như mục 5a.
Lúc này mỗi pha là toàn bộ cuộn dây nối tiếp, điện trở gấp đôi nửa cuộn. Nếu giữ nguyên công suất nhiệt như khi chạy đơn cực ở 5 V, điện áp đặt lên cuộn cần khoảng 5 × √2 ≈ 7 V, cộng thêm sụt áp L298 nên nguồn vào module khoảng 8–10 V với bản 28BYJ-48 loại 5 V. Về lý thuyết, mô-men ở tốc độ thấp tăng khoảng 40% so với khi chạy đơn cực cùng mức nhiệt, vì toàn bộ cuộn dây cùng tham gia tạo từ trường.
Tốc độ vẫn thấp do hộp số khoảng 1:64; với bản 12 V, đo điện trở thực tế rồi tính theo mục 3.
8. So sánh L298N với L293D, TB6612FNG, A4988, DRV8825, TMC2209
| Driver | Điện áp động cơ | Dòng liên tục mỗi pha | Giới hạn dòng / vi bước | Kiểu công suất |
| L298N | khoảng 5–46 V (module ~35 V) | 2 A (thực tế ~1 A với tản nhỏ) | Không / không | BJT, sụt áp 1,8–4,9 V |
| L293D | 4,5–36 V | 0,6 A (đỉnh 1,2 A) | Không / không | BJT, có diode tích hợp |
| TB6612FNG | 2,5–13,5 V | 1,2 A (đỉnh 3,2 A) | Không / không | MOSFET, ~0,5 Ω |
| A4988 | 8–35 V | ~1 A không tản, tối đa 2 A có làm mát | Có / đến 1/16 | MOSFET, chopper |
| DRV8825 | 8,2–45 V | ~1,5 A không tản, 2,2 A có làm mát | Có / đến 1/32 | MOSFET, chopper |
| TMC2209 | 4,75–29 V | 2 A RMS (đỉnh 2,8 A) | Có / đến 1/256 nội suy | MOSFET, chopper, chạy êm |
L298N và L293D
L293D dạng DIP16, có sẵn diode nên mạch gọn, nhưng chỉ 600 mA mỗi kênh và sụt áp cũng lớn, hợp với động cơ bước rất nhỏ. Cả hai cùng điều khiển theo điện áp, cần tính nguồn theo điện trở cuộn dây.
L298N và TB6612FNG
TB6612FNG dùng MOSFET, sụt áp khoảng 0,5 V ở 1 A, mát hơn L298N rất nhiều, nhưng chỉ chịu 13,5 V và 1,2 A. Với động cơ nhỏ dưới 12 V, dưới 1 A, nó hiệu quả hơn; cách tính nguồn vẫn như mục 3, chỉ khác sụt áp nhỏ hơn.
L298N và A4988, DRV8825, TMC2209
Đây là khác biệt về bản chất: ba driver này giới hạn dòng bằng Vref, có vi bước, chỉ cần hai chân STEP và DIR. Chúng chạy động cơ 1–3 Ω ở nguồn 12–36 V mà vẫn mát, mô-men tốc độ cao vượt xa L298N; TMC2209 còn chạy gần như không tiếng ồn.
Hình dưới là driver chopper dạng module nhỏ trên breadboard chạy động cơ bước cỡ lớn bằng ắc quy 12 V, nhỏ hơn nhiều so với module L298N nhưng điều khiển được dòng lớn hơn.

Cách đấu, chỉnh dòng Vref và lập trình cho nhóm driver này được hướng dẫn chi tiết trong bài động cơ bước Arduino.
Khi nào L298N vẫn là lựa chọn hợp lý
- Động cơ điện trở cao (từ khoảng 10 Ω), dòng dưới 1 A, tốc độ chậm.
- Học tập: hiểu cầu H và chuỗi trạng thái full step, half step.
- Cần một module dùng chung cho động cơ bước nhỏ và động cơ DC.
Thực tế, L298N hợp hơn với động cơ DC chổi than như motor 12V cỡ nhỏ, chỉ cần đảo chiều và chỉnh tốc độ bằng PWM. Với động cơ DC công suất lớn hơn 2 A, nên dùng bộ điều tốc motor chuyên dụng thay vì cố ghép song song các kênh của L298N.
Khi động cơ bước vượt quá khả năng của L298N, driver dòng không đổi chuyên dụng là lựa chọn thay thế. Video dưới đây ghi lại cách đấu điện và vận hành thực tế một động cơ bước với driver loại này.
9. Lỗi thường gặp khi chạy động cơ bước L298N và cách khắc phục
| Hiện tượng | Nguyên nhân thường gặp | Cách khắc phục |
| Động cơ chỉ rung, không quay hoặc quay qua lại | Sai cặp cuộn dây; thứ tự IN trong code không khớp | Đo lại, mỗi cuộn vào đúng một cặp OUT1–OUT2 hoặc OUT3–OUT4; khai báo chân theo thứ tự IN1, IN2, IN3, IN4 |
| Không có phản ứng gì | Thiếu GND chung; rút jumper 5V mà không cấp 5V; jumper ENA/ENB bị rút | Nối GND chung; cấp 5 V cho logic; cắm lại jumper EN hoặc đưa EN lên HIGH |
| IC nóng bỏng tay sau vài phút | Điện áp nguồn dư so với điện trở cuộn dây; động cơ dòng cao | Tính lại nguồn; hạ dòng; thêm tản nhiệt hoặc đổi driver chopper |
| Chạy một lúc rồi giật, dừng từng đợt | IC chạm ngưỡng bảo vệ quá nhiệt; nguồn sụt áp | Giảm dòng, tăng tản nhiệt; kiểm tra nguồn đủ dòng |
| Mất bước khi tăng tốc | Điện áp thấp, dòng không kịp tăng do điện cảm; khởi động đột ngột ở tốc độ cao | Giảm tốc độ; tăng tốc từ từ; cân nhắc driver chopper với nguồn cao hơn |
| Động cơ rít khi dùng PWM chân EN | Tần số PWM 490 Hz nằm trong dải nghe | Nâng tần số Timer lên khoảng 31 kHz |
| Arduino bị reset khi động cơ chạy | Nguồn chung bị sụt, nhiễu từ dây động cơ | Tách nguồn logic, thêm tụ 100–470 µF ở cọc nguồn module, đi dây động cơ xa dây tín hiệu |
Với lỗi "chỉ rung không quay", thử setSpeed(10): nếu vẫn giật qua lại thì gần như chắc chắn sai cặp dây; nếu chậm chạy được mà nhanh thì không, đó là giới hạn mô-men khi dùng L298N.
10. Câu hỏi thường gặp về động cơ bước L298N
L298N có điều khiển được động cơ bước không?
Có. Hai cầu H của L298N đủ cho một động cơ bước lưỡng cực ở full step và half step, với điều kiện điện áp nguồn được chọn theo điện trở cuộn dây vì module không tự giới hạn dòng.
L298N có chạy được động cơ bước NEMA17 (size 42) không?
Được với loại điện trở cao, khó với loại dòng cao. Loại ghi 12 V, 0,3–0,4 A chạy tốt với nguồn 12 V; loại 1,5–2 A, 1–2 Ω của máy in 3D chỉ cần 2–3 V trên cuộn dây, trong khi L298N tự sụt khoảng 3 V, nên dùng driver chopper.
L298N có chạy vi bước (microstep) được không?
Không. L298N chỉ chạy full step (200 bước/vòng với động cơ 1,8°) và half step (400 bước/vòng). Vi bước đòi hỏi điều chỉnh chính xác dòng hai cuộn theo dạng sin, mà module không có mạch đo dòng.
Dòng tối đa của L298N khi chạy động cơ bước là bao nhiêu?
Datasheet ghi 2 A DC mỗi kênh, nhưng với tản nhiệt có sẵn nên giữ dưới khoảng 1 A mỗi cuộn khi chạy liên tục. Ở 2 A, sụt áp tới 4,9 V, gần 10 W nhiệt mỗi cầu.
Có thể ghép song song hai kênh L298N để tăng dòng cho động cơ bước không?
Không với một IC. Datasheet cho ghép kênh 1 với 4, kênh 2 với 3 để tăng dòng, nhưng khi đó IC chỉ còn tương đương một cầu H, trong khi động cơ bước cần hai cầu; phải dùng hai IC L298.
Một module L298N điều khiển được mấy động cơ bước?
Một động cơ bước lưỡng cực, vì mỗi cuộn dây cần một cầu H và module chỉ có hai cầu. Hai động cơ độc lập cần hai module.
Dùng nguồn 24 V cho L298N có cần rút jumper 5V không?
Có. Trên 12 V nên rút jumper 5V và cấp 5 V cho logic từ ngoài, vì 78M05 tỏa nhiệt rất lớn. Đồng thời phải kiểm tra 24 V có hợp với điện trở cuộn dây không.
ESP32 hoặc Raspberry Pi 3,3 V điều khiển L298N được không?
Được. L298 nhận mức cao từ 2,3 V nên chân 3,3 V điều khiển trực tiếp IN và EN. Phần logic của module vẫn cần 5 V và GND phải nối chung.
Vì sao động cơ bước dùng L298N nóng cả khi không quay?
Vì cuộn dây vẫn có dòng liên tục để giữ trục, và Stepper.h không tự tắt dòng. Đưa chân IN về LOW khi không cần giữ hoặc giảm dòng bằng PWM chân EN.
Có nên mắc điện trở nối tiếp cuộn dây để dùng nguồn cao hơn không?
Có thể nhưng ít khi đáng làm. Đây là cách điều khiển L/R cổ điển: dòng tăng nhanh hơn nên mô-men tốc độ cao khá hơn, nhưng ví dụ động cơ 1,5 Ω chạy 1 A với nguồn 12 V cần điện trở khoảng 8,5 Ω tiêu tán 8,5 W mỗi cuộn. Driver chopper rẻ hơn và mát hơn.
L298N có tự ngắt khi quá nhiệt không?
Có. L298 có bảo vệ quá nhiệt, tự tắt cầu H khi quá nóng và bật lại khi nguội; biểu hiện là động cơ chạy giật hoặc dừng từng đợt, dấu hiệu dòng quá lớn hoặc tản nhiệt kém.
Động cơ bước chạy với L298N đạt tốc độ tối đa bao nhiêu?
Không có con số cố định; thường chỉ vài trăm bước mỗi giây với động cơ size 42 trước khi mô-men giảm mạnh, vì L298N phải chạy ở điện áp thấp so với hằng số thời gian L/R của cuộn dây.
L298N và L293D, nên dùng loại nào cho động cơ bước nhỏ?
L293D đủ cho động cơ dưới 0,6 A mỗi pha; từ 0,6 A đến khoảng 1 A dùng L298N. Nếu điện áp động cơ dưới 13,5 V, TB6612FNG mát hơn cả hai.
Module L298N có dùng chung với IC L297 được không?
Được, đó là thiết kế gốc trong datasheet: L297 tạo chuỗi bước, chạy chopper và đo dòng qua điện trở ở chân SENSE của L298, thành driver có giới hạn dòng nhận STEP/DIR. Nhưng module phổ biến đã nối SENSE xuống GND, phải sửa mạch mới dùng được.
11. Kết luận
Động cơ bước L298N chạy tốt khi hiểu đúng giới hạn của nó: đây là cầu H BJT điều khiển theo điện áp, sụt áp 2–4 V, không có giới hạn dòng và không có vi bước. Chọn động cơ điện trở cao, dòng dưới 1 A, tính điện áp nguồn theo công thức Vs ≈ I × R + sụt áp, cài jumper 5V và ENA/ENB đúng, nhả hoặc giảm dòng khi đứng yên, thì L298N là công cụ học tập và làm dự án nhỏ rất hiệu quả. Khi cần chạy động cơ dòng cao, tốc độ cao hoặc êm, chuyển sang driver chopper là bước nâng cấp đúng hướng.






