Sử dụng động cơ bước 28BYJ-48 với bộ điều khiển ULN2003 và Arduino
Trong hướng dẫn này, chúng ta sẽ học cách điều khiển một động cơ bước 28BYJ-48 sử dụng driver ULN2003 với Arduino. Cấu hình này cho phép kiểm soát chính xác vị trí và tốc độ của động cơ. Cuối dự án này, bạn sẽ có thể quay động cơ theo cả hai hướng và kiểm soát các bước của nó một cách hiệu quả.
Chúng tôi sẽ sử dụng động cơ bước 28BYJ-48, một lựa chọn phổ biến cho nhiều dự án robot và tự động hóa nhờ vào chi phí thấp và dễ sử dụng. Bảng điều khiển ULN2003 kết nối động cơ bước với Arduino, cho phép chúng tôi gửi tín hiệu bước để điều khiển chuyển động của động cơ. Hướng dẫn này sẽ hướng dẫn bạn qua các kết nối cần thiết và mã để làm cho động cơ của bạn quay.
Để biết thêm chi tiết, vui lòng tham khảo video liên quan đến hướng dẫn này (trong video tại 0:45).
Giải thích phần cứng
Các thành phần chính của dự án này bao gồm động cơ bước 28BYJ-48 và bảng điều khiển ULN2003. Động cơ bước bao gồm nhiều cuộn dây có thể được cấp điện theo một trình tự cụ thể để tạo ra sự quay. Bảng điều khiển ULN2003 hoạt động như một công tắc, cho phép Arduino kiểm soát nguồn điện cung cấp cho mỗi cuộn dây.
Bộ điều khiển ULN2003 sử dụng một mảng transistor Darlington để xử lý dòng điện cao hơn cần thiết cho động cơ bước. Khi một chân từ Arduino xuất tín hiệu HIGH, nó cho phép dòng điện chảy đến cuộn tương ứng trong động cơ, khiến nó di chuyển. Điều này cho phép kiểm soát chính xác góc quay và tốc độ của động cơ.
Chi tiết bảng dữ liệu
| Nhà sản xuất | ULN2003 |
|---|---|
| Số hiệu bộ phận | ULN2003 |
| Điện áp Logic/IO | 5 V |
| Điện áp cung cấp | 5-30 V (tối đa) |
| Dòng điện đầu ra (mỗi kênh) | 500 mA tối đa |
| Dòng điện đỉnh (mỗi kênh) | 2 A tối đa |
| Hướng dẫn tần số PWM | N/A |
| Ngưỡng logic đầu vào | 0,8 V (thấp), 2,4 V (cao) |
| Sụt áp / RDS(on)/ bão hòa | 1,5 V tối đa |
| Giới hạn nhiệt độ | 70 °C tối đa |
| Gói | DIP-16 |
| Ghi chú / biến thể | Thường được sử dụng với động cơ bước 5V. |
- Đảm bảo rằng bộ điều khiển có thể đáp ứng các yêu cầu hiện tại của động cơ của bạn.
- Sử dụng tản nhiệt nếu cần thiết để quản lý giới hạn nhiệt.
- Kiểm tra rằng tất cả các kết nối đều an toàn để tránh các đầu vào không ổn định.
- Kiểm tra động cơ bằng cách chạy các chuỗi bước đơn giản trước khi tích hợp vào các dự án lớn hơn.
- Hãy chắc chắn cung cấp điện cho động cơ với điện áp cung cấp đầy đủ.
Hướng dẫn đấu dây


