Mã Arduino cho Module Điều khiển Động cơ DC kép L9110
Trong hướng dẫn này, chúng ta sẽ khám phá cách điều khiển hai động cơ DC bằng mô-đun điều khiển động cơ kép L9110 với Arduino. Dự án này sẽ cho phép bạn quản lý hướng và tốc độ của từng động cơ, cho phép các ứng dụng linh hoạt như robot và tự động hóa. Đến cuối hướng dẫn này, bạn sẽ hiểu rõ cách kết nối các linh kiện và viết mã cần thiết để làm cho động cơ của bạn chạy trơn tru. Nếu bạn cần làm rõ, hãy nhớ xem video (trong video tại 00:00).
Phần cứng được giải thích
Mô-đun điều khiển động cơ DC kép L9110 cho phép bạn điều khiển hai động cơ cùng lúc. Nó có hai mạch cầu H, cho phép bạn đảo ngược cực tính của điện áp động cơ. Điều này có nghĩa là bạn có thể dễ dàng thay đổi hướng của từng động cơ bằng cách chuyển đổi các chân điều khiển. Mô-đun có bốn chân chính: hai chân cho mỗi động cơ để điều khiển hướng quay. Khi bạn đặt một chân ở mức cao và chân kia ở mức thấp, động cơ quay theo một hướng; đảo ngược trạng thái chân sẽ làm cho nó quay theo hướng ngược lại. Sự linh hoạt này rất cần thiết cho các ứng dụng như robot, nơi bạn cần điều khiển chính xác chuyển động của động cơ.Chi tiết từ bảng dữ liệu
| Nhà sản xuất | STMicroelectronics |
|---|---|
| Số bộ phận | L9110 |
| Điện áp logic/IO | 2.5–5.5 V |
| Điện áp cung cấp | 2.5–12 V |
| Dòng điện đầu ra (mỗi kênh) | 1 A |
| Dòng điện đỉnh (mỗi kênh) | 2 A |
| Hướng dẫn tần số PWM | 10 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 | 0.3 V tại 1 A |
| Giới hạn nhiệt | 150 °C |
| Đóng gói | DIP-16 |
| Ghi chú / biến thể | Thường được sử dụng trong các dự án robot nhỏ. |
- Đảm bảo tản nhiệt thích hợp cho hoạt động liên tục.
- Giữ tín hiệu PWM dưới 10 kHz để có hiệu suất tối ưu.
- Sử dụng tụ điện tách rời gần các kết nối nguồn để giảm nhiễu.
- Cẩn thận với các kết nối đảo cực; chúng có thể làm hỏng mô-đun.
- Luôn kiểm tra giới hạn dòng điện định mức để tránh quá nhiệt.
Hướng dẫn kết nối
Để kết nối mô-đun điều khiển động cơ DC kép L9110 với Arduino, hãy bắt đầu bằng cách kết nối các chân nguồn. Kết nối chân VCC trên L9110 với đầu ra 5V trên Arduino và kết nối chân GND với một trong các chân nối đất của Arduino. Tiếp theo, đối với động cơ A, kết nối chân A1A với chân kỹ thuật số 2 trên Arduino và chân A1B với chân kỹ thuật số 3. Sau đó, đối với động cơ B, kết nối chân B1A với chân kỹ thuật số 8 và chân B1B với chân kỹ thuật số 9. Đảm bảo rằng các động cơ được kết nối đúng với các đầu ra tương ứng của chúng trên mô-đun L9110.
Ví dụ mã & hướng dẫn chi tiết
Trong hàm setup, chúng ta cần định nghĩa các chân điều khiển là đầu ra. Điều này rất cần thiết để Arduino điều khiển hướng động cơ một cách hiệu quả:void setup() {
pinMode(B1A,OUTPUT);// định nghĩa chân là đầu ra
pinMode(B1B,OUTPUT);
pinMode(A1A,OUTPUT);
pinMode(A1B,OUTPUT);
delay(3000);
}
Đoạn mã này thiết lập các chân điều khiển động cơ, đảm bảo rằng Arduino có thể gửi tín hiệu đến mô-đun L9110.
Vòng lặp chính của chương trình điều khiển các động cơ bằng cách gọi các hàm `motorA` và `motorB` với các tham số khác nhau để thay đổi hướng:
void loop() {
motorA('R');// Quay động cơ A sang PHẢI
delay(2000);
motorA('L');// Quay động cơ A sang TRÁI
delay(2000);
motorA('O');// TẮT động cơ A
delay(2000);
...
}
Trong đoạn trích này, các động cơ được làm quay sang phải và trái, với thời gian trễ ở giữa để quan sát sự thay đổi hướng.
Hàm `motorA` được định nghĩa để điều khiển động cơ A dựa trên hướng đầu vào:
void motorA(char d) {
if(d =='R'){
digitalWrite(A1A,LOW);
digitalWrite(A1B,HIGH);
} else if (d =='L'){
digitalWrite(A1A,HIGH);
digitalWrite(A1B,LOW);
} else {
digitalWrite(A1A,LOW);
digitalWrite(A1B,LOW);
}
}
Hàm này kiểm tra hướng được cung cấp và đặt các chân điều khiển tương ứng để quay động cơ theo hướng mong muốn hoặc tắt nó.
Trình diễn / Điều gì sẽ xảy ra
Khi bạn chạy mã, bạn sẽ thấy các động cơ xen kẽ giữa quay trái và quay phải. Thời gian trễ cho phép bạn quan sát rõ ràng sự thay đổi hướng. Hãy cẩn thận với các lỗi thường gặp như kết nối đảo ngược, có thể dẫn đến hành vi bất ngờ hoặc làm hỏng các linh kiện. Ngoài ra, hãy đảm bảo rằng nguồn điện của bạn đủ cho các động cơ bạn đang sử dụng (trong video tại 00:00).
107-Arduino code for an L9110 dual DC motor controller module
Ngôn ngữ: C++
/*
* Display number on a seven-segment display with Arduino
* Written by Ahmad Shamshiri for Robojax.com
Date modified: Jun 11, 2018 at 17:20 in Ajax, Ontario, Canada
Watch video instructions for this code: https://youtu.be/-g6Q9lSHDzg
Code is provided for free AS IS without warranty.
You can share this code as long as you keep the above note intact.
*/
const int A1A = 2;//define pin 2 for A1A
const int A1B = 3;//define pin 3 for A1B
const int B1A = 8;//define pin 8 for B1A
const int B1B = 9;//define pin 9 for B1B
void setup() {
pinMode(B1A,OUTPUT);// define pin as output
pinMode(B1B,OUTPUT);
pinMode(A1A,OUTPUT);
pinMode(A1B,OUTPUT);
delay(3000);
}
void loop() {
motorA('R');// Turn motor A to RIGHT
delay(2000);
motorA('L');// Turn motor A to LEFT
delay(2000);
motorA('O');// Turn motor A OFF
delay(2000);
motorB('R');// Turn motor B to RIGHT
delay(2000);
motorB('L');// Turn motor B to LEFT
delay(2000);
motorB('O');// Turn motor B OFF
delay(2000);
motorA('R');// Turn motor A to RIGHT
motorB('R'); // Turn motor A to RIGHT
delay(2000);
motorA('L');// Turn motor A to LEFT
motorB('L');// Turn motor B to LEFT
delay(3000);
motorA('O');// Turn motor A OFF
motorB('O');// Turn motor B OFF
delay(5000);
}
/*
* @motorA
* Activation rotation of motor A
* d is the direction
* R = Right
* L = Left
*/
void motorA(char d)
{
if(d =='R'){
digitalWrite(A1A,LOW);
digitalWrite(A1B,HIGH);
}else if (d =='L'){
digitalWrite(A1A,HIGH);
digitalWrite(A1B,LOW);
}else{
//Robojax.com L9110 Motor Tutorial
// Turn motor OFF
digitalWrite(A1A,LOW);
digitalWrite(A1B,LOW);
}
}// motorA end
/*
* @motorB
* Activation rotation of motor B
* d is the direction
* R = Right
* L = Left
*/
void motorB(char d)
{
if(d =='R'){
digitalWrite(B1A,LOW);
digitalWrite(B1B,HIGH);
}else if(d =='L'){
digitalWrite(B1A,HIGH);
digitalWrite(B1B,LOW);
}else{
//Robojax.com L9110 Motor Tutorial
// Turn motor OFF
digitalWrite(B1A,LOW);
digitalWrite(B1B,LOW);
}
}// motorB end
Nghĩ bạn có thể cần
-
Amazon
-
eBay
-
AliExpressPurchase L9110 motor driver from AliExpress-2s.click.aliexpress.com
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)
-
Bảng dữ liệu mô-đun điều khiển động cơ L9110Bảng dữ liệu mô-đun điều khiển động cơ L9110 bao gồm sơ đồ chân, thông số kỹ thuật và mạch ứng dụng để điều khiển động cơ DC.
robojax_L9110_datasheet.pdf0.20 MB
Tập tin Fritzing
-
Mô-đun driver động cơ cầu H L9110
L9110 H-bridge module.fzpz0.04 MB