Przejdź do treści
Sprzęt i elektronika

Sterowanie silnikiem prądu stałego w lewo i prawo – przełącznik, przekaźniki i mostek H

Jak zmienić kierunek obrotów silnika prądu stałego? Schematy z przełącznikiem DPDT, dwoma przekaźnikami i mostkiem H (L298N, TB6612FNG) oraz kod dla Arduino.

CZCzarek ZawolskiAktualizacja: 7 min czytania
Mały silnik prądu stałego podłączony do modułu sterownika i płytki Arduino

W skrócie

  • Kierunek obrotów szczotkowego silnika DC zmienia się, odwracając polaryzację napięcia na jego zaciskach.
  • Do sterowania ręcznego wystarczy przełącznik DPDT (najlepiej ON-OFF-ON), do automatyki — dwa przekaźniki SPDT albo mostek H.
  • Mostek H (np. TB6612FNG, DRV8833, L298N, BTS7960) pozwala z mikrokontrolera zmieniać kierunek, hamować i regulować prędkość przez PWM.
  • Nigdy nie włączaj jednocześnie obu tranzystorów po tej samej stronie mostka — to zwarcie zasilania; gotowe sterowniki mają przed tym zabezpieczenie logiczne.
  • Przed zmianą kierunku zatrzymaj silnik i dobierz zasilacz oraz sterownik do prądu rozruchowego, nie tylko do prądu pracy.
Spis treści

Sterowanie silnikiem prądu stałego w lewo i prawo polega na odwróceniu polaryzacji napięcia na jego zaciskach: plus na zacisku A i minus na B daje obroty w jedną stronę, zamiana — w drugą. Dotyczy to klasycznych, szczotkowych silników DC, takich jak te w zabawkach, robotach, siłownikach liniowych czy wycieraczkach.

W praktyce masz trzy sposoby: przełącznik DPDT do sterowania ręcznego, dwa przekaźniki do prostej automatyki i mostek H, gdy sterujesz z Arduino, ESP32 czy sterownika PLC i chcesz też regulować prędkość. Poniżej schematy połączeń, zalety i pułapki każdego z nich.

Dlaczego zmiana polaryzacji odwraca kierunek

W silniku szczotkowym prąd płynie przez uzwojenia wirnika umieszczone w polu magnesów stałych. Siła działająca na przewodnik zależy od kierunku prądu, więc gdy go odwrócisz, moment obrotowy zmienia znak i wirnik kręci się w przeciwną stronę. Komutator i szczotki same dbają o to, żeby wirnik obracał się płynnie w danym kierunku.

Ta zasada nie dotyczy silników bezszczotkowych (BLDC) ani krokowych — tam kierunek zmienia się kolejnością przełączania faz w sterowniku. Jeśli pracujesz z BLDC, zajrzyj do poradnika o sterowaniu silnikiem bezszczotkowym z Arduino.

Sposób 1: przełącznik DPDT – najprostsze sterowanie ręczne

Przełącznik DPDT (dwubiegunowy, dwupozycyjny) ma sześć wyprowadzeń w dwóch rzędach. Odwracanie kierunku uzyskuje się „krzyżowym” połączeniem:

  1. Środkowe wyprowadzenia (wspólne) podłącz do zacisków silnika A i B.
  2. Górną parę wyprowadzeń podłącz do zasilania: lewe do plusa, prawe do minusa.
  3. Dolną parę podłącz odwrotnie: lewe do minusa, prawe do plusa — najwygodniej dwoma przewodami połączonymi „na krzyż” z górną parą.

W jednej pozycji silnik dostaje A = +, B = −, w drugiej A = −, B = +. Wybierz wersję ON-OFF-ON — środkowa pozycja odłącza silnik, więc możesz go zatrzymać bez rozłączania zasilacza.

Zalety: brak elektroniki, działa od razu, odporny na błędy. Wady: tylko sterowanie ręczne, brak regulacji prędkości, a przełącznik musi mieć obciążalność prądem stałym większą niż prąd rozruchowy silnika. Parametry podawane dla napięcia przemiennego (np. „6 A 250 V AC”) nie przekładają się wprost na DC, gdzie łuk przy rozłączaniu gaśnie trudniej.

Sposób 2: dwa przekaźniki SPDT – automatyka bez ryzyka zwarcia

Gdy chcesz sterować kierunkiem z mikrokontrolera, sterownika PLC lub czujników krańcowych, a nie potrzebujesz płynnej regulacji prędkości, najprostsze są dwa przekaźniki z jednym stykiem przełącznym (SPDT: COM, NC, NO).

Połączenie:

ElementPrzekaźnik 1Przekaźnik 2
COM (wspólny)zacisk silnika Azacisk silnika B
NC (normalnie zamknięty)minus zasilania (GND)minus zasilania (GND)
NO (normalnie otwarty)plus zasilaniaplus zasilania

