Mạch điều khiển động cơ bước A3967: thông số EasyDriver, bảng chân, chỉnh dòng và đấu Arduino, ESP32
Mạch điều khiển động cơ bước A3967 là driver cho động cơ bước 2 pha lưỡng cực, xây dựng trên IC A3967 của Allegro: chịu tối đa 30 V nguồn motor, dòng tới khoảng 750 mA mỗi pha, chia vi bước tới 1/8 và nhận lệnh theo kiểu STEP/DIR. Dạng phổ biến nhất trên thị trường là board EasyDriver màu đỏ (bản v4.4, v4.5), trên đó có sẵn biến trở chỉnh dòng, mạch ổn áp 5 V hoặc 3,3 V cho phần logic và các chân MS1, MS2, SLP, RST, ENABLE, PFD được đưa ra ngoài.
Board A3967 hợp với motor bước dòng thấp đến trung bình: motor NEMA 14, NEMA 17 loại mỏng, motor nhỏ tháo từ máy in, máy scan, motor có hộp số dùng cho camera slider, giá đỡ kính thiên văn, van định lượng, mô hình học tập. Với motor NEMA 17 dòng 1,5–2 A của máy in 3D, A3967 vẫn quay được nhưng chỉ cấp tối đa khoảng 750 mA nên lực giữ giảm rõ. Hiểu đúng giới hạn này và vài quy tắc đấu nối là tránh được gần hết các sự cố "board mới mua đã chết".
Nội dung
- 1. Mạch điều khiển động cơ bước A3967 là gì
- 2. Sơ đồ chân EasyDriver A3967 và chức năng từng chân
- 3. Vi bước 1/8 với MS1, MS2 và số bước mỗi vòng
- 4. Biến trở chỉnh dòng: cách đặt dòng EasyDriver cho đúng motor
- 5. Nguồn cấp và mạch ổn áp 5 V, 3,3 V trên board
- 6. Đấu mạch điều khiển động cơ bước A3967 với Arduino
- 7. Đấu EasyDriver A3967 với ESP32 và vi điều khiển 3,3 V
- 8. Nhiệt độ: vì sao board A3967 nóng và cách xử lý
- 9. Motor nào phù hợp với mạch điều khiển động cơ bước A3967
- 10. Chân PFD và chế độ suy giảm dòng (decay)
- 11. Lỗi thường gặp với mạch điều khiển động cơ bước A3967
- 12. So sánh A3967 với A4988 và DRV8825
- 13. Ứng dụng hợp lý của driver A3967
- 14. Câu hỏi thường gặp về mạch điều khiển động cơ bước A3967
1. Mạch điều khiển động cơ bước A3967 là gì
IC A3967 (mã đầy đủ thường gặp là A3967SLB hoặc A3967SLBT) là một driver vi bước có tích hợp bộ dịch (translator). Bên trong chip có hai cầu H điều khiển hai cuộn dây, mạch băm dòng PWM với dòng đặt theo điện áp tham chiếu, bảng dòng sin–cos cho chế độ vi bước và bộ logic biến mỗi xung STEP thành một bước. Nhờ có translator, vi điều khiển chỉ cần hai chân là đủ điều khiển một motor: một chân phát xung, một chân chọn chiều.
Board EasyDriver do Brian Schmalz thiết kế, sau đó được nhiều xưởng sản xuất lại với cùng sơ đồ và bố trí chân, nên hướng dẫn trong bài áp dụng được cho phần lớn module A3967 đang bán.

