H-brygga 1: Bygga en H-brygga motorstyrning på ett kopplingsdäck med TIP120 och TIP125 Darlington-transistorer
Denna handledning kommer att vägleda dig genom att bygga en H-brygga motorstyrning med TIP120 och TIP125 Darlington-transistorer på ett kopplingsdäck. Denna uppsättning är idealisk för att kontrollera riktningen och hastigheten på en likströmsmotor, vilket är avgörande för olika robotik- och automationsprojekt. I slutet av denna handledning kommer du att kunna kontrollera en motor med både medurs och moturs rotationer, tillsammans med hastighetsmodulering.
I den här guiden kommer vi att använda en Arduino för att styra motorn. H-bryggkonfigurationen möjliggör att vända motorns riktning genom att kontrollera de ingångssignaler som skickas till transistorerna. Detta är en avgörande aspekt för många tillämpningar, såsom robotarmar eller mobila robotar som kräver precis motorstyrning. För ytterligare förtydligande, vänligen se videon (i videon vid 00:00).
Hårdvara förklarad
De huvudsakliga komponenterna i detta projekt inkluderar TIP120 och TIP125 transistorer, som används som switchar för att styra motorens drift. TIP120 är en NPN Darlington-transistor, och TIP125 är en PNP Darlington-transistor. Tillsammans bildar de H-bryggkonfigurationen, vilket gör att vi kan styra riktningen på strömmen som flyter genom motorn.
I den här konfigurationen används PWM (Pulsbreddsmodulering) signalen för att styra hastigheten på motorn. Transistorerna slår på och av snabbt för att skapa en genomsnittlig spänning som bestämmer motorhastigheten. EN-stiften aktiverar eller inaktiverar transistorerna, vilket säkerställer att motorn endast fungerar när det behövs.
Datablad Detaljer
| Tillverkare | Texas Instruments |
|---|---|
| Delnummer | TIP120 |
| Logik/IO-spänning | 5-15 V |
| Matningsspänning | 60 V |
| Utgångsström (per kanal) | 5 A |
| Spetsström (per kanal) | 30 A |
| PWM-frekvens vägledning | 1 kHz max |
| Inmatningslogiktrösklar | 2,5 V (hög), 0,8 V (låg) |
| Spänningsfall / RDS(on)/ mättnad | 1,2 V |
| Termiska gränser | 175 °C |
| Paket | TO-220 |
| Anteckningar / varianter | Tillgänglig som TIP125 |
- Säkerställ korrekt värmeavledning för högströmsapplikationer.
- Använd PWM-signaler för att effektivt styra motorhastigheten.
- Verifiera transistorns orientering för att förhindra kretskador.
- Var uppmärksam på spänningsklassningar för att undvika att överskrida gränser.
- Använd avkopplingskondensatorer för att stabilisera spänningsförsörjningen.
Kopplingsanvisningar

För att koppla H-bryggans motorstyrning, anslut först VCC-pinnen från TIP120 och TIP125 till 5V-försörjningen på din Arduino. Anslut GND-pinnen till jorden. PWM-kontrollpinnarna,PWM1ochPWM2, bör kopplas till digitala stift 9 och 3 på Arduino, respektive. Aktiveringsstiften,EN1ochEN2, kommer att ansluta till digitala stift 8 och 2.
Anslut sedan motorens terminaler till samlarstiften på TIP120- och TIP125-transistorerna. Se till att motorn är kompatibel med din strömförsörjning. Om du använder ytterligare komponenter som dioder för flyback-skydd, placera dem parallellt med motorterminalerna för att förhindra skador från bakåt-EMF. Om du använder olika Arduino-modeller, kontrollera stiftkartorna för PWM och aktiveringssignaler.
Kodexempel och genomgång
const int PWM1= 9; //pin with ~
const int EN1= 8;
const int PWM2= 3; //pin with ~
const int EN2= 2;
I inställningen definierar vi kontrollstiften för PWM-signalerna och aktiveringsstiften.pinModefunktionen ställer in dessa pinnar som utgång för att styra transistorerna som driver motorn.
void loop() {
Motor(CW, 50); //in CW at 50% speed
delay(5000);
stop(); // stops the motor
delay(2000);
}
Denna loopfunktion demonstrerar motoroperationen. Den kör först motorn medurs med 50% hastighet i 5 sekunder, sedan stannar den i 2 sekunder.Motorfunktionen anropas med riktning och hastighet parametrar, som styr motorbeteendet baserat på dessa ingångar.
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
}
}
DetMotorfunktionen tar en boolesk riktning och en heltals hastighet. Den mappar hastighetsprocenten till ett PWM-värde och använderanalogWriteatt ställa in den lämpliga pinnen för motorstyrning. Denna funktion är avgörande för att dynamiskt ändra motorriktning och hastighet.
Demonstration / Vad man kan förvänta sig
Vid slutförandet av kopplingen och uppladdningen av koden bör du observera att motorn roterar medurs med 50% hastighet i 5 sekunder, följt av ett stopp. Efter en fördröjning kommer den att rotera moturs med 80% hastighet i ytterligare 5 sekunder. Vanliga fallgropar inkluderar felaktig koppling och överskridande av spänningsgränser, vilket kan skada transistorerna eller motorn.
Videotidsstämplar
- 00:00- Introduktion
- 01:30- Hårdvaruöversikt
- 03:15- Kopplingsanvisningar
- 05:00- Kodgenomgång
- 08:45- Demonstration
/*
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);
}
}
Resurser och referenser
-
Extern.
-
Extern.
-
Extern.
-
Extern.
Filer📁
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