- Porozumění modulu ADC:
- Kruhový diagram:
- Programování vašeho MSP430 pro ADC:
- Testování vašeho výsledku!
Společnou funkcí, která se používá téměř ve všech vestavěných aplikacích, je modul ADC (analogově-digitální převodník). Tyto analogově-digitální převodníky umí číst napětí z analogových snímačů, jako jsou teplotní snímače, snímače náklonu, snímače proudu, snímače Flex a mnoho dalšího. V tomto tutoriálu se tedy naučíme používat ADC v MSP430G2 ke čtení analogových napětí pomocí IDE Energia. Budeme propojovat malý potenciometr s deskou MSP a dodávat různé napětí na analogový pin, číst napětí a zobrazovat jej na sériovém monitoru.
Porozumění modulu ADC:
Věřte mi, připojení a programování MSP430G2 na čtení analogového napětí by sotva trvalo 10 minut. Věnujme však nějaký čas porozumění modulu ADC na desce MSP, abychom jej mohli efektivně využívat ve všech našich nadcházejících projektech.
Mikrokontrolér je digitální zařízení, což znamená, že dokáže porozumět pouze číslům 1 a 0. Ale v reálném světě je téměř vše jako teplota, vlhkost, rychlost větru atd. Analogické. Pro interakci s těmito analogovými změnami používá mikrokontrolér modul s názvem ADC. K dispozici je mnoho různých typů modulů ADC, ten, který se používá v našem MSP, je 10bitový ADC s 8 kanály SAR.
Postupná aproximace (SAR) ADC: SAR ADC pracuje pomocí komparátoru a některých logických konverzací. Tento typ ADC používá referenční napětí (které je proměnné) a porovnává vstupní napětí s referenčním napětím pomocí komparátoru a rozdíl, který bude digitálním výstupem, se ukládá z nejvýznamnějšího bitu (MSB). Rychlost srovnání závisí na hodinové frekvenci (Fosc), na které MSP pracuje.
10bitové rozlišení: Tento ADC je 8kanálový 10bitový ADC. Zde termín 8 kanálů znamená, že existuje 8 pinů ADC, pomocí kterých můžeme měřit analogové napětí. Termín 10bitový znamená rozlišení ADC. 10bitový znamená 2 až 10 (10), což je 1024. Toto je počet ukázkových kroků pro náš ADC, takže rozsah našich hodnot ADC bude od 0 do 1023. Hodnota se zvýší z 0 na 1023 na základě hodnoty napětí na krok, kterou lze vypočítat pomocí následujícího vzorce
Poznámka: Ve výchozím nastavení v Energii bude referenční napětí nastaveno na Vcc (~ 3v), můžete měnit referenční napětí pomocí možnosti analogReference () .
Zkontrolujte také, jak propojit ADC s jinými mikrokontroléry:
- Jak používat ADC v Arduino Uno?
- Propojení ADC0808 s mikrokontrolérem 8051
- Pomocí modulu ADC mikrokontroléru PIC
- Výukový program ADC pro Raspberry Pi
Kruhový diagram:
V našem předchozím tutoriálu jsme se již naučili, jak propojit LCD s MSP430G2, nyní jen přidáme potenciometr do MSP430, abychom mu dodávali proměnné napětí a zobrazovali hodnotu napětí na LCD. Pokud si nejste vědomi propojení LCD, pak se vraťte k výše uvedenému odkazu a přečtěte si jej, protože budu přeskakovat informace, abych se vyhnul pokání. Kompletní schéma zapojení projektu je uvedeno níže.
Jak vidíte, jsou zde použity dva potenciometry, jeden slouží k nastavení kontrastu LCD, zatímco druhý slouží k napájení proměnného napětí na desku. V tomto potenciometru je jeden krajní konec potenciometru připojen k Vcc a druhý konec je připojen k zemi. Středový kolík (modrý vodič) je připojen k kolíku P1.7. Tento pin P1.7 poskytuje proměnlivé napětí od 0 V (země) do 3,5 V (Vcc). Musíme tedy naprogramovat pin P1.7 na čtení tohoto proměnného napětí a jeho zobrazení na LCD.
V Energii potřebujeme vědět, ke kterému analogovému kanálu patří pin P1.7? To lze zjistit podle níže uvedeného obrázku
Na pravé straně je vidět kolík P1.7, tento kolík patří do A7 (kanál 7). Podobně můžeme najít příslušné číslo kanálu i pro další piny. Pro čtení analogových napětí můžete použít libovolné piny od A0 do A7, zde jsem vybral A7.
Programování vašeho MSP430 pro ADC:
Programování MSP430 na čtení analogového napětí je velmi jednoduché. V tomto programu načte analog hodnoty a vypočítá napětí s touto hodnotou a poté zobrazí obě na obrazovce LCD. Kompletní program lze nalézt v dolní části této stránky, dále jsem vysvětlovat program úryvků, které vám pomohou lépe pochopit.
Začneme definováním pinů LCD. Ty definují, ke kterému kolíku MSP430 jsou piny LCD připojeny. Můžete odkázat na připojení, abyste se ujistili, že jsou piny připojeny
#define RS 2 #define EN 3 #define D4 4 #define D5 5 #define D6 6 #define D7 7
Dále zahrneme soubor záhlaví pro LCD displej. Toto volá knihovnu, která obsahuje kód, jak má MSP komunikovat s LCD. Tato knihovna bude ve výchozím nastavení nainstalována do Energia IDE, takže se nemusíte starat o její přidání. Také se ujistěte, že je funkce Liquid Crystal volána s názvy pinů, které jsme právě definovali výše.
#zahrnout
Uvnitř naší funkce setup () bychom jen dali úvodní zprávu, která se zobrazí na obrazovce LCD. Nedostávám se příliš hluboko, protože jsme se již naučili, jak používat LCD s MSP430G2.
lcd.begin (16, 2); // Používáme 16 * 2 LCD displej lcd.setCursor (0,0); // Umístěte kurzor na 1. řádek 1. sloupec lcd.print ("MSP430G2553"); // Zobrazit úvodní zprávu lcd.setCursor (0, 1); // nastavit kurzor na 1. sloupec 2. řádek lcd.print ("- CircuitDigest"); // Zobrazí úvodní zprávu
Nakonec uvnitř naší funkce nekonečné smyčky () začneme číst napětí dodávané na pin A7. Jak jsme již diskutovali, mikrokontrolér je digitální zařízení a nedokáže přímo číst úroveň napětí. Pomocí techniky SAR je úroveň napětí mapována od 0 do 1024. Tyto hodnoty se nazývají hodnoty ADC, pro získání této hodnoty ADC jednoduše použijte následující řádek
int val = analogRead (A7); // načte hodnotu ADC z pinu A7
Zde se funkce analogRead () používá ke čtení analogové hodnoty pinu, uvnitř jsme určili A7, protože jsme na pin P1.7 připojili proměnné napětí. Nakonec tuto hodnotu uložíme do proměnné zvané „ val “. Typ této proměnné je celé číslo, protože do této proměnné dostaneme pouze hodnoty v rozsahu od 0 do 1024.
Dalším krokem by byl výpočet hodnoty napětí z hodnoty ADC. K tomu máme následující vzorce
Napětí = (hodnota ADC / rozlišení ADC) * referenční napětí
V našem případě již víme, že rozlišení ADC našeho mikrokontroléru je 1024. Hodnota ADC se také nachází v předchozím řádku a ukládá proměnnou nazvanou val. Referenční napětí se rovná napětí, při kterém mikrokontrolér je v provozu. Když je MSP430 deska napájena přes USB kabel a pak napájecí napětí 3,6V. Provozní napětí můžete měřit také pomocí multimetru přes Vcc a zemnící kolík na desce. Výše uvedený vzorec tedy zapadá do našeho případu, jak je uvedeno níže
plovoucí napětí = (float (val) / 1024) * 3,6; // vzorce pro převod hodnoty ADC na napětí
Mohli byste být zmateni s line float (val). Slouží k převodu proměnné „val“ z datového typu int na datový typ „float“. Tato konverze je nutná, protože pouze v případě, že dostaneme výsledek val / 1024 v floatu, můžeme jej vynásobit 3.6. Pokud je hodnota přijímána v celých číslech, bude vždy 0 a výsledek bude také nula. Jakmile jsme vypočítali hodnotu a napětí ADC, zbývá jen zobrazit výsledek na LCD obrazovce, což lze provést pomocí následujících řádků
lcd.setCursor (0, 0); // nastavit kurzor na sloupec 0, řádek 0 lcd.print ("ADC Val:"); lcd.print (val); // Zobrazit hodnotu ADC lcd.setCursor (0, 1); // nastavit kurzor na sloupec 0, řádek 1 lcd.print ("Napětí:"); lcd. tisk (napětí); // Zobrazovací napětí
Zde jsme zobrazili hodnotu ADC v prvním řádku a hodnotu napětí v druhém řádku. Nakonec dáme zpoždění 100 mil. Sekund a vyčistíme LCD obrazovku. To byla hodnota, která bude aktualizována každých 100 mil.
Testování vašeho výsledku!
Nakonec se dostáváme k zábavné části, která testuje náš program a hraje si s ním. Jednoduše proveďte připojení, jak je znázorněno na schématu zapojení. Pro připojení jsem použil malou prkénko a pomocí propojovacích vodičů jsem připojil prkénko k MSP430. Jakmile jsou připojení hotová, moje vypadala takto níže.
Poté nahrajte program, který je uveden níže, na desku MSP430 prostřednictvím IDE Energia. Měli byste vidět úvodní text na LCD, pokud nenastavíte kontrast LCD pomocí potenciometru, dokud neuvidíte jasná slova. Zkuste také stisknout resetovací tlačítko. Pokud věci fungují podle očekávání, měli byste vidět následující obrazovku.
Nyní změňte potenciometr a měli byste také vidět, že se napětí zobrazené na LCD mění. Ověřme si, zda měříme napětí správně, a to pomocí multimetru k měření napětí ve středu POT a zemí. Napětí zobrazené na multimetru by mělo být blízké hodnotě zobrazené na LCD, jak je znázorněno na obrázku níže.
To je ono, naučili jsme se měřit analogové napětí pomocí ADC na desce MSP430. Nyní můžeme propojit mnoho analogových senzorů s naší deskou pro čtení parametrů v reálném čase. Doufám, že jste pochopili výukový program a bavilo se ho učit. Pokud máte nějaké problémy, obraťte se prosím na sekci komentářů níže nebo na fórech. Pojďme se podívat na další výukový program MSP430 s dalším novým tématem.