Spisu treści:

Arduino: Precision Lib dla silnika krokowego: 19 kroków
Arduino: Precision Lib dla silnika krokowego: 19 kroków

Wideo: Arduino: Precision Lib dla silnika krokowego: 19 kroków

Wideo: Arduino: Precision Lib dla silnika krokowego: 19 kroków
Wideo: Jak podłączyć silnik krokowy do Arduino i sterować nim 28BYJ-48 ze sterownikiem ULN2003 2024, Listopad
Anonim
Image
Image
Zmienne globalne
Zmienne globalne

Dzisiaj pokażę Wam bibliotekę dla sterownika silnika krokowego z wyłącznikami krańcowymi oraz ruchu silnika z przyspieszeniem i mikrokrokiem. Ta Lib, która działa zarówno na Arduino Uno, jak i na Arduino Mega, pozwala na przesuwanie silników nie tylko na podstawie liczby kroków, ale także milimetrów. I jest też całkiem dokładny.

Ważną cechą tej biblioteki jest to, że pozwala na zbudowanie własnej maszyny CNC, która niekoniecznie jest tylko X,Y, ale też np. wyłącznikiem sekcji, bo to nie jest gotowy GRBL, a raczej programowanie, które pozwala stworzyć idealną maszynę dla Ciebie.

Jednak poniższe stwierdzenie jest ważnym szczegółem! Ten film jest przeznaczony tylko dla tych, którzy są już przyzwyczajeni do programowania. Jeśli nie znasz programowania Arduino, powinieneś najpierw obejrzeć inne filmy wprowadzające na moim kanale. Dzieje się tak, ponieważ omawiam zaawansowany temat w tym konkretnym filmie i wyjaśniam bardziej szczegółowo Lib użyte w filmie: Silnik krokowy z przyspieszeniem i końcem skoku.

Krok 1: Biblioteka StepDriver

Ta biblioteka obejmuje trzy najpopularniejsze typy sterowników na rynku: A4988, DRV8825 i TB6600. Konfiguruje piny sterowników, umożliwiając im resetowanie i wprowadzanie w tryb uśpienia, a także aktywację i dezaktywację wyjść silnika działających na pin Enable. Ustawia również wejścia pinów mikrokrokowych sterownika oraz ogranicza przełączniki i ich poziom aktywacji (wysoki lub niski). Posiada również kod ruchu silnika z ciągłym przyspieszeniem w mm/s², maksymalną prędkością w mm/s i minimalną prędkością w mm/s.

Dla tych, którzy oglądali części 1 i 2 filmu Step Motor with Acceleration i End of Stroke, pobierz tę nową bibliotekę dostępną już dziś, ponieważ wprowadziłem pewne zmiany w tym pierwszym pliku, aby ułatwić jego użytkowanie.

Krok 2: Zmienne globalne

Pokazuję dokładnie, do czego służy każda ze zmiennych globalnych.

Krok 3: Funkcje - ustawianie kołków sterownika

Funkcje - Ustawianie kołków sterownika
Funkcje - Ustawianie kołków sterownika

Tutaj opisuję kilka metod.

Ustawiłem ustawienie Pinout i piny Arduino jako wyjście.

Krok 4: Funkcje - podstawowe funkcje sterownika

Funkcje - podstawowe funkcje sterownika
Funkcje - podstawowe funkcje sterownika

W tej części zajmujemy się konfiguracją sterownika i jego podstawowymi funkcjami.

Krok 5: Funkcje - Ustawienie kroku silnika

Funkcje - Ustawienie kroku silnika
Funkcje - Ustawienie kroku silnika
Funkcje - Ustawienie kroku silnika
Funkcje - Ustawienie kroku silnika

W tym kroku kodu konfigurujemy ilość kroków na milimetr, jaką musi wykonać silnik.

Krok 6: Funkcje - ustawianie trybu kroku silnika

Funkcje - ustawianie trybu kroku silnika
Funkcje - ustawianie trybu kroku silnika
Funkcje - ustawianie trybu kroku silnika
Funkcje - ustawianie trybu kroku silnika
Funkcje - ustawianie trybu kroku silnika
Funkcje - ustawianie trybu kroku silnika

Ta tabela pokazuje ustawienia dla trybu krokowego silnika. Oto kilka przykładów.

Krok 7: Funkcje – Ustawianie wyłączników krańcowych

Funkcje - Ustawianie wyłączników krańcowych
Funkcje - Ustawianie wyłączników krańcowych

Tutaj muszę przeczytać całość i wartości logiczne. Konieczne jest ustawienie, czy aktywny klawisz jest w górę czy w dół, podczas ustawiania maksymalnego i minimalnego końca sworznia.

Krok 8: Funkcje - Odczyt wyłączników krańcowych

Funkcje - Odczyt wyłączników krańcowych
Funkcje - Odczyt wyłączników krańcowych
Funkcje - Odczyt wyłączników krańcowych
Funkcje - Odczyt wyłączników krańcowych
Funkcje - Odczyt wyłączników krańcowych
Funkcje - Odczyt wyłączników krańcowych

Ta część różni się od tej w Lib, którą udostępniłem w zeszłym tygodniu. Dlaczego to zmieniłem? Cóż, stworzyłem eRead, aby zastąpić kilka innych. Tutaj eRead odczyta LVL, digitalRead (pin) i zwróci TRUE. Wszystko to musi być wykonane na wysokim poziomie. Poniższa praca z aktywnym kluczem będzie na niskim poziomie. Użyję go tutaj, aby pokazać tabelę „Prawda”.

Na obrazie kodu umieściłem diagram, który pomoże w zrozumieniu, że w tej części kodu źródłowego zmierzam w kierunku Rosnąco i nie nacisnąłem jeszcze klawisza końca kursu.

