Điều khiển động cơ bước dùng L298: tính nguồn, đấu dây, full/half step và ghép L297 băm dòng
Điều khiển động cơ bước dùng L298 là cách chạy một động cơ bước lưỡng cực 2 pha bằng IC cầu H kép L298 (thường ở dạng module L298N màu đỏ): vi điều khiển đảo chiều dòng qua hai cuộn dây theo trình tự để rôto quay từng bước. Phương án này rẻ, dễ học, phù hợp cho mô hình, bài thực hành và cơ cấu chạy chậm với motor dòng nhỏ dưới khoảng 1 A mỗi pha.
Điểm cần hiểu ngay: L298 chỉ là bộ khóa đóng cắt, không tự giới hạn dòng như driver động cơ bước hiện đại. Dòng qua cuộn dây do điện áp nguồn, sụt áp trên IC và điện trở cuộn quyết định. Chọn sai nguồn hoặc chọn motor "dòng cao, áp thấp" là nguyên nhân của gần như mọi ca L298N nóng bỏng tay, motor yếu, mất bước hay Arduino tự khởi động lại.
Các mục dưới đây đi từ thông số IC, cấu tạo module, cách tính nguồn theo điện trở cuộn, sơ đồ đấu, trình tự full step và half step, cách dùng chân ENA/ENB, tới phương án ghép L297 với chân SENSE để có băm dòng thật. Nguyên lý chung về step motor có ở bài tổng quan động cơ bước.
Nội dung
- 1. Điều khiển động cơ bước dùng L298 là gì và khi nào còn đáng dùng
- 2. Thông số IC L298 cần biết trước khi đấu động cơ bước
- 3. Bên trong module L298N: jumper 5V, ENA/ENB, diode và chân SENSE
- 4. Vì sao L298 không hạn dòng và cách chọn động cơ bước phù hợp
- 5. Đấu dây động cơ bước với module L298N và vi điều khiển
- 6. Trình tự full step, half step và wave drive với L298
- 7. Chân ENA/ENB: nhả motor, giảm dòng giữ và kiểu suy giảm dòng
- 8. Ghép L297 với L298 để băm dòng
- 9. Nhiệt độ và tản nhiệt L298 khi chạy động cơ bước
- 10. So sánh L298 với driver động cơ bước hiện đại
- 11. Lỗi thường gặp khi điều khiển động cơ bước dùng L298
- 12. Câu hỏi thường gặp về điều khiển động cơ bước dùng L298
1. Điều khiển động cơ bước dùng L298 là gì và khi nào còn đáng dùng
L298 gồm hai mạch cầu H độc lập dùng transistor lưỡng cực (BJT), mỗi cầu có hai lối vào chiều (IN) và một lối vào cho phép (EN). Một cầu H đảo chiều dòng trong một cuộn, nên hai cầu điều khiển được đúng một động cơ bước lưỡng cực 4 dây, hoặc hai motor DC chổi than. Cuộn A nối OUT1–OUT2, cuộn B nối OUT3–OUT4; vi điều khiển xuất bốn tín hiệu IN1–IN4 theo bảng trình tự, mỗi lần đổi trạng thái rôto nhảy một bước (1,8° với motor 200 bước/vòng). Cách tìm cặp dây cùng cuộn trình bày ở mục 5.
Chữ "N" trong L298N không phải bản nâng cấp mà là kiểu vỏ: L298N là vỏ Multiwatt15 chân đứng có tai bắt tản nhiệt, L298HN là Multiwatt15 chân nằm, L298P là vỏ dán PowerSO20 trên các shield Arduino. Thông số điện như nhau, nhưng L298P tản nhiệt qua đồng mạch in nên thường nóng nhanh hơn module đỏ khi kéo cùng một motor.
Khi nào L298 còn hợp lý
- Motor bước điện trở cuộn khoảng 10 Ω trở lên, dòng dưới 1 A: L298 tự giới hạn dòng nhờ điện trở cuộn, IC không quá nóng.
- Học cầu H, đồ án cần quan sát từng trạng thái IN1–IN4 bằng LED hay máy hiện sóng.
- Cơ cấu nhẹ, chạy chậm, chu kỳ làm việc ngắn: biển xoay, van nhỏ, cơ cấu mở nắp.
Khi nào không nên dùng
- NEMA 17 máy in 3D loại 1,5–2 A, điện trở 1–2 Ω: IC nóng hơn cả motor và không chỉnh được dòng.
- Cần chạy êm, vi bước, tốc độ cao, hoặc motor NEMA 23 trở lên dòng 2,8–4 A.
Nếu chỉ cần quay liên tục và chỉnh tốc độ, không cần định vị theo bước, thì một motor 12V DC có hộp số chạy bằng chính module L298N hợp lý hơn: L298N vốn sinh ra để đảo chiều và băm xung cho motor chổi than.
2. Thông số IC L298 cần biết trước khi đấu động cơ bước
| Thông số | Giá trị | Ý nghĩa thực tế |
| Nguồn công suất Vs | Tối đa 46 V (tuyệt đối 50 V) | Module thường chỉ chịu khoảng 35 V |
| Nguồn logic Vss | 4,5–7 V | Logic luôn cần 5 V, kể cả khi motor chạy 24 V |
| Ngưỡng mức cao lối vào | Từ 2,3 V | Tín hiệu 3,3 V đủ mức cao |
| Dòng mỗi kênh | 2 A liên tục; 2,5 A lặp lại; 3 A xung 100 µs | "2 A" là giới hạn chịu đựng, không phải dòng nên chạy |
| Sụt áp tổng mỗi cầu H | Điển hình 1,8 V (tối đa 3,2 V) ở 1 A; tối đa 4,9 V ở 2 A | Điện áp lên cuộn luôn thấp hơn nguồn |
| Điện áp chân SENSE | −1 V đến 2,3 V | Cho phép đặt điện trở shunt đo dòng |
| Tần số chuyển mạch | 25–40 kHz | Băm vài chục kHz là tối đa |
| Nhiệt trở Multiwatt15 | 3 °C/W mối nối – vỏ; 35 °C/W mối nối – môi trường | Không tản nhiệt, 3 W đã đẩy chip lên trên 100 °C |
| Nhiệt độ mối nối khi hoạt động | Tới 130 °C | Vượt mức này IC giảm tuổi thọ hoặc hỏng |
Hai dòng quan trọng nhất là sụt áp và nhiệt trở. Mỗi cầu H dùng BJT luôn "ăn" khoảng 1,8–3,2 V ở 1 A, trong khi driver MOSFET như A4988, TMC2209 chỉ sụt vài trăm mV ở cùng dòng. Đó là lý do L298 nóng hơn hẳn mọi driver đời mới.
Sơ đồ chân IC L298N (Multiwatt15)
| Chân | Tên | Chức năng |
| 1 / 15 | SENSE A / SENSE B | Chân phát của mỗi cầu, nối shunt hoặc nối thẳng GND |
| 2, 3 / 13, 14 | OUT1, OUT2 / OUT3, OUT4 | Đầu ra cầu A / cầu B, nối cuộn A / cuộn B |
| 4 | Vs | Nguồn motor |
| 5, 7 / 10, 12 | IN1, IN2 / IN3, IN4 | Lối vào chiều cầu A / cầu B |
| 6 / 11 | ENA / ENB | Cho phép cầu A / cầu B |
| 8 / 9 | GND / Vss | Mass chung / nguồn logic 5 V |
3. Bên trong module L298N: jumper 5V, ENA/ENB, diode và chân SENSE
Module L298N đỏ phổ thông gồm IC L298N gắn tản nhiệt nhôm, ổn áp 78M05, hai tụ hóa khoảng 220 µF, tám diode dập, đèn báo nguồn, cầu đấu vít và ba jumper.

