Điều khiển động cơ bước 4 dây: sơ đồ đấu với từng driver, code Arduino và checklist chạy lần đầu
Điều khiển động cơ bước 4 dây là việc nối hai cuộn dây của motor vào một driver lưỡng cực (A4988, DRV8825, TMC2209, TB6600, DM542 hoặc L298N), đặt đúng giới hạn dòng, rồi cấp tín hiệu xung để motor quay từng bước. Motor 4 dây gần như luôn là loại lưỡng cực hai pha: mỗi pha là một cuộn dây ra hai đầu, nên không có dây chung và bắt buộc phải dùng mạch cầu H để đảo chiều dòng điện. Đây là loại phổ biến nhất trên máy in 3D, máy CNC mini, máy khắc laser, bàn trượt camera và các cơ cấu định vị nhỏ.
Phần lớn sự cố của người mới không nằm ở motor mà ở khâu đấu nối: lẫn cặp dây, quên giới hạn dòng, thiếu dây mass chung, cắm driver ngược hoặc rút dây khi đang có điện.
Nếu cần hiểu sâu nguyên lý cầu H, công thức chọn điện áp nguồn theo điện cảm hay cộng hưởng tầng giữa, xem bài động cơ bước lưỡng cực; phần cấu hình nâng cao như băm dòng, chế độ decay, StealthChop, UART của driver TMC nằm ở bài điều khiển động cơ bước lưỡng cực. Bài này tập trung vào việc làm cho motor chạy được, chạy đúng và chạy bền.
Nội dung
- 1. Động cơ bước 4 dây cần những gì để chạy được
- 2. Tìm hai cặp cuộn dây của động cơ bước 4 dây
- 3. Chọn driver theo dòng pha của motor 4 dây
- 4. Sơ đồ đấu động cơ bước 4 dây với từng loại driver
- 5. Đặt giới hạn dòng trước khi cho motor chạy
- 6. Code Arduino tối thiểu để chạy động cơ bước 4 dây
- 7. Checklist chạy động cơ bước 4 dây lần đầu
- 8. Bảng lỗi do đấu sai và cách khoanh vùng hỏng hóc
- 9. Đi dây, nối dài và lắp motor 4 dây vào máy
- 10. Câu hỏi thường gặp về điều khiển động cơ bước 4 dây
1. Động cơ bước 4 dây cần những gì để chạy được
Một motor bước 4 dây không thể chạy khi cấp thẳng điện một chiều: cấp nguồn vào một cuộn chỉ làm trục bị khóa cứng ở một vị trí. Muốn trục quay, dòng điện trong hai cuộn phải được đảo chiều luân phiên theo trình tự, và việc đó do driver đảm nhiệm. Một hệ điều khiển động cơ bước 4 dây tối thiểu gồm năm thành phần:
| Thành phần | Vai trò | Lựa chọn thường gặp |
| Motor 4 dây | Biến xung thành góc quay | NEMA 17, NEMA 23, motor PM tròn 15–35 mm |
| Driver lưỡng cực | Đảo chiều dòng trong hai cuộn, giới hạn dòng | A4988, DRV8825, TMC2209, TB6600, DM542, L298N |
| Nguồn motor | Cấp năng lượng cho cuộn dây | Nguồn tổ ong 12 V, 24 V, 36 V, 48 V DC |
| Bộ phát xung | Ra lệnh số bước, chiều quay | Arduino, ESP32, board máy in 3D, PLC, bộ phát xung rời |
| Dây và đầu nối | Truyền dòng motor và tín hiệu | Cáp 4 lõi, giắc XH2.54, PH2.0, cọc vít |
Motor 4 dây trên thị trường chủ yếu là hybrid 1,8° (200 bước/vòng) dạng vuông như NEMA 17, NEMA 23; một phần nhỏ là motor nam châm vĩnh cửu thân tròn tháo từ ổ đĩa quang, máy in, máy ảnh với góc bước 7,5° hoặc 18°. Cả hai đều điều khiển giống nhau, chỉ khác dòng và điện áp. Tổng quan các họ motor có trong bài động cơ bước.
2. Tìm hai cặp cuộn dây của động cơ bước 4 dây
Việc đầu tiên khi đấu dây động cơ bước 4 dây là chia bốn sợi thành hai cặp, mỗi cặp là hai đầu của cùng một cuộn. Màu dây không thống nhất giữa các hãng, nên luôn kiểm chứng bằng đo trước khi đưa vào driver.
Ba cách nhận cặp nhanh
- Đồng hồ vạn năng thang Ω: hai dây cùng cuộn cho vài ohm (thường 1–5 Ω với NEMA 17, 0,4–2 Ω với NEMA 23, 10–80 Ω với motor PM nhỏ); hai dây khác cuộn cho kết quả hở mạch.
- Chập dây và xoay trục: chập hai dây bất kỳ rồi vặn trục bằng tay; nếu trục nặng hẳn, có cảm giác lợn cợn thì đó là một cặp.
- Đèn LED: nối một đèn LED vào hai dây rồi xoay trục nhanh; LED chớp sáng nghĩa là hai dây cùng cuộn, vì motor đang phát điện.
Phương pháp đo chi tiết, cách xử lý motor 6 dây và 8 dây khi muốn dùng như 4 dây đã có trong bài về động cơ bước lưỡng cực ở trên; với motor 6 dây cần đấu kiểu nửa cuộn hay cả cuộn vào từng loại mạch, xem bài điều khiển động cơ bước 6 dây.

