ESP8266 Bộ điều khiển động cơ bước DRV8825

Trong hướng dẫn này, chúng ta sẽ tìm hiểu về DRV8825 – bộ điều khiển động cơ bước và cách sử dụng nó với ESP8266 để điều khiển động cơ bước. Dưới đây là các chi tiết mà chúng ta sẽ đề cập:

mô-đun ESP8266 NodeMCU drv8825

Phần cứng cần chuẩn bị

1×ESP8266 NodeMCU ESP-12E
1×Recommended: ESP8266 NodeMCU ESP-12E (Uno-form)
1×USB Cable Type-A to Type-C (for USB-A PC)
1×USB Cable Type-C to Type-C (for USB-C PC)
1×Stepper Motor Nema 17
1×DRV8825 Stepper Motor Driver
1×Expansion Board for DRV8825 Motor Driver
1×12V Power Adapter
1×DC Power Jack
1×dây jumper
1×(Khuyến nghị) Screw Terminal Expansion Board for ESP8266
1×(Khuyến nghị) Power Splitter for ESP8266 Type-C

Or you can buy the following kits:

1×DIYables Sensor Kit (30 sensors/displays)
1×DIYables Sensor Kit (18 sensors/displays)

Về Bộ điều khiển động cơ bước DRV8825

DRV8825 là một mô-đun phổ biến để điều khiển động cơ bước hai cực, thường được sử dụng trong các máy CNC, máy in 3D và robot. Nó có khả năng điều chỉnh dòng điện, bảo vệ quá nhiệt, và cung cấp một số tùy chọn microstepping như full-step (bước đầy), half-step (bước nửa), và các phân số xuống tới 1/32 bước. Mô-đun này có thể điều khiển lên tới 2,2A cho mỗi cuộn dây khi được làm mát thích hợp và hoạt động trong một phạm vi điện áp rộng từ 8,2V đến 45V, phù hợp với các động cơ bước khác nhau.

Để hiểu các khái niệm về động cơ bước như bước đầy đủ (full-step), vi bước (microstepping), động cơ bước đơn cực (unipolar stepper) và động cơ bước lưỡng cực (bipolar stepper), hãy tham khảo hướng dẫn ESP8266 - Stepper Motor.

Thật tuyệt khi bạn chỉ cần hai chân GPIO của ESP8266 để điều khiển tốc độ và hướng di chuyển của một động cơ bước hai cực, như loại NEMA 17.

Sơ đồ chân của DRV8825 - Bộ điều khiển động cơ bước

sơ đồ chân của module drv8825

Trình điều khiển động cơ bước DRV8825 có 16 chân. Dưới đây là một cách bố trí phổ biến cho các chân trên mô-đun trình điều khiển động cơ bước DRV8825. Hãy nhớ rằng một số phiên bản của mô-đun có thể đặt tên các chân khác nhau một chút, nhưng vai trò của chúng vẫn không đổi.

Pin Name Description
VMOT Motor power supply (8.2 V to 45 V). This powers the stepper motor.
GND (for Motor) Ground reference for the motor power supply. Connect this pin to the GND of the motor power supply
2B, 2A Outputs to Coil B of the stepper motor.
1A, 1B Outputs to Coil A of the stepper motor.
FAULT Fault Detection Pin. This is an output pin that drives LOW whenever the H-bridge FETs are disabled as the result of over-current protection or thermal shutdown.
GND (for Logic) Ground reference for the logic signals. Connect this pin to the GND of ESP8266
ENABLE Active-Low pin to enable/disable the motor outputs. LOW = Enabled, HIGH = Disabled.
M1, M2, M3 Microstepping resolution selector pins (see table below).
RESET Active-Low reset pin - pulling this pin LOW resets the driver.
SLEEP Active-Low sleep pin - pulling this pin LOW puts the driver into low-power sleep mode.
STEP Step input - a rising edge on this pin advances the motor by one step (or one microstep, depending on microstepping setting).
DIR Direction input - sets the rotation direction of the stepper motor.

