Raspberry Pi Stepper Motor 28BYJ-48 và Driver ULN2003
Hướng dẫn này sẽ chỉ cho bạn cách sử dụng Raspberry Pi để điều khiển Stepper Motor 28BYJ-48 bằng Driver ULN2003. Cụ thể, chúng ta sẽ học:
- Cách kết nối Raspberry Pi với stepper motor 28BYJ-48 qua driver ULN2003
- Cách lập trình Raspberry Pi để điều khiển một stepper motor 28BYJ-48 qua driver ULN2003
- Cách lập trình Raspberry Pi để điều khiển nhiều stepper motor 28BYJ-48 qua các driver ULN2003

Phần Cứng Cần Thiết
| 1 | × | Raspberry Pi 5 | ||
| 1 | × | 28BYJ-48 stepper motor + ULN2003 Driver Module | ||
| 1 | × | 5V Power Adapter | ||
| 1 | × | DC Power Jack | ||
| 1 | × | dây jumper | ||
| 1 | × | (Khuyến nghị) Screw Terminal Block Shield for Raspberry Pi | ||
| 1 | × | (Khuyến nghị) Raspberry Pi Prototyping Base Plate & Breadboard Kit | ||
| 1 | × | (Khuyến nghị) HDMI Touch Screen Monitor for Raspberry Pi |
Or you can buy the following kits:
| 1 | × | DIYables Sensor Kit (30 sensors/displays) | ||
| 1 | × | DIYables Sensor Kit (18 sensors/displays) |
Giới Thiệu Về Stepper Motor 28BYJ-48
Stepper motor (động cơ bước) là lựa chọn lý tưởng cho việc điều khiển vị trí. Chúng chia một vòng quay hoàn chỉnh thành một chuỗi các "bước" bằng nhau. Những động cơ này thường được tìm thấy trong máy in, máy in 3D, máy CNC, và các ứng dụng tự động hóa công nghiệp.
Một trong những phương pháp tiết kiệm chi phí để tìm hiểu về stepper motor là sử dụng stepper motor 28BYJ-48. Chúng thường đi kèm với một bo mạch driver dựa trên ULN2003, giúp việc sử dụng trở nên cực kỳ dễ dàng.
Theo tài liệu kỹ thuật, khi motor 28BYJ-48 hoạt động ở chế độ full-step, mỗi bước tương đương với một vòng quay 11.25°. Do đó, có 32 bước cho một vòng quay hoàn chỉnh (360°/11.25° = 32).
Hơn nữa, motor có bộ bánh răng giảm tốc 1/64. Điều này có nghĩa là 32 x 64 = 2048 bước. Mỗi bước bằng 360°/2048 = 0.1758°.
Kết luận: Nếu motor được đặt thành 2048 bước ở chế độ full-step, nó sẽ quay một vòng hoàn chỉnh.
Sơ Đồ Chân Stepper Motor 28BYJ-48 Sử Dụng Driver ULN2003
Stepper motor 28BYJ-48 có 5 chân. Chúng ta không cần phải quan tâm đến chi tiết của những chân này. Tất cả những gì chúng ta cần làm là cắm nó vào đầu nối của motor driver ULN2003.

Giới Thiệu Về Module Driver Stepper Motor ULN2003
ULN2003 là một Module driver động cơ được sử dụng rộng rãi cho stepper motor.
- Nó có bốn đèn LED cho biết hoạt động của bốn đường đầu vào điều khiển, tạo ra hiệu ứng hình ảnh tuyệt vời khi stepping.
- Ngoài ra, nó còn đi kèm với jumper ON/OFF để ngắt nguồn cung cấp cho stepper motor.
Sơ Đồ Chân ULN2003

Module ULN2003 có 6 chân và một đầu nối female:
- Chân IN1: được sử dụng để điều khiển motor và cần được kết nối với một chân đầu ra trên Raspberry Pi.
- Chân IN2: được sử dụng để điều khiển motor và cần được kết nối với một chân đầu ra trên Raspberry Pi.
- Chân IN3: được sử dụng để điều khiển motor và cần được kết nối với một chân đầu ra trên Raspberry Pi.
- Chân IN4: được sử dụng để điều khiển motor và cần được kết nối với một chân đầu ra trên Raspberry Pi.
- Chân GND: đây là chân mass chung và phải được kết nối với cả GND của Raspberry Pi và nguồn cung cấp bên ngoài.
- Chân VDD: cung cấp nguồn cho motor và cần được kết nối với nguồn cung cấp bên ngoài.
- Motor Connector: đây là nơi motor được cắm vào.
※ Lưu ý:
- Điện áp của nguồn cung cấp bên ngoài phải phù hợp với điện áp của stepper motor. Ví dụ, nếu stepper motor cần 12V DC, chúng ta phải sử dụng nguồn cung cấp 12V. Nếu stepper motor là 28BYJ-48, nó cần 5V DC, vì vậy chúng ta sẽ sử dụng nguồn cung cấp 5V.
- Tuy nhiên, ngay cả khi stepper motor cần nguồn cung cấp 5V, KHÔNG được kết nối chân VDD với chân 5V trên Raspberry Pi. Thay vào đó, hãy kết nối nó với nguồn cung cấp 5V bên ngoài, vì stepper motor tiêu thụ quá nhiều điện năng.
Sơ Đồ Kết Nối

