Sterowanie silnikiem DC z Arduino - Poradnik bez błędów!

Artur Wójcik .

23 kwietnia 2026

Schemat połączeń z Arduino Uno, mostkiem H L293D, silnikiem DC, przyciskiem i potencjometrem.

Sterowanie silnikiem DC z Arduino sprowadza się do dwóch rzeczy: bezpiecznej zmiany kierunku i sensownej regulacji prędkości. Do tego właśnie służy mostek H, czyli układ, który bierze na siebie prąd silnika, a mikrokontrolerowi zostawia tylko sygnał sterujący. W praktyce najwięcej problemów nie sprawia sam kod, lecz zasilanie, masa wspólna i dobór drivera do realnego prądu silnika.

Najważniejsze informacje o sterowaniu silnikiem z Arduino

  • Arduino nie zasila silnika bezpośrednio, tylko steruje wejściami drivera lub mostka H.
  • Kierunek obrotów zmienia się przez odwrócenie biegunowości na zaciskach silnika.
  • PWM z funkcji `analogWrite()` reguluje prędkość, ale na płytkach klasy UNO działa tylko na pinach PWM.
  • Popularny L298N nadaje się do nauki i prototypów, lecz ma zauważalne straty mocy i się grzeje.
  • Przy doborze układu liczy się nie tylko napięcie silnika, ale też prąd rozruchowy i zapas termiczny.
  • Najwięcej awarii powodują błędy w okablowaniu, brak wspólnej masy i zasilanie napędu z 5 V Arduino.

Dlaczego mostek H jest potrzebny przy Arduino

Silnik prądu stałego nie zachowuje się jak dioda LED ani jak zwykły rezystor. Żeby zmienić jego kierunek, trzeba odwrócić biegunowość zasilania, a żeby regulować prędkość, trzeba podać napięcie w kontrolowany sposób. Arduino samo tego nie zrobi, bo jego piny służą do logiki, nie do napędu.

Mostek H rozwiązuje ten problem, ponieważ składa się z czterech przełączników tranzystorowych, które pozwalają przepuścić prąd przez silnik w jedną albo w drugą stronę. To dlatego ten układ jest tak wygodny: mikrokontroler wydaje proste sygnały HIGH/LOW, a driver robi całą ciężką pracę po stronie mocy. Przy okazji układ tłumi też skutki pracy obciążenia indukcyjnego, czyli przepięcia pojawiające się przy wyłączaniu silnika.

W robotyce to rozwiązanie jest podstawą nie tylko przy silnikach DC, ale też przy części napędów krokowych. W przypadku zwykłego robota jezdnego najczęściej wystarczy jeden mostek na jeden silnik albo moduł dwukanałowy dla pary napędów. Skoro wiadomo już, po co ten układ istnieje, następny krok to dobór drivera i zasilania, bo właśnie tam zaczynają się realne różnice między działającym prototypem a układem, który tylko „prawie” działa.

Jak dobrać driver i zasilanie do silnika

Tu popełnia się najwięcej kosztownych pomyłek. Najpierw sprawdzam napięcie znamionowe silnika, potem jego prąd roboczy, a na końcu prąd przy zablokowanym wirniku, czyli stall current. Ten ostatni parametr bywa kilka razy większy od normalnego poboru i to on decyduje, czy driver przeżyje start, zakleszczenie lub nagły skok obciążenia.

Rozwiązanie Kiedy ma sens Plusy Ograniczenia
Gotowy moduł L298N Pierwsze testy, nauka, prosty robot z dwoma małymi silnikami Tani, dobrze opisany, łatwy do uruchomienia Większe straty, wyraźne grzanie, spadek napięcia na wyjściu
Driver MOSFET Roboty bateryjne, gdy liczy się sprawność i czas pracy Mniejsze straty, mniej ciepła, lepsza efektywność Trzeba pilnować zgodności napięć i poprawnego sterowania
Własny mostek na tranzystorach Duże prądy, nietypowy projekt, pełna kontrola nad topologią Duża elastyczność i możliwość dopasowania do aplikacji Większa złożoność, ryzyko zwarcia gałęzi i konieczność dead time

