[PRZYKŁAD] Wykorzystanie czujnika Halla wraz z Arduino
Do realizacji czynności pokazanych w poniższym artykule wykorzystano:
Rysunek 1. Moduł z czujnikiem Halla – modHALL-A3144
Użyty w przykładzie moduł posiada czujnik Halla oparty na układzie A3144. Czujnik ten pozawala na pomiar wielkości elektromagnetycznych, ale może służyć również do pomiaru kąta obrotu, przesunięcia, drgań mechanicznych itp. Na płytce znalazł się również komparator oparty na układzie LM393. Za pomocą potencjometru można ustawić wartość graniczną. Gdy wartość analogowa odczytana z czujnika Halla będzie będzie od niej większa, na odpowiednim pinie modułu zostanie wygenerowany stan wysoki. Stan wyjścia tego pinu zostanie zasygnalizowany za pomocą diody LED znajdującej się na module.
Przejdźmy do podłączenia naszego modułu do płytki KAmduino UNO. Pierwszym krokiem będzie podłączenie zasilania. Do prawidłowego działania moduł potrzebuje napięcia 5 V. Płytka posiada dwa wyjścia sygnałowe: cyfrowe oraz analogowe. Wyjście analogowe A0 podłączono do pinu A1 natomiast wyjście cyfrowe do wejścia 2 na płytce KAmduino UNO.
Zostało to przedstawione w tabeli poniżej:
Pin KAmduino UNO | Pin modułu z czujnikiem Halla |
+5V | VCC |
GND | GND |
A1 | A0 |
2 | D0 |
Zmontowany układ prezentuje się następująco:
Rysunek 2. Moduł czujnikiem Halla podłączony do płytki KAmduino UNO
Teraz przejdźmy do napisania prostego programu, który będzie odczytywał wartości z pinu analogowego oraz cyfrowego modułu z czujnikiem Halla, a następnie wyświetlał odpowiednie informacje poprzez port szeregowy.
W funkcji setup(), ustawiamy odpowiednią prędkość portu szeregowego oraz konfigurujemy role pinu 2. Ma on działać w trybie wejścia.
void setup() { Serial.begin(9600); pinMode(2,INPUT); }
Następnie w pętli głównej programu loop() deklarujemy zmienne, które będą przechowywać wartość analogową oraz cyfrową odczytaną odpowiednio na pinach A1 oraz 2. Do zmiennej wartosc_cyfrowa zapisywany jest stan który jest na pinie 2, natomiast do zmiennej wartosc_analogowa przypisywana jest wartość odczytana z pinu A1. Następnie sprawdzana jest zmienna wartosc_cyfrowa. Jeżeli wynosi ona 0 (magnes znajduje się blisko czujnika i jest ustawiony odpowiednią stroną) w monitorze portu szeregowe zostanie wyświetlony komunikat „Wykryto magnes!”
void loop() { int wartosc_cyfrowa = 0; int wartosc_analogowa = 0; wartosc_cyfrowa = digitalRead(2); wartosc_analogowa = analogRead(A1); if (wartosc_cyfrowa== LOW) { Serial.println("Wykryto magnes!"); } Serial.print("Wartosc analogowa: "); Serial.println(wartosc_analogowa); delay(300); }
Wyświetlany komunikat o wykryciu magnesu przez czujnik Halla pokazany został na rysunku 3.
Rysunek 3. Komunikat w monitorze portu szeregowego o wykryciu przez czujnik Halla magnesu