W tym projekcie używamy koncepcji ADC (konwersji analogowo-cyfrowej) w ARDUINO UNO. Zamierzamy użyć czujnika Halla i Arduino uno do pomiaru natężenia pola magnesu. Czujnik, którego tutaj użyliśmy to UGN3503U. Jest to czujnik halla, który wykrywa natężenie pola magnetycznego i dostarcza na wyjściu zmienne napięcie proporcjonalne do natężenia pola. Ten czujnik odbiera natężenie pola w jednostkach „ GAUSS ”.
Więc z tym czujnikiem będziemy mieli natężenie pola jako zmienne napięcie. Korzystając z funkcji ADC, zamienimy to napięcie na liczbę. Ta liczba reprezentuje natężenie pola i jest wyświetlana na wyświetlaczu LCD.
Arduino ma sześć kanałów ADC. W nich jeden lub wszystkie z nich mogą być użyte jako wejścia dla napięcia analogowego. UNO ADC ma rozdzielczość 10 bitów (więc wartości całkowite z (0- (2 ^ 10) 1023)). Oznacza to, że mapuje napięcia wejściowe od 0 do 5 woltów na wartości całkowite od 0 do 1023. Tak więc dla każdego (5/1024 = 4,9 mV) na jednostkę.
W tym wszystkim podłączymy potencjometr lub potencjometr do kanału A0, a wynik ADC pokażemy na prostym wyświetlaczu. Proste wyświetlacze to wyświetlacze 16x1 i 16x2. Wyświetlacz 16x1 będzie miał 16 znaków i będzie znajdował się w jednej linii. 16x2 będzie miał 32 znaków w łącznej 16in 1 st linii i kolejne 16 w 2 -go wiersza. Tutaj trzeba zrozumieć, że w każdym znaku jest 5x10 = 50 pikseli, więc aby wyświetlić jeden znak, wszystkie 50 pikseli musi współpracować, ale nie musimy się tym martwić, ponieważ w jednostce wyświetlacza znajduje się inny kontroler (HD44780), który wykonuje zadanie kontrolowania pikseli (widać to na wyświetlaczu LCD, jest to podbite oko z tyłu).
Wymagane składniki
Sprzęt: ARDUINO UNO, zasilacz (5v), JHD_162ALCD (16x2LCD), kondensator 100uF (2 sztuki), UGn3503U.
Oprogramowanie: arduino IDE (Arduino nightly)
Schemat obwodu i wyjaśnienie
Powyższy rysunek przedstawia schemat obwodu do pomiaru pola magnetycznego za pomocą arduino uno.
W LCD 16x2 jest 16 pinów, jeśli jest podświetlenie, jeśli nie ma podświetlenia, będzie 14 pinów. Można zasilać lub pozostawić piny podświetlenia. Teraz w 14 szpilki są kołki 8 danych (7-14 lub D0-D7), 2 szpilki zasilacza (1 i 2 lub VSS i VDD i GND i +5 V), 3 rd stykowe dla regulacji kontrastu (VEE umożliwia sprawdzenie grubości znaki powinny pokazano) i 3 piny sterujące (RS i RW i E).
W powyższym obwodzie można zauważyć, że wziąłem tylko dwa piny sterujące, bit kontrastu i odczyt / zapis nie są często używane, więc można je zwierać do masy. Dzięki temu wyświetlacz LCD ma najwyższy kontrast i tryb odczytu. Musimy tylko sterować pinami ENABLE i RS, aby odpowiednio wysyłać znaki i dane.
Poniżej przedstawiono połączenia wykonane dla LCD:
PIN1 lub VSS do masy
PIN2 lub VDD lub VCC do + 5 V.
PIN3 lub VEE do ziemi (daje maksymalny kontrast najlepszy dla początkującego)
PIN4 lub RS (wybór rejestru) do PIN8 w ARDUINO UNO
PIN5 lub RW (odczyt / zapis) do masy (przełącza wyświetlacz LCD w tryb odczytu, ułatwiając komunikację użytkownikowi)
PIN6 lub E (Włącz) do PIN9 z ARDUINO UNO
PIN11 lub D4 do PIN10 z ARDUINO UNO
PIN12 lub D5 do PIN11 z ARDUINO UNO
PIN13 lub D6 do PIN12 z ARDUINO UNO
PIN14 lub D7 do PIN13 z ARDUINO UNO
ARDUINO IDE umożliwia użytkownikowi korzystanie z wyświetlacza LCD w trybie 4-bitowym. Ten rodzaj komunikacji pozwala użytkownikowi zmniejszyć użycie pinów w ARDUINO, w przeciwieństwie do innych ARDUINO nie musi być programowane osobno do używania go w trybie 4 it, ponieważ domyślnie ARDUINO jest skonfigurowane do komunikacji w trybie 4-bitowym. W układzie widać, że wykorzystaliśmy komunikację 4-bitową (D4-D7). Czyli z samej obserwacji z powyższej tabeli podłączamy 6 pinów LCD do kontrolera, w którym 4 piny to piny danych i 2 piny do sterowania.
Pracujący
Aby połączyć LCD z ARDUINO UNO, musimy wiedzieć kilka rzeczy.
|
Przede wszystkim kanały UNO ADC mają domyślną wartość odniesienia 5V. Oznacza to, że możemy podać maksymalne napięcie wejściowe 5 V do konwersji ADC na dowolnym kanale wejściowym. Ponieważ niektóre czujniki dostarczają napięcia od 0-2,5 V, przy wartości odniesienia 5 V uzyskujemy mniejszą dokładność, więc mamy instrukcję, która umożliwia nam zmianę tej wartości odniesienia. Aby zmienić wartość odniesienia, mamy („analogReference ();”)
Domyślnie otrzymujemy maksymalną rozdzielczość ADC płyty, która wynosi 10 bitów, rozdzielczość tę można zmienić za pomocą instrukcji („analogReadResolution (bits);”). Ta zmiana rozdzielczości może się przydać w niektórych przypadkach.
Teraz, jeśli powyższe warunki są ustawione na domyślne, możemy odczytać wartość z ADC kanału '0' bezpośrednio wywołując funkcję „analogRead (pin);”, tutaj „pin” oznacza pin, do którego podłączyliśmy sygnał analogowy, w tym przypadku być „A0”. Wartość z ADC można przyjąć jako liczbę całkowitą jako „int ADCVALUE = analogRead (A0); ”, W tej instrukcji wartość po ADC zostaje zapisana jako liczba całkowita„ ADCVALUE ”.
Porozmawiajmy teraz trochę o LCD 16x2. Najpierw musimy włączyć plik nagłówkowy ('#include
Po drugie, musimy powiedzieć płycie, jakiego typu LCD tutaj używamy. Ponieważ mamy tak wiele różnych typów LCD (np. 20x4, 16x2, 16x1 itd.). Tutaj mamy zamiar podłączyć wyświetlacz LCD 16x2 do UNO, więc otrzymamy 'lcd.begin (16, 2);'. Dla 16x1 otrzymujemy 'lcd.begin (16, 1);'.
W tej instrukcji powiemy płytce, gdzie podłączyliśmy piny. Piny, które są podłączone, mają być przedstawione w kolejności „RS, En, D4, D5, D6, D7”. Te szpilki mają być poprawnie przedstawione. Ponieważ podłączyliśmy RS do PIN0 i tak dalej, jak pokazano na schemacie obwodu, reprezentujemy numer pinu na płytce jako „LiquidCrystal lcd (0, 1, 8, 9, 10, 11);”.
Po tym pozostaje już tylko wysłać dane, które mają być wyświetlone na LCD zapisane jako „cd.print („ witaj, świecie! ”);”. Po wykonaniu tego polecenia na wyświetlaczu LCD pojawi się „hello, world!”. Jak widać, nie musimy się tym martwić, wystarczy zainicjować, a UNO będzie gotowe do wyświetlania danych. Nie musimy pisać pętli programowej, aby przesłać dane BYTE przez BYTE tutaj.
Po zbliżeniu magnesu do czujnika, czujnik przedstawia napięcie na wyjściu proporcjonalne do pola, wartość ta jest pobierana przez Uno i wyświetlana na wyświetlaczu LCD. Działanie tego projektu pomiaru pola magnetycznego jest dokładniej wyjaśnione w poniższym kodzie C.