W dokumentacji STMicroelectronics układ L298 ma napięcie pracy do 46 V i 4 A łącznie, ale w praktyce w modułach hobbystycznych szybciej ogranicza cię temperatura i spadek napięcia niż sam katalogowy limit. Dlatego do małych robotów edukacyjnych nadaje się dobrze, ale przy zasilaniu bateryjnym nie jest to mój pierwszy wybór. Ja celuję w zapas co najmniej 1,5-2x względem realnego prądu pracy, a jeśli silnik może stanąć lub ruszać pod obciążeniem, zostawiam jeszcze więcej marginesu.

Najważniejsza zasada brzmi prosto: zasilanie silnika ma być osobne, logika ma być osobna, a masa musi być wspólna. Jeśli to ustalisz na tym etapie, dalsze podłączenie i testy pójdą znacznie szybciej. Teraz przejdźmy do samego okablowania, bo tam wychodzą najczęstsze błędy początkujących.

Jak podłączyć mostek H z Arduino bez typowych pułapek

Jeśli korzystasz z gotowego modułu, na przykład L298N, podłączenie jest proste tylko pozornie. Kluczowe jest rozdzielenie zasilania mocy od zasilania logiki oraz poprawne ustawienie pinów sterujących. Jedna pomyłka w masie albo na zworkach i układ zaczyna zachowywać się losowo.

Pin modułu Funkcja Do czego podłączyć
ENA Włącza kanał i zwykle przyjmuje PWM Pin PWM z Arduino, np. D5
IN1 / IN2 Ustalają kierunek obrotów Dwa piny cyfrowe, np. D8 i D7
OUT1 / OUT2 Wyjście na silnik Zaciski silnika DC
VS / +12V Zasilanie części mocy Osobny zasilacz zgodny z silnikiem
GND Masa odniesienia GND zasilacza i GND Arduino
5V / VSS Zasilanie logiki modułu 5 V z Arduino albo stabilizator modułu, zależnie od zworki
  1. Najpierw odłącz zasilanie i sprawdź, czy silnik nie jest podłączony odwrotnie do wyjść modułu.
  2. Potem połącz GND Arduino z GND zasilacza silnika.
  3. Przewody silnika wpiąć do wyjść OUT, a nie do Arduino.
  4. Wejścia IN1 i IN2 podłącz do zwykłych pinów cyfrowych.
  5. ENA ustaw na pinie PWM, jeśli chcesz sterować prędkością.
  6. Jeśli moduł ma zworkę na ENA, zdejmij ją tylko wtedy, gdy naprawdę chcesz używać PWM.
  7. Na pierwszy test odpal układ bez obciążenia i z niskim wypełnieniem PWM.

Na etapie podłączenia bardzo pomaga jeden prosty nawyk: najpierw testuję kierunek obrotów, dopiero potem regulację prędkości. To oszczędza czas i od razu pokazuje, czy przewody silnika nie są zamienione miejscami. Gdy hardware jest już ustawiony, zostaje część, w której Arduino zaczyna naprawdę sterować napędem.

Jak sterować kierunkiem i prędkością w kodzie

W dokumentacji Arduino funkcja analogWrite() generuje sygnał PWM, a nie „prawdziwe” napięcie analogowe. Dla Arduino UNO zakres 0-255 oznacza po prostu 0-100 procent wypełnienia, więc wartość 128 daje około połowę czasu stanu wysokiego, a nie połowę napięcia w sensie liniowym. Dla silnika to wystarcza, bo on reaguje na średnią energię dostarczaną w czasie.

const int ENA = 5;   // PWM
const int IN1 = 8;
const int IN2 = 7;

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

void forward(uint8_t speedValue) {
  digitalWrite(IN1, HIGH);
  digitalWrite(IN2, LOW);
  analogWrite(ENA, speedValue);
}

void reverse(uint8_t speedValue) {
  digitalWrite(IN1, LOW);
  digitalWrite(IN2, HIGH);
  analogWrite(ENA, speedValue);
}

void stopMotor() {
  analogWrite(ENA, 0);
  digitalWrite(IN1, LOW);
  digitalWrite(IN2, LOW);
}

