W tym projekcie zamierzamy połączyć LDR z mikrokontrolerem ATMEGA8, dzięki czemu będziemy mogli zmierzyć NATĘŻENIE ŚWIATŁA w tym obszarze. W ATMEGA8 będziemy używać funkcji 10-bitowego ADC (konwersji analogowo-cyfrowej) do pomiaru natężenia światła.
Am LDR to przetwornik, który zmienia swoją rezystancję, gdy ŚWIATŁO pada na jego powierzchnię, zmienia się. Czujnik LDR jest dostępny w różnych rozmiarach i kształtach.
LDR są wykonane z materiałów półprzewodnikowych, dzięki czemu mają właściwości wrażliwe na światło. Istnieje wiele rodzajów stosowanych materiałów, ale jednym z najbardziej popularnych jest SIARCZEK KADMU (CdS). Te LDR lub FOTO REISTORY działają na zasadzie „przewodnictwa fotoelektrycznego ”. Ta zasada mówi, że ilekroć światło pada na powierzchnię LDR (w tym przypadku) przewodnictwo elementu wzrasta lub innymi słowy, rezystancja LDR maleje, gdy światło pada na powierzchnię LDR. Tę właściwość spadku rezystancji dla LDR uzyskuje się, ponieważ jest to właściwość materiału półprzewodnikowego zastosowanego na powierzchni. LDR są używane najczęściej do wykrywania obecności światła lub do pomiaru jego intensywności.
Istnieją różne typy LDR, jak pokazano na powyższym rysunku, i każdy ma inną specyfikację. Zazwyczaj LDR będzie miał 1MΩ-2MΩ w całkowitej ciemności, 10-20KΩ przy 10 LUX, 2-5KΩ przy 100 LUX. Typowy wykres odporności na LUX LDR pokazano na rysunku.
Jak pokazano na powyższym rysunku, rezystancja między dwoma stykami czujnika maleje wraz z natężeniem światła lub wzrasta przewodnictwo między dwoma stykami czujnika.
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 rysunku, R1 jest tutaj stałym oporem, a R2 jest czujnikiem FORCE, 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ę wraz z ciężarem.
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 Vout dzielnika napięcia zwiększa procentowy wzrost błędu, na razie nie musimy się martwić o efekt obciążenia.
To, co tutaj zrobimy, to weźmiemy dwa rezystory i utworzymy obwód dzielnika, tak że dla 25 V Vin otrzymamy Vout 5 V. Więc wszystko, co musimy zrobić, to pomnożyć wartość Vout przez „5” w programie, aby uzyskać rzeczywiste napięcie wejściowe.
składniki
Sprzęt: ATMEGA8, zasilacz (5v), PROGRAMATOR AVR-ISP, JHD_162ALCD (16 * 2LCD), kondensator 100uF, kondensator 100nF (5 sztuk), rezystor 10KΩ, LDR (Light Dependent Resistor).
Oprogramowanie: Atmel studio 6.1, progisp lub flash magic.
Schemat obwodu i wyjaśnienie robocze
W obwodzie PORTD ATMEGA8 jest podłączony do portu danych LCD. W 16 * 2 LCD 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.
Do podłączenia do wyświetlacza są podane poniżej:
PIN1 lub VSS ------------------ masa
PIN2 lub VDD lub VCC ------------ + 5 V.
PIN3 lub VEE --------------- masa (daje maksymalny kontrast najlepszy dla początkującego)
PIN4 lub RS (wybór rejestru) --------------- PB0 z uC
PIN5 lub RW (odczyt / zapis) ----------------- masa (ustawia wyświetlacz LCD w trybie odczytu, ułatwiając komunikację użytkownikowi)
PIN6 lub E (Włącz) ------------------- PB1 z uC
PIN7 lub D0 ----------------------------- PD0 z uC
PIN8 lub D1 ----------------------------- PD1 z uC
PIN9 lub D2 ----------------------------- PD2 z uC
PIN10 lub D3 ----------------------------- PD3 z uC
PIN11 lub D4 ----------------------------- PD4 z uC
PIN12 lub D5 ----------------------------- PD5 z uC
PIN13 lub D6 ----------------------------- PD6 z uC
PIN14 lub D7 ----------------------------- PD7 z uC
W układzie 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. Czyli z samej obserwacji z powyższej tabeli podłączamy 10 pinów LCD do kontrolera, w którym 8 pinów to pin danych i 2 pin 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.
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. Zamierzamy wybrać kanał 0 lub PIN0 PORTC. W ATMEGA8 przetwornik ADC ma rozdzielczość 10 bitów, więc kontroler może wykryć minimalną zmianę Vref / 2 ^ 10, więc jeśli napięcie odniesienia wynosi 5 V, otrzymujemy przyrost wyjścia cyfrowego co 5/2 ^ 10 = 5 mV. 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 cechy 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ę.
Tak więc z oporem LDR na ekranie LCD 16x2 możemy dopasować go do wykresu LUX w celu uzyskania natężenia światła.