În acest proiect vom interfața LDR cu microcontrolerul ATMEGA8 și, cu aceasta, putem măsura INTENSITATEA LUMINII în zonă. În ATMEGA8, vom folosi caracteristica ADC de 10 biți (conversie analogică la digitală) pentru a măsura intensitatea luminii.
Am LDR este un traductor care își schimbă rezistența atunci când LUMINA cade pe suprafața sa. Senzorul LDR este disponibil în diferite dimensiuni și forme.
LDR-urile sunt fabricate din materiale semiconductoare pentru a le permite să aibă proprietățile lor sensibile la lumină. Există multe tipuri de materiale folosite, dar unul care este popular este SULFURUL DE CADMI (CdS). Aceste LDR-uri sau REZISTENTE FOTO funcționează pe principiul „Conductivității fotografice”. Acum, ceea ce spune acest principiu este de fiecare dată când lumina cade pe suprafața LDR (în acest caz), conductanța elementului crește sau, cu alte cuvinte, rezistența LDR scade atunci când lumina cade pe suprafața LDR. Această proprietate a scăderii rezistenței pentru LDR se realizează deoarece este o proprietate a materialului semiconductor utilizat la suprafață. LDR sunt utilizate de cele mai multe ori pentru a detecta prezența luminii sau pentru măsurarea intensității luminii.
Există diferite tipuri de LDR așa cum se arată în figura de mai sus și fiecare are specificații diferite. De obicei, un LDR va avea 1MΩ-2MΩ la întuneric total, 10-20KΩ la 10 LUX, 2-5KΩ la 100 LUX. Rezistența tipică la graficul LUX al unui LDR este prezentată în figură.
Așa cum se arată în figura de mai sus, rezistența dintre cele două contacte ale senzorului scade odată cu intensitatea luminii sau conductanța dintre cele două contacte ale senzorului crește.
Acum, pentru a converti această schimbare a rezistenței la schimbarea tensiunii, vom folosi circuitul divizor de tensiune. În această rețea rezistivă avem o rezistență constantă și altă rezistență variabilă. Așa cum se arată în figură, R1 este o rezistență constantă, iar R2 este un senzor FORCE care acționează ca o rezistență.
Punctul mediu al ramurii este luat la măsurare. Când rezistența R2 se schimbă, Vout se schimbă liniar. Deci, cu aceasta avem o tensiune care se schimbă cu greutatea.
Acum, un lucru important de remarcat aici este că intrarea luată de controler pentru conversia ADC este de până la 50µAmp. Acest efect de încărcare al divizorului de tensiune bazat pe rezistență este important deoarece curentul extras din Vout al divizorului de tensiune crește procentul de eroare crește, deocamdată nu trebuie să ne facem griji cu privire la efectul de încărcare.
Ceea ce vom face aici este să luăm două rezistențe și să formăm un circuit divizor, astfel încât pentru un vin de 25 de volți, să obținem un Vout de 5 volți. Deci tot ce trebuie să facem este să înmulțim valoarea Vout cu „5” în program pentru a obține tensiunea reală de intrare.
Componente
Hardware: ATMEGA8, sursă de alimentare (5v), PROGRAMATOR AVR-ISP, JHD_162ALCD (16 * 2LCD), condensator 100uF, condensator 100nF (5 bucăți), rezistor 10KΩ, LDR (rezistență dependentă de lumină).
Sofware: Atmel studio 6.1, progisp sau flash magic.
Diagrama circuitului și explicația de lucru
În circuitul PORTD al ATMEGA8 este conectat la portul de date LCD. În 16 * 2 LCD există 16 pini peste toate dacă există o lumină de fundal, dacă nu există lumină de fundal vor exista 14 pini. Se poate alimenta sau lăsa pinii luminii din spate. Acum, în cele 14 pinii există 8 pini de date (7-14 sau D0-D7), 2 pini de alimentare (1 & 2 sau VSS & VDD sau gnd & + 5v), 3 rd pini pentru controlul contrastului (VEE-control cât de gros personajele ar trebui să fie afișat) și 3 pini de control (RS & RW & E)
În circuit, puteți observa că am luat doar doi pini de control. Bitul de contrast și READ / WRITE nu sunt adesea folosite, astfel încât acestea pot fi scurtcircuitate la sol. Acest lucru pune LCD în cel mai mare contrast și modul de citire. Trebuie doar să controlăm ENABLE și pinii RS pentru a trimite caractere și date în consecință.
Cele Racordurile pentru LCD sunt prezentate mai jos:
PIN1 sau VSS ------------------ sol
PIN2 sau VDD sau VCC ------------ + 5v putere
PIN3 sau VEE --------------- sol (oferă contrast maxim cel mai bun pentru un începător)
PIN4 sau RS (Selecție înregistrare) --------------- PB0 de uC
PIN5 sau RW (citire / scriere) ----------------- masă (pune LCD în modul de citire facilitează comunicarea pentru utilizator)
PIN6 sau E (Activare) ------------------- PB1 din uC
PIN7 sau D0 ----------------------------- PD0 al uC
PIN8 sau D1 ----------------------------- PD1 al uC
PIN9 sau D2 ----------------------------- PD2 al uC
PIN10 sau D3 ----------------------------- PD3 al uC
PIN11 sau D4 ----------------------------- PD4 al uC
PIN12 sau D5 ----------------------------- PD5 al uC
PIN13 sau D6 ----------------------------- PD6 al uC
PIN14 sau D7 ----------------------------- PD7 al uC
În circuit puteți vedea că am folosit comunicația pe 8 biți (D0-D7), totuși acest lucru nu este obligatoriu, putem folosi comunicația pe 4 biți (D4-D7), dar programul de comunicare pe 4 biți devine un pic complex. Deci, din simpla observare din tabelul de mai sus, conectăm 10 pini de LCD la controler, în care 8 pini sunt pini de date și 2 pini pentru control.
Tensiunea pe R2 nu este complet liniară; va fi unul zgomotos. Pentru a filtra condensatorii de zgomot sunt așezați pe fiecare rezistor din circuitul divizor așa cum se arată în figură.
În ATMEGA8, putem oferi intrări analogice oricăruia dintre PATRU canale ale PORTC, nu contează ce canal alegem, deoarece toate sunt la fel. Vom alege canalul 0 sau PIN0 al PORTC. În ATMEGA8, ADC are o rezoluție de 10 biți, astfel încât controlerul poate detecta o modificare minimă de Vref / 2 ^ 10, deci dacă tensiunea de referință este de 5V, obținem o creștere de ieșire digitală pentru fiecare 5/2 ^ 10 = 5mV. Deci, pentru fiecare increment de 5mV în intrare vom avea o creștere de unul la ieșirea digitală.
Acum trebuie să setăm registrul ADC pe baza următoarelor condiții:
1. În primul rând trebuie să activăm caracteristica ADC în ADC.
2. Aici veți obține o tensiune maximă de intrare pentru conversia ADC este de + 5V. Deci, putem seta valoarea maximă sau referința ADC la 5V.
3. Controlerul are o caracteristică de conversie a declanșatorului, ceea ce înseamnă că conversia ADC are loc numai după un declanșator extern, deoarece nu dorim să setăm registrele pentru ca ADC să ruleze în modul de rulare liberă continuă.
4. Pentru orice ADC, frecvența conversiei (valoarea analogică la valoarea digitală) și precizia ieșirii digitale sunt invers proporționale. Deci, pentru o mai bună precizie a ieșirii digitale, trebuie să alegem o frecvență mai mică. Pentru ceasul ADC normal, setăm pre-vânzarea ADC la valoarea maximă (2). Deoarece folosim ceasul intern de 1 MHz, ceasul ADC va fi (1000000/2).
Acestea sunt singurele patru lucruri pe care trebuie să le cunoaștem pentru a începe cu ADC.
Toate cele patru caracteristici de mai sus sunt setate de două registre,
ROȘU (ADEN): Acest bit trebuie setat pentru a activa caracteristica ADC a ATMEGA.
ALBASTRU (REFS1, REFS0): Acești doi biți sunt utilizați pentru a seta tensiunea de referință (sau tensiunea maximă de intrare pe care o vom da). Din moment ce dorim să avem tensiunea de referință 5V, REFS0 ar trebui setat de tabel.
GALBEN (ADFR): Acest bit trebuie setat pentru ca ADC să ruleze continuu (modul de rulare liber).
ROSE (MUX0-MUX3): Acești patru biți sunt pentru a spune canalului de intrare. Deoarece vom folosi ADC0 sau PIN0, nu trebuie să setăm niciun biți ca în tabel.
BROWN (ADPS0-ADPS2): acești trei biți sunt pentru setarea prescalarului pentru ADC. Deoarece folosim un prescalar de 2, trebuie să setăm un bit.
DARK GREEN (ADSC): acest bit setat pentru ca ADC să înceapă conversia. Acest bit poate fi dezactivat în program atunci când trebuie să oprim conversia.
Deci, cu rezistența LDR pe ecranul LCD de 16x2, îl putem asorta cu graficul LUX pentru a obține intensitatea luminii.