void loop() {
  forward(120);
  delay(2000);

  stopMotor();
  delay(1000);

  reverse(120);
  delay(2000);

  stopMotor();
  delay(1500);
}

Ten szkic wystarcza do pierwszego uruchomienia i testu kierunku. Jeśli napęd rusza zbyt gwałtownie, warto dodać miękki start, czyli stopniowe zwiększanie PWM w kilku krokach zamiast skoku z 0 do 200. W praktyce poprawia to kulturę pracy i zmniejsza przeciążenie drivera przy starcie.

Jeżeli test działa, a silnik reaguje odwrotnie niż oczekujesz, nie poprawiaj kodu w ciemno. Najpierw zamień przewody na wyjściu silnika albo skoryguj stan IN1/IN2, bo przy prostym mostku H to właśnie kierunek jest najłatwiejszy do odwrócenia sprzętowo. Następny temat to błędy, które najczęściej psują układ mimo poprawnego szkicu.

Najczęstsze błędy, które kończą się resetem albo grzaniem

W większości projektów problem nie leży w samym mostku H, tylko w detalach, które wydają się drugorzędne. To właśnie dlatego przy pierwszym uruchomieniu patrzę nie tylko na kod, ale też na temperaturę modułu, jakość przewodów i stabilność zasilania.

  • Brak wspólnej masy - Arduino wysyła sygnał, ale driver nie widzi tego samego punktu odniesienia, więc układ zachowuje się losowo.
  • Zasilanie silnika z USB lub pinu 5 V - to prawie zawsze kończy się resetami, spadkami napięcia albo wyłączeniem portu.
  • Zbyt mały zapas prądowy - silnik przy starcie bierze więcej niż w katalogu, a driver zaczyna się grzać już po kilkunastu sekundach.
  • Brak kondensatorów filtrujących - przy module warto dać 100 nF blisko zasilania silnika i 470-1000 µF na linii mocy, bo to ogranicza zakłócenia i chwilowe spadki.
  • Zmiana kierunku bez krótkiej przerwy - przy tranzystorowych mostkach ważny jest dead time, czyli krótka pauza między wyłączeniem jednej gałęzi a włączeniem drugiej, żeby nie zrobić zwarcia przez obie strony naraz.
  • Za cienkie albo zbyt długie przewody - rezystancja przewodów robi się wtedy zauważalna i napęd traci moment oraz stabilność.

Jeśli po kilku minutach radiator robi się bardzo gorący, to nie jest drobiazg do zignorowania. To znak, że driver pracuje na granicy albo że silnik wymaga lepszego układu niż popularny moduł z półki edukacyjnej. Właśnie dlatego kolejna sekcja porządkuje wybór rozwiązania: kiedy L298N wystarcza, a kiedy lepiej pójść w nowszą technologię.

Kiedy L298N wystarczy, a kiedy lepiej postawić na MOSFET-y

W prostych projektach edukacyjnych L298N nadal ma sens, bo jest tani, łatwo dostępny i ma mnóstwo przykładów. Problem zaczyna się wtedy, gdy projekt ma pracować dłużej, na baterii albo z silnikiem, który ma wysoki prąd rozruchowy. Wtedy straty energii i nagrzewanie przestają być teorią, a zaczynają skracać czas pracy lub powodować niestabilność.

Sytuacja Lepszy wybór Dlaczego
Nauka, prototyp, mały robot L298N Jest prosty, przewidywalny i łatwo znaleźć gotowe przykłady
Zasilanie bateryjne i liczenie każdej watogodziny Driver MOSFET Mniejsze straty, mniej ciepła, lepsza sprawność
Silnik o dużym prądzie startowym Układ z większym zapasem prądowym Bezpieczniej dla elektroniki i zasilania
Projekt specjalny, własna elektronika mocy Własny mostek H Można dobrać tranzystory, zabezpieczenia i sterowanie pod konkretny przypadek

