H-Bridge 1: Xây dựng một bộ điều khiển động cơ H-bridge trên bảng mạch thử nghiệm sử dụng transistor Darlington TIP120 và TIP125
Hướng dẫn này sẽ giúp bạn xây dựng một bộ điều khiển động cơ H-bridge sử dụng transistor Darlington TIP120 và TIP125 trên một bảng mạch. Cấu hình này rất lý tưởng để điều khiển hướng và tốc độ của một động cơ DC, điều này rất cần thiết cho nhiều dự án robot và tự động hóa. Cuối cùng của hướng dẫn này, bạn sẽ có thể điều khiển một động cơ với cả hai chiều quay theo chiều kim đồng hồ và ngược chiều kim đồng hồ, cùng với việc điều chỉnh tốc độ.
Trong hướng dẫn này, chúng tôi sẽ sử dụng một Arduino để điều khiển động cơ. Cấu hình H-bridge cho phép đảo ngược hướng của động cơ bằng cách điều khiển các tín hiệu đầu vào gửi đến các transistor. Đây là một khía cạnh quan trọng cho nhiều ứng dụng, chẳng hạn như cánh tay robot hoặc robot di động cần điều khiển động cơ chính xác. Để biết thêm chi tiết, vui lòng tham khảo video (trong video tại 00:00).
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 các transistor TIP120 và TIP125, được sử dụng như các công tắc để điều khiển hoạt động của động cơ. TIP120 là một transistor Darlington NPN, và TIP125 là một transistor Darlington PNP. Cùng nhau, chúng tạo thành cấu hình cầu H, cho phép chúng ta điều khiển hướng dòng điện chảy qua động cơ.
Trong cấu hình này, tín hiệu PWM (Điều chế độ rộng xung) được sử dụng để điều khiển tốc độ của động cơ. Các transistor bật và tắt nhanh chóng để tạo ra một điện áp trung bình xác định tốc độ động cơ. Các chân EN bật hoặc tắt các transistor, đảm bảo động cơ chỉ hoạt động khi cần thiết.
Chi tiết bảng dữ liệu
| Nhà sản xuất | Texas Instruments |
|---|---|
| Số hiệu bộ phận | TIP120 |
| Điện áp Logic/IO | 5-15 V |
| Điện áp cung cấp | 60 V |
| Dòng điện đầu ra (mỗi kênh) | 5 A |
| Dòng điện đỉnh (mỗi kênh) | 30 A |
| Hướng dẫn tần số PWM | 1 kHz tối đa |
| Ngưỡng logic đầu vào | 2,5 V (cao), 0,8 V (thấp) |
| Sụt áp / RDS(on)/ bão hòa | 1.2 V |
| Giới hạn nhiệt độ | 175 °C |
| Gói | TO-220 |
| Ghi chú / biến thể | Có sẵn dưới dạng TIP125 |
- Đảm bảo tản nhiệt đúng cách cho các ứng dụng dòng điện cao.
- Sử dụng tín hiệu PWM để điều khiển tốc độ động cơ một cách hiệu quả.
- Xác minh hướng của transistor để ngăn ngừa hư hỏng mạch.
- Chú ý đến các chỉ số điện áp để tránh vượt quá giới hạn.
- Sử dụng tụ điện tách rời để ổn định nguồn điện.
Hướng dẫn đấu dây

