H-brug 1: Bou van 'n H-brug motorbestuurder op 'n broodbord met TIP120 en TIP125 Darlington-transistors
Hierdie tutoriaal sal jou lei om 'n H-brug motorbestuurder te bou met TIP120 en TIP125 Darlington-transistors op 'n broodbord. Hierdie opstelling is ideaal om die rigting en spoed van 'n gelykstroommotor te beheer, wat noodsaaklik is vir verskeie robotika- en outomatiseringsprojekte. Teen die einde van hierdie tutoriaal sal jy in staat wees om 'n motor met beide kloksgewys en teen die klok in rotasies te beheer, saam met spoedmodulasie.
In hierdie gids sal ons 'n Arduino gebruik om die motor te beheer. Die H-brug konfigurasie maak dit moontlik om die motor se rigting te keer deur die insetteksels wat na die transistors gestuur word, te beheer. Dit is 'n belangrike aspek vir baie toepassings, soos robotarms of mobiele robots wat presiese motorbeheer vereis. Vir verdere verduideliking, verwys asseblief na die video (in video by 00:00).
Hardeware verduidelik
Die hoofkomponente van hierdie projek sluit TIP120 en TIP125 transistors in, wat as skakelaars gebruik word om die motor se werking te beheer. Die TIP120 is 'n NPN Darlington-transistor, en die TIP125 is 'n PNP Darlington-transistor. Saam vorm hulle die H-brug konfigurasie, wat ons in staat stel om die rigting van die stroom wat deur die motor vloei, te beheer.
In hierdie opstelling word die PWM (Pulsbreedtemodulasie) sein gebruik om die spoed van die motor te beheer. Die transistors skakel vinnig aan en af om 'n gemiddelde spanning te skep wat die motorspoed bepaal. Die EN-pinne stel die transistors in staat of deaktiveer dit, wat verseker dat die motor slegs werk wanneer dit nodig is.
Datasheet Besonderhede
| Fabrikant | Texas Instruments |
|---|---|
| Onderdeel nommer | TIP120 |
| Logika/IO spanning | 5-15 V |
| Voorsienings spanning | 60 V |
| Uitsetstroom (per kanaal) | 5 A |
| Piekstroom (per kanaal) | 30 A |
| PWM frekwensie riglyne | 1 kHz maks |
| Invoer logika drempels | 2.5 V (hoog), 0.8 V (laag) |
| Spanningstoename / RDS(on)/ versadiging | 1.2 V |
| Termiese perke | 175 °C |
| Pakket | TO-220 |
| Notas / variante | Beskikbaar as TIP125 |
- Verseker die behoorlike hitte-afleiding vir hoë stroomtoepassings.
- Gebruik PWM-seine om die motorspoed effektief te beheer.
- Verifieer die transistororiëntasie om sirkuitschade te voorkom.
- Let op die spanninggraderings om te voorkom dat jy die perke oorskry.
- Gebruik ontkoppelkapasitors om die spanningsvoorsiening te stabiliseer.
Draadinstruksies

Om die H-brug motorbestuurder te bedrading, verbind eers die VCC-pin van die TIP120 en TIP125 aan die 5V-voorsiening op jou Arduino. Verbind die GND-pin aan die grond. Die PWM-beheerpunte,PWM1enPWM2, moet onderskeidelik aan digitale penne 9 en 3 op die Arduino gekoppel wees. Die aktiveringspenne,EN1enEN2, sal aansluit by digitale penne 8 en 2.
Verbind vervolgens die terminale van jou motor met die versamelpunte van die TIP120 en TIP125 transistors. Verseker dat die motor versoenbaar is met jou kragbron. As jy addisionele komponente soos diodes vir terugslagbeskerming gebruik, plaas hulle parallel met die motor terminale om skade van terug EMF te voorkom. As jy verskillende Arduino-modelle gebruik, verifieer die penkaarte vir PWM en aktiveringsignale.
Kode Voorbeelde & Staproete
const int PWM1= 9; //pin with ~
const int EN1= 8;
const int PWM2= 3; //pin with ~
const int EN2= 2;
In die opstelling definieer ons die beheerpunte vir die PWM seine en aktiveringspunte. DiepinModefunksie stel hierdie penne as uitset in om die transistors te beheer wat die motor aandryf.
void loop() {
Motor(CW, 50); //in CW at 50% speed
delay(5000);
stop(); // stops the motor
delay(2000);
}
Hierdie lusfunksie demonstreer die werking van die motor. Dit draai eers die motor in 'n kloksgewys rigting teen 50% spoed vir 5 sekondes, dan stop dit vir 2 sekondes. DieMotorfunksie word genoem met rigting en spoed parameters, wat die gedrag van die motor op grond van daardie insette beheer.
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
}
}
DieMotorfunksie neem 'n booleaanse rigting en 'n heelgetal spoed. Dit kaart die spoedpersentasie na 'n PWM-waarde en gebruikanalogWriteom die toepaslike pen vir motorbeheer in te stel. Hierdie funksie is van kardinale belang om die motorrigting en spoed dinamies te verander.
Demonstraie / Wat om te verwag
Na voltooiing van die bedrading en die opgradering van die kode, behoort jy die motor te sien draai met die klok mee teen 50% spoed vir 5 sekondes, gevolg deur 'n stop. Na 'n vertraging sal dit teen 80% spoed teen die klok in die ander rigting draai vir nog 5 sekondes. Algemene valkuiles sluit verkeerde bedrading en oorskryding van spanninggraderings in, wat die transistors of motor kan beskadig.
Video Tydmerke
- 00:00- Inleiding
- 01:30- Hardeware Oorsig
- 03:15- Bedrading Instruksies
- 05:00- Kode Staproete
- 08:45- Demonstrasie
/*
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);
}
}
Hulpbronne en verwysings
-
Buitenburg
-
Buitenburg
-
Buitenburg
-
Buitenburg
Lêers📁
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