This image is created using Fritzing. Click to enlarge image
Không cần thiết phải chú ý đến màu sắc của các dây trên stepper motor. Tất cả những gì cần làm là kết nối đầu nối male trên stepper motor 28BYJ-48 với đầu nối female trên driver ULN2003.
Cách Lập Trình Để Điều Khiển Stepper Motor
Có ba cách để điều khiển stepper motor:
- Full-step
- Half-step
- Micro-step
Đối với các ứng dụng cơ bản, có thể sử dụng phương pháp full-step. Chi tiết về ba phương pháp này sẽ được thảo luận trong phần cuối của hướng dẫn này.
Code Raspberry Pi
Các Bước Nhanh
- Đảm bảo bạn đã cài đặt Raspbian hoặc bất kỳ hệ điều hành tương thích Raspberry Pi nào khác trên Pi của bạn.
- Đảm bảo Raspberry Pi của bạn được kết nối với cùng mạng cục bộ với PC của bạn.
- Đảm bảo Raspberry Pi của bạn được kết nối internet nếu bạn cần cài đặt một số thư viện.
- Nếu đây là lần đầu tiên bạn sử dụng Raspberry Pi, Xem Raspberry Pi - Cài Đặt Phần Mềm
- Kết nối PC của bạn với Raspberry Pi qua SSH sử dụng SSH client tích hợp trên Linux và macOS hoặc PuTTY trên Windows. Xem cách kết nối PC với Raspberry Pi qua SSH.
- Đảm bảo bạn đã cài đặt thư viện RPi.GPIO. Nếu chưa, hãy cài đặt nó bằng lệnh sau:
- Tạo một file Python script stepper_uln2003.py và thêm code sau:
- Lưu file và chạy Python script bằng cách thực thi lệnh sau trong Terminal:
- Kiểm tra motor quay.
- Nó sẽ quay một vòng theo chiều kim đồng hồ, tiếp theo là hai vòng ngược chiều kim đồng hồ, và sau đó hai vòng theo chiều kim đồng hồ.
Bằng cách thay đổi giá trị của biến delay trong code, bạn có thể thay đổi tốc độ của stepper motor.
Script chạy trong vòng lặp vô hạn liên tục cho đến khi bạn nhấn Ctrl + C trong Terminal.
Kiến Thức Bổ Sung
Stepper motor rung khi di chuyển
Đừng lo lắng nếu stepper motor rung trong khi chuyển động. Đây là đặc trưng của stepper motor. Chúng ta có thể giảm thiểu độ rung bằng cách sử dụng kỹ thuật điều khiển micro-stepping.
Ngoài ra, do đặc tính này, nếu được điều khiển đúng cách, stepper motor có thể tạo ra các nốt nhạc giống như một nhạc cụ. Một ví dụ về điều này có thể tìm thấy tại đây trên Hackster.io.
Phương pháp điều khiển stepper motor
- Full-step: Đơn vị chuyển động là một bước, tương đương với giá trị độ được chỉ định trong tài liệu kỹ thuật hoặc hướng dẫn sử dụng của stepper motor.
- Half-step: Mỗi bước đầy đủ được chia thành hai bước nhỏ hơn. Đơn vị chuyển động là một nửa của bước đầy đủ. Phương pháp này cho phép motor di chuyển với độ phân giải gấp đôi.
- Micro-step: Mỗi bước đầy đủ được chia thành nhiều bước nhỏ hơn. Đơn vị chuyển động là một phần của bước đầy đủ. Phần có thể là 1/4, 1/8, 1/16, 1/32 hoặc thậm chí nhiều hơn. Phương pháp này cho phép motor di chuyển với độ phân giải cao hơn và chuyển động mượt mà hơn ở tốc độ thấp. Số chia càng lớn, độ phân giải càng cao và chuyển động càng mượt mà.
Nếu tài liệu kỹ thuật của motor chỉ định 1.8 độ/bước:
- Full-step: Motor có thể di chuyển với bước nhảy 1.8 độ mỗi bước, dẫn đến 200 bước cho một vòng quay.
- Half-step: Motor có thể di chuyển với bước nhảy 0.9 độ mỗi bước, dẫn đến 400 bước cho một vòng quay.
- Micro-step: Motor có thể di chuyển với bước nhảy 0.45, 0.225, 1125, 0.05625 độ mỗi bước, dẫn đến 800, 1600, 3200, 6400... bước cho một vòng quay.
Code ở trên đã sử dụng kỹ thuật điều khiển full-step.
Vấn Đề Cộng Hưởng
Điều này dành cho những người dùng có kinh nghiệm hơn. Người mới bắt đầu không cần phải lo lắng về nó. Nó xảy ra trong một phạm vi tốc độ, nơi tốc độ bước bằng tần số tự nhiên của motor. Có thể có sự thay đổi đáng chú ý trong âm thanh mà motor tạo ra, cũng như sự gia tăng độ rung. Trong các ứng dụng thực tế, các nhà phát triển nên tính đến điều này.
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.