Các bộ màu dây hay gặp trên motor 4 dây
| Kiểu màu dây | Cuộn A | Cuộn B | Ghi chú |
| Đen – Xanh lá / Đỏ – Xanh dương | Đen, Xanh lá | Đỏ, Xanh dương | Phổ biến trên NEMA 17, NEMA 23 hàng phổ thông |
| Đỏ – Xanh lá / Vàng – Xanh dương | Đỏ, Xanh lá | Vàng, Xanh dương | Như hình minh họa phía trên |
| Cáp rời có giắc | Theo thứ tự chân giắc | Theo thứ tự chân giắc | Cáp mỗi nơi bấm một kiểu, phải đo ở đầu cáp |
Motor có giắc 6 chân nhưng chỉ ra 4 dây
Nhiều motor NEMA 17 dùng giắc 6 chân ở thân motor nhưng chỉ có 4 chân được dùng, thường là chân 1–3 cho một cuộn và 4–6 cho cuộn kia. Cáp nối từ giắc 6 chân sang giắc 4 chân trên board có thể đã đảo thứ tự bên trong. Khi thay motor hoặc thay cáp trên máy in 3D, hãy đo điện trở ở đầu cáp phía board, không đo ở chân motor. Thông số giắc và các chiều dài thân của dòng này có ở bài động cơ bước NEMA 17.
3. Chọn driver theo dòng pha của motor 4 dây
Driver động cơ bước 4 dây phải chịu được dòng pha của motor một cách liên tục, không chỉ ở giá trị đỉnh in trên vỏ. Bảng dưới gom các driver thông dụng theo dải dòng thực dùng (có tản nhiệt bình thường, không quạt cưỡng bức).
| Dòng pha trên tem motor | Driver phù hợp | Dải nguồn motor | Ghi chú thực tế |
| Đến 0,6 A (motor PM nhỏ, motor điện trở cao) | L298N, DRV8833, A4988 | 5–12 V (L298N), 8–35 V (A4988) | L298N không giới hạn dòng, phải dựa vào điện trở cuộn |
| 0,6 – 1,2 A | A4988, TMC2208, TMC2209 | 8–35 V; TMC 4,75–29 V | Mức của đa số NEMA 17 máy in 3D |
| 1,2 – 1,8 A | DRV8825, TMC2209 có tản nhiệt và quạt | 8,2–45 V; TMC 4,75–29 V | NEMA 17 thân dài 48–60 mm |
| 1,5 – 3,5 A | TB6600, DM542 | 9–42 V (TB6600); 20–50 V (DM542) | NEMA 17 lớn, NEMA 23 trên CNC mini |
| 3,5 – 5,6 A | DM556 và tương đương | 20–50 V | NEMA 23 thân dài, NEMA 24 |
Nguyên tắc chọn: dòng định mức liên tục của driver nên lớn hơn dòng đặt khoảng 20–30 %. Một module nhỏ in "2 A" thực tế chỉ giữ ổn định quanh 1–1,5 A khi không có quạt, nên NEMA 17 loại 1,7 A cắm vào A4988 sẽ phải chạy non dòng hoặc làm driver quá nhiệt. Cách tính chi tiết nguồn bao nhiêu vôn, bao nhiêu ampe cho từng size motor có trong bài động cơ bước 2 pha.
Chọn điện áp nguồn ở mức thực hành
- NEMA 17 với A4988, DRV8825, TMC2209: dùng 12 V cho máy nhỏ, 24 V khi cần tốc độ cao hơn và ít mất bước hơn.
- NEMA 23 với TB6600, DM542: 24 V là mức khởi đầu, 36 V khi cần chạy nhanh.
- Không dùng nguồn sát giới hạn tối đa của driver: lúc motor hãm, điện áp hồi về có thể đẩy nguồn vượt ngưỡng; giữ khoảng dư ít nhất 10–15 %.
Khi bài toán chỉ cần quay liên tục ở một tốc độ, không cần dừng đúng vị trí (băng tải nhỏ, máy trộn, quay rang), một động cơ giảm tốc mini kèm bộ điều tốc thường bền và đơn giản hơn hệ step. Ngược lại, khi cần vừa nhanh vừa chính xác và có phản hồi vị trí, nên cân nhắc motor servo thay vì cố tăng điện áp cho step.
4. Sơ đồ đấu động cơ bước 4 dây với từng loại driver
Mọi driver lưỡng cực đều có bốn cọc ra motor chia thành hai kênh. Tên in trên board khác nhau nhưng quy tắc chỉ có một: hai dây cùng cuộn vào cùng một kênh. Bảng quy đổi tên cọc:
| Driver | Kênh cuộn A | Kênh cuộn B | Chân tín hiệu chính |
| A4988 | 1A, 1B | 2A, 2B | STEP, DIR, EN, MS1–MS3, RST, SLP |
| DRV8825 | A1, A2 | B1, B2 | STEP, DIR, EN, M0–M2, RST, SLP, FLT |
| TMC2209 (module) | A1, A2 (hoặc 1A, 1B) | B1, B2 (hoặc 2A, 2B) | STEP, DIR, EN, MS1, MS2, PDN/UART |
| TB6600, DM542 | A+, A− | B+, B− | PUL±, DIR±, ENA± |
| L298N | OUT1, OUT2 | OUT3, OUT4 | IN1–IN4, ENA, ENB |
a. A4988 và DRV8825 trên CNC Shield V3
CNC Shield V3 cắm chồng lên Arduino Uno là cách nhanh nhất để chạy 1–4 motor 4 dây bằng GRBL hoặc code tự viết. Các chân Arduino đã được nối cố định:
| Trục trên shield | Chân STEP | Chân DIR | Chân EN (chung) |
| X | D2 | D5 | D8 |
| Y | D3 | D6 | D8 |
| Z | D4 | D7 | D8 |
| A (nhân bản) | Theo jumper chọn X/Y/Z hoặc D12 | Theo jumper chọn X/Y/Z hoặc D13 | D8 |
Trình tự lắp
- Cắm driver vào khe sao cho chân EN của module trùng chữ EN in trên shield. A4988 và DRV8825 có biến trở nằm ở hai phía ngược nhau, vì vậy căn theo chân EN chứ không căn theo vị trí biến trở.
- Motor cắm vào cụm bốn chân cạnh khe driver, thứ tự chân trên shield là 2B, 2A, 1A, 1B: một cặp cuộn ở hai chân ngoài cùng bên này, cặp còn lại ở hai chân bên kia.
- Nguồn motor 12–24 V đưa vào cọc vít xanh, đúng cực tính. Nguồn này không nuôi Arduino; Arduino vẫn cần cáp USB hoặc jack nguồn riêng.
- Chân D8 (EN) phải ở mức thấp thì driver mới cấp dòng. GRBL tự làm việc này; khi viết code riêng phải tự đặt D8 xuống LOW.
Jumper vi bước dưới mỗi driver
| MS1/M0 | MS2/M1 | MS3/M2 | A4988 | DRV8825 |
| Không cắm | Không cắm | Không cắm | Bước đủ | Bước đủ |
| Cắm | Không cắm | Không cắm | 1/2 | 1/2 |
| Không cắm | Cắm | Không cắm | 1/4 | 1/4 |
| Cắm | Cắm | Không cắm | 1/8 | 1/8 |
| Cắm | Cắm | Cắm | 1/16 | 1/32 |
Khi chạy thử lần đầu, nên cắm cả ba jumper (1/16 với A4988, 1/32 với DRV8825) để motor êm, nhưng nhớ nhân số xung tương ứng trong code.
Đấu A4988, DRV8825 rời trên breadboard
Khi không dùng shield, đấu như sau: VMOT và GND nguồn motor (kèm tụ 100 µF sát chân), VDD và GND nối 5 V hoặc 3,3 V của vi điều khiển (DRV8825 không có chân VDD vì tự lấy nguồn logic từ VMOT), STEP và DIR vào hai chân số bất kỳ, RST nối thẳng với SLP để driver luôn thức, EN để trống hoặc nối chân điều khiển. Mass nguồn motor và mass vi điều khiển phải nối chung.
b. TMC2209 dạng module cắm
TMC2209 có cùng kiểu chân với A4988 nên cắm được vào CNC Shield và các board máy in 3D, nhưng có ba khác biệt cần nhớ khi điều khiển động cơ bước 4 dây:
- Chỉ có hai chân chọn vi bước MS1, MS2: để cả hai ở mức thấp là 1/8; MS1 cao là 1/32; MS2 cao là 1/64; cả hai cao là 1/16. Driver tự nội suy lên 256 vi bước bên trong nên motor vẫn rất êm ở 1/8 hoặc 1/16.
- Vị trí jumper thứ ba trên CNC Shield trùng chân PDN/UART của TMC2209; để trống vị trí này trừ khi tài liệu module ghi rõ cách dùng.
- Nguồn motor tối đa khoảng 29 V; không cắm TMC2209 vào máy đang chạy nguồn 36 V như với DRV8825.
Ở chế độ chạy độc lập, dòng đặt bằng biến trở; khi đã cấu hình qua UART thì giá trị dòng trong phần mềm mới có hiệu lực.
c. TB6600 dạng hộp
Driver hộp TB6600 cách ly tín hiệu bằng opto, hợp với NEMA 17 lớn và NEMA 23. Đấu motor 4 dây: cặp cuộn thứ nhất vào A+, A−, cặp thứ hai vào B+, B−; nguồn DC vào VCC, GND.
| Cọc TB6600 | Nối với Arduino (chung cathode) | Nối với PLC ngõ ra NPN (chung anode) |
| PUL+ | Chân STEP của Arduino | +24 V qua điện trở 2 kΩ hoặc nguồn 5 V |
| PUL− | GND Arduino | Ngõ ra xung của PLC |
| DIR+ | Chân DIR của Arduino | +24 V qua điện trở 2 kΩ hoặc nguồn 5 V |
| DIR− | GND Arduino | Ngõ ra chiều của PLC |
| ENA+ / ENA− | Để trống (motor luôn được cấp dòng) | Để trống hoặc nối ngõ ra cho phép |
Bảng công tắc DIP, cách đặt dòng thật so với nhãn và bảng sự cố riêng của module này nằm ở bài mạch điều khiển động cơ bước TB6600.
d. DM542 và driver số tương đương
DM542 cũng dùng cọc PUL±, DIR±, ENA±, A±, B± nên đấu motor 4 dây giống hệt TB6600, nhưng có vài điểm khác: dải nguồn 20–50 V DC (không chạy ở 12 V), dòng đỉnh đặt được tới khoảng 4,2 A, và có chức năng tự giảm dòng khi đứng yên chọn bằng công tắc. Bảng dòng trên vỏ DM542 thường có hai cột Peak và RMS; motor ghi 2,8 A trên tem thì chọn theo cột RMS gần nhất. Ngõ vào tín hiệu thường thiết kế cho 5 V; một số bản có công tắc hoặc chân riêng cho 24 V, nếu không có thì phải mắc điện trở nối tiếp như với TB6600.
e. L298N
L298N là cầu H kép không có bộ giới hạn dòng, phù hợp với motor 4 dây điện trở cao (từ khoảng 10 Ω trở lên) như motor PM tháo máy in, máy quét. Đấu như hình dưới: một cặp cuộn vào OUT1–OUT2, cặp còn lại vào OUT3–OUT4; IN1–IN4 nối bốn chân số của Arduino; giữ jumper ENA, ENB để hai kênh luôn hoạt động.

