Raspberry Pi Stepper Motor
Hướng dẫn này sẽ chỉ bạn cách sử dụng Raspberry Pi để điều khiển Stepper Motor bằng Driver L298N. Cụ thể, chúng ta sẽ học:
- Cách sử dụng Raspberry Pi và driver L298N để điều khiển stepper motor lưỡng cực (bipolar)
- Cách lập trình Raspberry Pi để điều khiển vị trí của stepper motor
- Cách lập trình Raspberry Pi để điều khiển tốc độ của stepper motor
- Cách lập trình Raspberry Pi để điều khiển chiều quay của stepper motor
Hướng dẫn này áp dụng cho tất cả các loại stepper motor lưỡng cực có bốn dây. Chúng ta sẽ sử dụng stepper motor NEMA 17 làm ví dụ.

Nếu bạn muốn điều khiển loại stepper motor khác, hãy tham khảo hướng dẫn Raspberry Pi - Stepper Motor 28BYJ-48 và Driver ULN2003.
Phần Cứng Cần Thiết
| 1 | × | Raspberry Pi 5 | ||
| 1 | × | Stepper Motor Nema 17 | ||
| 1 | × | L298N Motor Driver Module | ||
| 1 | × | 12V 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) |
Về Stepper Motor
Có hai loại stepper motor phổ biến:
- bipolar (lưỡng cực): loại động cơ này có bốn dây
- unipolar (đơn cực): loại động cơ này có năm hoặc sáu dây
Đối với stepper motor unipolar 6 dây, chúng ta có thể sử dụng bốn trong số sáu dây của nó và điều khiển như thể nó là stepper motor bipolar.
Đối với stepper motor unipolar 5 dây, hãy tham khảo Raspberry Pi - Stepper Motor 28BYJ-48 và Driver ULN2003.
Hướng dẫn này chỉ tập trung vào stepper motor bipolar.
Sơ đồ chân Bipolar Stepper Motor
Bipolar Stepper Motor có bốn chân và tên của các chân này khác nhau tùy thuộc vào nhà sản xuất. Bảng dưới đây hiển thị một số tên phổ biến hơn cho các chân:
| SỐ CHÂN | Cách đặt tên 1 | Cách đặt tên 2 | Cách đặt tên 3 |
|---|---|---|---|
| 1 | A+ | A | A |
| 2 | A- | A | C |
| 3 | B+ | B | B |
| 4 | B- | B | D |

Cách sắp xếp các chân, cách ghi nhãn dây và màu sắc của chúng có thể khác nhau giữa các nhà sản xuất. Để xác định kết nối giữa màu dây và tên của nó, bạn phải tham khảo datasheet hoặc manual. Hình ảnh trên cũng hiển thị chi tiết của hai động cơ khác nhau với cách ghi nhãn dây và màu sắc khác nhau.
Số Bước Mỗi Vòng Quay
Thông số kỹ thuật của động cơ nêu rõ DEG_PER_STEP. Tùy thuộc vào kỹ thuật điều khiển, STEP_PER_REVOLUTION có thể được xác định bằng bảng sau:
| Phương pháp điều khiển | Số bước mỗi vòng quay | Độ thực tế mỗi bước |
|---|---|---|
| Full-step (bước đầy đủ) | STEP_PER_REVOLUTION = 360 / DEG_PER_STEP | DEG_PER_STEP |
| Half-step (nửa bước) | STEP_PER_REVOLUTION = (360 / DEG_PER_STEP) * 2 | DEG_PER_STEP / 2 |
| Micro-step (1/n) | STEP_PER_REVOLUTION = (360 / DEG_PER_STEP) * n | DEG_PER_STEP / n |
Ví dụ, nếu datasheet của động cơ nêu 1.8 độ/bước:
| Phương pháp điều khiển | Số bước mỗi vòng quay | Độ thực tế mỗi bước |
|---|---|---|
| Full-step | 200 bước/vòng quay | 1.8° |
| Half-step | 400 bước/vòng quay | 0.9° |
| Micro-step (1/n) | (200 * n) bước/vòng quay | (1.8 / n)° |
Cách điều khiển stepper motor bằng Raspberry Pi
Raspberry Pi có thể tạo ra tín hiệu để điều khiển stepper motor, tuy nhiên, những tín hiệu này không đủ điện áp và/hoặc dòng điện để đáp ứng yêu cầu của stepper motor. Do đó, cần có driver phần cứng giữa Raspberry Pi và stepper motor. Driver này có hai mục đích:
- Khuếch đại tín hiệu điều khiển từ Raspberry Pi về mặt dòng điện và điện áp
- Bảo vệ Raspberry Pi khỏi dòng điện và điện áp cao được sử dụng để cấp nguồn cho stepper motor.
Có rất nhiều driver phần cứng có thể được sử dụng để quản lý stepper motor. Một trong những driver phần cứng được sử dụng phổ biến nhất để điều khiển stepper motor là L298N Driver.
Về L298N Driver
L298N Driver có thể được sử dụng để điều khiển hai DC motor hoặc một stepper motor. Trong hướng dẫn này, chúng ta sẽ khám phá cách sử dụng nó để điều khiển stepper motor.
Sơ đồ chân L298N Driver

