W tym tutorialu zamierzamy połączyć czujnik FLEX z mikrokontrolerem ATMEGA8. W ATMEGA8 będziemy używać funkcji 10-bitowego ADC (konwersja analogowo-cyfrowa) do wykonania tego zadania. Teraz ADC w ATMEGA nie może przyjmować więcej niż + 5V.
Co to jest czujnik Flex?
Czujnik FLEX to przetwornik, który zmienia swoją rezystancję, gdy jego kształt zmienia się. Pokazuje to poniższy rysunek.
Ten czujnik służy do wykrywania zmian liniowości. Więc kiedy czujnik FLEX jest zgięty, rezystancja jest drastycznie wyginana. Pokazuje to poniższy rysunek.
Teraz, aby przekształcić tę zmianę rezystancji w zmianę napięcia, użyjemy obwodu dzielnika napięcia. W tej sieci rezystancyjnej mamy jedną stałą rezystancję i drugą zmienną rezystancję. Jak pokazano na poniższym rysunku, R1 to tutaj stała rezystancja, a R2 to czujnik FLEX, który działa jako rezystancja. Do pomiaru brany jest środek odgałęzienia. Kiedy zmienia się opór R2, Vout zmienia się wraz z nim liniowo. Więc przy tym mamy napięcie, które zmienia się z liniowością.
Ważną rzeczą do zapamiętania jest to, że sygnał wejściowy pobierany przez kontroler do konwersji ADC wynosi zaledwie 50 µA. Ten efekt obciążenia dzielnika napięcia opartego na rezystancji jest ważny, ponieważ prąd pobierany z dzielnika napięcia Vout zwiększa procent błędu, na razie nie musimy się martwić o efekt obciążenia.
Weźmiemy dwa rezystory i utworzymy obwód dzielnika, tak że dla 25 V Vin otrzymamy 5 V Vout. Więc wszystko, co musimy zrobić, to pomnożyć wartość Vout przez „5” w programie, aby uzyskać rzeczywiste napięcie wejściowe.
Wymagane składniki
SPRZĘT: ATMEGA8, zasilacz (5v), programator AVR-ISP, JHD_162ALCD (16x2LCD), kondensator 100uF, kondensator 100nF (5 sztuk), rezystor 100KΩ.
OPROGRAMOWANIE: Atmel studio 6.1, progisp lub flash magic.
Schemat obwodu i objaśnienie robocze
W obwodzie PORTD ATMEGA8 jest podłączony do portu danych LCD. 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 pin regulacji kontrastu (VEE umożliwia sprawdzenie grubości znaki powinny pokazano) i 3 piny sterujące (RS i RW i E).
W 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.
Połączenia LCD z ATmega8 są następujące:
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 PB0 uC
PIN5 lub RW (odczyt / zapis) do masy (ustawia wyświetlacz LCD w trybie odczytu, ułatwiając komunikację użytkownikowi)
PIN6 lub E (Włącz) do PB1 uC
PIN7 lub D0 do PD0 uC
PIN8 lub D1 do PD1 uC
PIN9 lub D2 do PD2 uC
PIN10 lub D3 do PD3 uC
PIN11 lub D4 do D4 uC
PIN12 lub D5 do PD5 uC
PIN13 lub D6 do PD6 uC
PIN14 lub D7 do PD7 uC
W obwodzie widać, że użyliśmy komunikacji 8-bitowej (D0-D7), jednak nie jest to obowiązkowe, możemy użyć komunikacji 4-bitowej (D4-D7), ale przy 4-bitowej komunikacji program staje się nieco skomplikowany, więc po prostu wybraliśmy 8-bitową Komunikacja. (Sprawdź również ten samouczek: Interfejs LCD 16x2 z mikrokontrolerem AVR)
Czyli z samej obserwacji z powyższej tabeli podłączamy 10 pinów LCD do kontrolera, w którym 8 pinów to pinów danych, a 2 pinów do sterowania.
Napięcie na R2 nie jest całkowicie liniowe; będzie głośno. Aby odfiltrować szum, kondensatory są umieszczone na każdym rezystorze w obwodzie dzielnika, jak pokazano na rysunku.
Potencjometr 1K służy tutaj do regulacji dokładności ADC. Porozmawiajmy teraz o ADC z ATMEGA8.
W ATMEGA8 możemy podać wejście analogowe do dowolnego z CZTERECH kanałów PORTC, nie ma znaczenia, który kanał wybierzemy, ponieważ wszystkie są takie same, wybieramy kanał 0 lub PIN0 PORTC.
W ATMEGA8 przetwornik ADC ma rozdzielczość 10 bitów, więc kontroler może wykryć wyczucie minimalnej zmiany Vref / 2 ^ 10, więc jeśli napięcie odniesienia wynosi 5 V, otrzymujemy przyrost wyjścia cyfrowego co 5/2 ^ 10 = 5mV. Tak więc dla każdego przyrostu 5mV na wejściu będziemy mieć przyrost o jeden na wyjściu cyfrowym.
Teraz musimy ustawić rejestr ADC na podstawie następujących warunków, 1. Przede wszystkim musimy włączyć funkcję ADC w ADC.
2. Tutaj uzyskamy maksymalne napięcie wejściowe do konwersji ADC wynosi + 5V. Możemy więc ustawić maksymalną wartość lub odniesienie ADC do 5V.
3. Kontroler posiada funkcję konwersji wyzwalacza, co oznacza, że konwersja ADC ma miejsce tylko po wyzwoleniu zewnętrznym, ponieważ nie chcemy, abyśmy musieli ustawiać rejestry, aby ADC działał w trybie ciągłej pracy swobodnej.
4. Dla dowolnego przetwornika ADC częstotliwość konwersji (wartość analogowa na wartość cyfrową) i dokładność wyjścia cyfrowego są odwrotnie proporcjonalne. Więc dla lepszej dokładności wyjścia cyfrowego musimy wybrać mniejszą częstotliwość. Dla normalnego zegara ADC ustawiamy przedsprzedaż ADC na maksymalną wartość (2). Ponieważ używamy wewnętrznego zegara 1 MHZ, zegar ADC będzie (1000000/2).
To jedyne cztery rzeczy, które musimy wiedzieć, aby rozpocząć pracę z ADC.
Wszystkie powyższe cztery funkcje są ustawiane przez dwa rejestry:
CZERWONY (ADEN): Ten bit musi być ustawiony, aby włączyć funkcję ADC ATMEGA.
NIEBIESKI (REFS1, REFS0): Te dwa bity służą do ustawiania napięcia odniesienia (lub maksymalnego napięcia wejściowego, które zamierzamy podać). Ponieważ chcemy mieć napięcie odniesienia 5V, należy ustawić REFS0 zgodnie z tabelą.
ŻÓŁTY (ADFR): Ten bit musi być ustawiony, aby ADC działał w sposób ciągły (tryb pracy swobodnej).
PINK (MUX0-MUX3): Te cztery bity służą do informowania kanału wejściowego. Ponieważ zamierzamy używać ADC0 lub PIN0, nie musimy ustawiać żadnych bitów zgodnie z tabelą.
BROWN (ADPS0-ADPS2): te trzy bity służą do ustawiania preskalara dla ADC. Ponieważ używamy preskalara 2, musimy ustawić jeden bit.
DARK GREEN (ADSC): ten bit ustawiony dla ADC, aby rozpocząć konwersję. Ten bit można wyłączyć w programie, gdy musimy zatrzymać konwersję.
Połączenie czujnika FLEX z ATmega8 jest wyjaśnione krok po kroku w kodzie C podanym poniżej.