Vì L298N không hạn dòng, dòng chạy qua cuộn xấp xỉ bằng (điện áp nguồn − sụt áp của IC) chia cho điện trở cuộn. Cấp 12 V cho một NEMA 17 điện trở 1,5 Ω là cách nhanh nhất để làm nóng cả motor lẫn IC. Cách tính nguồn và giới hạn của IC này được viết riêng ở bài điều khiển động cơ bước dùng L298.
5. Đặt giới hạn dòng trước khi cho motor chạy
Giới hạn dòng là bước hay bị bỏ qua nhất khi điều khiển động cơ bước 4 dây bằng module nhỏ. Biến trở trên module xuất xưởng ở vị trí bất kỳ; để nguyên có thể làm motor yếu, mất bước, hoặc ngược lại làm motor và driver nóng tới mức hỏng.
Cách đo Vref
- Cấp nguồn cho driver (với DRV8825 phải có nguồn VMOT vì logic lấy từ đây), chưa cần cắm motor, không phát xung.
- Que đen đồng hồ vào GND, que đỏ chạm vào thân kim loại của biến trở; dùng tua vít nhựa hoặc tua vít cách điện để xoay.
- Đọc điện áp, tính ra dòng theo công thức của từng module ở bảng dưới, chỉnh tới giá trị mong muốn.
| Module | Công thức | Ví dụ cho motor 1,5 A (đặt khoảng 1,2–1,3 A) |
| A4988, điện trở cảm biến R100 (0,1 Ω) | Dòng = Vref × 1,25 | Vref khoảng 1,0 V |
| A4988, điện trở R050 (0,05 Ω) | Dòng = Vref × 2,5 | Vref khoảng 0,5 V |
| A4988, điện trở R068 (0,068 Ω) | Dòng = Vref ÷ 0,544 | Vref khoảng 0,68 V |
| DRV8825 (R100) | Dòng = Vref × 2 | Vref khoảng 0,62 V |
| TMC2209 kiểu BTT (chế độ độc lập) | Dòng RMS ≈ Vref × 0,71 | Vref khoảng 1,4 V cho 1,0 A RMS |
| TB6600, DM542 | Chọn bằng công tắc DIP | Chọn nấc gần dưới dòng tem |
Điện trở cảm biến là hai linh kiện dán nhỏ cạnh chip, trên đó in R100, R050 hoặc R068; nhìn đúng ký hiệu trước khi áp công thức, vì các module cùng tên có thể dùng điện trở khác nhau. Với DRV8825 ở chế độ bước đủ, dòng thực tế chỉ khoảng 71 % giá trị đã đặt, nên đừng nâng Vref lên để bù khi đo dòng thấy thiếu ở chế độ này.
Đặt bao nhiêu là hợp lý
- Bắt đầu ở khoảng 70–80 % dòng tem; tăng dần nếu motor mất bước, giảm nếu motor quá nóng.
- Vỏ motor nóng tới 50–70 °C khi chạy liên tục là bình thường với motor hybrid; không đặt tay được lâu không có nghĩa là quá nhiệt.
- Driver nhỏ nóng tới mức tự ngắt từng đợt (motor dừng rồi chạy lại) thì giảm dòng hoặc thêm quạt.
6. Code Arduino tối thiểu để chạy động cơ bước 4 dây
Mục tiêu của code chạy thử không phải là tối ưu, mà là kiểm tra đấu dây đúng: motor quay một vòng theo chiều thuận, dừng, rồi quay một vòng theo chiều ngược. Không cần thư viện cho driver STEP/DIR.
Chương trình thử với A4988/DRV8825/TMC2209 trên CNC Shield trục X
| Dòng lệnh | Ý nghĩa |
| const int STEP_PIN = 2, DIR_PIN = 5, EN_PIN = 8; | Chân trục X trên CNC Shield |
| pinMode(STEP_PIN, OUTPUT); pinMode(DIR_PIN, OUTPUT); pinMode(EN_PIN, OUTPUT); | Khai báo ngõ ra trong setup() |
| digitalWrite(EN_PIN, LOW); | Cho phép driver cấp dòng |
| digitalWrite(DIR_PIN, HIGH); | Chọn chiều quay thuận |
| for (int i = 0; i < 200 * VI_BUOC; i++) { digitalWrite(STEP_PIN, HIGH); delayMicroseconds(1000); digitalWrite(STEP_PIN, LOW); delayMicroseconds(1000); } | Phát đủ số xung cho một vòng |
| delay(1000); rồi đặt DIR_PIN = LOW và lặp lại vòng for | Dừng 1 giây, quay ngược một vòng |
Với thời gian 1.000 µs mức cao và 1.000 µs mức thấp, driver nhận 500 xung/giây: ở bước đủ motor 1,8° quay 150 vòng/phút, ở 1/16 chỉ khoảng 9 vòng/phút. Tốc độ thấp như vậy giúp motor khởi động chắc chắn mà không cần gia tốc; code này cũng dùng được cho TB6600, DM542 chỉ cần đổi số chân.
Chương trình thử với L298N (4 chân)
- Khai báo thư viện có sẵn: #include <Stepper.h>.
- Tạo đối tượng: Stepper motor(200, 8, 9, 10, 11); với 200 là số bước/vòng, 8–11 là chân nối IN1–IN4.
- Trong setup(): motor.setSpeed(30); đặt tốc độ 30 vòng/phút.
- Trong loop(): motor.step(200); delay(1000); motor.step(-200); delay(1000);.
Nếu motor chỉ rung qua lại với L298N, đổi thứ tự hai chân giữa trong khai báo (8, 10, 9, 11) trước khi nghi ngờ phần cứng: thứ tự kích cuộn trong thư viện có thể không khớp với thứ tự dây bạn đã đấu.
Khi chuyển sang GRBL hoặc firmware máy in
Sau khi motor đã quay đúng bằng code thử, chuyển sang firmware và đặt số bước trên mỗi milimét: bước/mm = 200 × hệ số vi bước ÷ bước ren vít me (mm/vòng). Ví dụ vít me T8 bước 8 mm, vi bước 1/16: 200 × 16 ÷ 8 = 400 bước/mm, nhập vào $100 (trục X) trong GRBL. Với dây đai GT2 20 răng: 200 × 16 ÷ 40 = 80 bước/mm. Lập trình có gia tốc, nhiều motor cùng lúc và các thư viện nâng cao đã trình bày ở bài điều khiển lưỡng cực, không lặp lại ở đây.
7. Checklist chạy động cơ bước 4 dây lần đầu
Đi theo đúng thứ tự dưới đây sẽ loại được gần như toàn bộ rủi ro cháy driver trong lần cấp điện đầu tiên.
Video dưới đây ghi lại một lần đấu điện và cho động cơ bước chạy thực tế, có thể dùng để đối chiếu tiếng chạy và chuyển động của motor khi làm theo checklist.
Trước khi cấp điện
- Đã đo và xác định đúng hai cặp cuộn, hai cuộn có điện trở gần bằng nhau, không cuộn nào chạm vỏ.
- Driver cắm đúng chiều (chân EN trùng nhãn EN), không lệch một hàng chân.
- Nguồn motor đúng cực tính, nằm trong dải của driver, có tụ lọc gần driver nếu dây nguồn dài.
- Mass của nguồn motor, driver và vi điều khiển đã nối chung (với driver opto thì nối theo kiểu chung anode hoặc chung cathode).
- Các đầu dây motor siết chặt vào cọc vít hoặc giắc cắm khít; không có sợi đồng thừa chạm sang cọc bên cạnh.
Lần cấp điện đầu tiên
- Cấp nguồn khi chưa nạp code chạy; đo và chỉnh Vref hoặc đặt DIP dòng.
- Tắt nguồn, cắm motor, bật lại: trục phải bị giữ cứng (có mô-men giữ) khi EN đang cho phép. Trục còn quay nhẹ bằng tay nghĩa là driver chưa được bật hoặc dòng đặt quá thấp.
- Nạp code thử ở tốc độ thấp, quan sát motor quay đủ một vòng, dừng, quay ngược đủ một vòng.
Sau khi chạy được
- Chạy liên tục 10–15 phút, sờ thử vỏ motor và tản nhiệt driver; ghi nhận nhiệt độ ổn định.
- Nếu chiều quay ngược với mong muốn, tắt nguồn rồi đảo hai dây của một cuộn, hoặc đổi chiều trong phần mềm.
- Tăng tốc độ dần đến khi motor bắt đầu mất bước, rồi dùng khoảng 60–70 % tốc độ đó làm tốc độ làm việc.
Cảnh báo
- Không cắm hoặc rút dây motor khi driver đang có điện; điện áp cảm ứng khi hở mạch đột ngột phá cầu H chỉ trong tích tắc.
- Không chạm tua vít kim loại vào chân linh kiện khi chỉnh biến trở lúc đang có điện.
8. Bảng lỗi do đấu sai và cách khoanh vùng hỏng hóc
Khi điều khiển động cơ bước 4 dây không như mong muốn, phần lớn có thể đoán đúng nguyên nhân chỉ từ cách motor phản ứng. Bảng dưới liệt kê các kiểu đấu sai cụ thể và triệu chứng tương ứng.
| Kiểu đấu sai | Triệu chứng | Cách xử lý |
| Lẫn cặp: một dây cuộn A và một dây cuộn B vào cùng một kênh | Motor rung, kêu rè rè, lắc qua lại tại chỗ hoặc quay giật cục không đều | Tắt nguồn, đo lại, đưa đúng hai dây cùng cuộn vào một kênh |
| Đảo đầu một cuộn (A+ đổi chỗ A−) | Motor quay ngược chiều, mọi thứ khác bình thường | Không hại; giữ nguyên và đổi chiều trong phần mềm nếu muốn |
| Đảo đầu cả hai cuộn | Chiều quay không đổi | Không cần sửa |
| Đổi nguyên cuộn A sang kênh B và ngược lại | Motor quay ngược chiều | Không hại |
| Một dây hở mạch hoặc tiếp xúc chập chờn | Quay yếu, giật, chỉ chạy được ở tốc thấp, thỉnh thoảng lắc qua lại; driver có thể chết nếu dây tuột lúc đang chạy | Kiểm tra cọc vít, giắc, đo thông mạch khi lắc dây |
| Hai cuộn chập nhau hoặc chạm vỏ | Driver báo lỗi, ngắt bảo vệ, cháy chip hoặc đèn ALARM sáng | Đo cách điện từng dây ra vỏ; thay motor hoặc sửa dây |
| Thiếu mass chung giữa vi điều khiển và driver | Motor không phản ứng hoặc tự chạy lung tung khi chạm tay vào dây | Nối GND chung |
| EN ở mức cho phép sai (để HIGH với A4988/DRV8825) | Motor mềm trục, không quay dù có xung | Kéo EN xuống LOW hoặc bỏ trống |
| Dòng đặt quá thấp | Motor yếu, mất bước khi có tải, tiếng kêu đều đặn | Tăng Vref từng nấc nhỏ |
| Dòng đặt quá cao | Motor và driver nóng nhanh, driver tự ngắt từng đợt | Hạ dòng về 70–100 % dòng tem |
Khoanh vùng: hỏng motor hay hỏng driver
- Rút motor (khi đã tắt nguồn), đo hai cuộn: điện trở bằng nhau và không chạm vỏ thì motor gần như chắc chắn còn tốt về điện.
- Cấp nguồn, không phát xung: trục phải bị giữ cứng. Không giữ là lỗi tầng công suất, nguồn hoặc chân EN; giữ được mà không quay khi có xung thì lỗi ở phía tín hiệu STEP/DIR.
9. Đi dây, nối dài và lắp motor 4 dây vào máy
Chọn dây motor
| Dòng pha | Tiết diện dây đề nghị | Chiều dài thường dùng | Ghi chú |
| Đến 1,5 A | 0,3 – 0,5 mm² | Đến khoảng 2 m | Cáp 4 lõi mềm, dùng cho NEMA 17 |
| 1,5 – 3 A | 0,5 – 0,75 mm² | Đến khoảng 5 m | Nên dùng cáp có lưới chống nhiễu |
| 3 – 5 A | 0,75 – 1 mm² | Đến khoảng 5 m | Bấm cos, siết cọc chắc |
- Mỗi cặp cuộn nên đi trong một cặp dây xoắn để giảm nhiễu phát ra; lưới chống nhiễu chỉ nối mass ở một đầu phía driver.
- Đi dây motor tách khỏi dây tín hiệu STEP/DIR và dây công tắc hành trình; chạy chung một bó là nguyên nhân hay gặp của mất bước ngẫu nhiên.
- Ở phần dây chuyển động (xích nhựa trên máy CNC), dùng cáp chịu uốn; dây cứng gãy ngầm sau nhiều lần gập, gây hở mạch chập chờn.
Lắp cơ khí
Khớp nối giữa trục motor và vít me phải đồng tâm; lệch tâm làm motor nặng tải theo chu kỳ, nghe tiếng kêu theo nhịp mỗi vòng và dễ mất bước dù đấu điện hoàn toàn đúng. Siết vít khóa trục lên mặt vát (D-cut) của trục, không siết lên phần tròn.
10. Câu hỏi thường gặp về điều khiển động cơ bước 4 dây
- Đấu cả hai cuộn ngược đầu thì motor có quay ngược chiều không? Không. Đảo đầu cả hai cuộn tương đương lệch pha 180° điện trong cả hai kênh, motor vẫn quay theo chiều cũ. Chỉ khi đảo đầu đúng một cuộn, hoặc đổi chỗ nguyên cặp cuộn A sang kênh B, chiều quay mới đổi.
- Nạp code xong, motor trên CNC Shield vẫn mềm trục, quay tay được dễ dàng là do đâu? Thường do chân D8 (EN) chưa được kéo xuống mức thấp, vì code tự viết không khai báo chân này như GRBL. Nếu EN đã đúng, kiểm tra nguồn motor ở cọc vít xanh đã có điện chưa và biến trở có đang ở vị trí gần 0 không.
- Có cần cấp nguồn riêng cho Arduino khi đã cấp 12 V vào CNC Shield không? Có. Nguồn ở cọc vít của CNC Shield chỉ đi tới chân VMOT của các driver, không nối vào mạch nguồn Arduino. Arduino vẫn cần cáp USB hoặc nguồn qua jack DC riêng.
- A4988 và DRV8825 có cắm thay cho nhau trên cùng một khe được không? Được, vì hai module cùng sơ đồ chân. Cần lưu ý ba điểm: căn chiều theo chân EN vì biến trở nằm ở hai phía khác nhau, cắm đủ ba jumper thì DRV8825 chạy 1/32 chứ không phải 1/16, và công thức tính dòng từ Vref khác nhau nên phải đặt lại dòng.
- TMC2209 cắm vào CNC Shield V3 cần chỉnh gì khác so với A4988? Chỉ dùng hai jumper đầu để chọn vi bước theo bảng riêng của TMC2209, để trống vị trí jumper thứ ba, giữ nguồn motor dưới khoảng 29 V và đặt lại Vref theo công thức của module. Số bước/mm trong firmware phải đổi theo hệ số vi bước mới.
- Có cần nối mass Arduino với mass nguồn motor khi dùng A4988 rời không? Cần. Tín hiệu STEP và DIR được so với GND của driver; thiếu mass chung, mức logic trôi nổi khiến motor không quay hoặc tự nhảy bước. Riêng driver có opto như TB6600, DM542 thì nối theo sơ đồ chung anode hoặc chung cathode thay vì nối thẳng mass.
- Hai cặp dây đo được điện trở chênh nhau nhiều thì còn dùng được không? Chênh dưới khoảng 10 % là bình thường do sai số đo và dây dẫn. Chênh lớn hơn, nhất là một cuộn thấp hẳn, thường là chập vòng dây: motor sẽ chạy rung, yếu ở một nửa chu kỳ và nóng không đều; nên thay motor thay vì cố chỉnh dòng.
- Board máy in có giắc 4 chân nhưng motor mới có giắc 6 chân thì nối thế nào? Dùng cáp 6 chân sang 4 chân, nhưng không tin vào màu dây của cáp. Cắm cáp vào motor, đo điện trở ở đầu 4 chân để xác định hai cặp, rồi sắp lại thứ tự chân nếu cần sao cho mỗi cặp nằm đúng một kênh của board.
- Nối dài dây motor 4 dây nên dùng dây tiết diện bao nhiêu? Với NEMA 17 dòng đến 1,5 A, dây 0,3–0,5 mm² là đủ cho vài mét; NEMA 23 dòng 2–3 A nên dùng 0,5–0,75 mm² có lưới chống nhiễu. Dây quá nhỏ gây sụt áp, làm motor yếu ở tốc độ cao và nóng dây.
- Làm sao biết motor 4 dây hỏng hay driver hỏng khi máy không chạy? Đổi motor sang một kênh driver đang hoạt động tốt. Nếu lỗi đi theo motor thì kiểm tra motor và dây; nếu motor đó chạy bình thường ở kênh mới thì driver hoặc khe cắm cũ có vấn đề.
- Motor 4 dây có quay được khi cấp thẳng nguồn một chiều mà không có driver không? Không quay liên tục được. Cấp nguồn vào một cuộn chỉ làm trục khóa ở một vị trí; muốn quay phải đảo chiều dòng luân phiên trong hai cuộn theo trình tự, mà việc này cần mạch cầu H hoặc driver.
- Chạy thử với code đơn giản thì quay tốt, nhưng tăng tốc độ thì motor kêu rồi đứng, có phải đấu sai dây không? Không phải. Đấu sai dây làm motor không quay được ngay cả ở tốc độ thấp. Đứng máy khi tăng tốc là do khởi động thẳng ở tốc độ cao không có gia tốc, nguồn điện áp thấp hoặc dòng đặt thiếu; thêm đoạn tăng tốc dần trong code hoặc nâng điện áp nguồn trong giới hạn driver.