Thông số cốt lõi của IC A3967 theo datasheet
| Thông số | Giá trị | Ý nghĩa khi dùng |
| Điện áp nguồn motor VBB | Tối đa tuyệt đối 30 V | Không cấp sát 30 V; dùng 12–24 V để có biên an toàn |
| Dòng ra mỗi pha | ±750 mA liên tục, ±850 mA đỉnh | Motor dòng định mức cao hơn chỉ chạy được ở dòng giảm |
| Điện áp logic VCC | 3,0–5,5 V | Làm việc được với cả vi điều khiển 5 V và 3,3 V |
| Vi bước | Full, 1/2, 1/4, 1/8 | Chọn bằng MS1, MS2 |
| Chế độ suy giảm dòng | Slow, fast, mixed | Chọn bằng điện áp chân PFD |
| Xung STEP | Mức cao và mức thấp tối thiểu 1 µs | Tần số STEP đảm bảo tới 500 kHz |
| Thời gian chờ sau SLEEP | Tối đa 1 ms | Phải đợi trước khi phát xung |
| Bảo vệ | Ngắt nhiệt khoảng 165 °C (trễ 15 °C), khóa thấp áp, chống dòng xuyên | Quá nhiệt thì motor mất lực rồi tự chạy lại khi nguội |
| Vỏ | SOIC 24 chân, chân giữa nối mass để tản nhiệt | Nhiệt thoát chủ yếu qua mặt đồng của mạch in |
Hai chi tiết datasheet ảnh hưởng trực tiếp tới cách dùng. Tầng ra có sụt áp khoảng 1,9 V phía nguồn và 0,65 V phía mass ở 750 mA, nên A3967 nóng hơn driver MOSFET đời mới ở cùng dòng. Ngoài ra, khi bật nguồn hoặc khi RST về mức thấp, translator đưa motor về trạng thái gốc 45° (hai cuộn cùng khoảng 70,7 % dòng đặt), nên trục có thể nhích nhẹ lúc vừa cấp điện – đó là bình thường.
2. Sơ đồ chân EasyDriver A3967 và chức năng từng chân
Board EasyDriver có hai hàng chân. Hàng phía motor gồm bốn chân cuộn dây và hai chân nguồn; hàng phía tín hiệu gồm STEP, DIR, các chân cấu hình và chân ra 5 V. Ký hiệu in trên bo có thể hơi khác giữa các xưởng nhưng thứ tự chức năng giống nhau.
| Chân | Chức năng | Trạng thái mặc định trên board |
| M+ / GND (PWR IN) | Nguồn motor một chiều | Cấp khoảng 7–30 V, đúng cực tính |
| A+ A− / B+ B− | Hai đầu cuộn A và cuộn B | Mỗi cặp là một cuộn dây |
| STEP | Mỗi cạnh lên (thấp → cao) là một bước hoặc một vi bước | Bản v4.5 có điện trở nối tiếp và kéo xuống |
| DIR | Chiều quay, được đọc tại cạnh lên của STEP kế tiếp | Bản v4.5 có điện trở kéo xuống |
| MS1, MS2 | Chọn độ phân giải vi bước | Được kéo lên mức cao, mặc định 1/8 |
| ENABLE | Mức cao: tắt tầng ra, motor thả lỏng | Mặc định mức thấp, motor được cấp dòng |
| SLP (SLEEP) | Mức thấp: ngủ, tắt tầng ra, giảm tiêu thụ | Mặc định mức cao |
| RST (RESET) | Mức thấp: đưa translator về gốc, tắt tầng ra, bỏ qua xung STEP | Mặc định mức cao |
| PFD | Điện áp chọn kiểu suy giảm dòng | Mặc định slow decay |
| 5V / GND | Chân ra của mạch ổn áp trên board | 5 V, hoặc 3,3 V khi hàn jumper |
Ba chân hay bị hiểu nhầm: ENABLE, SLP và RST
Cả ba chân đều làm motor mất lực, nhưng khác nhau ở chỗ có giữ vị trí bộ đếm bên trong hay không:
- ENABLE lên mức cao chỉ tắt tầng ra; translator vẫn nhận STEP, DIR, MS1, MS2. Nếu lúc đó vẫn phát xung, vị trí trong chip thay đổi trong khi trục không quay, nên khi bật lại motor có thể giật một vi bước.
- SLP về mức thấp tắt cả phần lớn mạch bên trong để tiết kiệm điện. Khi kéo SLP lên lại phải đợi tối đa 1 ms mới phát xung, nếu không vài xung đầu bị bỏ qua.
- RST về mức thấp đưa translator về trạng thái gốc 45°. Motor sẽ nhảy về vị trí điện gần nhất ứng với trạng thái đó, nên không dùng RST để "tạm dừng".
Trong đa số ứng dụng chỉ cần nối STEP, DIR và GND. ENABLE nên nối thêm khi cần thả lỏng motor để quay tay hoặc để giảm nhiệt lúc đứng lâu; SLP chỉ đáng dùng khi chạy bằng pin.
3. Vi bước 1/8 với MS1, MS2 và số bước mỗi vòng
A3967 chia tối đa 1/8 bước. Với motor bước 1,8° phổ biến (200 bước đủ mỗi vòng), mỗi chế độ cho số xung mỗi vòng như sau:
| MS1 | MS2 | Chế độ | Xung mỗi vòng (motor 1,8°) |
| Thấp | Thấp | Đủ bước (hai pha cùng cấp dòng) | 200 |
| Cao | Thấp | Nửa bước | 400 |
| Thấp | Cao | 1/4 bước | 800 |
| Cao | Cao | 1/8 bước (mặc định khi để trống) | 1.600 |
Vì MS1, MS2 được kéo lên sẵn, để trống hai chân này board luôn chạy 1/8. Nhiều người viết chương trình theo 200 bước mỗi vòng rồi thấy motor chỉ quay được 1/8 vòng – nguyên nhân chính là chế độ mặc định này. Muốn chạy đủ bước thì nối cả MS1 và MS2 xuống GND; muốn đổi chế độ trong lúc chạy thì nối hai chân vào hai chân số của vi điều khiển.
Dòng điện ở chế độ đủ bước không phải 100 %
Ở chế độ đủ bước, A3967 cấp cho mỗi cuộn khoảng 70,7 % dòng đặt (hai pha cùng bật). Ở chế độ 1/8, dòng mỗi cuộn đi theo các mức 19,5 %, 38,3 %, 55,6 %, 70,7 %, 83,1 %, 92,4 %, 98,1 % và 100 % theo hình sin. Vì thế nửa bước kêu to hơn 1/8 (mô-men dao động theo từng bước), còn 1/8 êm nhất nhưng vi điều khiển phải phát xung nhiều gấp 8 lần.
4. Biến trở chỉnh dòng: cách đặt dòng EasyDriver cho đúng motor
Dòng pha của A3967 được giới hạn theo công thức ITRIP = VREF / (8 × RS), trong đó RS là điện trở đo dòng và VREF là điện áp tham chiếu. Trên EasyDriver, VREF lấy từ biến trở nhỏ cạnh chip, cho dải dòng khoảng 150–750 mA mỗi pha.