Để kết nối bộ điều khiển động cơ H-bridge, trước tiên hãy kết nối chân VCC từ TIP120 và TIP125 với nguồn 5V trên Arduino của bạn. Kết nối chân GND với mặt đất. Các chân điều khiển PWM,PWM1vàPWM2, nên được kết nối với các chân số 9 và 3 trên Arduino, tương ứng. Các chân kích hoạt,EN1vàEN2, sẽ kết nối với các chân số 8 và 2.
Tiếp theo, kết nối các cực của động cơ với các chân thu của transistor TIP120 và TIP125. Đảm bảo rằng động cơ tương thích với nguồn điện của bạn. Nếu sử dụng các linh kiện bổ sung như diode để bảo vệ ngược, hãy đặt chúng song song với các cực của động cơ để ngăn chặn hư hại do EMF ngược. Nếu bạn đang sử dụng các mô hình Arduino khác nhau, hãy xác minh các ánh xạ chân cho tín hiệu PWM và tín hiệu kích hoạt.
Ví dụ mã & Hướng dẫn
const int PWM1= 9; //pin with ~
const int EN1= 8;
const int PWM2= 3; //pin with ~
const int EN2= 2;
Trong thiết lập, chúng tôi định nghĩa các chân điều khiển cho tín hiệu PWM và các chân kích hoạt.pinModeHàm này thiết lập các chân này làm đầu ra để điều khiển các transistor điều khiển động cơ.
void loop() {
Motor(CW, 50); //in CW at 50% speed
delay(5000);
stop(); // stops the motor
delay(2000);
}
Hàm vòng này minh họa hoạt động của động cơ. Nó đầu tiên chạy động cơ theo chiều kim đồng hồ với tốc độ 50% trong 5 giây, sau đó dừng lại trong 2 giây.MotorHàm được gọi với các tham số hướng và tốc độ, điều khiển hành vi của động cơ dựa trên những đầu vào đó.
void Motor(boolean direction, int speed=0) {
int speedPWM = map(speed, 0, 100, 0, 255);
if(direction) {
analogWrite(PWM1, speedPWM); // Set speed for CW
} else {
analogWrite(PWM2, speedPWM); // Set speed for CCW
}
}
CáiMotorHàm nhận một hướng boolean và một tốc độ nguyên. Nó ánh xạ tỷ lệ phần trăm tốc độ sang giá trị PWM và sử dụnganalogWriteđể thiết lập chân phù hợp cho điều khiển động cơ. Chức năng này rất quan trọng để thay đổi hướng và tốc độ động cơ một cách linh hoạt.
Trình diễn / Những gì cần mong đợi
Sau khi hoàn thành việc đấu dây và tải mã, bạn sẽ thấy động cơ quay theo chiều kim đồng hồ với tốc độ 50% trong 5 giây, sau đó dừng lại. Sau một khoảng thời gian trễ, nó sẽ quay ngược chiều kim đồng hồ với tốc độ 80% trong 5 giây nữa. Những cạm bẫy phổ biến bao gồm đấu dây không đúng và vượt quá mức điện áp, điều này có thể làm hỏng các transistor hoặc động cơ.
Thời gian video
- 00:00- Giới thiệu
- 01:30- Tổng quan phần cứng
- 03:15- Hướng dẫn đấu dây
- 05:00- Hướng dẫn mã
- 08:45- Biểu diễn
/*
This code is for:
Building an H-Bridge Motor driver using TIP120 and TIP125 on a breadboard and full PCB Design with Arduino
https://youtu.be/6ugrL5ziPn8
This code has been downloaded from Robojax.com
You can access the resources page and download the Gerber file to produce
the PCB or a fully assembled PCB from PCBX.com
Visit https://robojax.com/tutorial_view.php?id=392
to control a DC motor using TIP120 and TIP125 as an
H bridge
Written by Ahmad Shamshiri
26 Aug 2024
*/
const int PWM1= 9;//pin with ~
const int EN1= 8;
const int PWM2= 3;//pin with ~
const int EN2= 2;
const boolean CW =1;
const boolean CCW =0;
void Motor(boolean, int);//prototype
void brake();//prototype
void setup() {
Serial.begin(9600);
Serial.println("TIP120 H Bridge by Robojax");
pinMode(PWM1, OUTPUT);
pinMode(EN1, OUTPUT);
pinMode(PWM2, OUTPUT);
pinMode(EN2, OUTPUT);
}
void loop() {
Motor(CW, 50);//in CW at 50% speed
delay(5000);
stop();
delay(2000);
Motor(CCW, 80);//in CCW at 80% speed
delay(5000);
brake();
delay(2000);
for (int i=0; i<=100; i++)
{
Motor(CCW, i);
delay(25);
}
delay(5000);
brake();
delay(2000);
}
/*
stop()
stops the output
*/
void stop()
{
Serial.println ("=== Stop");
digitalWrite(PWM1, LOW);
digitalWrite(EN1, LOW);
digitalWrite(PWM2, LOW);
digitalWrite(EN2, LOW);
}
/*
brake()
*/
void brake()
{
Serial.println ("=== Brake");
digitalWrite(PWM1, HIGH);
digitalWrite(EN1, LOW);
digitalWrite(PWM2, HIGH);
digitalWrite(EN2, LOW);
}
void Motor(boolean direction, int speed=0)
{
int speedPWM = map(speed, 0, 100, 0, 255);
Serial.print("Speed: "); Serial.print (speedPWM);
Serial.print ("(");Serial.print (speed);Serial.print ("%)");
if(direction){
Serial.print(" dir: ");Serial.println ("CW");
analogWrite(PWM1, speedPWM);
digitalWrite(EN1, HIGH);
digitalWrite(PWM2, LOW);
digitalWrite(EN2, LOW);
}else{
Serial.print(" dir: ");Serial.println ("CCW");
digitalWrite(PWM1, LOW);
digitalWrite(EN1, LOW);
analogWrite(PWM2, speedPWM);
digitalWrite(EN2, HIGH);
}
}
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
Tập tin📁
Gerber files
-
H-Bridge-TIP120-TIP125 Gerber file for PCBXIncludes H-Bridge-TIP120-TIP125.zip, H-Bridge-TIP120-TIP125-BOM.xls and H-Bridge-TIP120-TIP125-coor.xls files to place order easily.
H-Bridge-TIP120-TIP125 Gerber file.zip0.05 MB