0968140191Miền Nam
0975897066Miền Bắc

Độ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

Viết bởi: Vũ Hồng Phúc
Vũ Hồng Phúc
Vũ Hồng Phúc, sinh năm 1985, sau khi tốt nghiệp cử nhân tại Đại Học Bách Khoa Hà Nội, Vũ Hồng Phúc đã tự mình khám phá thế giới qua việc du học tại EF Language School London và nhiều trường đại học khác. Tích lũy kinh nghiệm trong nhiều năm, anh quyết định trở về đất nước. Vũ Hồng Phúc đã hướng đến mục tiêu phát triển Dongco3pha.com là thương hiệu "Động cơ điện" hàng đầu Việt Nam. Trong nhiều năm liền danh liên tục mang lại nhiều thành tựu cho doanh nghiệp và đóng góp nhiều giải pháp tối ưu về chế tạo máy, chế tạo động cơ giảm tốc, động cơ điện.
12 thg 10 2026 08:30

Đ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.

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 Vstối đa 46 V (đỉnh tuyệt đối 50 V)
Điện áp logic Vss4,5–7 V, điển hình 5 V
Mức logic vàothấp ≤ 1,5 V; cao ≥ 2,3 V
Dòng DC mỗi kênh2 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 Atối đa 4,9 V
Công suất tiêu tán tối đa25 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 phaVcuộn = I × RNguồn Vs cầnĐánh giá với L298N
Động cơ bước 42 ghi 12 V0,4 A, 30 Ω12 Vkhoảng 13,5–14 VPhù hợp, dùng nguồn 12 V cho dòng ~0,33 A
Động cơ bước 42 loại 17HS44011,7 A, 1,5 Ω2,55 Vkhoảng 5,5–6 VKhô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 VChạ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.

Module L298N đấu nối với động cơ bước lưỡng cực 4 dây

Bảng đấu nối L298N – Arduino Uno – động cơ bước

Chân module L298NNối tớiGhi chú
+12V (VS)Cực dương nguồn động cơĐiện áp tính theo mục 3
GNDCực âm nguồn và GND ArduinoBắt buộc nối GND chung
+5VXem phần jumper 5V bên dướiNgõ ra hoặc ngõ vào tùy jumper
IN1, IN2, IN3, IN4D8, D9, D10, D11Theo đúng thứ tự trong code
ENA, ENBGiữ jumper, hoặc nối D9/D10 khi dùng PWMXem mục 5c
OUT1, OUT2Hai đầu cuộn AĐảo hai dây này thì đảo chiều quay
OUT3, OUT4Hai đầ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 phaGiới hạn dòng / vi bướcKiểu công suất
L298Nkhoảng 5–46 V (module ~35 V)2 A (thực tế ~1 A với tản nhỏ)Không / khôngBJT, sụt áp 1,8–4,9 V
L293D4,5–36 V0,6 A (đỉnh 1,2 A)Không / khôngBJT, có diode tích hợp
TB6612FNG2,5–13,5 V1,2 A (đỉnh 3,2 A)Không / khôngMOSFET, ~0,5 Ω
A49888–35 V~1 A không tản, tối đa 2 A có làm mátCó / đến 1/16MOSFET, chopper
DRV88258,2–45 V~1,5 A không tản, 2,2 A có làm mátCó / đến 1/32MOSFET, chopper
TMC22094,75–29 V2 A RMS (đỉnh 2,8 A)Có / đến 1/256 nội suyMOSFET, 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.

Driver chopper nhỏ điều khiển động cơ bước bằng Arduino và ắc quy 12V, khác với động cơ bước L298N

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ượngNguyên nhân thường gặpCách khắc phục
Động cơ chỉ rung, không quay hoặc quay qua lạiSai 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útNố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 caoTí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 đợtIC chạm ngưỡng bảo vệ quá nhiệt; nguồn sụt ápGiả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 độ caoGiả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 ENTần số PWM 490 Hz nằm trong dải ngheNâng tần số Timer lên khoảng 31 kHz
Arduino bị reset khi động cơ chạyNguồ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.

6.412 reviews

Tin tức liên quan

Hộp giảm tốc harmonic: thông số, model CSF, SHF và cách chọn

Hộp giảm tốc harmonic: thông số, model CSF, SHF và cách chọn

14 thg 10 2026 15:12

Hộp giảm tốc harmonic (strain wave) size 14 – 32, tỉ số 1/50 – 1/120, mô men 5,4 – 137 Nm. Cách đọc tem, phân loại CSF, CSG, SHF-2UH, SHF-2UJ, SHF-2SO, SHD-2SH và cách chọn theo servo.
Đọc tiếp
Khám phá Bí Quyết Điều Khiển Động Cơ RC Servo Chính Xác Bằng STM32F4

Khám phá Bí Quyết Điều Khiển Động Cơ RC Servo Chính Xác Bằng STM32F4

15 thg 4 2025 20:44

Điều khiển động cơ RC Servo bằng STM32F4 mang đến độ chính xác cao và khả năng tùy chỉnh tín hiệu PWM tối ưu. Bài viết này hướng dẫn từ cấu hình bộ định thời, lập trình tín hiệu PWM, đến tối ưu hóa hiệu suất động cơ. Đây là giải pháp lý tưởng cho kỹ sư điện, kỹ sư cơ khí và các doanh nghiệp công nghiệp.
Đọc tiếp
Điều khiển động cơ RC servo bằng PWM: chu kỳ, độ rộng xung và cách tạo xung bằng timer

Điều khiển động cơ RC servo bằng PWM: chu kỳ, độ rộng xung và cách tạo xung bằng timer

10 thg 10 2026 17:36

Điều khiển động cơ RC servo bằng PWM: chu kỳ 20 ms, độ rộng xung 500–2500 µs, tính prescaler cho AVR, STM32, ESP32, PCA9685, mạch 555 và cách đo kiểm.
Đọc tiếp
Cách Điều Khiển Động Cơ DC Servo Chính Xác Bằng Giải Thuật PID

Cách Điều Khiển Động Cơ DC Servo Chính Xác Bằng Giải Thuật PID

12 thg 10 2026 08:32

Điều khiển động cơ DC Servo bằng giải thuật PID mang lại sự ổn định và hiệu suất cao cho hệ thống công nghiệp. Tìm hiểu cách áp dụng Proportional-Integral-Derivative, vi điều khiển và encoder để tối ưu hóa tốc độ và vị trí của động cơ. Phương pháp này được sử dụng rộng rãi trong robot, dây chuyền sản xuất và các hệ thống tự động hóa.
Đọc tiếp
Điều khiển động cơ DC servo: vòng dòng – tốc độ – vị trí, PID, encoder và cầu H

Điều khiển động cơ DC servo: vòng dòng – tốc độ – vị trí, PID, encoder và cầu H

12 thg 10 2026 08:32

Hướng dẫn điều khiển động cơ DC servo: 3 vòng dòng – tốc độ – vị trí, đọc encoder x4, cầu H BTS7960/VNH5019, PWM 20 kHz, chỉnh PID và code Arduino mẫu.
Đọc tiếp