Ngoài ra, có một núm vặn tích hợp nhỏ để bạn xoay và điều chỉnh điều khiển dòng điện, giúp ngăn động cơ bước và bộ driver khỏi bị quá nóng.

Tóm lại, 16 chân này được chia thành các loại dựa trên mục đích sử dụng của chúng:

  • Dây kết nối với động cơ bước: 1A, 1B, 2A, 2B.
  • Dây kết nối với ESP8266 để điều khiển driver: ENABLE, M1, M2, M3, RESET, SLEEP.
  • Dây kết nối với ESP8266 để điều khiển hướng và tốc độ của động cơ: DIR, STEP.
  • Dây gửi phản hồi cho ESP8266: FAULT.
  • Dây kết nối tới nguồn cấp cho động cơ: VMOT, GND (mặt đất nguồn cấp động cơ).
  • Dây kết nối tới đất của ESP8266: GND (mặt đất logic).

Đơn vị DRV8825 không cần nguồn cấp riêng từ ESP8266, vì nó nhận nguồn trực tiếp từ nguồn cấp cho động cơ với bộ ổn áp 3.3V tích hợp. Tuy nhiên, bạn phải kết nối đất của ESP8266 với chân GND (logic) của DRV8825 để đảm bảo hoạt động đúng và mức đất giữa hai thiết bị là như nhau.

Cấu hình vi bước

Bộ điều khiển DRV8825 cho phép microstepping bằng cách chia mỗi bước thành các phần nhỏ hơn. Nó thực hiện điều này bằng cách cấp cho các cuộn dây của động cơ các mức dòng điện khác nhau.

Ví dụ, động cơ NEMA 17 có góc bước 1,8° (200 bước cho mỗi vòng quay):

  • Chế độ đầy đủ bước: 200 bước mỗi vòng quay
  • Chế độ nửa bước: 400 bước mỗi vòng quay
  • Chế độ 1/4 bước: 800 bước mỗi vòng quay
  • Chế độ 1/8 bước: 1600 bước mỗi vòng quay
  • Chế độ 1/16 bước: 3200 bước mỗi vòng quay
  • Chế độ 1/32 bước: 6400 bước mỗi vòng quay

Khi tăng mức microstepping, động cơ vận hành trơn tru và chính xác hơn, nhưng nó cần nhiều bước hơn cho mỗi vòng quay. Nếu bạn giữ nguyên tần số xung bước, thì mỗi vòng quay sẽ mất nhiều thời gian hơn, khiến động cơ chậm lại.

Nếu vi điều khiển của bạn có thể gửi các xung nhanh đủ để theo kịp 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à vi điều khiển của bạn có thể xử lý các xung này mà không bỏ bước.

Các chân chọn vi bước của DRV8825

DRV8825 có ba chân đầu vào để chọn độ phân giải vi bước, được gọi là các chân M0, M1 và M2. Bạn có thể đặt các chân này ở các mức logic nhất định để chọn từ sáu độ phân giải vi bước khác nhau:

M0 Pin M1 Pi M2 Pi Microstep Resolution
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 thiết lập nhỏ này có điện trở tích hợp kéo chúng về trạng thái logic thấp bình thường. Nếu không được kết nối, động cơ sẽ chạy ở chế độ toàn bước.

Cách hoạt động

Để vận hành động cơ bước với module DRV8825, bạn cần tối thiểu hai chân ESP8266: một cho chân DIR và một cho chân STEP. DRV8825 sẽ xử lý các tín hiệu này từ ESP8266 để điều khiển động cơ bước một cách chính xác.

  • STEP Pin: Mỗi tín hiệu trên STEP Pin di chuyển động cơ một bước nhỏ hoặc một bước đầy, dựa trên cài đặt của bạn.
  • DIR Pin: Đặt hướng quay của động cơ.

