How To Control a Track Linear Actuator with Arduino

Jak sterować siłownikiem liniowym typu Track za pomocą Arduino

Adam Morissette
Adam Morissette
PA Engineer

PA-18 Track Linear Actuator to nasz największy siłownik o stałej długości i jest powszechnie używany w meblach na zamówienie, automatyce domowej i robotyce. Siłownikiem można łatwo sterować za pomocą płytki Arduino, a ten artykuł pokaże, jak zbudować i zaprogramować siłownik liniowy sterowany przez Arduino, który można łatwo dostosować do swojego zastosowania!

 

Wymagany sprzęt

Następujące elementy są wymagane do siłownika liniowego sterowanego przez Arduino; wszystkie można kupić w Progressive Automations:

 

Okablowanie systemu

Siłownik użyty w tym układzie wymaga napięcia wejściowego 12 V DC i do 8 A prądu przy pełnym obciążeniu. Wartości te są znacznie wyższe niż to, co mikrokontroler Arduino jest w stanie dostarczyć, i mogą spowodować pojawienie się „magicznego dymu” z Arduino. Aby uniknąć uszkodzenia Arduino, zastosowano mostek H MegaMoto Plus. Mostek H poradzi sobie z wymaganiami zasilania i może być łatwo użyty do sterowania siłownikiem za pomocą Arduino.  

W tym systemie są połączenia z Arduino do mostka H MegaMoto Plus oraz do dwóch przycisków. Każdy przycisk wymaga jednego wejścia, wybranego z dostępnych pinów GPIO Arduino. Mostek H ma cztery połączenia z Arduino: trzy wyjścia i jedno wejście. Piny używane przez mostek H są wstępnie przypisane i nie można ich zmienić.

 

Schemat blokowy

Poniższy schemat blokowy krótko wyjaśnia wymagania zasilania i połączenia. Arduino działa z zasilania 5 V, a mostek H z 12 V. Jeśli używasz dwóch oddzielnych zasilaczy, ważne jest, aby miały wspólną masę, aby uniknąć sytuacji „pływającej” masy.

 

Block diagram

 

Polecenia Arduino

Musisz zainstalować Arduino IDE na komputerze stacjonarnym lub laptopie. Pamiętaj, że okablowanie systemu będzie miało wpływ na kod Arduino. Dlatego ważne jest, aby dokładnie sprawdzić połączenia i porównać je z wprowadzonym kodem.

Polecenie pinMode w Arduino służy do definiowania pinów jako wejść lub wyjść. Aby zmienić sygnał wysyłany przez Arduino na konkretny pin, używa się poleceń digitalWrite i analogWrite. Dodatkowo polecenia digitalRead i analogRead są używane, gdy Arduino musi sprawdzić sygnał na określonym pinie.

W programie poniżej polecenie digitalWrite służy do włączania lub wyłączania mostka H oraz do konfiguracji pinów używanych dla przycisków. Polecenie analogWrite służy do ustawienia wartości sygnału PWM w zakresie od 0 do 255 podawanego na mostek H. Polecenie digitalRead jest używane do sprawdzenia, czy przyciski zostały wciśnięte lub zwolnione. Polecenie analogRead służy do pomiaru poboru prądu przez silnik siłownika, co potwierdzi, kiedy siłownik znajduje się na końcu swojego skoku.

 

Kod Arduino

Poniższa sekcja prowadzi przez definicje programu, konfigurację (setup), pętlę główną (main loop) oraz funkcje obsługi przycisków dla siłownika liniowego sterowanego przez Arduino. Ważne jest, aby przejść przez kod linia po linii, aby zrozumieć, jak działa. To zrozumienie pozwoli ci wprowadzać modyfikacje zależnie od twojego zastosowania.

Definicje programu

Ta część kodu to konfiguracja połączeń pinów. Dokładnie sprawdź, czy twoje połączenia z płytką Arduino odpowiadają podanym numerom. Wartości te można zmienić, jeśli do Arduino podłączasz dodatkowe komponenty, co może wymagać przesunięcia połączeń pinów.

Arduino code

Konfiguracja programu

Ta część kodu konfiguruje podłączone piny jako wejścia lub wyjścia. Dwa przyciski mogą być ustawione na HIGH lub LOW w zależności od tego, jak zostały podłączone (pull-up lub pull-down). Chociaż Arduino ma wewnętrzne rezystory podciągające, możesz dodać zewnętrzny rezystor do eliminacji drgań styków (debounce), aby zapobiec fałszywemu wyzwalaniu.

Arduino code #2

Pętla główna

Pętla główna stale sprawdza, czy przyciski zostały wciśnięte, i uruchamia odpowiednią część kodu w zależności od wyniku funkcji obsługi przycisków. Uwzględniono sekcję automatu stanów, aby określić, co robi siłownik liniowy sterowany przez Arduino i jak powinien reagować na wejścia (np. przyciski).

Arduino code #3
Arduino code #4

 

Funkcje obsługi przycisków

Te funkcje cyfrowo odczytują stan przycisków, aby sterować siłownikiem za pomocą Arduino. Każda funkcja obsługi przycisków ma pętlę eliminującą drgania styków w głównym warunku if, aby zapobiec fałszywemu wyzwalaniu i wysyłaniu błędnego sygnału do Arduino. Wynikiem działania tych funkcji jest wartość boolowska (Boolean). Na przykład, jeśli naciśnięto przycisk start, wartość startButton zmieni się na true. Ta wartość boolowska jest następnie używana w pętli głównej do podejmowania dalszych decyzji.    

Arduino code #5

 

Na zakończenie

Możliwości tego systemu wykraczają poza to, co pokazano w tym artykule. Mikrokontroler Arduino i mostek H MegaMoto Plus można wykorzystać do implementacji znacznie bardziej złożonych algorytmów sterowania. Ten układ umożliwia regulację prędkości, korzystając z polecenia analogWrite do ustawiania sygnału PWM. Można monitorować prąd silnika siłownika i wykorzystać go do wykrywania obciążenia, aby wyzwalać dodatkowe polecenia.

Co więcej, można dodać dodatkowe czujniki, aby rozbudować siłownik liniowy sterowany przez Arduino. Na przykład, czujnik ultradźwiękowy może uruchamiać/zatrzymywać silnik, gdy znajdziesz się w określonej odległości, lub może służyć do wyzwalania wielu innych ciekawych funkcji. Możliwości są nieograniczone. Jeśli jednak zaczyna brakować dostępnych pinów w Arduino, możesz wybrać inny model Arduino. Alternatywnie, wiele płytek Arduino można połączyć łańcuchowo (daisy-chain), aby komunikowały się ze sobą i z różnymi komponentami. Ta ścieżka wymaga jednak niemałego doświadczenia programistycznego.

Po więcej informacji napisz do nas na sales@progressiveautomations.com lub zadzwoń pod numer 1-800-676-6123.