Để kết nối động cơ bước 28BYJ-48 với bộ điều khiển ULN2003 và Arduino, hãy làm theo các bước sau:
Đầu tiên, kết nối động cơ với bộ điều khiển ULN2003. Động cơ có bốn dây, thường được mã màu là cam, vàng, hồng và xanh dương. Kết nối các dây này với các chân đầu ra tương ứng trên bộ điều khiển ULN2003. Các kết nối như sau:
Orangedây đếnOUT1Yellowdây đếnOUT2Pinkdây đếnOUT3Bluedây đếnOUT4
Tiếp theo, kết nối bộ điều khiển ULN2003 với Arduino. Các chân đầu vào trên bộ điều khiển tương ứng với bốn chân số trên Arduino. Ví dụ:
IN1đếnPin 10IN2đếnPin 11IN3đếnPin 12IN4đếnPin 13
Cuối cùng, kết nối các chân nguồn và đất của bộ điều khiển ULN2003 với Arduino. Kết nối cácVCCghim vào đầu ra 5V của Arduino vàGNDGhim vào đất của Arduino. Đảm bảo rằng tất cả các kết nối đều an toàn trước khi cấp nguồn cho hệ thống.
Ví dụ mã và Hướng dẫn
Trong phần thiết lập của mã Arduino, chúng ta định nghĩa các chân được kết nối với bộ điều khiển ULN2003:
int Pin1 = 10;
int Pin2 = 11;
int Pin3 = 12;
int Pin4 = 13;
Ở đây, chúng ta khai báo bốn biến số nguyên:Pin1,Pin2,Pin3, vàPin4, tương ứng với các chân số trên Arduino. Những chân này sẽ điều khiển chuyển động của động cơ bước.
Trongsetup()chức năng, chúng tôi cấu hình các chân này là đầu ra:
void setup() {
pinMode(Pin1, OUTPUT);
pinMode(Pin2, OUTPUT);
pinMode(Pin3, OUTPUT);
pinMode(Pin4, OUTPUT);
}
Cài đặt này đảm bảo rằng Arduino có thể gửi tín hiệu đến bộ điều khiển ULN2003 để điều khiển động cơ.pinModeHàm đặt mỗi chân ở chế độ OUTPUT, cho phép chúng gửi tín hiệu.
Cuối cùng, trong vòng lặp chính, chúng tôi tạo một câu lệnh switch case để điều khiển các bước của động cơ dựa trên biến._step:
switch(_step){
case 0:
digitalWrite(Pin1, LOW);
digitalWrite(Pin2, LOW);
digitalWrite(Pin3, LOW);
digitalWrite(Pin4, HIGH);
break;
// Additional cases follow
}
Trong đoạn trích này, chúng tôi sử dụngdigitalWriteđể gửi tín hiệu CAO hoặc THẤP đến mỗi chân dựa trên dòng điện hiện tại_step. Điều này kiểm soát cuộn dây nào được cấp điện, cho phép động cơ quay. Mã đầy đủ tích hợp các đoạn mã này sẽ được tải xuống dưới bài viết.
Trình diễn / Những gì cần mong đợi
Khi mọi thứ được kết nối đúng cách và mã đã được tải lên, động cơ bước sẽ quay theo tín hiệu từ Arduino. Bạn có thể kiểm tra động cơ bằng cách thay đổi độ trễ trong vòng lặp hoặc thay đổi số bước để xem nó phản ứng như thế nào. Hãy lưu ý rằng nếu động cơ không được cấp nguồn đúng cách, nó có thể không di chuyển hoặc có thể hoạt động không ổn định.
Chương
- Giới thiệu - 0:00
- Giải thích phần cứng - 1:30
- Hướng dẫn đấu dây - 3:15
- Ví dụ mã & Hướng dẫn - 5:00
- Buổi trình diễn / Những gì cần mong đợi - 7:45
// Original source is http://www.geeetech.com/wiki/index.php/Stepper_Motor_5V_4-Phase_5-Wire_%26_ULN2003_Driver_Board_for_Arduino
// Update by Ahmad Shamshiri for RoboJax.com
// Published on March 27, 2017 in Ajax, ON, Canada.
/*
*
Need wiring diagram from this code: https://youtu.be/0glBk917HPg
Purchase My Arduino course on Udemy.com http://robojax.com/L/?id=62
*
* Get this code and other Arduino codes from RoboJax.com
Learn Arduino step by step in a structured course with all material, wiring diagrams, and libraries
all in one place. Purchase My course on Udemy.com http://robojax.com/L/?id=62
If you found this tutorial helpful, please support me so I can continue creating
content like this.
or make a donation using PayPal http://robojax.com/L/?id=64
* * This code is "AS IS" without warranty or liability. Free to be used as long as you keep this note intact.*
* This code has been downloaded from RoboJax.com
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
int Pin1 = 10;
int Pin2 = 11;
int Pin3 = 12;
int Pin4 = 13;
int _step = 0;
boolean dir = true;// false=clockwise, true=counter clockwise
int count=0;
void setup()
{
pinMode(Pin1, OUTPUT);
pinMode(Pin2, OUTPUT);
pinMode(Pin3, OUTPUT);
pinMode(Pin4, OUTPUT);
}
void loop()
{
switch(_step){
case 0:
digitalWrite(Pin1, LOW);
digitalWrite(Pin2, LOW);
digitalWrite(Pin3, LOW);
digitalWrite(Pin4, HIGH);
break;
case 1:
digitalWrite(Pin1, LOW);
digitalWrite(Pin2, LOW);
digitalWrite(Pin3, HIGH);
digitalWrite(Pin4, HIGH);
break;
case 2:
digitalWrite(Pin1, LOW);
digitalWrite(Pin2, LOW);
digitalWrite(Pin3, HIGH);
digitalWrite(Pin4, LOW);
break;
case 3:
digitalWrite(Pin1, LOW);
digitalWrite(Pin2, HIGH);
digitalWrite(Pin3, HIGH);
digitalWrite(Pin4, LOW);
break;
case 4:
digitalWrite(Pin1, LOW);
digitalWrite(Pin2, HIGH);
digitalWrite(Pin3, LOW);
digitalWrite(Pin4, LOW);
break;
case 5:
digitalWrite(Pin1, HIGH);
digitalWrite(Pin2, HIGH);
digitalWrite(Pin3, LOW);
digitalWrite(Pin4, LOW);
break;
case 6:
digitalWrite(Pin1, HIGH);
digitalWrite(Pin2, LOW);
digitalWrite(Pin3, LOW);
digitalWrite(Pin4, LOW);
break;
case 7:
digitalWrite(Pin1, HIGH);
digitalWrite(Pin2, LOW);
digitalWrite(Pin3, LOW);
digitalWrite(Pin4, HIGH);
break;
default:
digitalWrite(Pin1, LOW);
digitalWrite(Pin2, LOW);
digitalWrite(Pin3, LOW);
digitalWrite(Pin4, LOW);
break;
}
if(dir){
_step++;
}else{
_step--;
}
if(_step>7){
_step=0;
}
if(_step<0){
_step=7;
}
delay(1);
}
Nghĩ bạn có thể cần
-
Amazon
-
Amazon
-
AliExpressPurchase 5 pcs 28BYJ-48 stepper motors from AliExpresss.click.aliexpress.com
-
AliExpress
Tài nguyên & tài liệu tham khảo
-
Bên ngoài
-
Bên ngoài
-
Bên ngoài
-
Bên ngoài
-
Bên ngoài
-
Bên ngoài
Tập tin📁
Không có tệp nào khả dụng.