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ł sterownika DRV8833 z galerii IMZ P264

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

Tył modułu DRV8833 z oznaczeniami IN1–IN4, VCC, GND, OUT1–OUT4, EEP i ULT

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.

Rozpoznawanie dwóch par przewodów silnika krokowego za pomocą pomiaru rezystancji

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.

Schemat funkcjonalny dwóch mostków i dwóch cewek

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.