Šioje pamokoje mes sujungsime FLEX jutiklį su ATMEGA8 mikrovaldikliu. ATMEGA8 šiam darbui atlikti naudosime 10bit ADC (Analog to Digital Conversion) funkciją. Dabar ADC ATMEGA negali priimti daugiau nei + 5 V įvesties.
Kas yra lankstus jutiklis?
FLEX jutiklis yra keitiklį, kuris keičia savo atsparumo, kai jo forma yra pakeista. Tai parodyta žemiau esančiame paveikslėlyje.
Šis jutiklis naudojamas tiesiškumo pokyčiams suvokti. Taigi sulenkus FLEX jutiklį, pasipriešinimas smarkiai sulenktas. Tai parodyta žemiau esančiame paveikslėlyje.
Dabar, norėdami konvertuoti šį atsparumo pokyčius įtampos pokyčiams, mes naudosime įtampos daliklio grandinę. Šiame varžiniame tinkle mes turime vieną pastovią varžą ir kitą kintamą varžą. Kaip parodyta žemiau esančiame paveikslėlyje, R1 čia yra pastovi varža, o R2 yra FLEX jutiklis, kuris veikia kaip pasipriešinimas. Šakos vidurio taškas imamas matuoti. Keičiantis atsparumui R2, Vout kinta kartu su juo tiesiškai. Taigi su tuo mes turime įtampą, kuri kinta priklausomai nuo tiesiškumo.
Dabar svarbu atkreipti dėmesį į tai, kad valdiklio įvestas ADC konversijos rodiklis yra vos 50µAmp. Šis atsparumo įtampos daliklio apkrovos poveikis yra svarbus, nes srovė, gaunama iš įtampos daliklio Vout, padidina paklaidos procentą, kol kas nereikia jaudintis dėl apkrovos efekto.
Mes ketiname paimti du rezistorius ir suformuoti skirstytuvo grandinę, kad už 25 voltų „Vin“ gautume 5 voltų „Vout“. Taigi viskas, ką turime padaryti, yra programos Vout reikšmės padauginimas iš „5“, kad gautume tikrąją įėjimo įtampą.
Būtini komponentai
ĮRANGA: ATMEGA8, maitinimo šaltinis (5v), AVR-ISP programuotojas, JHD_162ALCD (16x2LCD), 100uF kondensatorius, 100nF kondensatorius (5 vnt.), 100KΩ rezistorius.
PROGRAMINĖ ĮRANGA: „ Atmel studio 6.1“, „progisp“ arba „flash“ magija.
Grandinės schema ir darbo paaiškinimas
Į grandinę PORTD iš ATmega8 yra prijungtas prie duomenų uosto LCD. 16x2 LCD ekrane yra 16 kontaktų, jei yra užpakalinė lemputė, jei nėra užpakalinės šviesos, bus 14 kontaktų. Galima maitinti arba palikti galinio apšvietimo kaiščius. Dabar 14 kaiščių yra 8 duomenų kaiščiai (7-14 arba D0-D7), 2 elektros tiekimo kaiščių (1 & 2 arba Vss & VDD arba GND & + 5V), 3 -oji kaištis kontrasto valdymas (V formos,-kontroliuoja, kaip storio simboliai turėtų būti parodyta) ir 3 valdymo kaiščius (RS & RW & E).
Grandinėje galite pastebėti, kad aš paėmiau tik du valdymo kaiščius. Kontrasto bitai ir READ / WRITE nėra dažnai naudojami, todėl juos galima sutrumpinti. Tai padidina LCD kontrasto ir skaitymo režimą. Mes tiesiog turime valdyti ENABLE ir RS smeigtukus, kad galėtume atitinkamai siųsti simbolius ir duomenis.
LCD jungtys su „ATmega8“ yra tokios:
PIN1 arba VSS į žemę
PIN2 arba VDD arba VCC iki + 5v maitinimo
PIN3 arba VEE į žemę (suteikia maksimalų kontrastą pradedantiesiems)
PIN4 arba RS (registracijos pasirinkimas) į uC PB0
PIN5 arba RW (skaitymas / rašymas) į žemę (LCD ekranas perkeliamas į skaitymo režimą, palengvina vartotojo ryšį)
PIN6 arba E (įjungti) į uC PB1
PIN7 arba D0 – PD0 uC
PIN8 arba U1 nuo D1 iki PD1
PIN9 arba D2 – PD2 uC
U10 PIN10 arba D3 – PD3
PIN11 arba U4 nuo D4 iki D4
PIN12 arba nuo D5 iki PD5 uC
PIN13 arba D6 – PD6 uC
U14 PIN14 arba D7 – PD7
Grandinėje matote, kad mes naudojome 8 bitų ryšį (D0-D7), tačiau tai nėra privaloma, mes galime naudoti 4 bitų ryšį (D4-D7), bet su 4 bitų ryšio programa tampa šiek tiek sudėtinga, todėl mes tiesiog nuėjome su 8 bitų bendravimas. (Taip pat patikrinkite šią pamoką: 16x2 LCD sąsaja su AVR mikrovaldikliu)
Taigi vien nuo stebėjimo iš viršaus lentelės mes prijungiame 10 LCD kontaktų su valdikliu, kuriame 8 kontaktai yra duomenų kaiščiai ir 2 kaiščiai yra skirti valdyti.
R2 įtampa nėra visiškai tiesinė; tai bus triukšmingas. Norėdami išfiltruoti, triukšmo kondensatoriai dedami ant kiekvieno rezistoriaus skirstytuvo grandinėje, kaip parodyta paveikslėlyje.
1K puodas čia skirtas ADC tikslumui koreguoti. Dabar aptarkime ATMEGA8 ADC.
ATMEGA8 mes galime suteikti analoginį įvestį bet kuriam iš KETURIŲ PORTC kanalų, nesvarbu, kurį kanalą pasirenkame, nes visi yra vienodi, mes pasirinksime PORTC 0 arba PIN0 kanalą.
ATMEGA8 ADC yra 10 bitų skiriamoji geba, todėl valdiklis gali aptikti prasmę minimalų Vref / 2 ^ 10 pokytį, taigi, jei atskaitos įtampa yra 5 V, mes gauname skaitmeninį išėjimo prieaugį už kiekvieną 5/2 ^ 10 = 5mV. Taigi už kiekvieną 5mV įvesties prieaugį skaitmeniniame išėjime turėsime po vieną.
Dabar turime nustatyti ADC registrą, remdamiesi šiais terminais, 1. Pirmiausia turime įgalinti ADC funkciją ADC.
2. Čia gausime didžiausią įėjimo įtampą ADC konversijai + 5V. Taigi galime nustatyti didžiausią ADC vertę arba nuorodą į 5 V.
3. Valdiklis turi paleidimo konversijos funkciją, kuri reiškia, kad ADC konversija vyksta tik po išorinio trigerio, nes mes nenorime, kad mums reikia nustatyti registrus, kad ADC veiktų nepertraukiamai laisvai veikiant.
4. Bet kokiam ADC konversijų dažnis (analoginė vertė į skaitmeninę vertę) ir skaitmeninės išvesties tikslumas yra atvirkščiai proporcingi. Taigi, norėdami geresnio skaitmeninio išvesties tikslumo, turime pasirinkti mažesnį dažnį. Normaliam ADC laikrodžiui nustatome išankstinį ADC vertę iki didžiausios vertės (2). Kadangi mes naudojame vidinį 1MHz laikrodį, ADC laikrodis bus (1000000/2).
Tai yra vieninteliai keturi dalykai, kuriuos turime žinoti, norėdami pradėti naudoti ADC.
Visas minėtas keturias ypatybes nustato du registrai:
RED (ADEN): Šis bitas turi būti nustatytas norint įjungti ATMEGA ADC funkciją.
MĖLYNA (REFS1, REFS0): Šie du bitai naudojami nustatyti etaloninę įtampą (arba maksimalią įėjimo įtampą, kurią ketiname suteikti). Kadangi norime, kad atskaitos įtampa būtų 5 V, REFS0 turėtų būti nustatyta pagal lentelę.
GELTONA (ADFR): Šis bitas turi būti nustatytas, kad ADC veiktų nuolat (laisvo veikimo režimas).
PINK (MUX0-MUX3): Šie keturi bitai skirti įvesties kanalui pasakyti. Kadangi mes ketiname naudoti ADC0 arba PIN0, nereikia nustatyti jokių bitų, kaip nurodyta lentelėje.
BROWN (ADPS0-ADPS2): šie trys bitai skirti nustatyti išankstinį ADC skalę. Kadangi mes naudojame 2 išankstinį skalę, turime nustatyti vieną bitą.
DARK GREEN (ADSC): šis bitas nustatytas ADC pradėti konversiją. Šį bitą programoje galima išjungti, kai mums reikia sustabdyti konversiją.
FLEX jutiklio sąsajos su ATmega8 žingsnis po žingsnio paaiškinamos toliau pateiktu C kodu.