Hình trên đấu hai motor DC ở kênh A và kênh B. Với động cơ bước, vị trí motor A thay bằng cuộn A, motor B thay bằng cuộn B của cùng một động cơ; nguồn và dây tín hiệu giữ nguyên, chỉ khác bốn chân IN được điều khiển theo trình tự bước.
Cầu đấu +12V, GND, +5V
- Cọc "+12V" thực chất là nguồn công suất Vs, nhận khoảng 7–35 V khi dùng ổn áp trên module; nhãn 12V chỉ là gợi ý.
- Cọc "+5V" là ngõ ra 5 V của 78M05 khi cắm jumper, và thành ngõ vào bắt buộc cấp 5 V ngoài khi rút jumper.
- GND phải nối chung với GND vi điều khiển. Thiếu mass chung là lỗi số một khiến module không phản ứng dù đèn vẫn sáng.
Jumper 5V: chỉ cắm khi nguồn từ khoảng 7 đến 12 V
78M05 là ổn áp tuyến tính, phần chênh áp biến thành nhiệt: cấp 24 V và lấy 100 mA thì ổn áp đốt (24 − 5) × 0,1 ≈ 1,9 W, quá sức nó. Nguồn trên 12 V hoặc dưới 7 V (không đủ chênh áp) thì rút jumper và cấp 5 V riêng. Không bao giờ vừa cắm jumper vừa cấp 5 V từ ngoài vào cọc +5V. Khi cắm jumper, có thể lấy 5 V từ module cho Arduino nhưng nên giữ dưới vài trăm mA.
Jumper ENA và ENB
Hai jumper nối chân EN lên 5 V, cầu H luôn được cho phép; đủ để chạy full step hay half step. Rút ra khi muốn dùng EN để nhả motor, giảm dòng giữ bằng PWM hoặc nối với L297 (mục 7, 8). Đã rút mà để trống thì cầu tương ứng không dẫn, motor đứng im.
Diode "M7" và giới hạn 35 V
Tám diode trên đa số module ký hiệu M7, tương đương 1N4007, loại phục hồi chậm dùng cho chỉnh lưu 50 Hz. Bảng thông số L298 khuyến nghị diode phục hồi nhanh (không quá 200 ns) hoặc Schottky khi tải cảm có băm xung. Full step tốc độ thấp thì diode chậm vẫn tạm ổn, nhưng khi băm PWM trên EN hoặc ghép L297 thì nên thay bằng diode nhanh 2 A. Tụ và ổn áp trên module thường chỉ chịu 35 V, nên dù IC chịu 46 V, module không nên cấp quá khoảng 30 V để có khoảng dư.
Chân SENSE đã nối thẳng xuống GND
Trên module phổ thông, SENSE A và SENSE B nối thẳng mass, không có shunt. Module hoàn toàn không đo được dòng, không giới hạn dòng, không bảo vệ ngắn mạch.
4. Vì sao L298 không hạn dòng và cách chọn động cơ bước phù hợp
Driver hiện đại đo dòng hàng chục nghìn lần mỗi giây và cắt khi dòng chạm ngưỡng, nên dùng được nguồn cao gấp 10–20 lần điện áp định mức motor. L298 trên module nối cuộn dây thẳng vào nguồn qua hai transistor, dòng ổn định chỉ theo định luật Ohm:
I ≈ (Vs − Vsụt) / R
Vs là nguồn motor, Vsụt là sụt áp tổng trên cầu H (khoảng 1,5–2 V dưới 1 A, 3–4 V trên 1,5 A), R là điện trở một cuộn. Vì vậy cách duy nhất để đặt dòng đúng khi điều khiển động cơ bước dùng L298 là chọn đúng điện áp nguồn, hoặc chọn motor có điện trở cuộn đủ lớn.
Quy trình chọn nguồn theo điện trở cuộn
1. Đọc dòng (A/phase) và điện trở (Ω/phase) trên tem; không có tem thì đo bằng đồng hồ vạn năng, trừ điện trở que đo.
2. Tính Vcuộn = I × R, cộng sụt áp L298 (khoảng 1,5 V ở 0,4–0,6 A, khoảng 2 V ở 1 A).
3. Chọn nguồn bằng hoặc thấp hơn tổng đó 10–20%: lực giảm nhẹ nhưng mát hơn đáng kể.
4. Tính công suất nhiệt trên IC (mục 9); vượt khoảng 3–4 W khi chạy liên tục thì L298N không hợp với motor đó.
| Motor (thông số mỗi pha) | Điện áp trên cuộn | Nguồn cho L298N | Đánh giá |
| Step 42 loại 12 V: 0,4 A, 30 Ω | 12 V | Khoảng 12–13,5 V | Rất hợp, IC tỏa khoảng 1,2 W |
| Step 42 loại 1 A, 4 Ω | 4 V | Khoảng 5,5–6 V, rút jumper 5V | Chạy được, IC tỏa khoảng 3,6 W |
| 17HS4401: 1,7 A, 1,5 Ω | Khoảng 2,6 V | Khoảng 5,5–6,5 V | Không nên, IC tỏa trên 10 W |
Vì sao NEMA 17 "dòng cao, áp thấp" nóng khi dùng L298N
Phần lớn NEMA 17 cho máy in 3D như 17HS4401, 17HS8401 được thiết kế cho driver băm dòng: điện áp định mức chỉ 2,5–3 V, dòng 1,5–2 A, điện trở 1–2 Ω. Cắm vào L298N với nguồn 12 V:
- Dòng muốn lên (12 − 3) / 1,5 = 6 A, bị chặn ở mức bão hòa transistor; IC vừa dẫn dòng lớn vừa sụt áp lớn, công suất vượt xa sức tản nhiệt của module.
- Motor nhận dòng vượt định mức, nóng nhanh lên 80–90 °C, lâu dài lão hóa men cách điện.
- Hạ nguồn xuống 5–6 V cho đúng dòng thì IC vẫn nóng hơn motor, vì sụt áp trên L298 (3–4 V) lớn hơn cả điện áp rơi trên cuộn (khoảng 2,6 V).
Motor càng "dòng cao, áp thấp" càng không hợp với L298. Kích thước, chiều dài thân và mô-men của dòng này xem ở bài động cơ bước NEMA 17.
Hằng số L/R: vì sao chạy nhanh là yếu
Dòng trong cuộn tăng theo hằng số thời gian τ = L / R. Motor 17HS4401 có khoảng 2,8 mH và 1,5 Ω nên τ ≈ 1,9 ms, cần khoảng 3τ ≈ 5,6 ms để dòng gần đủ. Với L298, nguồn buộc phải thấp xấp xỉ I × R, nên khi mỗi bước ngắn hơn khoảng này, dòng chưa kịp lên đã bị đảo và mô-men tụt nhanh. L298 cho mô-men tốt ở vài chục đến vài trăm bước mỗi giây, còn driver băm dòng dùng nguồn 24–36 V đẩy dòng lên nhanh hơn nhiều lần. Cách cũ là mắc thêm điện trở công suất nối tiếp mỗi cuộn để dùng nguồn cao hơn, nhưng mỗi điện trở đốt vài watt nên ngày nay hiếm khi đáng làm.
5. Đấu dây động cơ bước với module L298N và vi điều khiển
Trước khi đấu, xác định hai cặp dây cùng cuộn bằng đồng hồ vạn năng: cùng cuộn cho vài đến vài chục ohm, khác cuộn hở mạch. Motor 6 dây dùng được bằng cách bỏ trống hai dây giữa và đấu cả cuộn; cách nhận diện motor 6 dây có ở bài động cơ bước đơn cực.
| Điểm trên module | Nối tới | Ghi chú |
| OUT1, OUT2 | Hai dây cuộn A | Đảo hai dây này thì motor đổi chiều |
| OUT3, OUT4 | Hai dây cuộn B | Không lẫn dây cuộn A sang đây |
| IN1–IN4 | D8, D9, D10, D11 Arduino | Chân số bất kỳ, sửa lại trong code |
| ENA, ENB | Giữ jumper, hoặc nối chân số/PWM | Rút jumper để trống thì motor không chạy |
| +12V, GND | Nguồn motor đã tính ở mục 4; GND chung với Arduino | Nên có cầu chì |
| +5V | Theo quy tắc jumper ở mục 3 | Rút jumper thì phải cấp 5 V vào đây |

