H-Bridge 1: Budowanie sterownika silnika H-bridge na płytce stykowej z użyciem tranzystorów Darlington TIP120 i TIP125
Ten samouczek poprowadzi Cię przez budowę sterownika silnika H-bridge z użyciem tranzystorów Darlington TIP120 i TIP125 na płytce stykowej. Ta konfiguracja jest idealna do kontrolowania kierunku i prędkości silnika prądu stałego, co jest niezbędne w różnych projektach robotyki i automatyzacji. Na koniec tego samouczka będziesz w stanie kontrolować silnik zarówno w kierunku zgodnym, jak i przeciwnym do ruchu wskazówek zegara, wraz z modulacją prędkości.
W tym przewodniku wykorzystamy Arduino do sterowania silnikiem. Konfiguracja mostka H umożliwia odwrócenie kierunku silnika poprzez kontrolowanie sygnałów wejściowych wysyłanych do tranzystorów. Jest to kluczowy aspekt w wielu zastosowaniach, takich jak ramiona robotyczne czy roboty mobilne, które wymagają precyzyjnego sterowania silnikiem. W celu dalszego wyjaśnienia proszę odwołać się do wideo (w wideo o 00:00).
Wyjaśnienie sprzętu
Główne komponenty tego projektu to tranzystory TIP120 i TIP125, które są używane jako przełączniki do kontrolowania pracy silnika. TIP120 to tranzystor NPN Darlington, a TIP125 to tranzystor PNP Darlington. Razem tworzą konfigurację mostka H, co pozwala nam kontrolować kierunek prądu płynącego przez silnik.
W tej konfiguracji sygnał PWM (modulacja szerokości impulsu) jest używany do kontrolowania prędkości silnika. Tranzystory włączają się i wyłączają szybko, aby stworzyć średnie napięcie, które określa prędkość silnika. Piny EN włączają lub wyłączają tranzystory, zapewniając, że silnik działa tylko wtedy, gdy jest to konieczne.
Szczegóły karty katalogowej
| Producent | Texas Instruments |
|---|---|
| Numer części | TIP120 |
| Napięcie logiczne/IO | 5-15 V |
| Napięcie zasilania | 60 V |
| Prąd wyjściowy (na kanał) | 5 A |
| Prąd szczytowy (na kanał) | 30 A |
| Wskazówki dotyczące częstotliwości PWM | 1 kHz max |
| Progi logiki wejściowej | 2,5 V (wysoki), 0,8 V (niski) |
| Spadek napięcia / RDS(on)/ nasycenie | 1,2 V |
| Limity termiczne | 175 °C |
| Pakiet | TO-220 |
| Notatki / warianty | Dostępny jako TIP125 |
- Zapewnij odpowiednie odprowadzanie ciepła w aplikacjach o dużym prądzie.
- Użyj sygnałów PWM, aby skutecznie kontrolować prędkość silnika.
- Sprawdź orientację tranzystora, aby zapobiec uszkodzeniu obwodu.
- Zwróć uwagę na wartości napięcia, aby nie przekroczyć limitów.
- Użyj kondensatorów odsprzęgających, aby ustabilizować zasilanie napięciem.
Instrukcje dotyczące okablowania

Aby podłączyć sterownik silnika H-bridge, najpierw podłącz pin VCC z TIP120 i TIP125 do zasilania 5V na swoim Arduino. Podłącz pin GND do masy. Piny sterujące PWM,PWM1iPWM2, powinny być podłączone do cyfrowych pinów 9 i 3 na Arduino, odpowiednio. Piny enable,EN1iEN2, połączy się z cyfrowymi pinami 8 i 2.
Następnie podłącz terminale silnika do pinów kolektora tranzystorów TIP120 i TIP125. Upewnij się, że silnik jest kompatybilny z twoim zasilaczem. Jeśli używasz dodatkowych komponentów, takich jak diody do ochrony przed przepięciami, umieść je równolegle z terminalami silnika, aby zapobiec uszkodzeniom spowodowanym przez odwrotną EMF. Jeśli używasz różnych modeli Arduino, sprawdź mapowanie pinów dla sygnałów PWM i włączających.
Przykłady kodu i przewodnik
const int PWM1= 9; //pin with ~
const int EN1= 8;
const int PWM2= 3; //pin with ~
const int EN2= 2;
W konfiguracji definiujemy piny sterujące dla sygnałów PWM oraz piny włączające.pinModefunkcja ustawia te piny jako wyjście do sterowania tranzystorami, które napędzają silnik.
void loop() {
Motor(CW, 50); //in CW at 50% speed
delay(5000);
stop(); // stops the motor
delay(2000);
}
Ta funkcja pętli demonstruje działanie silnika. Najpierw uruchamia silnik w kierunku zgodnym z ruchem wskazówek zegara z prędkością 50% przez 5 sekund, a następnie zatrzymuje się na 2 sekundy.Motorfunkcja jest wywoływana z parametrami kierunku i prędkości, kontrolując zachowanie silnika na podstawie tych danych wejściowych.
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
}
}
TheMotorfunkcja przyjmuje wartość logiczną kierunku i liczbę całkowitą prędkości. Mapuje procent prędkości na wartość PWM i używaanalogWriteustawić odpowiedni pin do sterowania silnikiem. Ta funkcja jest kluczowa dla dynamicznej zmiany kierunku i prędkości silnika.
Demonstracja / Czego się spodziewać
Po zakończeniu okablowania i przesłaniu kodu powinieneś zaobserwować, że silnik obraca się zgodnie z ruchem wskazówek zegara z prędkością 50% przez 5 sekund, a następnie zatrzymuje się. Po opóźnieniu obróci się w kierunku przeciwnym do ruchu wskazówek zegara z prędkością 80% przez kolejne 5 sekund. Do powszechnych pułapek należy niewłaściwe okablowanie oraz przekroczenie wartości napięcia, co może uszkodzić tranzystory lub silnik.
Znaczniki czasowe wideo
- 00:00- Wprowadzenie
- 01:30- Przegląd sprzętu
- 03:15- Instrukcje dotyczące okablowania
- 05:00- Przegląd kodu
- 08:45- Demonstracja
/*
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);
}
}
Zasoby i odniesienia
-
Zewnętrzny
-
Zewnętrzny
-
Zewnętrzny
-
Zewnętrzny
Pliki📁
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