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:

ESP32 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 module sơ đồ chân

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, M1M2. 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).

ESP32 drv8825 động cơ bước trình điều khiển sơ đồ đấu dây

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

/* * Mã ESP32 này được phát triển bởi newbiely.vn * Mã ESP32 này được cung cấp để sử dụng công khai, không có ràng buộc. * Để xem hướng dẫn chi tiết và sơ đồ kết nối, vui lòng truy cập: * https://newbiely.vn/tutorials/esp32/esp32-drv8825-stepper-motor-driver */ #include <AccelStepper.h> #define STEP_PIN 12 // The ESP32 pin GPIO12 connected to STEP pin of DRV8825 module #define DIR_PIN 14 // The ESP32 pin GPIO14 connected to DIR pin of DRV8825 module // Creates an instance AccelStepper stepper(AccelStepper::DRIVER, STEP_PIN, DIR_PIN); void setup() { // set the maximum speed, acceleration factor stepper.setMaxSpeed(1000); stepper.setAcceleration(200); // set speed and the target position stepper.setSpeed(200); stepper.moveTo(200); } void loop() { // Change direction once the motor reaches target position if (stepper.distanceToGo() == 0) stepper.moveTo(-stepper.currentPosition()); stepper.run(); // Move the motor one step }

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.
ESP32 accelstepper thư viện
  • 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, M2M3.

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.