ESP32 Driver Điều Khiển Stepper Motor DRV8825
Trong hướng dẫn này, chúng ta sẽ khám phá Driver Điều Khiển Stepper Motor DRV8825 và tìm hiểu cách vận hành nó với ESP32 để điều khiển stepper motor. Chúng ta sẽ bao quát những nội dung sau:
- DRV8825 stepper motor driver module là gì
- Cách thức hoạt động của DRV8825 stepper motor driver module
- Cách kết nối DRV8825 stepper motor driver với ESP32 và stepper motor
- Cách lập trình ESP32 để điều khiển stepper motor bằng DRV8825 module

Linh Kiện Cần Thiết
| 1 | × | mô-đun phát triển ESP-WROOM-32 | ||
| 1 | × | Alternatively, ESP32 Uno-form board | ||
| 1 | × | Alternatively, ESP32 S3 Uno-form board | ||
| 1 | × | Cáp USB Type-C | ||
| 1 | × | Stepper Motor Nema 17 | ||
| 1 | × | DRV8825 Stepper Motor Driver | ||
| 1 | × | Bo Mạch Mở Rộng cho DRV8825 Motor Driver | ||
| 1 | × | Adapter Nguồn 12V | ||
| 1 | × | Jack Nguồn DC | ||
| 1 | × | Dây Nối Jumper | ||
| 1 | × | (Khuyến nghị) Screw Terminal Expansion Board for ESP32 | ||
| 1 | × | (Khuyến nghị) Breakout Expansion Board for ESP32 | ||
| 1 | × | (Khuyến nghị) Power Splitter for ESP32 |
Or you can buy the following kits:
| 1 | × | DIYables ESP32 Starter Kit (ESP32 included) | ||
| 1 | × | DIYables Sensor Kit (30 sensors/displays) | ||
| 1 | × | DIYables Sensor Kit (18 sensors/displays) |
Về DRV8825 Stepper Motor Driver
DRV8825 là một driver điều khiển stepper motor phổ biến được sử dụng để điều khiển stepper motor bipolar trong các thiết bị như máy CNC, máy in 3D và robot. Nó bao gồm các tính năng như giới hạn dòng điện có thể điều chỉnh, bảo vệ chống quá nhiệt và các tùy chọn microstepping khác nhau như full-step, 1/2, 1/4, 1/8, 1/16 và 1/32. Module này có thể điều khiển tới 2.2A mỗi coil với làm mát phù hợp và hoạt động trong phạm vi điện áp rộng từ 8.2V đến 45V, điều này làm cho nó linh hoạt cho nhiều loại stepper motor khác nhau.
Để hiểu các khái niệm về stepper motor như full-step, microstepping, unipolar stepper và bipolar stepper, hãy xem hướng dẫn ESP32 - Stepper Motor.
Thật ấn tượng khi việc điều khiển tốc độ và hướng của một bipolar stepper motor như NEMA 17 chỉ cần hai chân ESP32.
Sơ Đồ Chân DRV8825 Stepper Motor Driver

