V tej vadnici bomo povezali senzor FLEX z mikrokrmilnikom ATMEGA8. V ATMEGA8 bomo za to delo uporabili funkcijo 10-bitnega ADC (analogna v digitalno pretvorbo). Zdaj ADC v ATMEGA ne more sprejeti vhoda več kot + 5V.
Kaj je Flex senzor?
FLEX senzor je transduktor, ki spreminja svoj upor, ko je njegova oblika spremenila. Prikazano je na spodnji sliki.
Ta senzor se uporablja za zaznavanje sprememb linearnosti. Torej, ko je senzor FLEX upognjen, se upor drastično upogne. To je prikazano na spodnji sliki.
Zdaj za pretvorbo te spremembe odpornosti na spremembo napetosti bomo uporabili vezje delilnika napetosti. V tem uporovnem omrežju imamo en konstanten upor in drugi spremenljivi upor. Kot je prikazano na spodnji sliki, je R1 tu konstanten upor, R2 pa je FLEX senzor, ki deluje kot upor. Srednja točka veje se meri. Ko se upor R2 spremeni, se Vout z njim linearno spremeni. Torej imamo pri tem napetost, ki se spreminja z linearnostjo.
Zdaj je pomembno omeniti, da je vhod, ki ga krmilnik za pretvorbo ADC sprejme le 50 μAmp. Ta učinek obremenitve delilnika napetosti na osnovi upora je pomemben, saj tok, ki ga potegne Vout napetostnega delilnika, poveča odstotek napake, zaenkrat nam ni treba skrbeti za učinek obremenitve.
Vzeli bomo dva upora in oblikovali delilno vezje, tako da bomo za 25Volts Vin dobili 5Volt Vout. Torej vse, kar moramo storiti, je, da v programu pomnožimo vrednost Vout s "5", da dobimo dejansko vhodno napetost.
Potrebne komponente
OPREMA: ATMEGA8, napajalnik (5v), AVR-ISP PROGRAMMER, JHD_162ALCD (16x2LCD), kondenzator 100uF, kondenzator 100nF (5 kosov), upor 100KΩ.
PROGRAMSKA OPREMA: Atmel studio 6.1, progisp ali flash magic.
Shema vezja in delovna razlaga
V vezju PORTD ATMEGA8 je priključen na podatkovna vrata LCD. Na 16x2 LCD-ju je 16 zatičev, če obstaja osvetlitev ozadja, če ni osvetlitve ozadja, bo 14 zatičev. Lahko napajate ali pustite zatiče zadnje luči. Sedaj v 14 zatiči obstaja 8 podatkovnih zatiči (7-14 ali D0-D7), 2 Mrežni zatiči (1 & 2 ali VSS in VDD ali gnd in +5), 3 rd pin za nadzor kontrasta (vee-kontrole kako debela mora biti znake prikazano) in 3 krmilne nožice (RS & RW & E).
V vezju lahko opazite, da sem vzel le dva kontrolna zatiča. Kontrastni bit in READ / WRITE se ne uporabljata pogosto, zato jih je mogoče kratko skleniti na tla. To LCD zaslon postavi v najvišji kontrast in način branja. Samo nadzorovati moramo ENABLE in RS pin, da ustrezno pošljemo znake in podatke.
Povezave LCD z ATmega8 so naslednje:
PIN1 ali VSS na ozemljitev
PIN2 ali VDD ali VCC do + 5v moči
PIN3 ali VEE do Ground (daje največji kontrast najboljši za začetnike)
PIN4 ali RS (Register Selection) na PB0 od uC
PIN5 ali RW (branje / pisanje) na ozemljitev (preklopi LCD v način branja, olajša komunikacijo uporabnika)
PIN6 ali E (Omogoči) do PB1 uC
PIN7 ali D0 do PD0 uC
PIN8 ali D1 do PD1 uC
PIN9 ali D2 do PD2 uC
PIN10 ali D3 do PD3 uC
PIN11 ali D4 do D4 uC
PIN12 ali D5 do PD5 uC
PIN13 ali D6 do PD6 uC
PIN14 ali D7 do PD7 uC
V vezju lahko vidite, da smo uporabili 8 -bitno komunikacijo (D0-D7), vendar to ni obvezno, lahko uporabimo 4-bitno komunikacijo (D4-D7), vendar s 4-bitnim komunikacijskim programom postane nekoliko bolj zapleten, zato smo pravkar šli z 8-bitnimi komunikacijo. (Preverite tudi to vadnico: 16x2 povezava LCD z mikrokrmilnikom AVR)
Torej iz zgolj opazovanja iz zgornje tabele na krmilnik priključimo 10 zatičev LCD, v katerih je 8 zatičev podatkovnih zatičev in 2 zatiča za nadzor.
Napetost na R2 ni popolnoma linearna; bo hrupno. Za filtriranje hrupa so kondenzatorji nameščeni čez vsak upor v delilnem vezju, kot je prikazano na sliki.
Pot 1K je tukaj prilagoditev natančnosti ADC. Zdaj pa se pogovorimo o ADC ATMEGA8.
V ATMEGA8 lahko damo analogni vhod na katerega koli od ŠTIRIH kanalov PORTC-a, ni pomembno, kateri kanal bomo izbrali, saj so vsi enaki, izbrali bomo kanal 0 ali PIN0 PORTC-a.
V ATMEGA8 je ADC 10-bitne ločljivosti, tako da lahko krmilnik zazna najmanjšo spremembo Vref / 2 ^ 10, tako da če je referenčna napetost 5V, dobimo prirast digitalnega izhoda za vsakih 5/2 ^ 10 = 5mV. Tako bomo za vsakih 5mV prirastka na vhodu imeli prirastek enega pri digitalnem izhodu.
Zdaj moramo nastaviti register ADC na podlagi naslednjih pogojev, 1. Najprej moramo v ADC omogočiti funkcijo ADC.
2. Tu bomo dobili največjo vhodno napetost za pretvorbo ADC + 5V. Tako lahko nastavimo največjo vrednost ali referenco ADC na 5V.
3. Krmilnik ima funkcijo pretvorbe sprožilca, kar pomeni, da se pretvorba ADC izvede šele po zunanjem sprožilcu, saj ne želimo, da bi morali registrirati, da ADC deluje v neprekinjenem načinu prostega teka.
4. Za kateri koli ADC sta frekvenca pretvorbe (analogna vrednost v digitalno vrednost) in natančnost digitalnega izhoda obratno sorazmerna. Za boljšo natančnost digitalnega izhoda moramo izbrati manj pogostost. Za običajno uro ADC nastavimo predprodajo ADC na največjo vrednost (2). Ker uporabljamo interno uro 1MHZ, bo ura ADC (1000000/2).
To so edine štiri stvari, ki jih moramo vedeti za začetek uporabe ADC.
Vse zgornje štiri značilnosti nastavita dva registra:
RDEČA (ADEN): Ta bit je treba nastaviti, da omogočite funkcijo ADC ATMEGA.
MODRA (REFS1, REFS0): Ta dva bita se uporabljata za nastavitev referenčne napetosti (ali največje vhodne napetosti, ki jo bomo podali). Ker želimo imeti referenčno napetost 5V, je treba v tabeli nastaviti REFS0.
RUMENA (ADFR): Ta bit mora biti nastavljen, da ADC deluje neprekinjeno (način prostega teka).
PINK (MUX0-MUX3): Ti štirje biti služijo za sporočanje vhodnemu kanalu. Ker bomo uporabili ADC0 ali PIN0, nam ni treba nastaviti nobenih bitov kot v tabeli.
BROWN (ADPS0-ADPS2): ti trije biti so namenjeni nastavitvi predkalarja za ADC. Ker uporabljamo preskalar 2, moramo nastaviti en bit.
DARK GREEN (ADSC): ta bit je nastavljen za ADC, da začne pretvorbo. Ta bit lahko v programu onemogočite, ko moramo pretvorbo ustaviti.
Vmesnik senzorja FLEX z ATmega8 je razložen po korakih v spodnji C-kodi.