Sử dụng Trình điều khiển động cơ L298N để điều khiển động cơ bước 4 dây
Trong hướng dẫn này, chúng ta sẽ khám phá cách điều khiển động cơ bước 4 dây bằng trình điều khiển động cơ L298N kết hợp với Arduino. L298N là một trình điều khiển cầu H kép linh hoạt cho phép chúng ta điều khiển hướng và tốc độ của động cơ bước một cách hiệu quả. Đến cuối hướng dẫn này, bạn sẽ có một thiết lập hoạt động có thể xoay động cơ bước theo cả hai hướng và điều khiển tốc độ của nó bằng chiết áp.


Để giúp bạn hiểu rõ hơn về quy trình, tôi khuyên bạn nên xem video liên quan, video này cung cấp minh họa trực quan về cách đấu dây và viết mã (trong video tại 01:30).
Giải thích về Phần cứng
Trình điều khiển động cơ L298N được thiết kế để điều khiển động cơ bằng cách cho phép bạn dẫn động chúng theo cả hướng tiến và lùi. Nó sử dụng cấu hình cầu H, nghĩa là nó có thể chuyển đổi cực tính của điện áp đặt vào động cơ, do đó đảo ngược hướng của nó. Trình điều khiển này có thể xử lý điện áp cung cấp lên đến 46V và dòng điện liên tục 2A mỗi kênh, phù hợp cho nhiều ứng dụng.
Trong thiết lập của chúng ta, chúng ta sẽ sử dụng bốn chân điều khiển để quản lý động cơ bước. Các chân chính là ENA và ENB, phải được đặt ở mức CAO (5V) để kích hoạt trình điều khiển. Các chân IN1, IN2, IN3 và IN4 sẽ điều khiển trạng thái cuộn dây của động cơ, cho phép nó bước theo hướng mong muốn.
Chi tiết từ Bảng dữ liệu
| Nhà sản xuất | STMicroelectronics |
|---|---|
| Số linh kiện | L298N |
| Điện áp logic/IO | 5 V |
| Điện áp cung cấp | 5–46 V (VS) |
| Dòng điện đầu ra (mỗi kênh) | Tối đa 2 A/kênh (liên tục) |
| Dòng điện đỉnh (mỗi kênh) | Tối đa 3 A |
| Hướng dẫn tần số PWM | 1 kHz đến 20 kHz |
| Ngưỡng logic đầu vào | 0,8 V (thấp), 2,0 V (cao) |
| Sụt áp / RDS(on) / bão hòa | Tối đa 1,5 V |
| Giới hạn nhiệt | Tối đa 150 °C |
| Kiểu đóng gói | DIP-15 |
| Ghi chú / biến thể | Cũng có sẵn ở phiên bản phẳng (L298P) |
- Đảm bảo
ENAvàENBđược kết nối với 5V để hoạt động chính xác. - Sử dụng tản nhiệt đầy đủ cho các ứng dụng dòng điện cao để tránh quá nhiệt.
- Duy trì nối đất chung giữa Arduino và trình điều khiển động cơ.
- Cẩn thận với cực tính khi đấu dây để tránh làm hỏng động cơ hoặc trình điều khiển.
- Lắp đặt tụ điện tách rời gần các chân nguồn để lọc nhiễu.
- Điều chỉnh tần số PWM dựa trên thông số kỹ thuật của động cơ để có hiệu suất tối ưu.
Hướng dẫn Đấu dây