DRV8825 Stepper motor driver có 16 chân. Đây là bố cục thông thường cho DRV8825 stepper motor driver module. Lưu ý rằng một số phiên bản của module có thể đặt tên các chân khác nhau, nhưng chức năng của chúng giống nhau.
| Tên Chân | Mô Tả |
|---|---|
| VMOT | Nguồn cấp cho motor (8.2 V đến 45 V). Cung cấp điện cho stepper motor. |
| GND (cho Motor) | Nối đất tham chiếu cho nguồn cấp motor. Kết nối chân này với GND của nguồn cấp motor |
| 2B, 2A | Outputs cho Coil B của stepper motor. |
| 1A, 1B | Outputs cho Coil A của stepper motor. |
| FAULT | Chân Phát Hiện Lỗi. Đây là chân output kéo xuống LOW khi các H-bridge FET bị vô hiệu hóa do bảo vệ quá dòng hoặc tắt nhiệt. |
| GND (cho Logic) | Nối đất tham chiếu cho tín hiệu logic. Kết nối chân này với GND của ESP32 |
| ENABLE | Chân Active-Low để enable/disable outputs của motor. LOW = Enabled, HIGH = Disabled. |
| M1, M2, M3 | Các chân chọn độ phân giải microstepping (xem bảng bên dưới). |
| RESET | Chân reset Active-Low - kéo chân này xuống LOW để reset driver. |
| SLEEP | Chân sleep Active-Low - kéo chân này xuống LOW để đưa driver vào chế độ sleep tiết kiệm điện. |
| STEP | Input Step - cạnh lên trên chân này làm motor tiến lên một bước (hoặc một microstep, tùy thuộc vào cài đặt microstepping). |
| DIR | Input Direction - thiết lập hướng xoay của stepper motor. |
Ngoài ra, có một nút xoay nhỏ tích hợp mà bạn có thể xoay để đặt giới hạn dòng điện, giúp ngăn stepper motor và driver khỏi bị quá nóng.
Tóm lại, 16 chân này được nhóm thành các loại dựa trên cách sử dụng:
- Các chân kết nối với stepper motor: 1A, 1B, 2A, 2B.
- Các chân kết nối với ESP32 để điều khiển driver: ENABLE, M1, M2, M3, RESET, SLEEP.
- Các chân kết nối với ESP32 để điều khiển hướng và tốc độ motor: DIR, STEP.
- Chân để gửi phản hồi cho ESP32: FAULT.
- Các chân kết nối với nguồn cấp của motor: VMOT, GND (motor power ground).
- Chân kết nối với ground của ESP32: GND (logic ground).
DRV8825 module không cần nguồn cấp logic từ bo mạch ESP32 vì nó nhận điện từ nguồn cấp motor thông qua bộ điều áp 3.3V tích hợp. Tuy nhiên, điều quan trọng là phải kết nối ground của ESP32 với chân GND (logic) của DRV8825 module để đảm bảo hoạt động đúng và có tham chiếu ground chung.
Cấu Hình Microstep
DRV8825 driver cho phép microstepping bằng cách chia mỗi bước thành các phần nhỏ hơn. Điều này được thực hiện bằng cách gửi các mức dòng điện khác nhau đến các coil của motor.
Ví dụ, NEMA 17 motor với góc bước 1.8 độ (200 bước mỗi vòng):
- Chế độ Full-step: 200 bước mỗi vòng
- Chế độ Half-step: 400 bước mỗi vòng
- Chế độ Quarter-step: 800 bước mỗi vòng
- Chế độ Eighth-step: 1600 bước mỗi vòng
- Chế độ Sixteenth-step: 3200 bước mỗi vòng
- Chế độ Thirty-second-step: 6400 bước mỗi vòng
Khi bạn tăng mức microstepping, motor hoạt động mượt mà và chính xác hơn, nhưng nó cần nhiều bước hơn cho mỗi vòng quay đầy đủ. Nếu bạn giữ cùng tốc độ xung bước (xung mỗi giây), thì mỗi vòng quay đầy đủ sẽ mất nhiều thời gian hơn, làm motor chậm hơn.
Tuy nhiên, nếu microcontroller của bạn có thể gửi xung đủ nhanh để phù hợp với số bước cao hơn, bạn có thể duy trì hoặc thậm chí tăng tốc độ. Giới hạn thực sự phụ thuộc vào tốc độ mà cả driver và microcontroller của bạn có thể xử lý các xung này mà không bỏ lỡ bước.
Các Chân Lựa Chọn Microstep của DRV8825
DRV8825 bao gồm ba input để chọn độ phân giải microstep: các chân M0, M1 và M2. Bằng cách đặt các chân này ở mức logic nhất định, bạn có thể chọn từ sáu độ phân giải microstepping:
| Chân M0 | Chân M1 | Chân M2 | Độ Phân Giải Microstep |
|---|---|---|---|
| Low | Low | Low | Full step |
| High | Low | Low | Half step |
| Low | High | Low | 1/4 step |
| High | High | Low | 1/8 step |
| Low | Low | High | 1/16 step |
| High | Low | High | 1/32 step |
| Low | High | High | 1/32 step |
| High | High | High | 1/32 step |
Các chân lựa chọn microstep này có điện trở pull-down tích hợp giữ chúng ở trạng thái LOW mặc định. Nếu không được kết nối, motor sẽ chạy ở chế độ full-step.
Cách Thức Hoạt Động
Để vận hành stepper motor với DRV8825 module, bạn cần hai chân ESP32: một cho chân DIR và một cho chân STEP. DRV8825 xử lý các tín hiệu này từ ESP32 để di chuyển stepper motor một cách chính xác.
- Chân STEP: Mỗi tín hiệu trên chân STEP làm motor tiến lên một bước nhỏ hoặc một bước đầy đủ, dựa trên cài đặt của bạn.
- Chân DIR: Đặt hướng mà motor xoay.
Driver sử dụng các tín hiệu này và cài đặt riêng của nó để gửi lệnh điều khiển đến motor thông qua các chân 1A, 1B, 2A và 2B.
Bạn cũng có thể thiết lập các chân bổ sung trên DRV8825 module (ENABLE, M1, M2, M3, RESET, SLEEP) theo một trong ba cách:
- Để chúng riêng biệt để driver có thể sử dụng cài đặt tiêu chuẩn.
- Kết nối chúng trực tiếp với GND hoặc VCC cho chế độ cố định.
- Liên kết chúng với các chân ESP32 để điều khiển các chức năng này thông qua lập trình.
Sơ Đồ Kết Nối giữa ESP32, DRV8825 module và Stepper Motor
Sơ đồ dưới đây hiển thị các kết nối cơ bản cần thiết giữa ESP32, DRV8825 module và stepper motor. Trong cách bố trí này, DRV8825 driver hoạt động ở chế độ tiêu chuẩn (full-step).