Bộ điều khiển sử dụng các tín hiệu này và các thiết lập của nó để gửi tín hiệu điều khiển tới động cơ thông qua các chân 1A, 1B, 2A và 2B.

Bạn cũng có thể thiết lập thêm các chân trên mô-đun DRV8825 (ENABLE, M1, M2, M3, RESET, SLEEP) theo một trong ba cách sau:

  • Hãy để chúng ở chế độ riêng biệt để trình điều khiển có thể sử dụng các thiết lập cơ bản.
  • Gắn chúng trực tiếp vào GND hoặc VCC để thiết lập chế độ cố định.
  • Liên kết chúng với các chân của ESP8266 để quản lý các chức năng này thông qua mã của bạn.

Sơ đồ nối dây giữa ESP8266, mô-đun DRV8825 và động cơ bước

Sơ đồ dưới đây trình bày các kết nối cơ bản cần thiết giữa ESP8266, module DRV8825 và động cơ bước. Với cách bố trí này, trình điều khiển DRV8825 hoạt động ở chế độ chuẩn của nó (full-step).

sơ đồ nối dây ESP8266 NodeMCU với drv8825 cho động cơ bước

This image is created using Fritzing. Click to enlarge image

Xem thêm Sơ đồ chân ESP8266Cách cấp nguồn cho ESP8266.

Một cách chi tiết:

  • VMOT: Kết nối tới nguồn cấp điện của động cơ, ví dụ 12V.
  • GND (for Motor): Gắn vào đất của nguồn cấp động cơ.
  • 1A, 1B, 2A, 2B: Gắn vào các cuộn dây của động cơ bước.
  • STEP: Kết nối với chân kỹ thuật số D4 trên ESP8266.
  • DIR: Kết nối với chân kỹ thuật số D3 trên ESP8266.
  • GND (for Logic): Kết nối với chân GND trên ESP8266.
  • Các chân khác: Không kết nối.

Mã nguồn ESP8266

/* * Mã ESP8266 NodeMCU này được phát triển bởi newbiely.vn * Mã ESP8266 NodeMCU 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/esp8266/esp8266-drv8825-stepper-motor-driver */ #include <AccelStepper.h> #define STEP_PIN D1 // The ESP8266 pin connected to STEP pin of DRV8825 module #define DIR_PIN D2 // The ESP8266 pin 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 }

Hướng dẫn từng bước

Để bắt đầu với ESP8266 trên Arduino IDE, hãy làm theo các bước sau:

  • Hãy xem hướng dẫn ESP8266 - Cài đặt phần mềm nếu đây là lần đầu tiên bạn sử dụng ESP8266.
  • Nối các thành phần như được hiển thị trong sơ đồ.
  • Kết nối bảng ESP8266 với máy tính của bạn bằng cáp USB.
  • Mở Arduino IDE trên máy tính của bạn.
  • Chọn bo mạch ESP8266 phù hợp, ví dụ (NodeMCU 1.0 (ESP-12E Module)), và cổng COM tương ứng.
  • Sao chép mã ở trên và mở nó trong phần mềm ESP8266.
  • Nhấp vào biểu tượng Thư viện ở phía bên trái giao diện ESP8266.
  • Nhập "AccelStepper" vào hộp tìm kiếm, và tìm thư viện AccelStepper của Mike McCauley.
  • Nhấn nút Cài đặt để thêm thư viện AccelStepper.
thư viện accelstepper dành cho ESP8266 NodeMCU
  • Sao chép mã ở phía trên và mở nó trong Arduino IDE
  • Nhấn nút Tải lên trong Arduino IDE để gửi mã đến ESP8266
  • Bạn sẽ thấy động cơ chuyển động tiến lui

Khi bạn sử dụng động cơ ở chế độ đầy đủ bước, chuyển động của nó có thể không mượt lắm, điều đó là bình thường. Để làm cho chuyển động mượt mà hơn, hãy bật microstepping bằng cách thiết lập 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.