V tomto výučbe sa chystáme prepojiť snímač FLEX s mikrokontrolérom ATMEGA8. V ATMEGA8 použijeme na túto prácu funkciu 10bit ADC (Analog to Digital Conversion). Teraz ADC v ATMEGA nemôže prijať vstup viac ako + 5V.
Čo je to Flex senzor?
Senzor FLEX je snímač, ktorý mení svoj odpor, keď sa zmení jeho tvar. Je to znázornené na nasledujúcom obrázku.
Tento snímač sa používa na snímanie zmien v linearite. Takže keď je snímač FLEX ohnutý, odpor sa ohne drasticky. Toto je zobrazené na nasledujúcom obrázku.
Teraz na premenu tejto zmeny odporu na zmenu napätia použijeme obvod deliča napätia. V tejto odporovej sieti máme jeden konštantný odpor a druhý premenný odpor. Ako je znázornené na nasledujúcom obrázku, R1 predstavuje konštantný odpor a R2 predstavuje snímač FLEX, ktorý slúži ako odpor. Stred vetvy sa prevedie na meranie. Keď sa zmení odpor R2, Vout sa s ním zmení lineárne. Takže s týmto máme napätie, ktoré sa mení s linearitou.
Teraz je dôležité poznamenať, že vstup, ktorý prijme radič na prevod ADC, je len 50µAmp. Tento zaťažovací efekt odporového deliča napätia je dôležitý, pretože prúd odoberaný z Vout deliča napätia zvyšuje percento chýb, zatiaľ si nemusíme robiť starosti s účinkom zaťaženia.
Vezmeme dva odpory a vytvoríme oddeľovací obvod tak, aby sme pre 25Volt Vin dostali 5Volt Vout. Všetko, čo musíme urobiť, je vynásobiť hodnotu Vout programom „5“, aby sme získali skutočné vstupné napätie.
Súčasti sú povinné
HARDWARE: ATMEGA8, napájanie (5v), programátor AVR-ISP, JHD_162ALCD (16x2LCD), kondenzátor 100uF, kondenzátor 100nF (5 kusov), odpor 100KΩ.
SOFTWARE: Atmel studio 6.1, progisp alebo flash magic.
Schéma zapojenia a pracovné vysvetlenie
V obvode je PORTD z ATMEGA8 pripojený k dátovému portu LCD. Na 16x2 LCD displeji je 16 pinov, ak je podsvietenie, ak nie je podsvietenie, bude 14 pinov. Jeden môže napájať alebo nechať kolíky podsvietenia. Teraz v 14 kolíkoch je 8 dátových kolíkov (7-14 alebo D0-D7), 2 kolíky napájacieho zdroja (1 a 2 alebo VSS & VDD alebo gnd & + 5v), 3. kolík na kontrolu kontrastu (VEE - určuje, aké silné by mali byť znaky) zobrazené) a 3 ovládacie kolíky (RS & RW & E).
V obvode môžete pozorovať, že som vzal iba dva ovládacie piny. Kontrastný bit a READ / WRITE sa často nepoužívajú, aby ich bolo možné skratovať na zem. Toto nastavuje LCD do najvyššieho kontrastu a režimu čítania. Potrebujeme iba ovládať piny ENABLE a RS, aby sme mohli zodpovedajúcim spôsobom odosielať znaky a údaje.
Pripojenia LCD k ATmega8 sú nasledovné:
PIN1 alebo VSS na zem
PIN2 alebo VDD alebo VCC na napájanie + 5 V.
PIN3 alebo VEE to Ground (poskytuje maximálny kontrast najlepšie pre začiatočníkov)
PIN4 alebo RS (výber registra) na PB0 uC
PIN5 alebo RW (čítanie / zápis) na zem (prepnutie LCD do režimu čítania uľahčuje komunikáciu pre používateľa)
PIN6 alebo E (povoliť) na PB1 uC
PIN7 alebo D0 až PD0 uC
PIN8 alebo D1 až PD1 uC
PIN9 alebo D2 až PD2 uC
PIN10 alebo D3 až PD3 uC
PIN11 alebo D4 až D4 uC
PIN12 alebo D5 až PD5 uC
PIN13 alebo D6 až PD6 uC
PIN14 alebo D7 až PD7 uC
V obvode, ktorý vidíte, sme použili 8-bitovú komunikáciu (D0-D7), nie je to však povinné, môžeme použiť 4-bitovú komunikáciu (D4-D7), ale so 4-bitovým komunikačným programom je to trochu zložitejšie, takže sme šli s 8-bitovou komunikáciou. komunikácia. (Skontrolujte tiež tento návod: 16x2 LCD prepojenie s mikrokontrolérom AVR)
Takže z obyčajného pozorovania z vyššie uvedenej tabuľky pripájame 10 pinov LCD k radiču, v ktorých je 8 pinov dátových pinov a 2 piny pre ovládanie.
Napätie na R2 nie je úplne lineárne; bude to hlučný. Na odfiltrovanie šumu sú kondenzátory umiestnené cez každý odpor v obvode rozdeľovača, ako je to znázornené na obrázku.
Pot 1K slúži na nastavenie presnosti ADC. Teraz poďme diskutovať o ADC ATMEGA8.
V ATMEGA8 môžeme dať analógový vstup na ktorýkoľvek zo ŠTYROCH kanálov PORTC, nezáleží na tom, ktorý kanál si vyberieme, pretože všetky sú rovnaké, vyberieme kanál 0 alebo PIN0 PORTC.
V ATMEGA8 má ADC 10-bitové rozlíšenie, takže radič dokáže detekovať pocit minimálnej zmeny Vref / 2 ^ 10, takže ak je referenčné napätie 5 V, dostaneme digitálny výstupný prírastok za každých 5/2 ^ 10 = 5mV. Takže pre každý prírastok 5mV na vstupe budeme mať prírastok jedného na digitálnom výstupe.
Teraz musíme nastaviť register ADC na základe nasledujúcich podmienok, 1. Najprv musíme povoliť funkciu ADC v ADC.
2. Tu získate maximálne vstupné napätie pre prevod ADC je + 5V. Môžeme teda nastaviť maximálnu hodnotu alebo referenciu ADC na 5V.
3. Kontrolér má funkciu prevodu spúšťača, čo znamená, že prevod ADC sa uskutoční až po externom spúšťači, pretože nechceme, aby sme museli nastavovať registre, aby ADC bežal v režime nepretržitého voľného chodu.
4. Pre akýkoľvek ADC je frekvencia prevodu (analógová hodnota na digitálnu hodnotu) a presnosť digitálneho výstupu nepriamo úmerná. Pre lepšiu presnosť digitálneho výstupu teda musíme zvoliť menšiu frekvenciu. Pre bežné hodiny ADC nastavujeme predpredaj ADC na maximálnu hodnotu (2). Pretože používame interné hodiny 1MHZ, hodiny ADC budú (10 000 000/2).
To sú jediné štyri veci, ktoré musíme vedieť, aby sme mohli začať s ADC.
Všetky vyššie uvedené štyri funkcie sú nastavené dvoma registrami:
ČERVENÁ (ADEN): Tento bit musí byť nastavený pre povolenie funkcie ADC v ATMEGA.
MODRÁ (REFS1, REFS0): Tieto dva bity sa používajú na nastavenie referenčného napätia (alebo maximálneho vstupného napätia, ktoré dáme). Pretože chceme mať referenčné napätie 5V, mala by byť tabuľka nastavená na REFS0.
ŽLTÁ (ADFR): Tento bit musí byť nastavený, aby ADC bežal nepretržite (režim voľného chodu).
PINK (MUX0-MUX3): Tieto štyri bity slúžia na rozpoznanie vstupného kanálu. Pretože budeme používať ADC0 alebo PIN0, nemusíme nastavovať žiadne bity ako v tabuľke.
BROWN (ADPS0-ADPS2): tieto tri bity slúžia na nastavenie predskaláru pre ADC. Pretože používame prescalar 2, musíme nastaviť jeden bit.
DARK GREEN (ADSC): tento bit nastavený pre ADC na začatie konverzie. Tento bit je možné v programe deaktivovať, keď potrebujeme zastaviť prevod.
FLEX senzor prepojený s ATmega8 je vysvetlený krok za krokom v C kóde uvedenom nižšie.