Mały silnik krokowy, cztery przewody i moduł z napisami IN1–IN4, EEP oraz ULT. Na pierwszy rzut oka połączenie wygląda prosto. Potem okazuje się, że silnik tylko drży albo sterownik w ogóle nie podaje napięcia na wyjścia. W tym poradniku porządkujemy właśnie te pierwsze kroki: zasilanie, rozpoznanie cewek, wybudzenie układu i sekwencję sterowania.
DRV8833 zawiera dwa mostki H. Może obsługiwać dwa małe silniki szczotkowe DC lub jeden bipolarny silnik krokowy. Nie ma wejść STEP i DIR: kolejność stanów ustala program mikrokontrolera. Poniższy przykład dotyczy niewielkiego silnika czteroprzewodowego, którego parametry znamy.

Moduł IMZ P264 od strony układu scalonego. Oznaczenia wyprowadzeń znajdziesz po drugiej stronie płytki.
Najpierw dobierz zasilanie i silnik
Zakres roboczy zasilania samego DRV8833 wynosi 2,7–10,8 V. To granice układu scalonego, a nie obietnica, że każdy moduł i silnik można zasilić dowolnym napięciem z tego przedziału. Sprawdź dopuszczalne napięcie płytki oraz parametry silnika. Dokumentacja Texas Instruments rozróżnia również obciążalność zależnie od obudowy i warunków cieplnych; wartość szczytowa nie jest prądem do nieprzerwanej pracy małej płytki.
Przy silniku DC uwzględnij prąd rozruchu i zatrzymanego wirnika. W silniku krokowym sprawdź dopuszczalny prąd uzwojenia. Rezystancja cewki pomaga oszacować prąd po dłuższym postoju: w uproszczeniu I ≈ U / R, jeżeli sterownik nie ogranicza prądu. Indukcyjność sprawia, że w czasie przełączania zachowanie jest bardziej złożone.
Układ DRV8833 ma regulację prądu przez wejścia AISEN i BISEN, lecz na części małych modułów są one zwarte z masą. Taka płytka nie zapewnia użytecznej nastawy prądu uzwojenia. Zabezpieczenie przeciwzwarciowe nie zastępuje prawidłowo dobranego ograniczenia prądu. Nie zakładaj obecności regulacji wyłącznie na podstawie nazwy sterownika.
Do pierwszych prób przygotuj zasilacz z ograniczeniem prądu, multimetr, przewody i mikrokontroler. Silnika nie zasilamy z GPIO. Zmiany przewodów wykonujemy przy odłączonym zasilaniu.
Co oznaczają piny na module