Teraz na tym obrazie os kod bool DRV8825, pokazuję silnik wciąż poruszający się w kierunku rosnącym. Aktywował się jednak maksymalny wyłącznik krańcowy. Mechanizm musi więc zatrzymać ruch.

Na koniec pokazuję ten sam ruch, ale w przeciwnym kierunku.

Tutaj masz już aktywowany przełącznik końca kursu.

Krok 9: Funkcje - Konfiguracja ruchu

Funkcje - Konfiguracja ruchu
Funkcje - Konfiguracja ruchu

Głównym zastosowaniem metody motionConfig jest zamiana milimetrów na sekundę (miara stosowana w maszynach CNC) na kroki, aby sprostać sterownikowi silnika krokowego. Dlatego w tej części tworzę instancję zmiennych, aby zrozumieć kroki, a nie milimetry.

Krok 10: Funkcje - funkcja ruchu

Funkcje-funkcja ruchu
Funkcje-funkcja ruchu

W tym kroku traktujemy polecenie, które przesuwa krok w żądanym kierunku w okresie w mikrosekundach. Ustawiamy również pin kierunkowy sterownika, czas opóźnienia oraz kierunek wyłączników krańcowych.

Krok 11: Funkcje – Funkcja ruchu – Zmienne

Funkcje - Funkcja ruchu - Zmienne
Funkcje - Funkcja ruchu - Zmienne

W tej części konfigurujemy wszystkie zmienne, które dotyczą m.in. okresów maksymalnej i minimalnej prędkości, odległości trajektorii oraz kroków niezbędnych do przerwania trajektorii.

Krok 12: Funkcje - Funkcja ruchu - Przyspieszenie

Funkcje - Funkcja ruchu - Przyspieszenie
Funkcje - Funkcja ruchu - Przyspieszenie
Funkcje - Funkcja ruchu - Przyspieszenie
Funkcje - Funkcja ruchu - Przyspieszenie

Tutaj przedstawię kilka szczegółów na temat tego, w jaki sposób dotarliśmy do danych przyspieszenia, które obliczono za pomocą równania Torricellego, ponieważ uwzględnia ono przestrzenie do pracy z przyspieszeniem, a nie czas. Ale ważne jest, aby zrozumieć, że całe to równanie dotyczy tylko jednej linii kodu.

Zidentyfikowaliśmy trapez na powyższym obrazku, ponieważ początkowe obroty są złe dla większości silników krokowych. To samo dzieje się ze zwalnianiem. Z tego powodu wizualizujemy trapez w okresie między przyspieszaniem a zwalnianiem.

Krok 13: Funkcje - Funkcja ruchu - Prędkość ciągła

Funkcje - Funkcja ruchu - Prędkość ciągła
Funkcje - Funkcja ruchu - Prędkość ciągła
Funkcje - Funkcja ruchu - Prędkość ciągła
Funkcje - Funkcja ruchu - Prędkość ciągła

Tutaj zachowujemy liczbę kroków użytych do przyspieszenia, kontynuujemy z ciągłą prędkością i utrzymujemy prędkość maksymalną, co widać na poniższym obrazku.

Krok 14: Funkcje – Funkcja ruchu – Zwalnianie

Funkcje - Funkcja ruchu - Zwalnianie
Funkcje - Funkcja ruchu - Zwalnianie
Funkcje - Funkcja ruchu - Zwalnianie
Funkcje - Funkcja ruchu - Zwalnianie

Tutaj mamy kolejne równanie, tym razem z ujemną wartością przyspieszenia. Jest również wyświetlany w wierszu kodu, który przedstawia na poniższym obrazku prostokąt oznaczony jako Zwolnienie.

Krok 15: Funkcje - Funkcja ruchu - Prędkość ciągła

Funkcje - Funkcja ruchu - Prędkość ciągła
Funkcje - Funkcja ruchu - Prędkość ciągła
Funkcje - Funkcja ruchu - Prędkość ciągła
Funkcje - Funkcja ruchu - Prędkość ciągła

Wracamy do ciągłej prędkości, aby przepracować drugą połowę trajektorii, jak widać poniżej.

Krok 16: Funkcje - Funkcja przesuwania - Przesuwanie zakrętów

Funkcje - funkcja ruchu - ruch obrotowy
Funkcje - funkcja ruchu - ruch obrotowy

W tej części przesuwamy silnik o określoną liczbę obrotów w pożądanym kierunku, przeliczając liczbę obrotów na milimetry. Na koniec przesuwamy silnik w żądanym kierunku.

Krok 17: Wykres ruchomy - prędkość pozycji

Wykres ruchomy - prędkość pozycji
Wykres ruchomy - prędkość pozycji

Na tym wykresie mam dane, które zostały wyodrębnione z równania, którego użyliśmy w części Akceleracja. Wziąłem wartości i grałem na serialu Arduino i przeszedłem od tego do Excela, co zaowocowało tą tabelą. Ta tabela pokazuje postęp kroku.

Krok 18: Wykres ruchomy - Pozycja vs. Pozycja

Wykres ruchomy - pozycja vs. Pozycja
Wykres ruchomy - pozycja vs. Pozycja

Tutaj bierzemy pozycję w krokach oraz prędkość i konwertujemy ją na okres w mikrosekundach. Zauważmy w tym kroku, że okres jest odwrotnie proporcjonalny do prędkości.

Krok 19: Wykres ruchomy – prędkość vs. Za chwilę

Wykres ruchomy - prędkość vs. Za chwilę
Wykres ruchomy - prędkość vs. Za chwilę

Wreszcie mamy prędkość jako funkcję chwili iz tego powodu mamy linię prostą, ponieważ jest to prędkość jako funkcja czasu.

Zalecana: