H-Bridge 1: Vytvorenie H-bridge motorového ovládača na experimentálnej doske pomocou tranzistorov TIP120 a TIP125 Darlington.
Tento tutoriál vás prevedie stavbou H-bridge ovládača motora pomocou tranzistorov TIP120 a TIP125 Darlington na experimentálnej doske. Toto usporiadanie je ideálne na ovládanie smeru a rýchlosti DC motora, čo je nevyhnutné pre rôzne projekty v oblasti robotiky a automatizácie. Na konci tohto tutoriálu budete schopní ovládať motor s oboma smermi otáčania, ako aj s moduláciou rýchlosti.
V tejto príručke budeme využívať Arduino na ovládanie motora. Konfigurácia H-mostíka umožňuje otáčať smer motora ovládaním vstupných signálov posielaných na tranzistory. Toto je kľúčový aspekt pre mnohé aplikácie, ako sú robotické ramená alebo mobilné roboty, ktoré vyžadujú presné ovládanie motora. Pre ďalšie objasnenie sa prosím pozrite na video (vo videu na 00:00).
Vysvetlenie hardvéru
Hlavné komponenty tohto projektu zahŕňajú tranzistory TIP120 a TIP125, ktoré sa používajú ako spínače na ovládanie prevádzky motora. TIP120 je NPN Darlingtonov tranzistor a TIP125 je PNP Darlingtonov tranzistor. Spoločne tvoria H-mostovú konfiguráciu, ktorá nám umožňuje ovládať smer prúdu pretekajúceho motorom.
V tejto konfigurácii sa signál PWM (modulácia šírky pulzu) používa na ovládanie rýchlosti motora. Tranzistory sa rýchlo zapínajú a vypínajú, aby vytvorili priemerné napätie, ktoré určuje rýchlosť motora. Piny EN zapínajú alebo vypínajú tranzistory, čím zabezpečujú, že motor funguje iba vtedy, keď je to potrebné.
Technické údaje
| Výrobca | Texas Instruments |
|---|---|
| Číslo dielu | TIP120 |
| Logika/IO napätie | 5-15 V |
| Napájacie napätie | 60 V |
| Výstupný prúd (na kanál) | 5 A |
| Špičkový prúd (na kanál) | 30 A |
| Pokyny pre PWM frekvenciu | 1 kHz max |
| Vstupné logické prahy | 2,5 V (vysoké), 0,8 V (nízke) |
| Pokles napätia / RDS(on)/ saturácia | 1,2 V |
| Tepelné limity | 175 °C |
| Balík | TO-220 |
| Poznámky / varianty | Dostupné ako TIP125 |
- Zabezpečte správne odvádzanie tepla pre aplikácie s vysokým prúdom.
- Použite PWM signály na efektívne ovládanie rýchlosti motora.
- Overte orientáciu tranzistora, aby sa predišlo poškodeniu obvodu.
- Venovať pozornosť hodnotám napätia, aby sa predišlo prekročeniu limitov.
- Použite oddeľovacie kondenzátory na stabilizáciu napájania.
Inštrukcie na zapojenie

Aby ste zapojili H-bridge motorový ovládač, najprv pripojte pin VCC z TIP120 a TIP125 k 5V napájaniu na vašom Arduine. Pripojte pin GND k zemi. PWM ovládacie piny,PWM1aPWM2, by mali byť pripojené k digitálnym pinom 9 a 3 na Arduine, resp. Piny povolenia,EN1aEN2, pripojí sa k digitálnym pinom 8 a 2.
Ďalej pripojte svorky motora k zbernicovým pinom tranzistorov TIP120 a TIP125. Uistite sa, že motor je kompatibilný s vaším napájacím zdrojom. Ak používate ďalšie komponenty, ako sú diódy na ochranu proti spätnému EMF, umiestnite ich paralelne so svorkami motora, aby ste predišli poškodeniu. Ak používate rôzne modely Arduina, overte si mapovanie pinov pre PWM a povolené signály.
Príklady kódu a návod
const int PWM1= 9; //pin with ~
const int EN1= 8;
const int PWM2= 3; //pin with ~
const int EN2= 2;
V nastavení definujeme ovládacie piny pre PWM signály a povolovacie piny.pinModeFunkcia nastaví tieto piny ako výstup na ovládanie tranzistorov, ktoré poháňajú motor.
void loop() {
Motor(CW, 50); //in CW at 50% speed
delay(5000);
stop(); // stops the motor
delay(2000);
}
Táto slučková funkcia demonštruje činnosť motora. Najprv spustí motor v smere hodinových ručičiek rýchlosťou 50 % na 5 sekúnd, potom sa zastaví na 2 sekundy.Motorfunkcia sa volá s parametrami smeru a rýchlosti, ktoré ovládajú správanie motora na základe týchto vstupov.
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
}
}
TenMotorFunkcia prijíma boolean smer a celé číslo rýchlosť. Mapuje percento rýchlosti na hodnotu PWM a používaanalogWritenastaviť vhodný pin pre ovládanie motora. Táto funkcia je kľúčová pre dynamickú zmenu smeru a rýchlosti motora.
Demonštrácia / Čo očakávať
Po dokončení zapojenia a nahratia kódu by ste mali pozorovať, že motor sa otáča v smere hodinových ručičiek rýchlosťou 50 % počas 5 sekúnd, po čom sa zastaví. Po oneskorení sa otočí proti smeru hodinových ručičiek rýchlosťou 80 % počas ďalších 5 sekúnd. Bežné chyby zahŕňajú nesprávne zapojenie a prekročenie napäťových limitov, čo môže poškodiť tranzistory alebo motor.
Časové pečiatky videa
- 00:00- Úvod
- 01:30- Prehľad hardvéru
- 03:15- Pokyny na zapojenie
- 05:00- Prezentácia kódu
- 08:45- Demonštrácia
/*
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);
}
}
Resources & references
-
External
-
External
-
External
-
External
Files📁
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