- Tryby pracy w silniku krokowym
- Tworzenie graficznego interfejsu użytkownika MATLAB do sterowania silnikiem krokowym
- Kod MATLAB do sterowania silnikiem krokowym za pomocą Arduino
- Wymagany materiał
- Schemat obwodu
- Sterowanie silnikiem krokowym za pomocą MATLAB
Silniki krokowe to bezszczotkowy silnik prądu stałego, który obraca się w dyskretnych krokach i jest najlepszym wyborem do wielu precyzyjnych aplikacji sterowania ruchem. Ponadto silniki krokowe są dobre do pozycjonowania, regulacji prędkości i zastosowań, które wymagają wysokiego momentu obrotowego przy niskiej prędkości.
W poprzednich samouczkach MATLAB wyjaśniliśmy, jak używać MATLAB-a do sterowania silnikiem prądu stałego, serwomotorem i urządzeniami domowymi. Dziś dowiemy się, jak sterować silnikiem krokowym za pomocą MATALB i Arduino. Jeśli jesteś nowy w MATLAB-ie, zalecamy rozpoczęcie od prostego programu migania diod LED z MATLAB-em.
Tryby pracy w silniku krokowym
Zanim zaczniesz kodować silnik krokowy, powinieneś zrozumieć koncepcję pracy lub obracania silnika krokowego. Ponieważ stojan trybu krokowego jest zbudowany z różnych par cewek, każda para cewek może być wzbudzana wieloma różnymi metodami, co umożliwia sterowanie trybami w wielu różnych trybach. Poniżej przedstawiono szerokie klasyfikacje
Tryb pełnego kroku
W trybie wzbudzenia pełnego kroku możemy osiągnąć pełny obrót o 360 ° przy minimalnej liczbie obrotów (kroków). Ale to prowadzi do mniejszej bezwładności, a także obrót nie będzie płynny. Istnieją dalsze dwie klasyfikacje w wzbudzaniu pełnym krokiem, są to jeden z krokiem fazowym i dwa z fazowym.
1. Jedno wejście fazowe lub taktowanie falowe: W tym trybie tylko jeden zacisk (faza) silnika będzie zasilany w danym momencie. Ma mniejszą liczbę kroków, a zatem można osiągnąć pełny obrót o 360 °. Ponieważ liczba stopni jest mniejsza, prąd pobierany przez tę metodę jest również bardzo niski. Poniższa tabela przedstawia sekwencję taktowania fali dla 4-fazowego silnika krokowego
Krok | Faza 1 (niebieska) | Faza 2 (różowy) | Faza 3 (żółta) | Faza 4 (pomarańczowa) |
1 | 1 | 0 | 0 | 0 |
2 | 0 | 1 | 0 | 0 |
3 | 0 | 0 | 1 | 0 |
4 | 0 | 0 | 0 | 1 |
2. Dwa etapy: jak wskazuje nazwa w tej metodzie, dwie fazy będą jedną. Ma taką samą liczbę kroków jak krokowanie falowe, ale ponieważ dwie cewki są zasilane jednocześnie, może zapewnić lepszy moment obrotowy i prędkość w porównaniu z poprzednią metodą. Chociaż jedną wadą jest to, że ta metoda również zużywa więcej energii.
Krok |
Faza 1 (niebieska) |
Faza 2 (różowy) |
Faza 3 (żółta) |
Faza 4 (pomarańczowa) |
1 |
1 |
1 |
0 |
0 |
2 |
0 |
1 |
1 |
0 |
3 |
0 |
0 |
1 |
1 |
4 |
1 |
0 |
0 |
1 |
Tryb pół kroku
Tryb półkrokowy jest połączeniem jednego trybu fazy i dwufazowego włączenia. Ta kombinacja pomoże nam przezwyciężyć wyżej wymienioną wadę obu trybów.
Jak można się domyślić, ponieważ łączymy obie metody, będziemy musieli wykonać 8 kroków w tej metodzie, aby uzyskać pełny obrót. Poniżej przedstawiono sekwencję przełączania dla 4-fazowego silnika krokowego
Krok |
Faza 1 (niebieska) |
Faza 2 (różowy) |
Faza 3 (żółta) |
Faza 4 (pomarańczowa) |
1 |
1 |
0 |
0 |
0 |
2 |
1 |
1 |
0 |
0 |
3 |
0 |
1 |
0 |
0 |
4 |
0 |
1 |
1 |
0 |
5 |
0 |
0 |
1 |
1 |
6 |
0 |
0 |
0 |
1 |
7 |
1 |
0 |
0 |
1 |
8 |
1 |
0 |
0 |
0 |
Dlatego to Ty decydujesz, czy zaprogramować silnik krokowy w dowolnym trybie, ale ja wolę dwufazowy tryb krokowy z pełnym krokiem. Ponieważ metoda ta zapewnia większą prędkość niż metoda jednofazowa, aw porównaniu z trybem połowicznym część kodująca jest mniejsza z powodu mniejszej liczby kroków w metodzie dwufazowej.
Dowiedz się więcej o silnikach krokowych i ich trybach tutaj
Tworzenie graficznego interfejsu użytkownika MATLAB do sterowania silnikiem krokowym
Następnie musimy zbudować GUI (graficzny interfejs użytkownika) do sterowania silnikiem krokowym. Aby uruchomić GUI, wpisz poniższe polecenie w oknie poleceń
przewodnik
Otworzy się wyskakujące okienko, a następnie wybierz nowy pusty GUI, jak pokazano na poniższym obrazku,
Teraz wybierz dwa przyciski przełączające do obracania silnika krokowego zgodnie z ruchem wskazówek zegara i przeciwnie do ruchu wskazówek zegara, jak pokazano poniżej,
Aby zmienić rozmiar lub kształt przycisku, po prostu kliknij go, a będziesz mógł przeciągać rogi przycisku. Dwukrotne kliknięcie przycisku przełącznika pozwala zmienić kolor, ciąg i tag tego konkretnego przycisku. Dostosowaliśmy dwa przyciski, jak pokazano na poniższym obrazku.
Możesz dostosować przyciski według własnego wyboru. Teraz, kiedy to zapiszesz, kod zostanie wygenerowany w oknie edytora MATLAB-a. Aby zakodować Arduino do wykonywania dowolnego zadania związanego z projektem, zawsze musisz edytować ten wygenerowany kod. Więc poniżej zmieniliśmy kod MATLAB. Możesz dowiedzieć się więcej o oknie poleceń, oknie edytora itp. W samouczku Pierwsze kroki z MATLABem.
Kod MATLAB do sterowania silnikiem krokowym za pomocą Arduino
Pełny kod MATLAB-a do sterowania silnikiem krokowym jest podany na końcu tego projektu. Ponadto dołączamy plik GUI (.fig) i plik kodu (.m) do pobrania (kliknij prawym przyciskiem myszy link, a następnie wybierz `` Zapisz link jako… '')), za pomocą których możesz dostosować przyciski zgodnie z wymaganiami. Poniżej znajduje się kilka poprawek, które zrobiliśmy, aby obracać silnik krokowy zgodnie z ruchem wskazówek zegara i przeciwnie do ruchu wskazówek zegara za pomocą dwóch przycisków przełączających.
Skopiuj i wklej poniższy kod w linii nr. 74, aby upewnić się, że Arduino rozmawia z MATLABem za każdym razem, gdy uruchamiasz plik m.
Wyczyść wszystko; globalny a; a = arduino ();
Po przewinięciu w dół zobaczysz dwie funkcje utworzone dla obu Przycisków w GUI. Teraz napisz kod w obu funkcjach zgodnie z zadaniem, które chcesz wykonać po kliknięciu.
W funkcji przycisku Clockwise , skopiuj i wklej poniższy kod tuż przed zakończeniem funkcji, aby obrócić silnik w kierunku zgodnym z ruchem wskazówek zegara. W celu ciągłego obracania silnika krokowego w kierunku zgodnym z ruchem wskazówek zegara używamy pętli while do powtarzania dwóch kroków pełnego trybu stopniowego włączania fazy dla kierunku zgodnego z ruchem wskazówek zegara.
while get (hObject, 'Value') global a; writeDigitalPin (a, 'D8', 1); writeDigitalPin (a, 'D9', 0); writeDigitalPin (a, 'D10', 0); writeDigitalPin (a, 'D11', 1); pauza (0,0002); writeDigitalPin (a, 'D8', 0); writeDigitalPin (a, 'D9', 0); writeDigitalPin (a, 'D10', 1); writeDigitalPin (a, 'D11', 1); pauza (0,0002); writeDigitalPin (a, 'D8', 0); writeDigitalPin (a, 'D9', 1); writeDigitalPin (a, 'D10', 1); writeDigitalPin (a, 'D11', 0); pauza (0,0002); writeDigitalPin (a, 'D8', 1); writeDigitalPin (a, 'D9', 1); writeDigitalPin (a, 'D10', 0); writeDigitalPin (a, 'D11', 0); pauza (0,0002); koniec
Teraz w funkcji przycisku przeciwnie do ruchu wskazówek zegara , wklej poniższy kod na funkcji, aby obrócić silnik w kierunku przeciwnym do ruchu wskazówek zegara. W celu ciągłego obracania silnika krokowego w kierunku przeciwnym do ruchu wskazówek zegara używamy pętli while do powtarzania dwóch kroków pełnego trybu stopniowego włączania fazy w kierunku przeciwnym do ruchu wskazówek zegara.
while get (hObject, 'Value') global a; writeDigitalPin (a, 'D8', 1); writeDigitalPin (a, 'D9', 1); writeDigitalPin (a, 'D10', 0); writeDigitalPin (a, 'D11', 0); pauza (0,0002); writeDigitalPin (a, 'D8', 0); writeDigitalPin (a, 'D9', 1); writeDigitalPin (a, 'D10', 1); writeDigitalPin (a, 'D11', 0); pauza (0,0002); writeDigitalPin (a, 'D8', 0); writeDigitalPin (a, 'D9', 0); writeDigitalPin (a, 'D10', 1); writeDigitalPin (a, 'D11', 1); pauza (0,0002); writeDigitalPin (a, 'D8', 1); writeDigitalPin (a, 'D9', 0); writeDigitalPin (a, 'D10', 0); writeDigitalPin (a, 'D11', 1); pauza (0,0002); koniec
Wymagany materiał
- Zainstalowany laptop MATLAB (preferencja: wersje R2016a lub nowsze)
- Arduino UNO
- Silnik krokowy (28BYJ-48, 5VDC)
- ULN2003 - Sterownik silnika krokowego
Schemat obwodu
Sterowanie silnikiem krokowym za pomocą MATLAB
Po skonfigurowaniu sprzętu zgodnie ze schematem obwodu, wystarczy kliknąć przycisk Uruchom, aby uruchomić edytowany kod w pliku.m
MATLAB może odpowiedzieć przez kilka sekund, nie klikaj żadnych przycisków GUI, dopóki MATLAB nie wyświetli komunikatu zajętości w dolnej części lewego rogu, jak pokazano poniżej,
Kiedy wszystko będzie gotowe, kliknij przycisk w prawo lub w lewo, aby obrócić silnik. Ponieważ używamy przycisku przełączania, silnik krokowy będzie stale poruszał się w kierunku zgodnym z ruchem wskazówek zegara, dopóki ponownie nie naciśniemy przycisku. Podobnie, po naciśnięciu przycisku przełączającego w kierunku przeciwnym do ruchu wskazówek zegara silnik zaczyna się obracać w kierunku przeciwnym do ruchu wskazówek zegara, aż do ponownego naciśnięcia przycisku.