H-브리지 1: TIP120 및 TIP125 다를링턴 트랜지스터를 사용하여 브레드보드에서 H-브리지 모터 드라이버 구축하기
이 튜토리얼은 TIP120 및 TIP125 다를링턴 트랜지스터를 사용하여 브레드보드에서 H-브리지 모터 드라이버를 구축하는 방법을 안내합니다. 이 설정은 DC 모터의 방향과 속도를 제어하는 데 이상적이며, 이는 다양한 로봇 공학 및 자동화 프로젝트에 필수적입니다. 이 튜토리얼이 끝나면 시계 방향과 반시계 방향 회전 모두를 제어할 수 있으며, 속도 조절도 가능해집니다.
이 가이드에서는 모터를 제어하기 위해 아두이노를 사용할 것입니다. H-브리지 구성은 트랜지스터에 전송되는 입력 신호를 제어하여 모터의 방향을 반전시킬 수 있게 해줍니다. 이는 정밀한 모터 제어가 필요한 로봇 팔이나 이동 로봇과 같은 많은 응용 프로그램에 있어 중요한 측면입니다. 추가적인 설명은 비디오(비디오 00:00 참조)를 참조하시기 바랍니다.
하드웨어 설명
이 프로젝트의 주요 구성 요소는 모터의 작동을 제어하기 위해 스위치로 사용되는 TIP120 및 TIP125 트랜지스터입니다. TIP120은 NPN 다링턴 트랜지스터이고, TIP125는 PNP 다링턴 트랜지스터입니다. 이들은 함께 H-브리지 구성을 형성하여 모터를 통과하는 전류의 방향을 제어할 수 있게 합니다.
이 설정에서 PWM(펄스 폭 변조) 신호는 모터의 속도를 제어하는 데 사용됩니다. 트랜지스터는 평균 전압을 생성하기 위해 빠르게 켜졌다 꺼졌다 하여 모터 속도를 결정합니다. EN 핀은 트랜지스터를 활성화하거나 비활성화하여 모터가 필요할 때만 작동하도록 합니다.
데이터시트 세부정보
| 제조업체 | 텍사스 인스트루먼트 |
|---|---|
| 부품 번호 | TIP120 |
| 로직/입출력 전압 | 5-15 V |
| 공급 전압 | 60 V |
| 출력 전류 (채널당) | 5 A |
| 채널당 피크 전류 | 30 A |
| PWM 주파수 안내 | 1 kHz 최대 |
| 입력 논리 임계값 | 2.5 V (높음), 0.8 V (낮음) |
| 전압 강하 / RDS(온)/ 포화 | 1.2 V |
| 열 한계 | 175 °C |
| 패키지 | TO-220 |
| 노트 / 변형 | TIP125로 제공됩니다. |
- 고전류 애플리케이션을 위한 적절한 히트 싱크를 보장하십시오.
- PWM 신호를 사용하여 모터 속도를 효과적으로 제어하세요.
- 트랜지스터 방향을 확인하여 회로 손상을 방지하십시오.
- 전압 등급에 주의하여 한계를 초과하지 않도록 하십시오.
- 전압 공급을 안정화하기 위해 디커플링 커패시터를 사용하십시오.
배선 지침

H-브리지 모터 드라이버를 연결하려면 먼저 TIP120과 TIP125의 VCC 핀을 Arduino의 5V 전원에 연결합니다. GND 핀을 접지에 연결합니다. PWM 제어 핀,PWM1그리고PWM2디지털 핀 9와 3에 각각 연결되어야 합니다. 활성화 핀,EN1그리고EN2디지털 핀 8과 2에 연결됩니다.
다음으로, 모터의 단자를 TIP120 및 TIP125 트랜지스터의 컬렉터 핀에 연결합니다. 모터가 전원 공급 장치와 호환되는지 확인하십시오. 플라이백 보호를 위한 다이오드와 같은 추가 구성 요소를 사용하는 경우, 모터 단자와 병렬로 배치하여 역기전력으로 인한 손상을 방지하십시오. 다른 아두이노 모델을 사용하는 경우, PWM 및 활성화 신호에 대한 핀 매핑을 확인하십시오.
코드 예제 및 안내
const int PWM1= 9; //pin with ~
const int EN1= 8;
const int PWM2= 3; //pin with ~
const int EN2= 2;
설정에서 우리는 PWM 신호와 활성화 핀에 대한 제어 핀을 정의합니다.pinMode이 함수는 모터를 구동하는 트랜지스터를 제어하기 위해 이 핀들을 출력으로 설정합니다.
void loop() {
Motor(CW, 50); //in CW at 50% speed
delay(5000);
stop(); // stops the motor
delay(2000);
}
이 루프 기능은 모터의 작동을 보여줍니다. 먼저 모터를 시계 방향으로 50% 속도로 5초 동안 작동한 후 2초 동안 정지합니다.Motor함수는 방향과 속도 매개변수로 호출되어, 해당 입력에 따라 모터의 동작을 제어합니다.
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
}
}
그Motor함수는 불리언 방향과 정수 속도를 입력으로 받습니다. 속도 비율을 PWM 값에 매핑하고 사용합니다.analogWrite모터 제어를 위한 적절한 핀을 설정합니다. 이 기능은 모터의 방향과 속도를 동적으로 변경하는 데 중요합니다.
시연 / 기대할 사항
배선 작업과 코드 업로드가 완료되면, 모터가 50% 속도로 시계 방향으로 5초 동안 회전한 후 정지하는 것을 관찰해야 합니다. 잠시 후, 모터는 80% 속도로 반시계 방향으로 다시 5초 동안 회전합니다. 일반적인 실수로는 잘못된 배선과 전압 등급 초과가 있으며, 이는 트랜지스터나 모터를 손상시킬 수 있습니다.
비디오 타임스탬프
- 00:00- 소개
- 01:30- 하드웨어 개요
- 03:15- 배선 지침
- 05:00- 코드 워크스루
- 08:45- 시연
/*
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);
}
}
자원 및 참고자료
파일📁
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