- sterowanie jednym bipolarnym silnikiem krokowym,
- pięć funkcji: praca od krańcówki do krańcówki, od krańcówki do krańcówki i z powrotem, praca cykliczna w jedną i drugą stronę, ręczne sterowanie w jedną stronę, ręczne sterowanie w drugą stronę,
- płynna regulacja szybkości obrotowej potencjometrem,
- możliwość czterokrotnego spowolnienia szybkości obrotowej silnika,
- pięć rodzajów sterowania ruchem: pełne kroki, 1/2 kroku, 1/4 kroku, 1/8 kroku lub 1/16 kroku,
- częstotliwość impulsów taktujących pracę silnika 7,6...3900 Hz lub 1,9...975 Hz w trybie spowolnionym,
- sygnalizacja kierunku obracania się wału silnika,
- współpraca z dwoma wyłącznikami krańcowymi typu NO (normalnie otwarte),
- zasilanie napięciem 9...32 V,
- pobór prądu od 10 mA (w stanie spoczynku),
- prąd uzwojeń ustalany potencjometrem.
Silniki krokowe są niezwykle użyteczne pod tym względem, że ich szybkość obrotową da się regulować w szerokim zakresie, co więcej – cały czas utrzymują stały moment obrotowy oraz moment trzymania. Ich użycie jednak nie jest tak proste, jak ma to miejsce w przypadku silników prądu stałego, bowiem wymagają zarówno nadzorowania prądu płynącego przez ich cewki, jak też cyklicznej zmiany jego kierunku. Na szczęście mamy na rynku gotowe (i niedrogie!) moduły, które potrafią wykonać za nas większość owej niewygodnej pracy.
Sęk w tym, że wspomniane moduły również wymagają sterowania, co z kolei wymusza użycie mikrokontrolera… Zaprezentowane w niniejszym artykule urządzenie ma właśnie charakter układu sterującego, umożliwiającego wysterowanie bipolarnego silnika krokowego silnika tak, by wykonywał proste ruchy: w jedną stronę, w jedną i drugą stronę, naprzemienny ruch od końca do końca lub sterowanie w trybie ręcznym – to wszystko potrafi niniejszy układ. Zapraszam do lektury!
Budowa
Schemat ideowy urządzenia znajduje się na rysunku 1. Głównym podzespołem zawiadującym jego pracą jest mikrokontroler typu ATmega8A-PU z 8-bitowym rdzeniem AVR (taktowanym sygnałem o częstotliwości 4 MHz, dla którego wzorcem jest zewnętrzny rezonator kwarcowy). Wbudowany w mikrokontroler generator wzbudza drgania kryształu kwarcu Q1, przez co układ może generować sygnał taktujący silnikiem z wysoką stabilnością w dziedzinie częstotliwości. Pamięć Flash mikrokontrolera można zaprogramować po wyjęciu go z podstawki lub poprzez złącze J6.
Drugi podzespół, nie mniej istotny, jest podłączany do płytki poprzez wciśnięcie go w zaciski złączy J1 i J2. To gotowy moduł typu stepstick z układem A4988 od Allegro MicroSystems. Na niewielkiej płytce, którą można zobaczyć na fotografii 1, znajduje się sam układ scalony oraz niezbędne elementy bierne.
Wśród nich wspomnieć należy również o potencjometrze ustalającym średni prąd cewek silnika, który to parametr ma wpływ zarówno na pobór prądu przez cały układ, jak i na moment trzymający silnika.
Układ wyprowadzeń modułu zaprezentowany został na rysunku 2.
Do niewielkiej płytki trzeba doprowadzić zasilanie części cyfrowej (VDD: 3...5,5 V), zasilanie silnika (VMOT: 8...35 V) oraz sygnały sterujące, takie jak:
- aktywowanie niskim stanem logicznym (ENABLE),
- rodzaj pracy silnika: pełnokrokowa, półkrokowa itd. (MS1, MS2, MS3),
- zerowanie niskim stanem logicznym (RESET),
- uśpienie modułu niskim stanem logicznym (SLEEP),
- taktowanie kolejnych kroków napędu (STEP),
- ustalenie kierunku ruchu wału silnika (DIR).
Sam silnik podłącza się do wyprowadzeń 1A i 1B (pierwsza cewka) oraz 2A i 2B (druga cewka). Nie trzeba przy tym pamiętać o zewnętrznych diodach zabezpieczających albo o elementach kontrolujących prąd uzwojeń, ponieważ wszystkie te podzespoły są już zawarte na płytce modułu oraz w samym układzie A4988. Z tego powodu jego zastosowanie bardzo upraszcza realizację urządzenia. Również wbudowane w strukturę A4988 zabezpieczenia – takie jak ochrona przed zwarciem do masy lub przegrzaniem – podnoszą walory użytkowe modułu stepstick. Sam silnik można podłączyć do złącza J3 (typu goldpin) lub do złączy J4 i J5, które są śrubowymi listwami zaciskowymi.
W tym układzie mikrokontroler generuje trzy sygnały sterujące: ENABLE, STEP i DIR. Linii SLEEP i RESET nie używa się – zostały połączone razem, ponieważ ich stan logiczny powinien być w tym wypadku wysoki. Warto jednak zauważyć, że RESET nie ma wbudowanego rezystora podciągającego, natomiast SLEEP już ma, więc jeden rezystor podciąga oba wejścia – ot, cała zagadka dotycząca opisywanego połączenia.
Do regulacji szybkości obrotowej silnika służy zewnętrzny potencjometr liniowy, którego wyprowadzenia należy podłączyć do zacisków złącza J7. Ten element pracuje jako dzielnik napięcia zasilającego część cyfrową układu, toteż mikrokontroler – przy użyciu wbudowanego weń przetwornika analogowo-cyfrowego, którego napięciem referencyjnym również jest napięcie zasilające – mierzy sygnał wyjściowy pojawiający się na ślizgaczu potencjometru. Aby jednak odfiltrować znaczną część zakłóceń oraz zawęzić pasmo szumowe do minimum, do projektu włączono po drodze dwuczłonowy pasywny filtr dolnoprzepustowy typu RCRC. Dzięki temu napięcie trafiające na wejście przetwornika ma zdecydowanie mniejszą zawartość niepożądanej składowej zmiennej. Ponadto filtr taki stanowi również ochronę przed wyładowaniami elektrostatycznymi, ponieważ zwiększa czas narastania napięcia na diodach zabezpieczających wyprowadzenie mikrokontrolera, dając im czas na otwarcie się, jak również zmniejsza natężenie płynącego przez nie prądu.
Do zacisków złącza J8 należy podłączyć wyłączniki krańcowe, których sygnały wyjściowe będą ograniczały zakres ruchu osi sterowanego silnika krokowego. Powinny to być wyłączniki o stykach typu NO – normalnie otwarte. Rezystory R3 i R4 wymuszają wysoki stan logiczny na wejściach mikrokontrolera poprzez podciąganie rozwartego zestyku do potencjału +5 V. Relatywnie niewielka rezystancja tychże rezystorów wymusza przepływ prądu o stosunkowo wysokim natężeniu (około 5 mA) przez zwarte styki wyłączników krańcowych, lecz jest to zabieg celowy. W ten sposób układ staje się mniej wrażliwy na zaburzenia indukujące się nawet w długich przewodach połączeniowych pomiędzy zaciskami złącza J8 a wyłącznikami, ponieważ rezystancja obciążająca te przewody jest niska. Aby jednak opisane zakłócenia nie uszkodziły mikrokontrolera, w projekcie uwzględniono rezystory R5 i R6, które – podobnie jak opisany w poprzednim akapicie filtr RC – zwiększają czas narastania napięcia na diodach zabezpieczających wejścia oraz limitują natężenie prądu przez nie płynącego. Nie ma tutaj jednak intencjonalnie wprowadzonych filtrów RC, ponieważ wprowadzałyby one opóźnienie w reakcji układu na zwarcie styków wyłączników krańcowych, a ta powinna być jak najszybsza. Jedyne opóźnienie, które ma pomijalną wartość, wprowadzają pojemności pasożytnicze.
Układ A4988, znajdujący się w module sterującym silnikiem krokowym, ma możliwość wyboru jednego z pięciu rodzajów sterowania silnika – a dokładniej liczby kroków, wykonywanych przez silnik na każdy takt sygnału sterującego. Do ustalenia pożądanej wartości służy przełącznik typu DIP-Switch.
Rezystory R7…R9 ustalają domyślnie niskie stany logiczne na omówionych wcześniej wejściach MS1…MS3, zaś załączenie sekcji przełącznika powoduje wymuszenie wysokiego stanu logicznego.
Użytkownik steruje układem poprzez sześć przycisków monostabilnych S1…S6. Do ustalenia wysokiego stanu logicznego na ich stykach w stanie rozwarcia służą nie tylko rezystory wbudowane w mikrokontroler, lecz również zewnętrzne, zawarte w drabince rezystorowej RN1. Rozwiązanie tego typu redukuje wrażliwość układu na zewnętrzne zakłócenia elektromagnetyczne poprzez zmniejszenie rezystancji obciążającej każdy ze styków. Układ może zatem działać poprawnie, nawet gdyby przyciski sterujące były dołączone do płytki na przewodach.
Diody LED1…LED8 obrazują użytkownikowi, co w danej chwili dzieje się z układem. Prąd każdej z nich jest ograniczony przez indywidualny rezystor do wartości około 10 mA, co zapewnia wyraźne świecenie przy relatywnie niewielkim poborze prądu. Napięcia 5 V do części cyfrowej wspomnianego układu dostarcza zwykły stabilizator liniowy typu 7805. Pobór prądu przez układ jest niewielki, więc nawet przy wysokim napięciu zasilającym moc strat w nim nie będzie uzasadniała zastąpienia go przetwornicą impulsową. Dioda D1 zabezpiecza układ przed zniszczeniem w razie pomyłkowej zamiany biegunów napięcia zasilającego. Kondensator C13, który ma znaczną pojemność, chroni część cyfrową układu przed chwilowymi zanikami napięcia, jakie mogą mieć miejsce w momencie przełączania uzwojeń silnika, czyli kiedy pobór prądu przez sterownik jest wyższy niż w stanie ustalonym.
Montaż i uruchomienie
Układ został zmontowany na dwustronnej płytce drukowanej o wymiarach 90 mm × 100 mm. Jej wzór ścieżek oraz schemat montażowy pokazuje rysunek 3.
Montaż proponuję rozpocząć od elementów o najmniejszej wysokości obudowy, czyli rezystorów, znajdujących się na spodniej (Bottom) stronie płytki. Pozostałe elementy, które są umieszczone na tej samej stronie laminatu, można montować według wysokości ich obudowy. Pod układ scalony US1 proponuję zastosować podstawkę, aby ułatwić jego wymianę w razie uszkodzenia. Stabilizator US2 nie wymaga dodatkowego radiatora. Na drugiej stronie płytki (Top) jest miejsce dla przycisków monostabilnych S1…S6 oraz diod świecących LED1…LED8. Po wlutowaniu wszystkich podzespołów i sprawdzeniu poprawności montażu w złącza J1 i J2 można włożyć moduł z układem A4988. Polecam przy tym kierować się opisem na płytce drukowanej, który wskazuje wyprowadzenie ENABLE – na spodzie laminatu modułu A4988 można odnaleźć opisy nóżek. Odwrotne włożenie modułu może poskutkować jego zniszczeniem, dlatego kwestia ta jest szczególnie istotna. Zmontowany układ na stronie wierzchniej widać na fotografii tytułowej, z kolei tę samą płytkę od strony spodniej można zobaczyć na fotografii 2.
Na etapie uruchamiania konieczne jest zaprogramowanie pamięci Flash mikrokontrolera dostarczonym wsadem oraz zmiana jego bitów zabezpieczających. Oto ich nowe wartości:
High Fuse = 0xD9
Szczegóły są widoczne na rysunku 4, na którym pokazano okno konfiguracji tychże bitów z poziomu programu BitBurner. W ten sposób zostanie uruchomiony wbudowany generator do rezonatorów kwarcowych o średniej częstotliwości oraz Brown-Out Detector, który wprowadzi mikrokontroler w stan zerowania, jeżeli jego napięcie zasilające spadnie poniżej 4 V. Zaprezentowana konstrukcja znacznie zmniejsza ryzyko zawieszenia się mikrokontrolera podczas uruchamiania.
Poprawnie zaprogramowany układ jest gotowy do działania po podłączeniu zasilania do zacisków złącza J9. Powinno to być napięcie stałe, dobrze filtrowane, lecz niekoniecznie stabilizowane. Jego wartość powinna wynosić 9...32 V z uwagi na graniczne warunki pracy stabilizatora US2 i modułu A4988 oraz wytrzymałość kondensatorów elektrolitycznych. Pobór prądu z tego źródła silnie zależy od stanu pracy układu oraz ustawionego potencjometrem montażowym (na płytce modułu) prądu uzwojeń silnika. W stanie spoczynku pobór prądu wynosi około 10 mA. Układ A4988 pozwala ustawić prąd do 2 A na każdą z cewek silnika, lecz powyżej 1 A jest wymagany radiator. Do podłączenia silnika można zastosować złącza śrubowe J4 i J5, jak również złącze typu goldpin J3 – nie ma to znaczenia dla układu. Kierunek podłączenia uzwojeń trzeba dobrać doświadczalnie.
Do płytki należy podłączyć silnik krokowy, potencjometr ustalający szybkość obrotową oraz wyłączniki krańcowe. Schemat połączeń widoczny jest na rysunku 5. Potencjometr może mieć rezystancję ścieżki oporowej 10 kΩ, lecz nie jest to wymóg – jakakolwiek wartość z przedziału od kilku do kilkudziesięciu kiloomów będzie się tutaj nadawała. Przełączniki krańcowe muszą być zdolne do przewodzenia prądu o natężeniu 5 mA, zaś spadek napięcia na nich (w stanie zwarcia) nie powinien przekraczać wartości 1 V, w przeciwnym razie mikrokontroler będzie miał problem ze zinterpretowaniem tego stanu jako logiczne „0”. Uwaga ta w większym stopniu dotyczy wyłączników mających fototranzystory, których napięcie nasycenia może wynosić setki miliwoltów. W przypadku elementów stykowych to zagadnienie jest nieistotne.
Siedem otworów o średnicy 3,2 mm każdy umożliwia stabilne i pewne przymocowanie laminatu. Cztery otwory są zlokalizowane w rogach, w odległości 3 mm od krawędzi laminatu, dodatkowo dwa znajdują się na środku jej dłuższych krawędzi i jeden na środku krótszej krawędzi, nieopodal przycisków.
Na rysunku 6 pokazane jest rozmieszczenie sześciu przycisków monostabilnych i ośmiu diod elektroluminescencyjnych (są one ułożone w siatce o rastrze 15 mm). Dzięki tym informacjom można precyzyjnie wyciąć otwory w obudowie pod poszczególne elementy.
Eksploatacja
Po załączeniu zasilania układ znajduje się w stanie spoczynku: silnik nie obraca się, wszystkie diody LED są wyłączone. Jedynie dioda SLOW może się świecić, ponieważ jej stan jest odczytywany z nieulotnej pamięci EEPROM. Jeżeli się świeci, sterownik pracuje w trybie spowolnionym, czyli impulsy taktujące sterownik silnika będą generowane czterokrotnie wolniej. Wyłączenie tej diody oznacza powrót do pracy z normalną szybkością obrotową silnika. Zmiana odbywa się za pomocą przycisku SLOW (S6).
Załączenie silnika następuje po wciśnięciu jednego z pięciu przycisków S1…S5. Realizowane funkcje zostały zestawione w tabeli 1. Warto pamiętać, że przy każdym wciśnięciu przycisku, odpowiadającego funkcji A, B lub C, następuje zmiana kierunku ruchu silnika względem jego poprzedniego stanu.
Funkcje D i E zawsze działają w tę samą stronę.
Układ nie ma limitu czasowego na wykonywany ruch – funkcje A i B będą się realizowały tak długo, aż zostaną zwarte wyłączniki krańcowe. Można je wcześniej wyłączyć poprzez wciśnięcie ponownie tego samego przycisku. Z kolei funkcja C będzie działać w nieskończoność, ją również można wyłączyć poprzez ponowne wciśnięcie przycisku S3. Funkcje D i E ustają natychmiast po zwolnieniu przycisku lub zwarciu odpowiedniego wyłącznika krańcowego. Diody LED1…LED5 sygnalizują działanie odpowiedniej funkcji, z kolei LED6 i LED7 – kierunek obrotów silnika.
W celu uniknięcia nadmiernego poboru mocy przez układ rekomenduję ustawienie możliwie niskiego prądu uzwojeń silnika. Układ A4988 nie będzie się wówczas przegrzewał, być może nawet nie będzie wymagał naklejenia radiatora. Warto również skonfigurować, zgodnie z tabelą 2, pożądany rodzaj pracy silnika. Im drobniejsze kroki wykonuje, tym płynniejsza wydaje się jego praca, lecz jednocześnie z tym mniejszą szybkością może się on obracać.
Michał Kurzela, EP
- R1, R2, R5…R9: 10 kΩ
- R3, R4: 1 kΩ
- R10…R17: 330 Ω
- RN1: 8 × 10 kΩ SIL9
- C1, C5, C16: 100 μF 16 V, raster 2,5 mm
- C2, C3, C6…C8, C11, C12, C14, C15: 100 nF, raster 5 mm MKT
- C4: 220 μF 35 V, raster 3,5 mm
- C9, C10: 15 pF, raster 5 mm, monolityczne
- C13: 1000 μF 35 V, raster 5 mm
- D1: 1N5822
- LED1…LED8: czerwona 5 mm np. LED F5 R
- US1: ATmega8A-PU DIP28
- US2: 7805 TO220
- J1, J2: goldpin 8 pin żeński 2,54 mm THT
- J3: goldpin 4 pin męski 2,54 mm THT
- J4, J5, J9: ARK2/500
- J6: goldpin 5 pin męski 2,54 mm THT
- J7, J8: ARK3/500
- Q1: 4 MHz niski THT
- S1…S6: microswitch 12×12 9 mm np. TS12-130
- SW1: DIP-Switch 3 sekcje THT np. DIP SWITCH03
- Jedna podstawka DIP28 wąska
- Potencjometr 10 kΩ liniowy jednoobrotowy na panel, np. P10K/B CT16 (opis w tekście)
- Moduł stepstick z układem A4988 np. ARD-6332 (opis w tekście)
- Silnik krokowy bipolarny
- Dwa wyłączniki krańcowe NO (opis w tekście)