Arduino 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ề Bộ điều khiển động cơ bước DRV8825 và cách sử dụng nó với Arduino để điều khiển động cơ bước. Cụ thể, chúng ta sẽ tìm hiểu:

mô-đun Arduino drv8825

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

1×Arduino Uno R3
1×USB 2.0 cable type A/B (for USB-A PC)
1×USB 2.0 cable type C/B (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 Block Shield for Arduino Uno
1×(Khuyến nghị) Breadboard Shield for Arduino Uno
1×(Khuyến nghị) Enclosure for Arduino Uno
1×(Khuyến nghị) Prototyping Base Plate & Breadboard Kit for Arduino UNO

Or you can buy the following kits:

1×DIYables STEM V3 Starter Kit (Arduino included)
1×DIYables Sensor Kit (30 sensors/displays)
1×DIYables Sensor Kit (18 sensors/displays)

Thông tin về Bộ điều khiển động cơ bước DRV8825

DRV8825 là một mô-đun driver động cơ bước được sử dụng rộng rãi để điều khiển các động cơ bước bipolar trong các ứng dụng như máy CNC, máy in 3D và robot. Nó có giới hạn dòng điện có thể điều chỉnh, bảo vệ quá nhiệt, và sáu tùy chọn microstepping, bao gồm bước đầy, 1/2, 1/4, 1/8, 1/16 và 1/32. Mô-đun có thể chịu được tới 2.2A cho mỗi cuộn dây với làm mát phù hợp và hoạt động ở phạm vi điện áp rộng từ 8.2V đến 45V, làm cho nó phù hợp với nhiều loại động cơ bước.

Để tìm hiểu các khái niệm về động cơ bước, như chế độ đầy đủ bước, vi bước, động cơ bước đơn cực và động cơ bước lưỡng cực, hãy tham khảo bài hướng dẫn Arduino - Điều khiển động cơ bước bằng bộ driver L298N.

Thật ấn tượng khi điều khiển tốc độ và hướng của một động cơ bước hai cực, ví dụ như NEMA 17, chỉ với hai chân của Arduino.

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

cách bố trí chân của mô-đun drv8825

Mô-đun driver động cơ bước DRV8825 có 16 chân. Dưới đây là sơ đồ chân điển hình cho mô-đun driver DRV8825. Lưu ý rằng một số biến thể của mô-đun có thể gắn nhãn các chân hơi khác nhau, nhưng chức năng vẫn như nhau.

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 Arduino
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òn có một biến trở nhỏ trên bo mạch mà bạn có thể điều chỉnh để thiết lập giới hạn dòng điện, giúp ngăn động cơ bước và bộ driver quá nhiệt.

Tóm lại, 16 chân này được sắp xếp thành các danh mục sau dựa trên chức năng của chúng:

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

Mô-đun DRV8825 không yêu cầu nguồn cấp logic từ bo mạch Arduino, vì nó lấy nguồn từ nguồn cấp cho động cơ thông qua bộ ổn áp 3.3V nội bộ. Tuy nhiên, việc nối đất của Arduino với chân GND (logic) của mô-đun DRV8825 là rất quan trọng để đảm bảo hoạt động đúng và có tham chiếu đất chung.

Cấu hình vi bước

Bộ điều khiển DRV8825 cho phép chế độ microstepping bằng cách chia mỗi bước thành các bước nhỏ hơn. Việc này được thực hiện bằng cách áp dụng các mức dòng điện trung gian lên các cuộn dây của động cơ.

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

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

Khi bạn tăng mức microstepping, động cơ di chuyển mượt mà và chính xác hơn, nhưng sẽ cần thêm các bước cho mỗi vòng quay. Nếu bạn tiếp tục sử dụng cùng một tần suất xung bước (xung trên giây), thì mỗi vòng quay sẽ lâu hơn, khiến động cơ chạy chậm lại.

Tuy nhiên, nếu vi điều khiển của bạn có thể phát ra xung nhanh đủ để khớ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 tế phụ thuộc vào tốc độ mà cả bộ driver và vi điều khiển của bạn có thể xử lý những xung này mà không bị mất bước.

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

DRV8825 có ba chân chọn độ phân giải vi bước: M0, M1, và M2. Bằng cách cấu hình các chân này ở các mức logic cụ thể, bạn có thể chọn từ sáu độ phân giải vi bước:

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 chọn microstep này được trang bị điện trở kéo xuống trên bo mạch để giữ chúng ở trạng thái LOW mặc định. Nếu để trống, động cơ sẽ hoạt động ở chế độ bước đầy đủ.

Cách hoạt động

Để điều khiển động cơ bước bằng mô-đun DRV8825, bạn cần tối thiểu hai chân của Arduino: một cho chân DIR và một cho chân STEP. DRV8825 diễn giải những tín hiệu này từ Arduino để điều khiển động cơ bước một cách chính xác.

  • Chân STEP: Mỗi xung trên chân STEP đẩy động cơ tiến thêm một bước vi mô (hoặc một bước đầy đủ, tùy thuộc vào cấu hình vi bước của bạn).
  • Chân DIR: Xác định hướng quay của động cơ.

Bộ điều khiển sau đó sử dụng các tín hiệu này, cùng với 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ể cấu hình 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:

  • Để chúng ở trạng thái chưa kết nối nhằm cho phép trình điều khiển hoạt động ở thiết lập mặc định.
  • Nối chúng cứng với GND hoặc VCC để thiết lập chế độ hoạt động cố định.
  • Kết nối chúng với các chân của Arduino để bạn có thể điều khiển các tính năng này một cách động trong mã của bạn.

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

Sơ đồ nối dây dưới đây cho thấy các kết nối tối thiểu cần thiết giữa Arduino, mô-đun DRV8825 và động cơ bước. Với thiết lập này, trình điều khiển DRV8825 hoạt động ở chế độ mặc định của nó (full-step).

sơ đồ nối dây bộ điều khiển động cơ bước drv8825 cho Arduino

This image is created using Fritzing. Click to enlarge image

Chi tiết:

  • VMOT: Kết nối với nguồn cấp điện cho động cơ (ví dụ 12V).
  • GND (cho động cơ): Kết nối với đất của nguồn cấp điện cho động cơ.
  • 1A, 1B, 2A, 2B: Kết nối với các cuộn dây của động cơ bước.
  • STEP: Kết nối với chân số D4 của Arduino.
  • DIR: Kết nối với chân số D3 của Arduino.
  • GND (cho mạch logic): Kết nối với chân GND của Arduino.
  • Các chân khác: để trống.

Mã Arduino

/* * Mã Arduino này được phát triển bởi newbiely.vn * Mã Arduino 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/arduino/arduino-drv8825-stepper-motor-driver */ // Include the AccelStepper Library #include <AccelStepper.h> // Define pin connections #define DIR_PIN 3 #define STEP_PIN 4 // Creates an instance AccelStepper stepper(AccelStepper::DRIVER, STEP_PIN, DIR_PIN); void setup() { // set the maximum speed, acceleration factor, // initial speed and the target position stepper.setMaxSpeed(1000); stepper.setAcceleration(200); 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

  • Sao chép mã ở trên và mở bằng Arduino IDE
  • Điều hướng tới biểu tượng Thư viện ở thanh bên trái của Arduino IDE.
  • Tìm kiếm “AccelStepper”, sau đó tìm thư viện AccelStepper do Mike McCauley phát triển
  • Nhấp vào nút Cài đặt để cài đặt thư viện AccelStepper.
thư viện accelstepper cho Arduino
  • Sao chép mã ở trên và mở bằng Arduino IDE
  • Nhấp vào Tải lên nút trên Arduino IDE để tải mã lên Arduino
  • Bạn sẽ thấy động cơ quay qua lại

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