Czujniki efektu Halla to jedna z opcji sprzężenia zwrotnego, które oferujemy w naszych siłownikach liniowych, aby dostarczać informacje o położeniu i prędkości. Nasze PA-04-HS i PA-100 w wersji standardowej są wyposażone w czujniki efektu Halla. Kilka innych naszych siłowników można zamówić w wersji niestandardowej z czujnikami efektu Halla.
CZYM JEST CZUJNIK EFEKTU HALLA?
Czujnik efektu Halla to element elektroniczny, który generuje napięcie w zależności od natężenia pola magnetycznego przepływającego przez czujnik. Gdy zostanie połączony z układem detekcji progów napięcia, może wytwarzać sygnał o dwóch stanach. W naszych siłownikach czujnik efektu Halla jest zaprojektowany tak, aby generować dwukanałowy sygnał, którego przebiegi są kwantowane do dwóch stanów binarnych: włączony lub wyłączony. Te dwa sygnały rosną i opadają wraz z obrotem silnika elektrycznego, z przesunięciem fazowym 90° między nimi, jak pokazano poniżej. Częstotliwość tych impulsów w odniesieniu do zmiany położenia w siłowniku zależy od rozdzielczości i różni się w zależności od modelu siłownika.
JAK ODCZYTYWAĆ TE SYGNAŁY HALLA?
Jak używać czujnika efektu Halla
Podczas odczytu sygnału cyfrowego w mikrokontrolerze stosuje się dwie główne metody: polling (sondowanie) oraz przerwania. Polling to metoda programowa, w której mikrokontroler okresowo sprawdza stan wejścia, aby wykryć zmianę. Przerwania to mechanizm sprzętowy, który natychmiast przekierowuje wykonywanie programu mikrokontrolera, gdy na wejściu nastąpi zmiana sygnału. Obie metody mają swoje zalety i wady i lepiej sprawdzają się w różnych zastosowaniach. W naszym przypadku chcemy znać dokładny moment zmiany stanu sygnału, dlatego użyjemy przerwań. Aby korzystać z czujnika efektu Halla z mikrokontrolerami Arduino, wykorzystuje się przerwania. Tworząc ISR (Interrupt Service Routine), można sprawić, że Arduino natychmiast wykona fragment kodu po wykryciu zdefiniowanej zmiany na wskazanym wejściu. Poniżej znajduje się przykład ISR dla Arduino; jego zmodyfikowana wersja, która kieruje wykryte sygnały na diody LED, to jeden ze sposobów testowania czujnika efektu Halla.
Programowanie Arduino do odczytu czujników efektu Halla – metoda z przerwaniami
|
// global volatile variables are needed to pass data between the // main program and the ISR's volatile byte signalA; // the pins that can be used with interrupts depend on the board you // are using // will detect a rising or a falling edge // to the opposite of the current state signalA = !signalA; |
CO NALEŻY UWZGLĘDNIĆ W ZASTOSOWANIU?
Ponieważ odczytywane sygnały mają wysoką częstotliwość, należy wziąć pod uwagę kilka kwestii. Po pierwsze: jak długo program będzie wykonywał kod w ISR? Ile oddzielnych sygnałów wymaga własnych ISR? Jak szybka jest częstotliwość taktowania mikrokontrolera?
Problemem, który może wystąpić przy długim ISR, jest ponowne wyzwolenie przerwania zanim zakończy się wykonywanie poprzedniego kodu. Zaleca się umieszczać w ISR możliwie minimalną ilość kodu, aby temu zapobiec.
W powyższym przykładzie dwa sygnały mają osobne przerwania. Oba są potrzebne do wykrywania kierunku ruchu siłownika liniowego — sprawdza się, który sygnał zmienia się z niskiego na wysoki jako pierwszy. Minusem włączenia przerwań dla obu sygnałów jest to, że dwukrotnie częściej uruchamiany jest kod ISR. W zastosowaniach, w których kierunek ruchu siłownika nie jest potrzebny lub wynika z logiki programu, wystarczy skonfigurować przerwanie tylko dla jednego sygnału.
Niektóre mikrokontrolery umożliwiają zwiększenie częstotliwości taktowania. Częstotliwość taktowania określa, jak szybko mikrokontroler może wykonywać program. Jeśli częstotliwość odczytywanych sygnałów jest wysoka, może zaistnieć potrzeba zwiększenia taktowania, aby nadążyć. Jednak z punktu widzenia zużycia energii lepiej używać tak wolnego taktowania, jak pozwala na to aplikacja.
CO, JEŚLI MIKROKONTROLER NIE JEST WYSTARCZAJĄCO SZYBKI?
Nawet po uwzględnieniu powyższych kwestii czasem mikrokontroler nie jest wystarczająco szybki, by jednocześnie wykonywać kod główny i nadążać za ISR. W takich przypadkach warto wykorzystać dodatkowy mikrokontroler. Jeden mikrokontroler może obsługiwać ISR, odczytywać dane i przekazywać potrzebne informacje do drugiego mikrokontrolera, na którym kod główny będzie wykonywany bez przerw.