Hình trên là module L298N với một motor DC giảm tốc, chỉ dùng kênh B. Khi điều khiển động cơ bước dùng L298, cả bốn chân IN1–IN4 đều phải nối vi điều khiển vì hai cuộn được đảo chiều phối hợp. Cách cấp nguồn trong hình (cọc 12V nối lên Vin Arduino) chỉ ổn với nguồn 7–12 V; cao hơn sẽ làm nóng ổn áp trên Arduino.
Vi điều khiển 3,3 V và PLC
- ESP32, STM32, Raspberry Pi xuất 3,3 V điều khiển trực tiếp IN và EN được, nhưng L298 vẫn cần 5 V ở cọc +5V; không nối cọc này vào chân 3,3 V của board.
- Lối vào IN, EN chịu tối đa 7 V, không nối thẳng đầu ra 24 V của PLC; phải chuyển mức qua optocoupler, hoặc dùng driver nhận xung 24 V như bài điều khiển động cơ bước bằng PLC.
Lưu ý đi dây
- Xoắn đôi từng cặp dây cuộn, đi xa dây tín hiệu; thêm tụ 470–1000 µF sát cọc nguồn khi dây nguồn dài.
- Bảng thông số L298 khuyên kéo EN xuống thấp trước khi bật hoặc tắt nguồn công suất; với module giữ jumper EN thì bật nguồn logic trước, nguồn motor sau.
6. Trình tự full step, half step và wave drive với L298
L298 chỉ làm theo trạng thái bốn chân IN, toàn bộ "trí khôn" nằm ở trình tự vi điều khiển xuất ra.
Full step hai pha (mô-men cao nhất)
Cả hai cuộn luôn có dòng, 1,8° mỗi bước; đây cũng là trình tự thư viện Stepper của Arduino dùng cho motor 4 dây:
| Bước | IN1 | IN2 | IN3 | IN4 |
| 1 | 1 | 0 | 1 | 0 |
| 2 | 0 | 1 | 1 | 0 |
| 3 | 0 | 1 | 0 | 1 |
| 4 | 1 | 0 | 0 | 1 |
Chạy ngược bảng thì motor đổi chiều. Hai cầu H cùng dẫn nên nhiệt trên L298 gấp đôi so với khi chỉ một cuộn có dòng.
Wave drive một pha (ít nóng nhất)
Mỗi lúc một cuộn: 1000, 0010, 0100, 0001 (thứ tự IN1–IN4). Góc bước vẫn 1,8° nhưng mô-men còn khoảng 70%, đổi lại IC và motor mát hơn khoảng một nửa.
Half step (400 bước/vòng)
| Trạng thái | IN1 | IN2 | IN3 | IN4 |
| 1 | 1 | 0 | 0 | 0 |
| 2 | 1 | 0 | 1 | 0 |
| 3 | 0 | 0 | 1 | 0 |
| 4 | 0 | 1 | 1 | 0 |
| 5 | 0 | 1 | 0 | 0 |
| 6 | 0 | 1 | 0 | 1 |
| 7 | 0 | 0 | 0 | 1 |
| 8 | 1 | 0 | 0 | 1 |
Ở trạng thái một cuộn, mô-men tụt còn khoảng 70% nên half step trên L298 có lực "nhấp nhô" mà driver băm dòng mới bù được.
Thư viện và vài dòng code
- Stepper có sẵn: `Stepper motor(200, 8, 9, 10, 11);`, `motor.setSpeed(60);` (vòng/phút), `motor.step(200);`. Chỉ full step, hàm step() chặn chương trình, không có tăng tốc.
- AccelStepper: `AccelStepper motor(AccelStepper::FULL4WIRE, 8, 9, 10, 11);`, đổi `HALF4WIRE` để chạy half step; có tăng/giảm tốc, không chặn chương trình, có `disableOutputs()` để nhả motor.
- Khai báo chân đúng thứ tự IN1, IN2, IN3, IN4. Thứ tự đảo kiểu 8, 10, 9, 11 trong các ví dụ cho 28BYJ-48 dùng sang L298 sẽ làm motor chỉ rung.
- Tăng `setMaxSpeed()` và `setAcceleration()` dần đến khi bắt đầu mất bước rồi lùi lại 20–30%.
Kỹ thuật điều khiển chung cho mọi driver lưỡng cực (STEP/DIR, gia tốc S-curve, vi bước sin–cos) có ở bài điều khiển động cơ bước lưỡng cực.
7. Chân ENA/ENB: nhả motor, giảm dòng giữ và kiểu suy giảm dòng
| Trạng thái chân | Cầu H làm gì | Hệ quả với cuộn dây |
| EN = 1, IN1 ≠ IN2 | Cặp khóa chéo dẫn | Cuộn có dòng theo một chiều |
| EN = 1, IN1 = IN2 | Hai khóa cùng phía dẫn, cuộn bị chập | Dòng tắt chậm (slow decay), trục "ghìm" |
| EN = 0 | Bốn khóa tắt | Dòng xả qua diode về nguồn (fast decay), motor tự do |
Nhả motor khi đứng yên
Động cơ bước đứng yên vẫn ăn đủ dòng để giữ trục, nên đây là lúc L298 nóng nhất. Nếu tải không tự trôi (bàn ngang, có hộp số trục vít tự hãm), kéo ENA, ENB xuống 0 hoặc gọi disableOutputs() khi đứng lâu. Nếu trong lúc nhả tải đẩy trục xoay đi, khi cấp lại dòng rôto nhảy về vị trí cân bằng gần nhất, có thể lệch tới khoảng hai bước đủ; cơ cấu cần vị trí tuyệt đối thì phải về gốc lại hoặc giữ dòng.
Giảm dòng giữ bằng PWM trên EN
Rút jumper, nối ENA, ENB chung vào một chân PWM: chạy thì 100%, đứng yên khoảng 30–50%. Dòng trung bình giảm gần theo tỉ lệ, thường vẫn đủ giữ tải.
- PWM mặc định của Arduino Uno khoảng 490 Hz hoặc 980 Hz, motor sẽ kêu rít; đổi bộ chia timer lên khoảng 20–31 kHz.
- Mỗi chu kỳ EN về 0, dòng xả qua tám diode; diode M7 chậm sẽ nóng hơn ở PWM tần số cao.
- Đây là giảm dòng "mở vòng", nguồn dao động thì dòng dao động theo.
Về lý thuyết có thể xuất PWM sin–cos trên EN để giả lập vi bước, nhưng PWM chỉnh điện áp chứ không chỉnh dòng; khi quay, điện cảm và sức phản điện động làm dòng lệch xa giá trị mong muốn, vị trí vi bước rất không đều.
8. Ghép L297 với L298 để băm dòng
L298 vốn được thiết kế làm tầng công suất cho IC điều khiển L297. Cặp L297 + L298 là driver lưỡng cực kinh điển, chạy tới 2 A mỗi pha với băm dòng thật và nhận xung bước, chiều quay như driver hiện đại. L297 gồm bộ dịch trạng thái (nhận CLOCK, CW/CCW, tự sinh trình tự cho L298) và bộ băm dòng (so điện áp trên shunt ở chân SENSE với Vref, chạm ngưỡng thì cắt đến chu kỳ dao động kế tiếp).
| Chân L297 | Tên | Nối / cách dùng |
| 18, 17 | CLOCK, CW/CCW | Xung bước (rộng tối thiểu 0,5 µs) và chiều quay |
| 19 | HALF/FULL | Mức cao: half step; mức thấp: full step |
| 10, 20 | ENABLE, RESET | Mức thấp: tắt đầu ra / về trạng thái gốc |
| 4, 6, 7, 9 | A, B, C, D | IN1, IN2, IN3, IN4 của L298 |
| 5, 8 | INH1, INH2 | ENA, ENB của L298 |
| 14, 13 | SENS1, SENS2 | SENSE A, SENSE B của L298 (đầu trên shunt) |
| 15, 16 | Vref, OSC | Điện áp đặt dòng 0–3 V; mạch RC tần số băm |
| 11, 1 | CONTROL, SYNC | Chọn kiểu băm; đồng bộ nhiều L297 |
Tính shunt và Vref
Dòng đỉnh mỗi pha I = Vref / Rs. Với Rs = 0,5 Ω: Vref 0,25 V cho 0,5 A; 0,5 V cho 1 A; 0,75 V cho 1,5 A; 1 V cho 2 A (shunt tỏa khoảng 2 W). Dùng điện trở không dây quấn, 2–3 W, đặt sát chân GND của L298; điện áp trên SENSE phải dưới 2 V.
Tần số băm và chân CONTROL
- f ≈ 1 / (0,69 × R × C); R = 22 kΩ, C = 3,3 nF cho khoảng 20 kHz, vượt ngưỡng nghe và trong khả năng của L298.
- CONTROL mức cao: băm trên chân pha, dòng tắt chậm, ít gợn, hợp tốc độ thấp và trung bình.
- CONTROL mức thấp: băm trên INH, dòng tắt nhanh qua diode, bám dòng tốt hơn ở tốc độ cao nhưng gợn và nhiệt diode lớn hơn.
- Nhiều L297 trên một bo: nối chung SYNC, chỉ gắn RC trên một con, các con khác nối OSC xuống mass.
Với L297 + L298, có thể dùng nguồn 24–36 V cho motor 2,5–3 V mà dòng vẫn đúng, motor khỏe hơn hẳn ở tốc độ cao. Tuy vậy L297 chỉ có full step và half step, không có vi bước, và sụt áp BJT của L298 vẫn còn nguyên.
Sửa module L298N đỏ để ghép L297
Phải cắt mạch nối SENSE xuống mass, hàn thêm hai shunt, câu dây SENSE về L297, rút jumper ENA/ENB để nối INH1/INH2, và nên thay tám diode M7 bằng diode nhanh hoặc Schottky. Công sức và linh kiện thường vượt giá một driver băm dòng mới; chỉ đáng làm khi mục đích là học nguyên lý.
9. Nhiệt độ và tản nhiệt L298 khi chạy động cơ bước
Ở full step hai pha, công suất trên L298 xấp xỉ P ≈ 2 × Vsụt × I (hai cầu cùng dẫn).
| Dòng mỗi pha | Sụt áp mỗi cầu | Công suất trên L298 | Nhận xét |
| 0,4 A | Khoảng 1,5 V | Khoảng 1,2 W | Tản nhiệt sẵn dư sức |
| 1,0 A | Khoảng 1,8–2 V | Khoảng 3,6–4 W | Nóng, nên có quạt nếu chạy liên tục |
| 1,5 A | Khoảng 2,5–3 V | Khoảng 7,5–9 W | Vượt sức tản nhiệt module |
| 2,0 A | Tới 4,9 V | Tới gần 20 W | Chỉ được với tản nhiệt lớn và quạt mạnh |
Wave drive giảm công suất khoảng một nửa; half step nằm giữa hai mức.
- Chạm tản nhiệt không giữ tay được quá 3 giây nghĩa là đã trên khoảng 60 °C, mối nối bên trong còn nóng hơn nhiều.
- Đo dòng bằng ampe kế ở dây nguồn khi motor đứng yên giữ trục; ở full step, dòng nguồn xấp xỉ tổng dòng hai cuộn.
- Đã giảm dòng, nhả motor khi đứng, thêm quạt mà IC vẫn nóng thì motor không hợp với L298.
10. So sánh L298 với driver động cơ bước hiện đại
| Driver | Điện áp motor | Dòng mỗi pha | Hạn dòng | Vi bước |
| L298N (BJT) | 4,5–46 V (module ~35 V) | Thực tế ≤ 1 A | Không | Không |
| L293D (BJT) | 4,5–36 V | 0,6 A (đỉnh 1,2 A) | Không | Không |
| TB6612FNG | 2,5–13,5 V | 1,2 A (đỉnh 3,2 A) | Không | Không |
| A4988 | 8–35 V | Tới 2 A, ~1 A nếu không tản nhiệt thêm | Có | 1/16 |
| DRV8825 | 8,2–45 V | Tới 2,5 A, ~1,5 A nếu không tản nhiệt thêm | Có | 1/32 |
| TMC2209 | 4,75–29 V | 2 A hiệu dụng | Có | 1/256 nội suy |
Hướng đổi driver thường gặp:
- NEMA 17 loại 1,5–2 A: A4988, DRV8825 hoặc TMC2209, đặt dòng bằng Vref, nguồn 12–24 V.
- NEMA 23 trở lên hoặc cần nhận tín hiệu PLC 24 V: driver cách ly quang như bài mạch điều khiển động cơ bước TB6600.
- Motor nhỏ dưới 0,6 A cho mô hình học tập: xem bài điều khiển động cơ bước bằng L293.
- Chỉ có nguồn 5 V hoặc chạy pin: L298 sụt áp quá lớn, xem bài điều khiển động cơ bước 5V.
- Motor đơn cực 5 dây loại nhỏ: mạch Darlington đơn giản hơn, xem bài điều khiển động cơ bước ULN2003.
11. Lỗi thường gặp khi điều khiển động cơ bước dùng L298
| Hiện tượng | Nguyên nhân thường gặp | Cách xử lý |
| Đèn sáng nhưng motor không khóa trục | Thiếu GND chung; rút jumper 5V không cấp 5 V ngoài; EN để trống | Nối GND chung, kiểm tra 5 V logic, kéo EN lên 1 |
| Rung tại chỗ, quay tới lui | Lẫn dây cuộn A sang B; sai thứ tự IN trong code | Đo lại cặp dây; khai báo đúng IN1–IN4 |
| L298N nóng bỏng sau vài chục giây | Motor dòng cao điện trở thấp; nguồn quá cao | Tính lại nguồn; nhả motor khi đứng; đổi driver |
| Chậm thì khỏe, tăng tốc là mất bước | Hằng số L/R lớn; không có gia tốc | Thêm tăng tốc dần; dùng L297 hoặc driver băm dòng |
| Kêu rít khi đứng yên | PWM trên EN ở tần số nghe được | Nâng PWM lên khoảng 20 kHz |
| Arduino tự khởi động lại | Sụt áp, nhiễu từ cuộn; lấy 5 V module quá tải | Tách nguồn logic, thêm tụ lọc, đi dây xa nhau |
| Motor chỉ chạy được một cuộn | Cháy nửa cầu H do ngắn mạch hoặc rút dây khi đang chạy | Đổi motor sang kênh kia để xác nhận; thay IC |
12. Câu hỏi thường gặp về điều khiển động cơ bước dùng L298
- L298N có chạy được động cơ bước NEMA 17 không? Được với mã điện trở cuộn cao, dòng khoảng 0,3–1 A. Với loại 1,5–2 A, điện trở 1–2 Ω của máy in 3D, motor vẫn quay nhưng IC tỏa nhiệt nhiều hơn motor và không chỉnh được dòng, nên dùng A4988 hay TMC2209.
- Nên cấp nguồn bao nhiêu vôn cho L298N khi điều khiển động cơ bước? Lấy dòng định mức nhân điện trở cuộn, cộng khoảng 1,5–2 V sụt áp, chọn nguồn bằng hoặc thấp hơn một chút. Motor 0,4 A, 30 Ω cần khoảng 12–13,5 V; motor 1 A, 4 Ω chỉ cần 5,5–6 V.
- Khi nào phải rút jumper 5V trên module L298N? Khi nguồn motor trên 12 V (78M05 quá nóng) hoặc dưới khoảng 7 V (không đủ chênh áp). Rút rồi thì bắt buộc cấp 5 V ngoài vào cọc +5V, nếu không logic L298 không hoạt động.
- Điều khiển động cơ bước có cần tháo jumper ENA, ENB không? Không bắt buộc; giữ jumper vẫn chạy full step, half step bình thường. Chỉ tháo khi cần nhả motor, giảm dòng giữ bằng PWM hoặc ghép L297, và khi tháo thì phải nối EN vào vi điều khiển.
- L298N có chạy vi bước được không? Không theo nghĩa đúng, chỉ có full step, half step và wave drive. PWM sin–cos trên EN chỉ giả lập được vi bước rất không đều; ghép L297 cũng chỉ thêm băm dòng, không thêm vi bước.
- Vì sao điện áp ở OUT1–OUT2 thấp hơn nguồn 2–3 V? Đó là sụt áp bão hòa của hai BJT trong cầu H, điển hình 1,8 V ở 1 A và tới 4,9 V ở 2 A. Đây là đặc tính bình thường, không phải module hỏng.
- Module L298N một kênh chịu được 2 A thật không? 2 A là giới hạn liên tục của IC, không phải mức chạy thoải mái. Ở 2 A, full step tỏa gần 20 W trên IC, vượt xa tản nhiệt của module; nên giữ dưới khoảng 1 A mỗi pha khi chạy liên tục.
- Ghép song song hai kênh L298 để tăng dòng cho động cơ bước được không? Với một con L298 thì không, vì cần cả hai cầu cho hai cuộn. Ghép kênh 1 với 4, kênh 2 với 3 (khoảng 3 A) chỉ dành cho một motor DC; động cơ bước muốn ghép song song phải dùng hai IC.
- 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 2 pha. Không mắc song song hai motor bước vào một module vì dòng cộng lại làm L298 quá tải.
- ESP32 hay Raspberry Pi điều khiển trực tiếp L298N được không? Được, ngưỡng mức cao của L298 chỉ từ 2,3 V. Phần logic vẫn cần 5 V riêng ở cọc +5V và GND phải nối chung.
- Có điều khiển L298N bằng tín hiệu STEP/DIR như TB6600 được không? Không trực tiếp, vì L298 nhận bốn tín hiệu pha. Có thể ghép L297 để đổi CLOCK và CW/CCW thành tín hiệu pha, hoặc cho vi điều khiển đọc STEP/DIR rồi tự xuất IN1–IN4; với GRBL hay Mach3, dùng driver STEP/DIR có sẵn đơn giản hơn.
- Động cơ bước đứng yên mà L298N vẫn nóng có bình thường không? Bình thường, vì để giữ trục L298 vẫn cấp đủ dòng, thậm chí nóng hơn lúc quay do không có sức phản điện động làm giảm dòng. Hãy nhả motor qua chân EN khi không cần giữ, hoặc giảm dòng giữ bằng PWM 30–50%.