Stany pracy:

  • oba przekaźniki wyłączone → oba zaciski na masie → silnik stoi (i jest hamowany),
  • włączony tylko przekaźnik 1 → A = +, B = − → obroty w jedną stronę,
  • włączony tylko przekaźnik 2 → A = −, B = + → obroty w drugą stronę,
  • oba włączone → oba zaciski na plusie → silnik stoi, ale bez zwarcia zasilania.

Ten układ jest „odporny na głupotę”: żadna kombinacja sygnałów nie zwiera plusa z minusem. Dlatego stosuje się go w bramach, roletach i siłownikach, często razem z wyłącznikami krańcowymi, które odcinają zasilanie przekaźnika na końcu ruchu.

Wady: przekaźniki są wolne (milisekundy), klikają, ich styki się zużywają, a regulacja prędkości PWM przez przekaźnik nie wchodzi w grę. Gotowe moduły przekaźników dla Arduino mają już tranzystor i diodę zabezpieczającą cewkę — gołego przekaźnika nie podłączaj bezpośrednio do pinu mikrokontrolera.

Sposób 3: mostek H – kierunek, hamowanie i prędkość z mikrokontrolera

Mostek H to układ czterech kluczy (tranzystorów) ułożonych w kształt litery H, z silnikiem w poprzeczce. Włączając pary tranzystorów po przekątnej, zmieniasz kierunek prądu przez silnik:

Klucze włączoneEfekt
górny lewy + dolny prawyprąd A → B, obroty w prawo
górny prawy + dolny lewyprąd B → A, obroty w lewo
oba dolne (lub oba górne)zwarcie zacisków silnika — hamowanie
wszystkie wyłączonewybieg (silnik zwalnia swobodnie)
oba po jednej stronie (górny i dolny lewy)zwarcie zasilania — uszkodzenie (tzw. shoot-through)

Ostatni wiersz to najważniejsza pułapka przy budowie mostka z pojedynczych tranzystorów. Dlatego przy przełączaniu stosuje się czas martwy (dead time), a gotowe sterowniki mają logikę, która nie dopuszcza do takiego stanu. Mostek musi też mieć diody (lub wykorzystywać diody wewnętrzne MOSFET-ów), przez które płynie prąd indukcyjności silnika po wyłączeniu kluczy.

Regulacja prędkości polega na szybkim włączaniu i wyłączaniu mostka sygnałem PWM — im większe wypełnienie, tym wyższe średnie napięcie i szybsze obroty.

Popularne gotowe sterowniki

Układ / modułNapięcie silnikaPrąd ciągły na kanał (orientacyjnie)Uwagi
L293D4,5–36 V0,6 Abardzo stary, tranzystory bipolarne, duże straty
L298N (moduł z radiatorem)do ok. 35 V na typowym moduledo 2 Apopularny i tani, ale spadek napięcia rzędu kilku woltów i mocne grzanie
TB6612FNGdo 13,5 Vok. 1,2 AMOSFET, małe straty, dwa kanały, dobry wybór do robotów
DRV88332,7–10,8 Vok. 1,2–1,5 AMOSFET, dobry do zasilania z akumulatorów Li-ion
BTS7960 (moduł IBT-2)do ok. 27 Vkilkanaście–kilkadziesiąt A zależnie od chłodzeniado dużych silników, siłowników, napędów pojazdów

Wartości zależą od chłodzenia i konkretnego modułu — zawsze sprawdź kartę katalogową układu i opis płytki.

Przykład: Arduino i mostek L298N

Połączenia dla jednego silnika na kanale A modułu L298N:

  • ENA → pin 9 Arduino (PWM; zdejmij zworkę z ENA),
  • IN1 → pin 8, IN2 → pin 7,
  • OUT1 i OUT2 → zaciski silnika,
  • +12V → plus zasilacza silnika, GND → minus zasilacza i GND Arduino (wspólna masa).
const int ENA = 9;   // prędkość (PWM)
const int IN1 = 8;   // kierunek
const int IN2 = 7;

void setup() {
  pinMode(ENA, OUTPUT);
  pinMode(IN1, OUTPUT);
  pinMode(IN2, OUTPUT);
}

void wPrawo(uint8_t predkosc) {
  digitalWrite(IN1, HIGH);
  digitalWrite(IN2, LOW);
  analogWrite(ENA, predkosc);   // 0–255
}

void wLewo(uint8_t predkosc) {
  digitalWrite(IN1, LOW);
  digitalWrite(IN2, HIGH);
  analogWrite(ENA, predkosc);
}

void hamuj() {                  // oba wejścia jednakowe + EN wysoki = szybkie zatrzymanie
  digitalWrite(IN1, HIGH);
  digitalWrite(IN2, HIGH);
  analogWrite(ENA, 255);
}

void luz() {                    // EN niski = wybieg
  analogWrite(ENA, 0);
}

void loop() {
  wPrawo(200);
  delay(2000);
  hamuj();
  delay(300);                   // przerwa przed zmianą kierunku
  wLewo(200);
  delay(2000);
  luz();
  delay(1000);
}

