I dette prosjektet skal vi grensesnitt LDR med ATMEGA8 mikrokontroller, og med dette kan vi måle LETTE INTENSITET i området. I ATMEGA8 skal vi bruke 10bit ADC (Analog til Digital konvertering) -funksjon for å måle lysintensiteten.
Am LDR er en svinger som endrer motstand når LYS faller på overflaten endres. LDR-sensor er tilgjengelig i forskjellige størrelser og former.
LDR er laget av halvledermaterialer for å gjøre det mulig for dem å ha sine lysfølsomme egenskaper. Det er mange typer materialer som brukes, men en som er populær er CADMIUM SULPHIDE (CdS). Disse LDR-ene eller FOTOREISTORENE arbeider etter prinsippet " Fotokonduktivitet ". Nå som dette prinsippet sier er når lys faller på overflaten til LDR (i dette tilfellet), ledningsevnen til elementet øker, eller med andre ord reduseres motstanden til LDR når lyset faller på overflaten til LDR. Denne egenskapen til reduksjonen i motstand for LDR oppnås fordi den er en egenskap av halvledermateriale som brukes på overflaten. LDR brukes mest for å oppdage tilstedeværelse av lys eller for å måle lysintensiteten.
Det er forskjellige typer LDR som vist i figuren ovenfor, og hver har forskjellige spesifikasjoner. Vanligvis vil en LDR ha 1MΩ-2MΩ ved totalt mørke, 10-20KΩ ved 10 LUX, 2-5KΩ ved 100 LUX. Den typiske motstanden mot LUX-grafen til en LDR er vist i figuren.
Som vist i figuren ovenfor, reduseres motstanden mellom sensorens to kontakter med lysintensiteten, eller konduktansen mellom to sensorkontakter øker.
Nå for å konvertere denne endringen i motstand mot spenningsendring, skal vi bruke spenningsdelerkrets. I dette resistive nettverket har vi en konstant motstand og annen variabel motstand. Som vist i figur er R1 her en konstant motstand og R2 er FORCE-sensor som fungerer som en motstand.
Grensens midtpunkt blir tatt til måling. Når motstand R2 endres, endres Vout med det lineært. Så med dette har vi en spenning som endres med vekten.
Nå er det viktig å merke seg at inngangen som er tatt av kontrolleren for ADC-konvertering er så lav som 50 µAmp. Denne belastningseffekten av motstandsbasert spenningsdeler er viktig da strømmen hentet fra Vout av spenningsdeleren øker feilprosentandelen, for nå trenger vi ikke bekymre oss for belastningseffekt.
Det vi skal gjøre her er at vi skal ta to motstander og danne en delerkrets slik at vi for en 25 Volt Vin får en 5 Volt Volt. Så alt vi trenger å gjøre er å multiplisere Vout-verdien med "5" i programmet for å få den virkelige inngangsspenningen.
Komponenter
Maskinvare: ATMEGA8, strømforsyning (5v), AVR-ISP PROGRAMMER, JHD_162ALCD (16 * 2LCD), 100uF kondensator, 100nF kondensator (5 stk), 10KΩ motstand, LDR (lysavhengig motstand).
Sofware: Atmel studio 6.1, progisp eller flash magi.
Kretsdiagram og arbeidsforklaring
I kretsen er PORTD på ATMEGA8 koblet til dataport LCD. I 16 * 2 LCD er det 16 pinner overalt hvis det er baklys, hvis det ikke er noe bakgrunnslys, vil det være 14 pinner. Man kan drive eller la baklyspinnene ligge. Nå i de 14 pinnene er det 8 datapinner (7-14 eller D0-D7), 2 strømforsyningspinner (1 & 2 eller VSS & VDD eller GND & + 5V), 3. pin for kontrastkontroll (VEE-styrer hvor tykke tegnene skal være vist) og 3 kontrollpinner (RS & RW & E)
I kretsen kan du observere at jeg bare har tatt to kontrollpinner. Kontrastbiten og LES / SKRIV brukes ikke ofte slik at de kan kortsluttes til bakken. Dette setter LCD i høyest kontrast og lesemodus. Vi trenger bare å kontrollere ENABLE- og RS-pinner for å sende tegn og data tilsvarende.
De tilkoblinger for LCD er gitt nedenfor:
PIN1 eller VSS ------------------ bakken
PIN2 eller VDD eller VCC ------------ + 5v strøm
PIN3 eller VEE --------------- bakken (gir maksimal kontrast best for en nybegynner)
PIN4 eller RS (Register Selection) --------------- PB0 av uC
PIN5 eller RW (lese / skrive) ----------------- bakken (setter LCD i lesemodus letter kommunikasjonen for brukeren)
PIN6 eller E (Enable) ------------------- PB1 av uC
PIN7 eller D0 ---------------------------- PD0 av uC
PIN8 eller D1 ----------------------------- PD1 av uC
PIN9 eller D2 ----------------------------- PD2 av uC
PIN10 eller D3 ----------------------------- PD3 av uC
PIN11 eller D4 ---------------------------- PD4 av uC
PIN12 eller D5 ----------------------------- PD5 av uC
PIN13 eller D6 ----------------------------- PD6 av uC
PIN14 eller D7 ----------------------------- PD7 av uC
I kretsen kan du se at vi har brukt 8bit kommunikasjon (D0-D7) men dette er ikke obligatorisk, vi kan bruke 4bit kommunikasjon (D4-D7) men med 4 bit kommunikasjonsprogram blir det litt komplisert. Så fra bare observasjon fra tabellen ovenfor kobler vi 10 pinner LCD til kontrolleren der 8 pinner er datapinner og 2 pinner for kontroll.
Spenningen over R2 er ikke helt lineær; det vil være bråkete. For å filtrere ut er støykondensatorene plassert over hver motstand i delerkretsen som vist på figuren.
I ATMEGA8 kan vi gi analoge innganger til noen av de fire PORTC-kanalene, det spiller ingen rolle hvilken kanal vi velger, ettersom alle er like. Vi skal velge kanal 0 eller PIN0 for PORTC. I ATMEGA8 har ADC 10-biters oppløsning, slik at kontrolleren kan oppdage en minimumsendring av Vref / 2 ^ 10, så hvis referansespenningen er 5V får vi en digital utgangsøkning for hver 5/2 ^ 10 = 5mV. Så for hver 5mV økning i inngangen vil vi ha en økning på en på digital utgang.
Nå må vi sette registeret over ADC basert på følgende vilkår:
1. Først og fremst trenger vi å aktivere ADC-funksjonen i ADC.
2. Her kommer til å få en maksimal inngangsspenning for ADC-konvertering er + 5V. Så vi kan sette opp maksimumsverdi eller referanse for ADC til 5V.
3. Kontrolleren har en utløserkonverteringsfunksjon som betyr at ADC-konvertering bare finner sted etter en ekstern utløser, siden vi ikke vil at vi trenger å sette registrene for at ADC skal kjøre i kontinuerlig friløpsmodus.
4. For enhver ADC er konverteringsfrekvensen (analog verdi til digital verdi) og nøyaktigheten av digital utgang omvendt proporsjonal. Så for bedre nøyaktighet av digital utgang må vi velge mindre frekvens. For normal ADC-klokke setter vi forhåndssalget til ADC til maksimumsverdien (2). Siden vi bruker den interne klokken på 1MHZ, vil klokken til ADC være (1000000/2).
Dette er de eneste fire tingene vi trenger å vite for å komme i gang med ADC.
Alle de ovennevnte fire funksjonene er satt av to registre,
RØD (ADEN): Denne biten må stilles inn for å aktivere ADC-funksjonen til ATMEGA.
BLÅ (REFS1, REFS0): Disse to bitene brukes til å stille inn referansespenningen (eller maks inngangsspenning vi skal gi). Siden vi ønsker å ha referansespenning 5V, bør REFS0 settes ved tabellen.
GUL (ADFR): Denne biten må være satt for at ADC skal kjøre kontinuerlig (friløpsmodus).
PINK (MUX0-MUX3): Disse fire bitene er for å fortelle inngangskanalen. Siden vi skal bruke ADC0 eller PIN0, trenger vi ikke å sette noen biter som ved tabellen.
BRUN (ADPS0-ADPS2): disse tre bitene er for å sette prescalar for ADC. Siden vi bruker en prescalar på 2, må vi sette en bit.
MØRK GRØNN (ADSC): denne biten er satt for at ADC skal starte konvertering. Denne biten kan deaktiveres i programmet når vi trenger å stoppe konverteringen.
Så med motstand fra LDR på 16x2 LCD-skjermen, kan vi matche den med LUX-graf for å få lysintensiteten.