Ta sama płytka od strony nadruków. Czytaj oznaczenia z tej strony — po odwróceniu modułu układ lewo/prawo będzie lustrzany.
Na popularnych płytkach spotyka się poniższe skróty. Kolejność wyprowadzeń i połączenia zworek trzeba sprawdzić na swoim egzemplarzu.
| Oznaczenie | Funkcja |
|---|---|
VCC lub VM |
Zasilanie mostków i silnika |
GND |
Wspólna masa zasilacza i mikrokontrolera |
IN1, IN2 |
Sterowanie pierwszym mostkiem |
IN3, IN4 |
Sterowanie drugim mostkiem |
OUT1, OUT2 |
Silnik DC lub pierwsza cewka silnika krokowego |
OUT3, OUT4 |
Drugi silnik DC lub druga cewka |
EEP / nSLEEP |
Stan niski usypia układ; wysoki pozwala pracować |
ULT / nFAULT |
Wyjście błędu typu otwarty dren, aktywne stanem niskim |
EEP nie jest dodatkowym zasilaniem silnika, a ULT nie jest jego masą. W naszym przykładzie EEP sterujemy z wyjścia mikrokontrolera. Nie łącz go bezpośrednio z napięciem silnika tylko dlatego, że tak wygląda schemat innego modułu. Sprawdź też, czy zworka na płytce już nie wymusza jego stanu — wyjście GPIO nie powinno walczyć z istniejącym połączeniem.
Jeśli odczytujesz ULT, zastosuj podciągnięcie do napięcia logiki mikrokontrolera. Dla ESP32 będzie to 3,3 V. Po wybudzeniu sterownika trzeba odczekać czas jego uruchomienia; w przykładzie zostawiamy 5 ms.
Jeden mostek: kierunek, swobodny wybieg i hamowanie
Dla pierwszego kanału obowiązuje następująca tabela. Drugi działa analogicznie, z wejściami IN3 i IN4.
| IN1 | IN2 | Zachowanie |
|---|---|---|
| LOW | LOW | Wyjścia w wysokiej impedancji — silnik może swobodnie wybiegać |
| HIGH | LOW | Napęd w jednym kierunku |
| LOW | HIGH | Napęd w przeciwnym kierunku |
| HIGH | HIGH | Oba wyjścia nisko — hamowanie |
Do zmiany prędkości silnika DC można użyć PWM na wejściu sterującym. To odrębny krok od pierwszego testu kierunku. Nie przełączaj rozpędzonego silnika gwałtownie na przeciwne obroty: najpierw zatrzymaj go i sprawdź zachowanie zasilania oraz prądu.
Cztery przewody silnika krokowego
Przy odłączonym silniku zmierz rezystancję między przewodami. Znajdź dwie niezależne pary: przewody należące do jednej cewki mają pomiędzy sobą mierzalną rezystancję, a między cewkami nie powinno być połączenia. Nie wybieraj par według kolorów izolacji.
Pomiar wykonuj przy odłączonym silniku. Para z mierzalną rezystancją należy do jednej cewki. Kolory na rysunku służą tylko rozróżnieniu par.
Pierwszą cewkę podłącz do OUT1–OUT2, drugą do OUT3–OUT4. Oba końce cewki trafiają do mostka — żadnego nie łączymy dodatkowo z masą. Silnik pięcio- lub sześcioprzewodowy wymaga osobnego rozpoznania uzwojeń; ten przykład go nie obejmuje.
Przykładowe połączenia dla Arduino Uno lub klasycznego Nano z ATmega328P:
| Arduino | DRV8833 |
|---|---|
| D2 | IN1 |
| D3 | IN2 |
| D4 | IN3 |
| D5 | IN4 |
| D6 | EEP, jeżeli moduł umożliwia takie sterowanie |
| GND | GND |
Dodatni biegun zasilacza silnika podłącz do VM/VCC, ujemny do wspólnej masy. Powyższych numerów nie przenoś automatycznie na ESP32: wybierz GPIO właściwe dla konkretnej płytki.
Pełny krok bez biblioteki
W sekwencji pełnokrokowej zasilamy obie cewki. Każdy wiersz tabeli jest kolejnym stanem:
| Stan | IN1 | IN2 | IN3 | IN4 |
|---|---|---|---|---|
| 0 | 1 | 0 | 1 | 0 |
| 1 | 0 | 1 | 1 | 0 |
| 2 | 0 | 1 | 0 | 1 |
| 3 | 1 | 0 | 0 | 1 |
Przejście po tabeli w odwrotną stronę odwraca kierunek ruchu. Ważne jest zachowanie numeru ostatniego stanu między wywołaniami. Rozpoczynanie każdej nowej serii od arbitralnego wiersza może powodować dodatkowe szarpnięcie.
W pakiecie pod artykułem znajduje się pełny szkic. Odbiera w monitorze szeregowym f lub b, wykonuje 20 kroków w wybranym kierunku i zwalnia uzwojenia. Nie zaczyna obracać silnikiem samoczynnie po uruchomieniu. Monitor ustaw na 115200 bit/s. Początkowy odstęp 30 ms między krokami jest ustawieniem demonstracyjnym, nie deklaracją maksymalnej prędkości silnika.
Zwolnienie uzwojeń zmniejsza grzanie, ale usuwa moment trzymający. Nie używaj takiego sposobu zatrzymania w mechanizmie, w którym obciążenie może samo opaść lub przestawić wał. Sam test liczby kroków nie dowodzi dokładności pozycjonowania: bez czujnika program nie wie, czy silnik wykonał ruch.
Gdy coś nie działa
Brak ruchu i brak reakcji wyjść: sprawdź zasilanie, wspólną masę i stan EEP. Sam pomiar napięcia pojedynczego wyjścia względem masy może być mylący przy wyjściu odłączonym; istotne jest napięcie między końcami cewki i aktualny stan wejść.
Silnik drży: wróć do pomiaru par uzwojeń, sprawdź kolejność wejść i zwiększ odstęp między krokami. Zamiana końców jednej cewki zmienia orientację sekwencji; nie naprawi pary złożonej z przewodów dwóch różnych cewek.
Resetuje się mikrokontroler: sprawdź spadek napięcia przy rozruchu, połączenie mas i wydajność zasilacza. Oddzielne zasilanie silnika nie zwalnia z połączenia mas sygnałowych.
Silnik lub moduł szybko się nagrzewa: odłącz zasilanie i sprawdź prąd oraz dopasowanie obciążenia. Nie traktuj okresowego wyłączania przez zabezpieczenie termiczne jako normalnego trybu pracy.
To projekt edukacyjny do uruchamiania małych napędów DIY. Szkic poddano przeglądowi kodu; nie wykonano pomiarów ani testu z konkretnym silnikiem. Mechanizm docelowy wymaga własnej weryfikacji prądu, temperatury, zatrzymania i zabezpieczenia ruchomych części.
Sprawdzenie przykładu
Kod przeszedł kompilację Arduino CLI dla Arduino Uno, Arduino AVR Boards 1.8.8. Nie wykonano testu na sprzęcie. Przeczytaj README i dopasuj przykład do konkretnego wariantu urządzenia.