W TB6612FNG logika jest podobna: AIN1/AIN2 ustawiają kierunek, PWMA prędkość, a pin STBY musi być w stanie wysokim, żeby układ w ogóle działał. Stan AIN1 = AIN2 = HIGH to hamowanie, LOW/LOW — wybieg.

Wskazówka: Na Arduino Uno PWM na pinach 9 i 10 ma częstotliwość ok. 490 Hz, a na pinach 5 i 6 ok. 980 Hz. Słyszalny pisk silnika przy niskich prędkościach to normalne zjawisko — można go ograniczyć, zmieniając częstotliwość timera lub używając sterownika z wyższą częstotliwością PWM.

Zasilanie i zabezpieczenia, o których łatwo zapomnieć

  1. Prąd rozruchowy. Zatrzymany silnik (rozruch, zablokowanie) pobiera wielokrotnie więcej prądu niż podczas swobodnej pracy. Sterownik, przełącznik i zasilacz dobieraj do tego prądu, nie do wartości „z pudełka”.
  2. Osobne zasilanie silnika i wspólna masa. Silnik nie powinien być zasilany z pinu 5V Arduino ani z portu USB. Zasilacz silnika i mikrokontroler muszą mieć połączone masy (GND), inaczej sygnały sterujące nie będą miały punktu odniesienia.
  3. Kondensatory. Kondensator ceramiczny ok. 100 nF przylutowany bezpośrednio na zaciskach silnika ogranicza zakłócenia od iskrzenia szczotek. Przy sterowniku przyda się też kondensator elektrolityczny (np. kilkaset µF) na zasilaniu, który pokrywa chwilowe skoki prądu.
  4. Zmiana kierunku w ruchu. Odwrócenie polaryzacji przy pełnych obrotach oznacza, że do napięcia zasilania dodaje się siła elektromotoryczna wirującego silnika — prąd skacze, a przekładnia dostaje uderzenie. Zatrzymaj silnik, odczekaj chwilę, dopiero potem ruszaj w drugą stronę.
  5. Wyłączniki krańcowe. W siłownikach, bramach i mechanizmach z ograniczonym zakresem ruchu wyłącznik krańcowy powinien fizycznie przerywać zasilanie w danym kierunku, niezależnie od programu.

Który sposób wybrać

  • Ręczne przełączanie kierunku, np. w prostym podnośniku czy modelu: przełącznik DPDT ON-OFF-ON o odpowiedniej obciążalności prądem stałym.
  • Automatyka z rzadką zmianą kierunku, duże prądy, sterownik PLC lub czujniki krańcowe: dwa przekaźniki SPDT w układzie, który nie pozwala na zwarcie.
  • Arduino, ESP32, Raspberry Pi, roboty, potrzeba regulacji prędkości i częstych zmian kierunku: mostek H — TB6612FNG lub DRV8833 dla małych silników, BTS7960 dla dużych. L298N zadziała, ale przy zasilaniu z baterii marnuje sporo energii na ciepło.

Więcej projektów i poradników elektronicznych znajdziesz w kategorii Sprzęt i elektronika.

Najczęściej zadawane pytania

Jak zmienić kierunek obrotów silnika prądu stałego?

Wystarczy zamienić miejscami plus i minus zasilania na zaciskach silnika. W praktyce robi się to przełącznikiem DPDT, dwoma przekaźnikami albo układem mostka H sterowanym z mikrokontrolera.

Jaki mostek H wybrać do Arduino?

Do małych silników do ok. 1 A i napięcia do 12 V dobrze sprawdzają się TB6612FNG lub DRV8833, które mają mniejsze straty niż popularny L298N. Do silników kilkunasto- i kilkudziesięcioamperowych stosuje się moduły na BTS7960 (IBT-2) lub sterowniki MOSFET.

Czy można odwrócić kierunek silnika w trakcie obrotów?

Technicznie tak, ale powoduje to duży skok prądu i obciążenie mechaniczne. Lepiej najpierw zatrzymać silnik lub zahamować, odczekać od kilkudziesięciu do kilkuset milisekund i dopiero wtedy włączyć ruch w przeciwną stronę.

Czym różni się hamowanie od wybiegu w mostku H?

Przy hamowaniu oba zaciski silnika są zwarte do tego samego potencjału, więc silnik szybko się zatrzymuje. Przy wybiegu (coast) zaciski są odłączone i silnik zwalnia swobodnie.

Czy można zasilić silnik bezpośrednio z pinu Arduino?

Nie. Pin mikrokontrolera daje kilkanaście–kilkadziesiąt miliamperów, a nawet mały silnik pobiera setki miliamperów i generuje zakłócenia. Silnik zawsze podłącza się przez sterownik lub tranzystor z osobnym zasilaniem i wspólną masą.

CZ

Autor

Czarek Zawolski

Założyciel i redaktor XAD.pl. Pisze o sieciach, bezpieczeństwie IT, administracji systemami Windows i Linux oraz o sprzęcie, który sprawia ludziom problemy na co dzień.