V tomto tutoriálu budeme propojovat senzor FLEX s mikrokontrolérem ATMEGA8. V ATMEGA8 použijeme k provedení této úlohy funkci 10bit ADC (Analog to Digital Conversion). Nyní ADC v ATMEGA nemůže přijmout vstup větší než + 5V.
Co je to Flex senzor?
Senzor FLEX je snímač, který mění svůj odpor, když se změní jeho tvar. Je to znázorněno na následujícím obrázku.
Tento senzor se používá ke snímání změn v linearitě. Když je snímač FLEX ohnutý, odpor se ohne drasticky. To je znázorněno na následujícím obrázku.
Nyní pro převod této změny odporu na změnu napětí použijeme obvod děliče napětí. V této odporové síti máme jeden konstantní odpor a další proměnný odpor. Jak je znázorněno na následujícím obrázku, R1 je zde konstantní odpor a R2 je snímač FLEX, který funguje jako odpor. Střed větve se převede na měření. Když se změní odpor R2, Vout se s ním změní lineárně. Takže s tím máme napětí, které se mění s linearitou.
Nyní je důležité si uvědomit, že vstup přijímaný řadičem pro převod ADC je tak nízký jako 50µAmp. Tento zatěžovací účinek odporového děliče napětí je důležitý, protože proud odebíraný z Vout děliče napětí zvyšuje procento chyb, zatím si nemusíme dělat starosti s efektem načítání.
Vezmeme dva odpory a vytvoříme oddělovací obvod, takže pro 25Volts Vin dostaneme 5Volt Vout. Jediné, co musíme udělat, je znásobit hodnotu Vout v programu „5“, abychom získali skutečné vstupní napětí.
Požadované komponenty
HARDWARE: ATMEGA8, napájecí zdroj (5 V), AVR-ISP PROGRAMÁTOR, JHD_162ALCD (16x2LCD), 100uF kondenzátor, 100nF kondenzátor (5 kusů), 100KΩ rezistor.
SOFTWARE: Atmel studio 6.1, progisp nebo flash magic.
Schéma zapojení a pracovní vysvětlení
V obvodu je PORTD ATMEGA8 připojen k datovému portu LCD. V 16x2 LCD je 16 kolíků, pokud je podsvícení, pokud není podsvícení, bude 14 kolíků. Jeden může napájet nebo nechat kolíky podsvícení. Nyní ve 14 kolíky jsou 8 datových kolíky (7-14 nebo D0-D7), 2 napájecí kolíky elektrárny (1 & 2 nebo VSS a VDD nebo GND a + 5 V), 3 rd kolík pro řízení kontrastu (VEE-určuje, jak silná znaky musí být a 3 kontrolní piny (RS & RW & E).
V okruhu můžete pozorovat, že jsem vzal pouze dva kontrolní piny. Kontrastní bit a READ / WRITE se často nepoužívají, aby mohly být zkratovány na zem. LCD se tak dostane do režimu nejvyššího kontrastu a čtení. Abychom mohli odpovídajícím způsobem odesílat znaky a data, musíme pouze ovládat piny ENABLE a RS.
Připojení LCD s ATmega8 jsou následující:
PIN1 nebo VSS na zem
PIN2 nebo VDD nebo VCC na + 5V napájení
PIN3 nebo VEE to Ground (poskytuje maximální kontrast nejlepší pro začátečníky)
PIN4 nebo RS (výběr registru) na PB0 uC
PIN5 nebo RW (čtení / zápis) na zem (přepne LCD do režimu čtení, což uživateli usnadní komunikaci)
PIN6 nebo E (povolit) na PB1 uC
PIN7 nebo D0 až PD0 uC
PIN8 nebo D1 až PD1 uC
PIN9 nebo D2 až PD2 uC
PIN10 nebo D3 až PD3 uC
PIN11 nebo D4 až D4 uC
PIN12 nebo D5 až PD5 uC
PIN13 nebo D6 až PD6 uC
PIN14 nebo D7 až PD7 uC
V obvodu, který vidíte, jsme použili 8bitovou komunikaci (D0-D7), ale to není povinné, můžeme použít 4bitovou komunikaci (D4-D7), ale se 4bitovým komunikačním programem se stává trochu složitější, takže jsme prostě šli s 8bitovou sdělení. (Podívejte se také na tento návod: 16x2 LCD rozhraní s mikrokontrolérem AVR)
Takže z pouhého pozorování z výše uvedené tabulky připojujeme 10 pinů LCD k řadiči, ve kterém 8 pinů jsou datové piny a 2 piny jsou pro ovládání.
Napětí na R2 není zcela lineární; bude to hlučný. K odfiltrování šumu jsou kondenzátory umístěny napříč každým odporem v děličovém obvodu, jak je znázorněno na obrázku.
Hrnec 1K zde slouží k nastavení přesnosti ADC. Nyní pojďme diskutovat o ADC ATMEGA8.
V ATMEGA8 můžeme dát analogový vstup kterémukoli ze ČTYŘI kanálů PORTC, nezáleží na tom, který kanál zvolíme, protože všechny jsou stejné, zvolíme kanál 0 nebo PIN0 PORTC.
V ATMEGA8 má ADC 10bitové rozlišení, takže regulátor dokáže detekovat smysl minimální změny Vref / 2 ^ 10, takže pokud je referenční napětí 5V, dostaneme digitální výstupní přírůstek pro každých 5/2 ^ 10 = 5mV. Takže pro každý přírůstek 5mV na vstupu budeme mít přírůstek jednoho na digitálním výstupu.
Nyní musíme nastavit registr ADC na základě následujících podmínek, 1. Nejprve musíme povolit funkci ADC v ADC.
2. Zde získáme maximální vstupní napětí pro převod ADC + 5V. Můžeme tedy nastavit maximální hodnotu nebo referenci ADC na 5V.
3. Řadič má funkci převodu spouštěče, což znamená, že převod ADC proběhne až po externím spouštěči, protože nechceme, abychom potřebovali nastavit registry pro provoz ADC v režimu nepřetržitého volného chodu.
4. U jakéhokoli ADC jsou frekvence převodu (analogová hodnota na digitální hodnotu) a přesnost digitálního výstupu nepřímo úměrné. Pro lepší přesnost digitálního výstupu tedy musíme zvolit nižší frekvenci. U normálních hodin ADC nastavujeme předprodej ADC na maximální hodnotu (2). Protože používáme vnitřní hodiny 1MHZ, hodiny ADC budou (10 000 000/2).
To jsou jediné čtyři věci, které potřebujeme vědět, abychom mohli začít s ADC.
Všechny výše uvedené čtyři funkce jsou nastaveny dvěma registry:
ČERVENÁ (ADEN): Tento bit musí být nastaven pro povolení funkce ADC ATMEGA.
MODRÁ (REFS1, REFS0): Tyto dva bity se používají k nastavení referenčního napětí (nebo maximálního vstupního napětí, které dáme). Protože chceme mít referenční napětí 5V, měl by být REFS0 nastaven podle tabulky.
ŽLUTÁ (ADFR): Tento bit musí být nastaven, aby ADC běžel nepřetržitě (režim volného chodu).
PINK (MUX0-MUX3): Tyto čtyři bity slouží ke sdělování vstupního kanálu. Protože budeme používat ADC0 nebo PIN0, nemusíme nastavovat žádné bity jako v tabulce.
BROWN (ADPS0-ADPS2): tyto tři bity slouží k nastavení prescalar pro ADC. Protože používáme prescalar 2, musíme nastavit jeden bit.
DARK GREEN (ADSC): tento bit nastaven pro ADC ke spuštění převodu. Tento bit lze v programu deaktivovat, když potřebujeme zastavit převod.
Čidlo FLEX propojující ATmega8 je vysvětleno krok za krokem v C kódu uvedeném níže.