This image is created using Fritzing. Click to enlarge image
Nếu bạn chưa rõ cách cấp nguồn cho ESP32 và các linh kiện khác, xem: Cách Cung Cấp Nguồn Điện Cho ESP32.
Chi tiết:
- VMOT: Kết nối với nguồn cấp của motor (như 12V).
- GND (cho Motor): Kết nối với ground của nguồn cấp motor.
- 1A, 1B, 2A, 2B: Kết nối với các coil của stepper motor.
- STEP: Kết nối với chân digital D4 trên ESP32.
- DIR: Kết nối với chân digital D3 trên ESP32.
- GND (cho Logic): Kết nối với chân GND trên ESP32.
- Các chân khác: Không kết nối.
Code ESP32
Các Bước Nhanh
- Nếu đây là lần đầu bạn sử dụng ESP32, hãy xem ESP32 - Cài Đặt Phần Mềm.
- Thực hiện đấu dây theo hình ảnh trên.
- Kết nối bo mạch ESP32 với PC của bạn qua cáp USB
- Mở Arduino IDE trên PC.
- Chọn đúng bo mạch ESP32 (ví dụ: ESP32 Dev Module) và cổng COM.
- Sao chép code trên và mở trong Arduino IDE.
- Đi đến mục Libraries ở phía bên trái của Arduino IDE.
- Tìm kiếm "AccelStepper", sau đó tìm thư viện AccelStepper của Mike McCauley.
- Nhấn nút Install để thêm thư viện AccelStepper.

- Sao chép code và mở trong Arduino IDE
- Nhấn nút Upload trong Arduino IDE để gửi code lên ESP32
- Bạn sẽ thấy motor di chuyển qua lại
Mẹo Nhỏ: Khi chạy motor ở chế độ full-step, chuyển động của nó có thể không rất mượt, nhưng điều này là bình thường. Để có chuyển động mượt mà hơn, hãy bật microstepping bằng cách đặt các chân M1, M2 và M3.
Video Tutorial
Việc sản xuất video tốn rất nhiều thời gian. Nếu video hướng dẫn hữu ích cho việc học của bạn, hãy đăng ký kênh YouTube để ủng hộ. Nếu nhu cầu đủ cao, chúng tôi sẽ cố gắng làm thêm nhiều video.