Để đấu dây trình điều khiển động cơ L298N với Arduino và động cơ bước, hãy bắt đầu bằng cách kết nối nguồn điện. Kết nối chân VIN trên L298N với nguồn điện 12V của bạn. Tiếp theo, kết nối chân GND trên L298N với đất của nguồn điện và cũng với đất của Arduino.
Bây giờ, đối với các chân điều khiển, kết nối ENA với chân 2 trên Arduino và ENB với chân 3. Tiếp theo, kết nối IN1 với chân 8, IN2 với chân 9, IN3 với chân 10 và IN4 với chân 11 trên Arduino. Cuối cùng, kết nối dây của động cơ bước với các đầu ra của L298N. Đảm bảo rằng hai cặp dây từ động cơ được kết nối chính xác với các đầu ra.
Ví dụ Mã & Giải thích
Trong mã, trước tiên chúng ta bao gồm thư viện Stepper.h để đơn giản hóa việc điều khiển động cơ bước. Chúng ta định nghĩa tổng số bước trên mỗi vòng quay, điều này rất quan trọng cho chuyển động chính xác. Các định danh chính trong mã bao gồm stepsPerRevolution, thiết lập số bước cần thiết cho một vòng quay đầy đủ, và myStepper, khởi tạo đối tượng động cơ bước với các chân được chỉ định.
const int stepsPerRevolution = 200; // thay đổi giá trị này để phù hợp với số bước trên mỗi vòng quay
Stepper myStepper(stepsPerRevolution, 8, 9, 10, 11); // khởi tạo thư viện động cơ bước
Đoạn trích này khởi tạo động cơ bước với các chân phù hợp. Trong hàm setup(), chúng ta đặt tốc độ của động cơ và kích hoạt trình điều khiển bằng cách đặt chân 2 và 3 ở mức CAO.
void setup() {
myStepper.setSpeed(300); // đặt tốc độ ở 60 vòng/phút
pinMode(2,OUTPUT); // cho EN1
digitalWrite(2,HIGH); // kích hoạt EN1
pinMode(3,OUTPUT); // cho EN2
digitalWrite(3,HIGH); // kích hoạt EN2
}
Trong hàm loop(), động cơ bước một vòng quay theo cả chiều kim đồng hồ và ngược chiều kim đồng hồ với độ trễ ở giữa. Điều này cho phép bạn quan sát hoạt động của động cơ.
void loop() {
myStepper.step(stepsPerRevolution); // bước một vòng quay theo một hướng
delay(500); // chờ nửa giây
myStepper.step(-stepsPerRevolution); // bước một vòng quay theo hướng khác
delay(500); // chờ nửa giây
}
Đoạn trích này minh họa cách điều khiển động cơ để xoay theo cả hai hướng. Mã đầy đủ được tải bên dưới bài viết để bạn tham khảo.
Trình diễn / Điều gì sẽ xảy ra
Khi mọi thứ đã được kết nối đúng cách và mã đã được tải lên, bạn sẽ thấy động cơ bước quay một vòng đầy đủ theo một hướng, sau đó quay một vòng đầy đủ theo hướng ngược lại. Ngoài ra, nếu bạn tích hợp chiết áp để điều khiển tốc độ, việc điều chỉnh nó sẽ thay đổi tốc độ quay của động cơ. Hãy chú ý đến dòng điện của động cơ; khi bạn tăng tốc độ, động cơ có thể tiêu thụ nhiều dòng điện hơn, điều này có thể dẫn đến quá nhiệt nếu không được quản lý đúng cách (trong video tại 09:45).
Nếu động cơ không quay như mong đợi, hãy kiểm tra hệ thống dây điện để đảm bảo rằng tất cả các kết nối đều chắc chắn và được định hướng đúng. Đồng thời, xác minh rằng điện áp nguồn cung cấp phù hợp với động cơ bước của bạn.
Mốc Thời Gian Video
- 00:00 - Giới thiệu
- 01:30 - Giải thích về hệ thống dây điện
- 05:00 - Tổng quan về mã
- 09:45 - Trình diễn điều khiển động cơ
/*
Stepper Motor Control - one revolution
This program drives a unipolar or bipolar stepper motor.
The motor is attached to digital pins 8 - 11 of the Arduino.
The motor should revolve one revolution in one direction, then
one revolution in the other direction.
Created 11 Mar. 2007
Modified 30 Nov. 2009
by Tom Igoe
Modified by Ahmad S. for Robojax.com
on May 19, 2018 at 19:31, in Ajax, Ontario, Canada
*/
#include <Stepper.h>
const int stepsPerRevolution = 200; // change this to fit the number of steps per revolution
// for your motor
// initialize the stepper library on pins 8 through 11:
Stepper myStepper(stepsPerRevolution, 8, 9, 10, 11);
void setup() {
// set the speed at 60 rpm:
myStepper.setSpeed(300);
// initialize the serial port:
Serial.begin(9600);
// L298N for Robojax.com
pinMode(2,OUTPUT);// for EN1
digitalWrite(2,HIGH);// enable EN1
pinMode(3,OUTPUT);// for EN1
digitalWrite(3,HIGH); // enable EN2
}
void loop() {
// step one revolution in one direction:
Serial.println("clockwise");
myStepper.step(stepsPerRevolution);
delay(500);
// L298N for Robojax.com
// step one revolution in the other direction:
Serial.println("counterclockwise");
myStepper.step(-stepsPerRevolution);
delay(500);
}
/*
Stepper Motor Control - one step at a time
This program drives a unipolar or bipolar stepper motor.
The motor is attached to digital pins 8 - 11 of the Arduino.
The motor will step one step at a time, very slowly. You can use this to
test that you've got the four wires of your stepper wired to the correct
pins. If wired correctly, all steps should be in the same direction.
Use this also to count the number of steps per revolution of your motor,
if you don't know it. Then plug that number into the oneRevolution
example to see if you got it right.
Created 30 Nov. 2009
by Tom Igoe
Modified by Ahmad S. for Robojax.com
on May 19, 2018 at 19:31, in Ajax, Ontario, Canada
*/
#include <Stepper.h>
const int stepsPerRevolution = 200; // change this to fit the number of steps per revolution
// for your motor
// initialize the stepper library on pins 8 through 11:
Stepper myStepper(stepsPerRevolution, 8, 9, 10, 11);
int stepCount = 0; // number of steps the motor has taken
void setup() {
// initialize the serial port:
Serial.begin(9600);
// L298N for Robojax.com
pinMode(2,OUTPUT);// for EN1
digitalWrite(2,HIGH);// enable EN1
pinMode(3,OUTPUT);// for EN1
digitalWrite(3,HIGH); // enable EN2
}
void loop() {
// step one step:
// L298N for Robojax.com
myStepper.step(-1);
Serial.print("steps:");
Serial.println(stepCount);
stepCount++;
delay(200);
}
Nghĩ bạn có thể cần
-
Amazon
-
Amazon
Tài nguyên & tài liệu tham khảo
Chưa có tài nguyên nào.
Tập tin📁
Bảng dữ liệu (pdf)
-
Datashet for L298N Dual H-bridge motor driver
robojax_L298N datasheet.pdf0.18 MB