Đặt dòng bằng đồng hồ vạn năng qua điểm đo TP1
Chữ MIN/MAX in cạnh biến trở trên một số lô board bị ngược với chiều thật, và có loại biến trở xoay trơn không có điểm chặn. Cách chắc chắn là đo điện áp tại điểm TP1 so với GND khi board đã có nguồn:
| Điện áp TP1 | Dòng pha xấp xỉ | Gợi ý motor |
| Khoảng 1 V | 150 mA | Motor PM nhỏ, cuộn điện trở cao |
| Khoảng 2 V | 300 mA | Motor tháo máy in, NEMA 14 dòng thấp |
| Khoảng 3 V | 450 mA | NEMA 17 mỏng, motor có hộp số nhỏ |
| Khoảng 4 V | 600 mA | NEMA 17 dòng 0,6–1 A (chạy giảm dòng) |
| Khoảng 5 V | 750 mA | Mức tối đa, cần làm mát |
Quan hệ gần như tuyến tính, có thể nhớ nhanh: dòng (mA) ≈ 150 × điện áp TP1 (V). Đặt dòng bằng hoặc thấp hơn dòng định mức của motor ghi trên tem; với motor dòng định mức trên 750 mA thì cứ đặt tối đa và chấp nhận mô-men thấp hơn catalog.
Khi không có thông số motor
- Vặn biến trở về mức thấp nhất, cho motor quay chậm, rồi tăng dần đến khi hết trượt bước ở tải thực tế.
- Chạy 10–15 phút; nóng đến mức không giữ tay được thì lùi biến trở lại. Không vặn quá điểm chặn cơ khí vì biến trở rất dễ gãy.
5. Nguồn cấp và mạch ổn áp 5 V, 3,3 V trên board
Nguồn motor M+
IC chịu tối đa tuyệt đối 30 V, còn board EasyDriver được ghi dải làm việc khoảng 7–30 V (một số tài liệu ghi 6–30 V hoặc 8–30 V). Trong thực tế:
- 12 V là mức dễ dùng nhất, mạch ổn áp trên board ít nóng; 24 V cho mô-men tốt hơn ở tốc độ cao nhưng ổn áp nóng hơn nhiều.
- Không dùng nguồn 30 V hoặc nguồn chưa ổn định; xung áp khi motor hãm hoặc khi cắm rút có thể vượt 30 V và phá chip.
- Nguồn 1–2 A cho một board là đủ; nhờ băm dòng, dòng lấy từ nguồn thường thấp hơn tổng dòng hai cuộn.
Đặt tụ lọc sẵn trên board ngay sát chip là để hấp thụ xung dòng băm. Nếu dây nguồn dài trên 50 cm, nên thêm một tụ 100–470 µF cùng điện áp ≥ 35 V tại cọc M+.
Mạch ổn áp và chân 5V
Board tự hạ áp từ M+ xuống 5 V để nuôi chip A3967 (chip cần khoảng 70 mA). Chân 5V trên hàng tín hiệu là ngõ ra của mạch ổn áp này, có thể dùng nuôi một mạch nhỏ bên ngoài, nhưng khả năng cấp dòng giảm mạnh khi nguồn M+ tăng vì mạch ổn áp phải "đốt" phần điện áp chênh lệch. Thử nghiệm của tác giả board (không gắn motor) cho thấy chân 5V cấp được khoảng 355 mA ở 9 V, 175 mA ở 12 V nhưng chỉ còn khoảng 26 mA ở 24 V trước khi mạch ổn áp tự giới hạn vì nhiệt. Vì vậy:
- Ở nguồn 24 V, không dùng chân 5V của EasyDriver để nuôi Arduino hay ESP32.
- Ở nguồn 9–12 V, nuôi được cảm biến, công tắc hành trình, LED; nuôi vi điều khiển thì vẫn nên có nguồn riêng.
Hai jumper hàn SJ1 (APWR) và SJ2 (3,3 V)
- SJ2 để hở (mặc định): logic 5 V. Hàn nối SJ2: mạch ổn áp chuyển sang 3,3 V, chân 5V lúc đó ra 3,3 V, hợp với ESP32, Raspberry Pi, STM32.
- SJ1 (APWR) nối sẵn bằng đường đồng: board tự cấp nguồn logic. Cắt đường đồng này thì mạch ổn áp bị tách, khi đó phải cấp 5 V hoặc 3,3 V từ ngoài vào chân 5V. Cách này hữu ích khi chạy 24 V và muốn mạch ổn áp hết nóng.
6. Đấu mạch điều khiển động cơ bước A3967 với Arduino
Sơ đồ tối thiểu dùng hai chân số. Arduino Uno, Nano, Mega đều chạy logic 5 V nên dùng board ở cấu hình mặc định.
| Chân EasyDriver | Nối tới | Ghi chú |
| STEP | D3 | Bất kỳ chân số nào |
| DIR | D2 | Bất kỳ chân số nào |
| GND (cạnh STEP) | GND Arduino | Bắt buộc nối chung mass |
| ENABLE | D4 (tùy chọn) | Mức cao để thả motor |
| MS1, MS2 | Để trống hoặc D5, D6 | Để trống là 1/8 bước |
| M+ / GND | Nguồn 12 V | Không lấy từ chân 5V của Arduino |
| A+ A− / B+ B− | Hai cuộn motor | Tắt nguồn trước khi đấu |
Thiếu dây GND chung, xung STEP không có điểm tham chiếu: motor chạy chập chờn hoặc đứng yên dù đèn nguồn vẫn sáng.
Chương trình tối thiểu không dùng thư viện
- Trong setup: pinMode(3, OUTPUT); pinMode(2, OUTPUT); digitalWrite(2, HIGH); – đặt chiều quay.
- Trong loop: digitalWrite(3, HIGH); delayMicroseconds(500); digitalWrite(3, LOW); delayMicroseconds(500); – mỗi chu kỳ là một vi bước.
- Với 1/8 bước và motor 1,8°, chu kỳ 1 ms cho 1.000 vi bước/giây, tương đương 1.000 / 1.600 × 60 ≈ 37,5 vòng/phút.
- Muốn quay đúng một vòng ở chế độ mặc định: lặp 1.600 xung. Muốn đảo chiều: đổi mức DIR rồi phát xung tiếp.
Dùng thư viện AccelStepper để có tăng tốc, giảm tốc
- Khai báo: AccelStepper stepper(AccelStepper::DRIVER, 3, 2); – kiểu DRIVER, chân STEP trước, DIR sau.
- Trong setup: stepper.setMaxSpeed(3000); stepper.setAcceleration(2000); stepper.moveTo(1600);
- Trong loop: stepper.run(); – gọi liên tục, không dùng delay() trong loop.
- AccelStepper trên Arduino Uno 16 MHz phát được khoảng vài nghìn bước/giây; chạy nhiều motor cùng lúc ở tốc độ cao dễ giật. Khi đó hạ vi bước xuống 1/4 hoặc 1/2 để giảm số xung cần phát.
Giới hạn tốc độ nằm ở vi điều khiển và mô-men motor chứ không ở chip (xung tối thiểu chỉ 1 µs). Profile gia tốc hình thang, S-curve và so sánh thư viện có trong bài điều khiển động cơ bước lưỡng cực.
7. Đấu EasyDriver A3967 với ESP32 và vi điều khiển 3,3 V
A3967 nhận mức cao khi điện áp vào vượt khoảng 0,7 × VCC. Với logic 5 V mặc định, ngưỡng này khoảng 3,5 V, trong khi chân ESP32 chỉ ra tối đa 3,3 V. Board có thể vẫn chạy trên bàn thử, nhưng sát ngưỡng như vậy rất dễ lỗi khi dây dài hoặc có nhiễu từ motor. Có hai cách làm đúng:
- Hàn jumper SJ2 để chuyển board sang logic 3,3 V; ngưỡng mức cao còn khoảng 2,3 V, ESP32 điều khiển chắc chắn.
- Giữ logic 5 V và dùng IC đệm chuyển mức (74HCT245, 74AHCT125) giữa ESP32 và STEP, DIR.
Chọn chân ESP32
| Tín hiệu | Chân ESP32 gợi ý | Tránh dùng |
| STEP | GPIO 25, 26, 27, 32, 33 | GPIO 6–11 (nối flash) |
| DIR | GPIO 14, 16, 17 | GPIO 0, 2, 12, 15 (chân cấu hình lúc khởi động) |
| ENABLE | GPIO 4, 13, 18 | GPIO 34–39 (chỉ là ngõ vào) |
| GND | GND | – |
Nối nhầm ENABLE hay MS1 vào GPIO 0 hoặc 12 có thể khiến ESP32 không khởi động hoặc vào chế độ nạp do điện trở kéo trên board – lỗi hay gặp khi giữ nguyên số chân từ sơ đồ Arduino.
ESP32 phát xung nhanh hơn Uno nhiều; thư viện FastAccelStepper dùng bộ phát xung phần cứng của chip nên tạo xung tốc độ cao, đều mà không chiếm CPU.
8. Nhiệt độ: vì sao board A3967 nóng và cách xử lý
EasyDriver nóng là chuyện bình thường ở dòng cao. Tác giả board ghi nhận chip có thể lên tới khoảng 130–139 °C với một số motor ở 9–30 V, và có trường hợp chạm ngưỡng ngắt nhiệt 165 °C. Nguyên nhân chính:
- Tầng ra có sụt áp tổng khoảng 2,5 V ở 750 mA, mỗi cầu H tỏa gần 2 W khi chạy dòng tối đa.
- Nhiệt trở từ chip ra không khí khoảng 35–50 °C/W tùy mạch in; chỉ 2 W đã có thể làm chip nóng hơn môi trường 70–100 °C.
- Mạch ổn áp trên board nóng thêm khi nguồn M+ cao.
Cách giảm nhiệt hiệu quả theo thứ tự ưu tiên
- Đặt dòng vừa đủ: nhiều motor chạy tốt ở 450–600 mA, nhiệt giảm rất nhiều so với 750 mA.
- Thêm quạt nhỏ thổi ngang board, hoặc dán tản nhiệt nhôm nhỏ lên mặt chip bằng keo dẫn nhiệt.
- Dùng chân ENABLE thả motor khi đứng lâu và tải không cần giữ (cơ cấu trục vít, motor có hộp số tự hãm).
- Nguồn 24 V trở lên thì cắt SJ1 và cấp logic ngoài để mạch ổn áp không phải gánh nhiệt.
Motor mất lực vài giây rồi tự chạy lại theo chu kỳ là dấu hiệu chip đang chạm ngưỡng ngắt nhiệt: dòng đặt quá cao hoặc board bị nhốt trong hộp kín.
9. Motor nào phù hợp với mạch điều khiển động cơ bước A3967
Điều kiện cơ bản
- Motor lưỡng cực 4 dây; motor 6 dây đấu nửa cuộn hoặc cả cuộn; motor 8 dây đấu nối tiếp hoặc song song.
- Dòng định mức từ khoảng 150 mA trở lên; tốt nhất là 300–750 mA.
- Motor 5 dây (dây chung nối sẵn bên trong) không chạy được với A3967 vì hai cuộn bị nối chung một điểm.
Bảng gợi ý ghép motor
| Loại motor | Dòng định mức điển hình | Mức độ phù hợp với A3967 |
| PM tròn 20–35 mm, motor tháo máy in, máy scan | 0,2–0,6 A | Rất phù hợp |
| NEMA 14 (35 mm) | 0,4–1 A | Phù hợp, đặt 0,5–0,75 A |
| NEMA 17 thân 20–34 mm, dòng 0,4–0,8 A | 0,4–0,8 A | Phù hợp |
| NEMA 17 thân 40–48 mm, dòng 1,5–2 A | 1,5–2 A | Chạy được nhưng chỉ còn khoảng 40–50 % lực giữ |
| Motor 6 dây đơn cực, đấu nửa cuộn | Theo tem nửa cuộn | Phù hợp nếu dòng ≤ 750 mA |
| NEMA 23 trở lên | 2–4 A | Không phù hợp |
Motor nhỏ như các loại 20–35 mm có đặc điểm riêng về cách lắp, mô-men theo cỡ và cách chọn cho tải nhẹ, xem bài động cơ bước mini. Với NEMA 17 dòng cao, nếu mô-men là yếu tố quyết định thì nên chọn driver mạnh hơn; chi tiết từng chiều dài thân và mô-men tương ứng có ở bài động cơ bước NEMA 17.
Motor 28BYJ-48 và motor 6 dây
Motor 28BYJ-48 nguyên bản là loại 5 dây, chỉ chạy được với A3967 khi đã cắt đường đồng nối dây đỏ bên trong để chuyển sang lưỡng cực; cách làm và thông số thật của motor này nằm trong bài động cơ bước 5 dây 28BYJ-48. Motor 6 dây thì bỏ trống hai dây chung và đấu hai đầu cuộn vào A, B; sơ đồ chân cho từng loại driver có trong bài điều khiển động cơ bước 6 dây.
Trước khi đấu, đo điện trở để tìm hai cặp cuộn (hai dây thông nhau là một cuộn); đảo hai dây trong cùng một cuộn chỉ đổi chiều quay. Quy trình đầy đủ từ lúc tìm cặp đến chạy lần đầu có ở bài điều khiển động cơ bước 4 dây.
10. Chân PFD và chế độ suy giảm dòng (decay)
Chân PFD quyết định cách dòng điện trong cuộn dây giảm xuống sau mỗi chu kỳ băm. Điện áp đặt vào PFD so với VCC chọn chế độ như sau:
| Điện áp PFD | Chế độ | Biểu hiện |
| Trên 0,6 × VCC (trên 3 V khi logic 5 V) | Slow decay (mặc định của EasyDriver) | Êm ở tốc độ thấp, có thể méo dòng ở tốc độ cao |
| Dưới 0,21 × VCC (dưới khoảng 1,05 V) | Fast decay | Bám dòng tốt khi chạy nhanh, nhưng ồn và rung hơn |
| Trong khoảng giữa | Mixed decay | Cân bằng giữa hai chế độ |
Chỉ thử mixed decay khi motor kêu rít hoặc vi bước không đều khi chạy nhanh: tạo cầu phân áp từ chân 5V xuống GND (ví dụ 10 kΩ và 6,8 kΩ cho khoảng 2 V) rồi đưa vào PFD.
11. Lỗi thường gặp với mạch điều khiển động cơ bước A3967
| Hiện tượng | Nguyên nhân thường gặp | Cách xử lý |
| Board chết sau khi rút hoặc cắm lại motor | Rút dây motor khi đang có điện, cuộn dây sinh xung áp phá tầng ra | Luôn tắt nguồn trước khi động vào dây motor; dùng cọc vít hoặc hàn chặt |
| Chip chết ngay khi cấp nguồn | Cấp ngược cực M+, hoặc nguồn vượt 30 V | Kiểm tra cực tính; dùng nguồn ≤ 24 V |
| Motor rung tại chỗ, không quay | Sai cặp cuộn; dòng đặt quá thấp; tần số xung quá cao lúc khởi động | Đo lại cặp cuộn; tăng dòng; thêm gia tốc |
| Motor chỉ quay 1/8 vòng dù chương trình tính 200 bước | Để trống MS1, MS2 nên đang ở 1/8 | Nối MS1, MS2 xuống GND hoặc nhân số bước lên 8 |
| Đèn nguồn sáng, motor không có lực giữ | ENABLE đang ở mức cao, SLP hoặc RST bị kéo xuống | Kiểm tra mức logic các chân; chân vi điều khiển chưa cấu hình có thể ở trạng thái lửng |
| Motor yếu dần rồi mất lực vài giây | Chip chạm ngưỡng ngắt nhiệt | Giảm dòng, thêm quạt |
| Vặn biến trở mà dòng thay đổi ngược với chữ MIN/MAX | In nhãn sai ở một số lô board | Đo TP1 thay vì nhìn nhãn |
| ESP32 lúc chạy lúc không | Logic 3,3 V sát ngưỡng khi board ở 5 V | Hàn SJ2 sang 3,3 V hoặc dùng IC chuyển mức |
| Mạch ổn áp nóng bỏng, Arduino reset | Nuôi Arduino từ chân 5V khi M+ là 24 V | Cấp nguồn riêng cho Arduino; cắt SJ1 nếu cần |
Lỗi đầu tiên trong bảng gây ra phần lớn các ca hỏng board: cuộn dây đang mang dòng tích năng lượng từ trường, khi dây tuột hay bị rút đột ngột, năng lượng đó tạo xung điện áp lớn trên tầng ra. Header cắm lỏng hoặc dây không bấm đầu cũng nguy hiểm như rút motor, vì tiếp xúc chập chờn tạo ra hàng loạt xung như vậy.
12. So sánh A3967 với A4988 và DRV8825
A3967 là driver vi bước tích hợp đời đầu; board A4988, DRV8825 ra đời sau, nhỏ và mạnh hơn nhưng không có ổn áp logic trên board.
| Tiêu chí | A3967 (EasyDriver) | A4988 | DRV8825 |
| Điện áp motor | Tối đa 30 V | 8–35 V | 8,2–45 V |
| Dòng mỗi pha | Khoảng 750 mA | Khoảng 1 A không tản nhiệt, tới 2 A khi làm mát tốt | Khoảng 1,5 A không tản nhiệt, tới 2,2 A khi làm mát tốt |
| Vi bước tối đa | 1/8 | 1/16 | 1/32 |
| Ổn áp logic trên board | Có (5 V hoặc 3,3 V) | Không, cần VDD riêng | Không, logic tự nuôi |
| Điểm mạnh | Dễ dùng, chạy được ở điện áp motor thấp, nối dây đơn giản | Phổ biến, rẻ, nhiều tài liệu | Dòng và điện áp cao hơn |
Chọn A3967 khi motor nhỏ, dòng dưới 750 mA, cần một board độc lập dễ đấu dây với vi điều khiển 3,3 V hoặc 5 V. Chọn A4988, DRV8825 hoặc dòng TMC khi motor NEMA 17 dòng 1,5–2 A, cần cắm vào CNC Shield, hoặc cần chạy êm hơn. Khi motor cần dòng trên 2 A hoặc đặt trong tủ điện công nghiệp, driver tín hiệu cách ly quang như mạch điều khiển động cơ bước TB6600 là bước nâng cấp tự nhiên.
13. Ứng dụng hợp lý của driver A3967
Do giới hạn dòng, A3967 phát huy tốt nhất ở cơ cấu tải nhẹ, cần gọn và êm: camera slider, bàn xoay chụp sản phẩm, giá đỡ kính thiên văn, bơm nhu động, van và rèm mô hình nhà thông minh, máy vẽ mini, đồ án sinh viên.
Ở các cơ cấu cần mô-men lớn hơn mà vẫn muốn giữ driver nhỏ, giải pháp hay dùng là gắn hộp số vào motor để nhân mô-men; các dạng step tích hợp hộp số và bảng tốc độ ra theo tỉ số có trong bài động cơ bước giảm tốc. Khi bài toán không cần định vị chính xác từng bước mà chỉ cần quay ổn định một tốc độ, như băng tải nhỏ hay máy khuấy, motor giảm tốc mini kèm bộ điều tốc thường đơn giản và bền hơn. Còn khi cần tốc độ cao, mô-men lớn và phản hồi vị trí, motor servo là lựa chọn phù hợp hơn hẳn một driver 750 mA. Tổng quan cấu tạo và các dòng động cơ bước có thể xem tại trang động cơ bước.
14. Câu hỏi thường gặp về mạch điều khiển động cơ bước A3967
- EasyDriver v4.4 và v4.5 khác nhau thế nào? Hai bản gần như giống nhau về chức năng và sơ đồ chân. Bản v4.5 thêm điện trở nối tiếp và điện trở kéo xuống cho chân STEP và DIR, giúp chân vào chịu được quá áp nhẹ và không nhận xung rác khi vi điều khiển chưa khởi động xong. Dùng thay cho nhau được mà không phải sửa chương trình.
- Driver A3967 có cần nối cả STEP, DIR, ENABLE, MS1, MS2, SLP, RST không? Không. Chỉ cần STEP, DIR và GND chung là motor chạy ở chế độ 1/8 bước. ENABLE nên nối khi cần thả lỏng motor; MS1, MS2 nối khi muốn đổi chế độ vi bước bằng phần mềm; SLP và RST để trống vì board đã kéo sẵn lên mức cao.
- Đặt dòng EasyDriver cho motor ghi 0,4 A thế nào? Cấp nguồn, đo điện áp TP1 so với GND rồi vặn biến trở tới khoảng 2,7 V, tương ứng khoảng 400 mA theo quan hệ dòng (mA) ≈ 150 × V(TP1). Sau đó chạy thử 15 phút; motor ấm đến nóng vừa phải là đạt.
- Có thể dùng mạch điều khiển động cơ bước A3967 với nguồn 5 V không? Board vẫn có thể quay motor ở điện áp rất thấp, nhưng mạch ổn áp trên board không còn tạo được 5 V ổn định và lực ở tốc độ cao rất kém. Nên dùng tối thiểu 9–12 V cho nguồn M+; nếu buộc phải chạy nguồn thấp, cắt SJ1 và cấp logic ngoài.
- Chip trên board ghi A3967SLBT, các chữ sau mã có ý nghĩa gì? Chữ S chỉ dải nhiệt độ làm việc −20 đến 85 °C, LB là vỏ SOIC 24 chân kiểu có chân tản nhiệt giữa, T là phiên bản không chì. A3967SLB và A3967SLBT có cùng thông số điện, thay cho nhau được.
- Nguồn adapter 12 V 1 A có đủ cho một board EasyDriver không? Đủ cho đa số motor nhỏ và NEMA 17 đặt dưới 750 mA. Nhờ băm dòng, dòng lấy từ nguồn thường thấp hơn tổng dòng hai cuộn, nhất là khi motor chạy chậm. Nếu nuôi thêm vi điều khiển, quạt hoặc chạy hai board trở lên thì nên dùng nguồn 2–3 A.
- Tốc độ tối đa motor đạt được với EasyDriver là bao nhiêu? Chip nhận xung STEP tới 500 kHz, nên giới hạn thực tế là khả năng phát xung của vi điều khiển và mô-men motor. Với motor NEMA 17 ở nguồn 12 V và chế độ 1/8, đa số thiết lập chạy ổn ở vài trăm vòng/phút khi có gia tốc; muốn nhanh hơn cần nguồn cao hơn và motor điện cảm thấp.
- Vì sao EasyDriver chạy tốt với Arduino nhưng chuyển sang Raspberry Pi thì motor kêu và giật? Raspberry Pi logic 3,3 V nên cần hàn SJ2 hoặc dùng IC chuyển mức, và hệ điều hành Linux không tạo được xung đều khi phát bằng Python. Nên dùng thư viện phát xung bằng DMA như pigpio, hoặc để một vi điều khiển nhỏ phát xung và Pi chỉ gửi lệnh.
- Board A3967 dùng được với firmware GRBL hoặc Marlin không? Dùng được vì giao tiếp là STEP/DIR như mọi driver khác; chỉ cần nối chân STEP, DIR, ENABLE của bo điều khiển tới từng EasyDriver. Lưu ý đặt số bước mỗi mm theo chế độ 1/8 và chỉ dùng cho máy nhẹ như máy vẽ, máy khắc laser mini.
- Làm sao biết board A3967 đã chết hay chỉ ngắt nhiệt? Tắt nguồn chờ chip nguội vài phút rồi bật lại, không gắn tải. Nếu motor có lực giữ và quay khi phát xung thì chỉ là ngắt nhiệt; nếu motor không có lực giữ, chip nóng nhanh bất thường dù không chạy, hoặc nguồn bị sụt khi cấp điện, nhiều khả năng tầng ra đã hỏng.
- Board EasyDriver có cắm thẳng vào CNC Shield thay cho A4988 được không? Không. EasyDriver có kích thước và thứ tự chân khác hoàn toàn chuẩn khe cắm 16 chân của A4988, DRV8825. Muốn dùng với CNC Shield phải đi dây từ các chân STEP, DIR, EN và GND của khe trống sang từng board EasyDriver, đồng thời cấp nguồn motor riêng cho board.