Własny mostek ma sens dopiero wtedy, gdy wiesz, po co go budujesz. Trzeba wtedy policzyć nie tylko prąd i napięcie, ale też sterowanie bramek, czasy przełączania i wspomniany dead time. To już poziom, na którym półśrodki kończą się spalonymi tranzystorami, więc dla większości projektów lepszy jest gotowy driver niż heroiczne składanie wszystkiego z osobna.

Gdy wybór jest już jasny, zostaje ostatni krok: szybka kontrola całego układu przed pierwszym pełnym testem. To właśnie ten moment najczęściej decyduje, czy napęd zadziała od razu, czy będzie wymagał kilku godzin szukania błędu.

Co sprawdzam przed pierwszym uruchomieniem napędu

Przed pierwszym pełnym startem robię prostą checklistę i trzymam się jej za każdym razem. To banalne, ale właśnie takie banalne rzeczy oszczędzają najwięcej czasu.

  • Czy silnik ma osobne zasilanie, a nie linię 5 V z Arduino.
  • Czy GND zasilacza i Arduino są połączone.
  • Czy ENA trafia na pin PWM, a nie na losowy pin cyfrowy bez obsługi PWM.
  • Czy moduł ma zdjętą albo założoną zworkę ENA zgodnie z tym, czego naprawdę potrzebujesz.
  • Czy silnik rusza poprawnie przy niskim PWM, zanim podasz wyższe wartości.
  • Czy po 30-60 sekundach pracy driver nie robi się nienaturalnie gorący.

Jeśli zaczniesz od niskiego PWM, osobnego zasilania i poprawnie spiętej masy, układ zwykle rusza szybko i bez niespodzianek. Reszta to już dopracowanie chłodzenia, przewodów i dobranie drivera do realnego prądu silnika, a nie tylko do jego etykiety. Taki porządek pracy daje więcej niż najdroższy moduł kupiony bez planu.

FAQ - Najczęstsze pytania

Arduino nie zasila silnika bezpośrednio. Mostek H zmienia kierunek obrotów poprzez odwrócenie biegunowości i reguluje prędkość, działając jako interfejs mocy między mikrokontrolerem a silnikiem.
Kluczowe jest sprawdzenie napięcia znamionowego, prądu roboczego oraz prądu przy zablokowanym wirniku (stall current) silnika. Zawsze wybieraj driver z zapasem prądowym, najlepiej 1,5-2x większym niż realny prąd pracy.
L298N jest dobry do nauki i prostych prototypów ze względu na niską cenę i łatwość użycia. Jednak przy zasilaniu bateryjnym lub silnikach o dużym prądzie rozruchowym, lepsze są drivery MOSFET ze względu na mniejsze straty mocy i nagrzewanie.
Najczęstsze błędy to brak wspólnej masy między Arduino a zasilaczem silnika, zasilanie silnika z pinów Arduino (co prowadzi do resetów) oraz zbyt mały zapas prądowy drivera, powodujący przegrzewanie.
Oceń artykuł

Średnia: 0.0 / 5 · 0 ocen

Tagi

mostek h arduino sterowanie silnikiem dc arduino mostek h jak podłączyć silnik dc do arduino
Autor Artur Wójcik
Artur Wójcik
Nazywam się Artur Wójcik i od wielu lat zajmuję się tematyką elektroniki, robotyki oraz programowania. Moje doświadczenie obejmuje zarówno analizę rynku, jak i tworzenie treści, które pomagają zrozumieć złożone zagadnienia technologiczne. Specjalizuję się w nowoczesnych rozwiązaniach w dziedzinie automatyzacji oraz w zastosowaniach sztucznej inteligencji w codziennym życiu. Moim celem jest uproszczenie skomplikowanych danych oraz dostarczanie obiektywnej analizy, która pozwala czytelnikom lepiej zrozumieć dynamiczny świat technologii. Przykładam dużą wagę do rzetelności informacji, dlatego staram się, aby każda publikacja była aktualna i oparta na sprawdzonych źródłach. Wierzę, że dostęp do rzetelnej wiedzy jest kluczowy dla każdego, kto chce nadążyć za szybkim rozwojem w dziedzinie elektroniki i robotyki.
Komentarze (0)
Dodaj komentarz