- Pochopenie modulu ADC:
- Schéma zapojenia:
- Programovanie vášho MSP430 pre ADC:
- Testovanie vášho výsledku!
Spoločnou vlastnosťou, ktorá sa používa takmer v každej zabudovanej aplikácii, je modul ADC (analógovo-digitálny prevodník). Tieto analógovo-digitálne prevodníky dokážu čítať napätie z analógových snímačov, ako sú teplotný snímač, snímač náklonu, prúdový snímač, snímač Flex a oveľa viac. Takže v tomto tutoriále sa naučíme, ako používať ADC v MSP430G2 na čítanie analógových napätí pomocou IDE Energia. Pripojíme malý potenciometer k doske MSP a dodáme rôzne napätie na analógový pin, prečítame napätie a zobrazíme ho na sériovom monitore.
Pochopenie modulu ADC:
Verte mi, pripojenie a programovanie MSP430G2 na čítanie analógového napätia by trvalo len 10 minút. Poďme však stráviť nejaký čas porozumením modulu ADC na doske MSP, aby sme ho mohli efektívne využívať vo všetkých našich nadchádzajúcich projektoch.
Mikrokontrolér je digitálne zariadenie, čo znamená, že dokáže porozumieť iba číslam 1 a 0. Ale v skutočnom svete je takmer všetko ako teplota, vlhkosť, rýchlosť vetra atď. Na interakciu s týmito analógovými zmenami používa mikrokontrolér modul s názvom ADC. Existuje veľa rôznych typov ADC modulov, ktoré sa používajú v našom MSP, sú 8-kanálové 10-bitové ADC SAR.
Postupná aproximácia (SAR) ADC: SAR ADC pracuje pomocou komparátora a logických konverzácií. Tento typ ADC používa referenčné napätie (ktoré je premenné) a porovnáva vstupné napätie s referenčným napätím pomocou komparátora a rozdiel, ktorým bude digitálny výstup, sa uloží z najvýznamnejšieho bitu (MSB). Rýchlosť porovnania závisí od frekvencie hodín (Fosc), na ktorej pracuje MSP.
10-bitové rozlíšenie: Tento ADC je 8-kanálový 10-bitový ADC. Tu termín 8 kanálov naznačuje, že existuje 8 pinov ADC, pomocou ktorých môžeme merať analógové napätie. Pojem 10-bit znamená implicitné rozlíšenie ADC. 10-bit znamená 2 až 10 (10), čo je 1024. Toto je počet vzorových krokov pre náš ADC, takže rozsah našich hodnôt ADC bude od 0 do 1023. Hodnota sa zvýši z 0 na 1023 na základe hodnoty napätia na krok, ktorú je možné vypočítať pomocou nižšie uvedeného vzorca
Poznámka: Štandardne bude v systéme Energia referenčné napätie nastavené na Vcc (~ 3v), referenčné napätie môžete meniť pomocou možnosti analogReference () .
Skontrolujte tiež, ako prepojiť ADC s inými mikrokontrolérmi:
- Ako používať ADC v Arduino Uno?
- Prepojenie ADC0808 s mikrokontrolérom 8051
- Pomocou modulu ADC mikrokontroléra PIC
- Výukový program ADC pre Raspberry Pi
Schéma zapojenia:
V našom predchádzajúcom tutoriáli sme sa už naučili, ako prepojiť LCD s MSP430G2, teraz len pridáme potenciometer do MSP430, aby sme mu dodávali premenlivé napätie a zobrazovali hodnotu napätia na LCD. Ak neviete o prepojení LCD, vráťte sa na vyššie uvedený odkaz a prečítajte si ho, pretože tieto informácie preskočím, aby som neľutoval. Kompletná schéma zapojenia projektu je uvedená nižšie.
Ako vidíte, sú tu použité dva potenciometre, jeden slúži na nastavenie kontrastu LCD a druhý na napájanie premenlivého napätia na dosku. V tomto potenciometri je jeden krajný koniec potenciometra pripojený k napätiu Vcc a druhý koniec je pripojený k zemi. Stredový kolík (modrý vodič) je pripojený k kolíku P1.7. Tento pin P1.7 poskytuje premenlivé napätie od 0 V (zem) do 3,5 V (Vcc). Takže musíme naprogramovať pin P1.7 tak, aby čítal toto premenné napätie a zobrazoval ho na LCD.
V Energii potrebujeme vedieť, ku ktorému analógovému kanálu patrí pin P1.7? To nájdete podľa obrázka nižšie
Na pravej strane môžete vidieť pin P1.7, tento pin patrí A7 (kanál 7). Podobne môžeme nájsť príslušné číslo kanálu aj pre ďalšie piny. Na čítanie analógových napätí môžete použiť akékoľvek piny od A0 do A7, tu som vybral A7.
Programovanie vášho MSP430 pre ADC:
Programovanie vášho MSP430 na čítanie analógového napätia je veľmi jednoduché. V tomto programe bude čítať analóg hodnoty a vypočítať napätie s touto hodnotou a potom ich zobraziť na obrazovke LCD. Kompletný program možno nájsť v dolnej časti tejto stránky, ďalej som vysvetľovať program úryvkov, ktoré vám pomôžu lepšie pochopiť.
Začneme definovaním pinov LCD. Tieto definujú, ku ktorému kolíku MSP430 sú pripojené kolíky LCD. Môžete odkázať na svoje pripojenie, aby ste sa uistili, či sú kolíky pripojené jednotlivo
#define RS 2 #define EN 3 #define D4 4 #define D5 5 #define D6 6 #define D7 7
Ďalej zahrnieme hlavičkový súbor pre LCD displej. Toto volá knižnicu, ktorá obsahuje kód, ako má MSP komunikovať s LCD. Táto knižnica bude predvolene nainštalovaná v Energia IDE, takže sa nemusíte trápiť s jej pridávaním. Uistite sa tiež, že funkcia Liquid Crystal je volaná s názvami pinov, ktoré sme práve definovali vyššie.
#include
V rámci našej funkcie setup () by sme iba poskytli úvodnú správu, ktorá sa zobrazí na obrazovke LCD. Nedostávam sa príliš hlboko, pretože sme sa už naučili, ako používať LCD s MSP430G2.
lcd.začiatok (16, 2); // Používame 16 * 2 LCD displej lcd.setCursor (0,0); // Umiestnite kurzor na 1. riadok 1. stĺpec lcd.print ("MSP430G2553"); // Zobraziť úvodnú správu lcd.setCursor (0, 1); // nastav kurzor na 1. stĺpec 2. riadok lcd.print ("- CircuitDigest"); // Zobrazí úvodnú správu
Nakoniec vo vnútri našej funkcie nekonečnej slučky () začneme čítať napätie dodávané na pin A7. Ako sme už diskutovali, mikrokontrolér je digitálne zariadenie a nedokáže čítať úroveň napätia priamo. Pomocou techniky SAR je úroveň napätia mapovaná od 0 do 1024. Tieto hodnoty sa nazývajú hodnoty ADC. Ak chcete získať túto hodnotu ADC, použite nasledujúci riadok.
int val = analogRead (A7); // načíta hodnotu ADC z kolíka A7
Tu sa funkcia analogRead () používa na čítanie analógovej hodnoty kolíka, v ňom sme zadali A7, pretože sme na kolík P1.7 pripojili premenlivé napätie. Nakoniec túto hodnotu uložíme do premennej s názvom „ val “. Typ tejto premennej je celé číslo, pretože dostaneme iba hodnoty od 0 do 1024, ktoré sa majú uložiť v tejto premennej.
Ďalším krokom by bol výpočet hodnoty napätia z hodnoty ADC. Aby sme to dosiahli, máme nasledujúce vzorce
Napätie = (hodnota ADC / rozlíšenie ADC) * referenčné napätie
V našom prípade už vieme, že rozlíšenie ADC nášho mikrokontroléra je 1024. Hodnota ADC sa nachádza aj v predchádzajúcom riadku a je v nej uložená premenná nazývaná val. Referenčné napätie sa rovná napätie, pri ktorom mikrokontrolér je v prevádzke. Keď je doska MSP430 napájaná cez USB kábel, prevádzkové napätie je 3,6V. Prevádzkové napätie môžete merať aj pomocou multimetra cez Vcc a uzemňovací kolík na doske. Vyššie uvedený vzorec teda zapadá do nášho prípadu, ako je uvedené nižšie
float voltage = (float (val) / 1024) * 3,6; // vzorce na prevod hodnoty ADC na napätie
Mohli by ste byť zmätení s riadkom float (val). Používa sa na prevod premennej „val“ z dátového typu int na dátový typ „float“. Táto konverzia je potrebná, pretože iba ak dostaneme výsledok val / 1024 v plaváku, môžeme ho vynásobiť 3.6. Pokiaľ je hodnota prijímaná v celých číslach, bude mať vždy hodnotu 0 a výsledok bude tiež nulový. Po vypočítaní hodnoty ADC a napätia zostáva iba zobraziť výsledok na LCD obrazovke, čo je možné vykonať pomocou nasledujúcich riadkov
lcd.setCursor (0, 0); // nastav kurzor na stlpec 0, riadok 0 lcd.print ("ADC Val:"); lcd.print (val); // Zobraziť hodnotu ADC lcd.setCursor (0, 1); // nastaviť kurzor na stĺpec 0, riadok 1 lcd.print ("Napätie:"); lcd.tlač (napätie); // Zobrazovacie napätie
Tu sme zobrazili hodnotu ADC v prvom riadku a hodnotu napätia v druhom riadku. Nakoniec dáme oneskorenie 100 mil. Sekúnd a vyčistíme LCD obrazovku. To bola hodnota, ktorá sa bude aktualizovať každých 100 mil.
Testovanie vášho výsledku!
Nakoniec prichádzame k zábavnej časti, ktorá testuje náš program a hrá sa s ním. Stačí vykonať zapojenie podľa schémy zapojenia. Na pripojenie som použil malú kontaktnú dosku a pomocou prepojovacích vodičov som pripojil kontaktnú dosku k MSP430. Akonáhle sú pripojenia hotové, moje pripojenie vyzeralo takto.
Potom pomocou nástroja Energia IDE nahrajte program uvedený nižšie na dosku MSP430. Úvodný text by ste mali vidieť na LCD displeji, pokiaľ nenastavíte kontrast LCD pomocou potenciometra, kým neuvidíte zreteľné slová. Skúste tiež stlačiť tlačidlo reset. Ak veci fungujú podľa očakávaní, mali by ste vidieť nasledujúcu obrazovku.
Teraz nastavte potenciometer a mali by ste vidieť, ako sa mení napätie zobrazené na LCD. Overme si, či meriame napätie správne, a to pomocou multimetra na meranie napätia cez stred POT a zem. Napätie zobrazené na multimetri by malo byť blízke hodnote zobrazenej na LCD displeji, ako je to znázornené na obrázku nižšie.
To je všetko, naučili sme sa, ako merať analógové napätie pomocou ADC na doske MSP430. Teraz môžeme s našou doskou prepojiť mnoho analógových senzorov na čítanie parametrov v reálnom čase. Dúfam, že ste pochopili výukový program a rád sa ho naučil. Ak máte problémy, obráťte sa na komentár nižšie alebo na fórach. Poďme na to v ďalšom návode k MSP430 s ďalšou novou témou.