L298N Driver có 11 chân và ba jumper:
- Chân VCC: Cung cấp nguồn cho động cơ và có thể từ 5 đến 35V.
- Chân GND: Đây là chân mass chung, cần được kết nối với GND (0V).
- Chân 5V: Cung cấp nguồn cho module L298N và có thể được cấp nguồn 5V từ Raspberry Pi.
- Chân IN1, IN2, IN3, IN4: Những chân này được kết nối với các chân của Raspberry Pi để nhận tín hiệu điều khiển stepper motor.
- Chân OUT1, OUT2, OUT3, OUT4: Những chân này được kết nối với stepper motor.
- Jumper ENA, ENB: Được sử dụng để kích hoạt stepper motor và cả hai jumper ENA & ENB đều cần được đặt vào vị trí.
- Jumper 5V-EN: Nếu jumper này được giữ ở vị trí, nguồn cho module L298N sẽ được lấy từ VCC và không cần kết nối gì với chân 5V. Nếu jumper 5V-EN được tháo ra, phải cấp nguồn cho module L298N qua chân 5V.
L298N driver có hai nguồn đầu vào:
- Một cho stepper motor (chân VCC và GND): từ 5 đến 35V.
- Một cho hoạt động nội bộ của module (chân 5V và GND): từ 5 đến 7V. Nếu jumper 5V-EN được giữ ở vị trí, chân này không cần được kết nối.
Sơ Đồ Kết Nối

This image is created using Fritzing. Click to enlarge image
※ Lưu ý:
- Giữ ba jumper trên module L298N ở vị trí nếu nguồn cấp của động cơ là 12V hoặc thấp hơn.
- Các chân trên stepper motor có thể khác nhau giữa các nhà sản xuất. Tham khảo bảng dưới đây để kết nối đúng cách.
Bảng kết nối giữa Raspberry Pi và L298N Driver
| Chân Raspberry Pi | Chân L298N |
|---|---|
| 12 | IN1 |
| 16 | IN2 |
| 20 | IN3 |
| 21 | IN4 |
Bảng kết nối giữa L298N Driver và Stepper motor
Quan trọng!: Không chú ý đến thứ tự của các dây trong stepper motor trên sơ đồ kết nối được hiển thị ở trên. Đó chỉ là hình minh họa. Cách sắp xếp chân trên stepper motor có thể khác nhau tùy thuộc vào nhà sản xuất. Đảm bảo rằng kết nối của bạn tuân theo bảng dưới đây.
| Chân L298N | Chân Stepper motor | Hoặc | Hoặc |
|---|---|---|---|
| OUT1 | A+ | A | A |
| OUT2 | A- | A | C |
| OUT3 | B+ | B | B |
| OUT4 | B- | B | D |
Trước khi mua stepper motor, chúng tôi khuyên bạn nên xem lại datasheet, thông số kỹ thuật hoặc manual của stepper motor. Đảm bảo rằng nó bao gồm sự tương quan giữa màu chân và tên. Ví dụ, stepper motor này có sơ đồ như được hiển thị trong hình dưới đây:

Dựa trên sơ đồ trên, bảng kết nối như sau:
| Chân L298N | Chân stepper motor | Màu dây |
|---|---|---|
| OUT1 | A | dây đen |
| OUT2 | C | dây xanh lá |
| OUT3 | B | dây đỏ |
| OUT4 | D | dây xanh dương |
※ Lưu ý:
Trong bảng kết nối giữa stepper motor và L298N Driver, có nhiều cách khác nhau để kết nối. Chúng ta có thể hoán đổi OUT1 với OUT2, OUT3 với OUT4. Tuy nhiên, nếu chúng ta làm điều này, hướng quay của động cơ có thể bị thay đổi (từ chiều kim đồng hồ sang ngược chiều kim đồng hồ và ngược lại).
Code Raspberry Pi - Code Stepper Motor
Code sau đây:
- Làm cho động cơ quay một vòng theo chiều kim đồng hồ
- Tạm dừng động cơ trong 5 giây
- Làm cho động cơ quay một vòng theo chiều ngược kim đồng hồ
- Dừng động cơ trong 5 giây
- Lặp lại quá trình vô thời hạn
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, hãy 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 bằng lệnh sau:
- Tạo file script Python stepper.py và thêm code sau:
- Lưu file và chạy script Python bằng cách thực thi lệnh sau trong terminal:
Script chạy trong vòng lặp vô thời hạn liên tục cho đến khi bạn nhấn Ctrl + C trong terminal.
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.
Bạn sẽ quan sát những điều sau:
- Stepper motor sẽ quay một vòng theo chiều kim đồng hồ.
- Stepper motor sẽ tạm dừng trong 5 giây.
- Stepper motor sau đó sẽ quay một vòng theo chiều ngược kim đồng hồ.
- Stepper motor sẽ tạm dừng thêm 5 giây nữa.
- Quá trình này sẽ được lặp lại.
Giải Thích Code
Hãy xem giải thích từng dòng có trong phần comment của source code!
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.