ESP32 Stepper Motor 28BYJ-48 và Driver ULN2003
Trong hướng dẫn này, chúng ta sẽ tìm hiểu các chủ đề sau:
- Điều khiển một stepper motor 28BYJ-48 với ESP32 và driver ULN2003.
- Quản lý nhiều stepper motor 28BYJ-48 sử dụng ESP32 và driver ULN2003.

Stepper motor (động cơ bước) vượt trội trong việc điều khiển vị trí chính xác, vì chúng chia một vòng quay hoàn chỉnh thành các "bước" rời rạc. Những động cơ này được ứng dụng trong nhiều thiết bị khác nhau, bao gồm máy in, máy in 3D, máy CNC và các hệ thống tự động hóa công nghiệp.
Một phương pháp tiết kiệm chi phí để tìm hiểu về stepper motor là thử nghiệm với stepper motor 28BYJ-48. Thông thường, những động cơ này được đi kèm với bo mạch driver dựa trên ULN2003, giúp việc sử dụng chúng trở nên đơn giản hơn rất nhiều.
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 28BYJ-48 + ULN2003 Driver Module | ||
| 1 | × | Bộ Nguồn 5V | ||
| 1 | × | DC Power Jack | ||
| 1 | × | dây 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ề Stepper Motor 28BYJ-48
Theo datasheet, động cơ 28BYJ-48 khi hoạt động ở chế độ full-step, di chuyển theo từng bước 11.25 độ, tạo ra 32 bước cho một vòng quay hoàn chỉnh (tính toán: 360°/11.25° = 32).
Hơn nữa, động cơ tích hợp hệ thống bánh răng giảm tốc 1/64, làm tăng hiệu quả số bước lên 32 x 64, tạo ra 2048 bước cho mỗi vòng quay. Mỗi bước trong số 2048 bước này tương ứng với một góc quay 360°/2048, tức khoảng 0.1758 độ mỗi bước.
Kết luận: nếu động cơ thực hiện 2048 bước (ở chế độ full-step), động cơ sẽ quay một vòng
Sơ Đồ Chân
Stepper motor 28BYJ-48 có 5 chân. Chúng ta không cần quan tâm chi tiết về các chân này. Chúng ta chỉ cần cắm nó vào connector của driver motor ULN2003.

Về Module Driver Stepper Motor ULN2003
ULN2003 nổi bật là một module driver motor được sử dụng rộng rãi cho stepper motor. Các tính năng chính của module bao gồm:
- Bốn LED sáng để chỉ thị hoạt động của bốn đường dây điều khiển đầu vào, phản ánh hiệu quả trạng thái bước hiện tại của động cơ. Những LED này không chỉ phục vụ mục đích thực tế mà còn thêm yếu tố trực quan cho quá trình bước.
- Một jumper ON/OFF được tích hợp trong module, cho phép cách ly nguồn điện đến stepper motor được kết nối. Tính năng này cung cấp phương tiện thuận tiện để điều khiển nguồn cung cấp của động cơ, cho phép quản lý năng lượng hiệu quả.
Sơ Đồ Chân ULN2003

Module ULN2003 bao gồm 6 chân và một connector cái:
- Chân IN1: được sử dụng để điều khiển động cơ. Kết nối nó với chân output trên ESP32.
- Chân IN2: được sử dụng để điều khiển động cơ. Kết nối nó với chân output trên ESP32.
- Chân IN3: được sử dụng để điều khiển động cơ. Kết nối nó với chân output trên ESP32.
- Chân IN4: được sử dụng để điều khiển động cơ. Kết nối nó với chân output trên ESP32.
- Chân GND: là chân mass chung. Nó PHẢI kết nối với cả GND của ESP32 và nguồn cung cấp ngoài.
- Chân VDD: cung cấp nguồn cho động cơ. Kết nối nó với nguồn cung cấp ngoài.
- Motor Connector: đây là nơi cắm động cơ.
※ Lưu ý:
Khi cung cấp nguồn cho stepper motor, quan trọng là phải tuân theo các nguyên tắc sau:
- Đảm bảo điện áp của nguồn cung cấp ngoài khớp với yêu cầu điện áp của stepper motor. Ví dụ, nếu stepper motor của bạn hoạt động ở 12V DC, rất quan trọng là sử dụng nguồn 12V. Trong trường hợp stepper motor 28BYJ-48 hoạt động ở 5V DC, bắt buộc phải sử dụng nguồn cung cấp 5V.
- Quan trọng cần lưu ý là ngay cả khi stepper motor được thiết kế để chạy với nguồn 5V, KHÔNG kết nối chân VDD với chân 5V trên ESP32. Thay vào đó, liên kết chân VDD với nguồn 5V ngoài. Biện pháp phòng ngừa này rất quan trọng vì stepper motor có thể tiêu thụ một lượng điện năng đáng kể, có thể vượt quá khả năng của nguồn cung cấp ESP32, có thể gây ra vấn đề hoặc hư hỏng.
Sơ Đồ Đấu Nối

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.
Xin lưu ý rằng, chúng ta không cần quan tâm về màu dây của stepper motor. Chúng ta chỉ cần cắm connector đực (trong stepper motor 28BYJ-48) vào connector cái (trên driver ULN2003)
Cách Lập Trình để điều khiển stepper motor
Khi điều khiển stepper motor, có ba phương pháp chính:
- Full-Step (Bước đầy đủ)
- Half-Step (Nửa bước)
- Micro-Step (Vi bước)
Đối với các ứng dụng cơ bản, phương pháp full-step thường là đủ. Tuy nhiên, giải thích chi tiết về cả ba phương pháp sẽ được cung cấp trong phần cuối của hướng dẫn này. Đáng chú ý là việc lập trình cho các phương pháp này có thể phức tạp. Tin tốt là có nhiều thư viện có sẵn giúp xử lý độ phức tạp này cho chúng ta. Tất cả những gì chúng ta cần làm là sử dụng thư viện phù hợp, đơn giản hóa việc điều khiển stepper motor trong các dự án của chúng ta.
Arduino IDE bao gồm thư viện Stepper tích hợp, nhưng chúng tôi khuyên không nên sử dụng nó vì những lý do sau:
- Tính Chất Blocking: Thư viện này hoạt động theo cách blocking, có nghĩa là nó độc quyền tài nguyên của ESP32, ngăn cản nó thực hiện các tác vụ khác trong khi điều khiển stepper motor.
- Chức Năng Hạn Chế: Thư viện Stepper tích hợp có thể không cung cấp tất cả các hàm và tính năng bạn cần cho dự án của mình.
Thay vào đó, chúng tôi khuyên sử dụng thư viện AccelStepper. Thư viện này cung cấp một số ưu điểm, bao gồm:
- Gia tốc và Giảm tốc: Nó hỗ trợ gia tốc và giảm tốc mượt mà, cho phép điều khiển chính xác hơn.
- Full-Step và Half-Step Driving: Bạn có thể chọn giữa chế độ driving full-step và half-step cho stepper motor của mình.
- Nhiều Stepper Đồng Thời: AccelStepper cho phép điều khiển nhiều stepper đồng thời, với mỗi stepper di chuyển độc lập và cùng lúc.
Tuy nhiên, quan trọng cần lưu ý rằng thư viện có một nhược điểm: nó không hỗ trợ micro-step driving.
Code ESP32
Các Bước Nhanh
- Nếu đây là lần đầu tiên bạn sử dụng ESP32, xem ESP32 - Cài Đặt Phần Mềm.
- Thực hiện đấu nối như hình ảnh trên.
- Kết nối board ESP32 với PC của bạn qua cáp micro USB
- Mở Arduino IDE trên PC của bạn.
- Chọn đúng board ESP32 (ví dụ: ESP32 Dev Module) và cổng COM.
- Nhấp vào biểu tượng Libraries ở thanh 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ấp nút Install để cài đặt thư viện AccelStepper.

- Sao chép code trên và mở bằng Arduino IDE
- Nhấp nút Upload trên Arduino IDE để tải code lên ESP32
- Xem động cơ quay. Nó sẽ:
- Quay một vòng theo chiều kim đồng hồ, và sau đó
- Quay hai vòng ngược chiều kim đồng hồ, và sau đó
- Quay hai vòng theo chiều kim đồng hồ.
- Xem kết quả trong Serial Monitor
Quá trình đó được lặp lại vô hạn.
Cách điều khiển nhiều stepper motor 28BYJ-48
Hãy tìm hiểu cách điều khiển hai stepper motor độc lập cùng lúc.
Sơ Đồ Đấu Nối cho hai stepper motor 28BYJ-48

This image is created using Fritzing. Click to enlarge image