Vienas bendras bruožas, naudojamas beveik kiekvienoje įterptojoje programoje, yra ADC modulis (analoginis į skaitmeninį keitiklį). Šie analoginiai – skaitmeniniai keitikliai gali nuskaityti įtampą iš analoginių jutiklių, tokių kaip temperatūros jutiklis, pakreipimo jutiklis, srovės jutiklis, „Flex“ jutiklis ir daug daugiau. Taigi šioje pamokoje sužinosime, kaip naudoti ADC MSP430G2, norint perskaityti analogines įtampas naudojant „Energia IDE“. Mes sujungsime mažą potenciometrą su MSP plokšte ir tieksime kintamą įtampą į analoginį kaištį, nuskaitysime įtampą ir parodysime ją nuosekliame monitoriuje.
Suprasti ADC modulį:
Patikėkite, vargu ar užtruks 10 minučių, kol prisijungsite ir užprogramuosite MSP430G2, kad nuskaitytų analoginę įtampą. Tačiau praleiskime šiek tiek laiko suprasdami ADC modulį MSP lentoje, kad galėtume jį efektyviai naudoti visuose būsimuose projektuose.
Mikrovaldiklis yra skaitmeninis įrenginys, tai reiškia, kad jis gali suprasti tik 1 ir 0. Tačiau realiame pasaulyje beveik viskas, pavyzdžiui, temperatūra, drėgmė, vėjo greitis ir kt., Yra analogiško pobūdžio. Siekdamas sąveikauti su šiais analoginiais pokyčiais, mikrovaldiklis naudoja modulį, vadinamą ADC. Yra daug įvairių ADC modulių tipų, mūsų MSP naudojamas SAR 8 kanalo 10 bitų ADC.
Nuoseklus aproksimavimo (SAR) ADC: SAR ADC veikia palyginimo ir kai kurių loginių pokalbių pagalba. Šio tipo ADC naudoja etaloninę įtampą (kuri yra kintama) ir palygina įvesties įtampą su etalonine įtampa, naudodama palygintuvą, o skirtumas, kuris bus skaitmeninis išėjimas, išsaugomas iš reikšmingiausio bitų (MSB). Palyginimo greitis priklauso nuo laikrodžio dažnio (Fosc), kuriuo veikia MSP.
10 bitų skiriamoji geba: Šis ADC yra 8 kanalų 10 bitų ADC. Čia terminas 8 kanalai reiškia, kad yra 8 ADC kaiščiai, kuriais galime išmatuoti analoginę įtampą. Terminas 10 bitų reiškia ADC skiriamąją gebą. 10 bitų reiškia 2 iki dešimties (2 10) galios, kuri yra 1024. Tai yra mūsų ADC pavyzdžių žingsnių skaičius, todėl mūsų ADC reikšmių diapazonas bus nuo 0 iki 1023. Vertė padidės nuo 0 iki 102 1023 pagal įtampos vertę viename žingsnyje, kurią galima apskaičiuoti naudojant šią formulę
Pastaba: Pagal numatytuosius nustatymus „Energia“ etaloninė įtampa bus nustatyta kaip Vcc (~ 3v). Galite pakeisti etaloninę įtampą naudodami parinktį „ analogReference“ () .
Taip pat patikrinkite, kaip susieti ADC su kitais mikrovaldikliais:
- Kaip naudoti ADC „Arduino Uno“?
- Sąsaja ADC0808 su 8051 mikrovaldikliu
- Naudojant PIC mikrovaldiklio ADC modulį
- Raspberry Pi ADC pamoka
Grandinės schema:
Ankstesnėje mūsų pamokoje mes jau sužinojome, kaip susieti LCD ekraną su MSP430G2, dabar mes tik pridėsime potenciometrą prie MSP430, kad jis pateiktų kintamą įtampą ir parodytų įtampos vertę LCD. Jei nežinote apie LCD sąsają, grįžkite į aukščiau esančią nuorodą ir perskaitykite ją, nes aš praleisiu informaciją, kad išvengčiau atgailos. Visa projekto schema pateikta žemiau.
Kaip matote, čia naudojami du potenciometrai, vienas naudojamas LCD kontrastui nustatyti, kitas - kintamos įtampos tiekimui į plokštę. Tame potenciometre vienas galutinis potenciometro galas yra prijungtas prie Vcc, o kitas galas - su žeme. Centrinis kaištis (mėlynas laidas) yra sujungtas su kaiščiu P1.7. Šis kaištis P1.7 užtikrins kintamą įtampą nuo 0 V (žemės) iki 3,5 V (Vcc). Taigi mes turime užprogramuoti kaištį P1.7 perskaityti šią kintamą įtampą ir parodyti ją LCD.
„Energia“ turime žinoti, kuriam analoginiam kanalui priklauso kaištis P1.7? Tai galima rasti nurodžius žemiau pateiktą paveikslėlį
Dešinėje pusėje galite pamatyti kaištį P1.7, šis kaištis priklauso A7 (7 kanalas). Panašiai galime rasti atitinkamą kanalo numerį ir kitiems kaiščiams. Analoginei įtampai skaityti galite naudoti bet kokius kaiščius nuo A0 iki A7, čia pasirinkau A7.
MSP430 programavimas ADC:
Programuoti MSP430 skaityti analoginę įtampą yra labai paprasta. Šioje programoje bus nuskaitomas vertės analogas ir apskaičiuojama įtampa pagal tą vertę, tada abu bus rodomi LCD ekrane. Visa programa, galima rasti šio puslapio apačioje, dar žemiau aš paaiškinti programą fragmentus, siekiant padėti jums geriau suprasti.
Mes pradedame apibrėždami LCD kaiščius. Jie apibrėžia, prie kurio MSP430 kaiščio yra prijungti LCD kaiščiai. Galite nurodyti jums ryšį, kad įsitikintumėte, jog kaiščiai yra atitinkamai prijungti
# apibrėžti RS 2 # apibrėžti EN 3 # apibrėžti D4 4 # apibrėžti D5 5 # apibrėžti D6 6 # apibrėžti D7 7
Toliau įtraukiame skystųjų kristalų ekrano antraštės failą. Tai iškviečia biblioteką, kurioje yra kodas, kaip MSP turėtų bendrauti su LCD. Ši biblioteka pagal numatytuosius nustatymus bus įdiegta „Energia IDE“, todėl jums nereikės stengtis jos pridėti. Taip pat įsitikinkite, kad funkcija „Skystasis kristalas“ yra iškviesta su kaiščių pavadinimais, kuriuos ką tik apibrėžėme aukščiau.
# įtraukti
Vykdydami sąrankos () funkciją, mes tiesiog duosime įvadinį pranešimą, kuris bus rodomas LCD ekrane. Aš nesigilinu į gilumą, nes mes jau išmokome naudotis LCD su MSP430G2.
lcd.begin (16, 2); // Mes naudojame 16 * 2 skystųjų kristalų ekraną lcd.setCursor (0,0); // Užveskite žymeklį prie 1-osios eilutės 1-ojo stulpelio lcd.print ("MSP430G2553"); // Rodyti įvestinį pranešimą lcd.setCursor (0, 1); // nustatykite žymeklį į 1 stulpelio 2 eilutę lcd.print ("- CircuitDigest"); // Rodyti įvadinį pranešimą
Galiausiai, begalinės kilpos () funkcijos viduje, mes pradedame skaityti įtampą, tiekiamą į A7 kaištį. Kaip jau aptarėme, mikrovaldiklis yra skaitmeninis įrenginys ir jis negali tiesiogiai nuskaityti įtampos lygio. Naudojant SAR metodiką, įtampos lygis atvaizduojamas nuo 0 iki 1024. Šios vertės vadinamos ADC reikšmėmis, kad gautumėte šią ADC vertę, tiesiog naudokite šią eilutę
int val = analogasRead (A7); // perskaitykite ADC vertę iš kaiščio A7
Čia funkcija analogRead () naudojama kaiščio analoginei vertei nuskaityti, jo viduje nurodėme A7, nes mes prijungėme kintamą įtampą prie kaiščio P1.7. Galiausiai šią vertę išsaugome kintamajame, vadinamame „ val “. Šio kintamojo tipas yra sveikasis skaičius, nes šiame kintamajame bus saugomos tik vertės nuo 0 iki 1024.
Kitas žingsnis būtų įtampos vertės apskaičiavimas pagal ADC vertę. Norėdami tai padaryti, turime šias formules
Įtampa = (ADC vertė / ADC skiriamoji geba) * etaloninė įtampa
Mūsų atveju mes jau žinome, kad mūsų mikrovaldiklio skiriamoji geba yra 1024. ADC vertė taip pat randama ankstesnėje eilutėje ir saugoma kintamasis, vadinamas val. Atskaitos įtampa yra lygi įtampos, kuriai esant mikrokontroleris veikia. Kai MSP430 lenta maitina per USB kabelį, tada darbinė įtampa yra 3.6V. Taip pat galite išmatuoti darbinę įtampą naudodami multimetrą per Vcc ir žemės kaištį lentoje. Taigi aukščiau pateikta formulė tinka mūsų atvejui, kaip parodyta žemiau
plūdės įtampa = (plūdė (val) / 1024) * 3,6; // formulės, skirtos ADC vertei paversti įtampa
Galite būti supainioti su plūdine (val) valtimi. Tai naudojama kintamajam „val“ paversti iš int duomenų tipo į „float“ duomenų tipą. Šis perskaičiavimas reikalingas, nes tik gavę val / 1024 rezultatą plūdėje galime jį padauginti iš 3,6. Jei vertė gaunama sveikuoju skaičiumi, ji visada bus 0, o rezultatas taip pat bus nulis. Kai apskaičiuojame ADC vertę ir įtampą, lieka tik rodyti rezultatą LCD ekrane, kurį galima padaryti naudojant šias eilutes
lcd.setCursor (0, 0); // nustatykite žymeklį į 0 stulpelį, 0 eilutę lcd.print ("ADC Val:"); lcd.print (val); // Rodyti ADC reikšmę lcd.setCursor (0, 1); // nustatykite žymeklį į 0 stulpelį, 1 eilutė lcd.print ("Įtampa:"); lcd.print (įtampa); // Ekrano įtampa
Čia mes parodėme ADC vertę pirmoje eilutėje ir įtampos vertę antroje eilutėje. Galiausiai suteikiame 100 milijonų sekundžių vėlavimą ir išvalome LCD ekraną. Tai vertė bus atnaujinta kas 100 mln.
Tikrinamas jūsų rezultatas!
Galiausiai pereiname prie smagios dalies, kuri yra mūsų programos testavimas ir žaidimas. Tiesiog atlikite jungtis, kaip parodyta grandinės schemoje. Aš naudoju mažą skydą, kad galėčiau prisijungti, ir naudodama trumpiklius, kad prijungčiau skydą prie MSP430. Kai sujungimai bus atlikti, mano žemiau atrodė taip.
Tada per „Energia IDE“ įkelkite toliau nurodytą programą į MSP430 plokštę. Turėtumėte matyti įvadinį tekstą skystųjų kristalų ekrane, jei ne reguliuokite skystųjų kristalų kontrastą naudodami potenciometrą, kol pamatysite aiškius žodžius. Taip pat pabandykite paspausti atstatymo mygtuką. Jei viskas veikia taip, kaip tikėtasi, turėtumėte matyti šį ekraną.
Dabar keiskite potenciometrą, taip pat turėtumėte pamatyti, kaip keičiasi LCD ekrane rodoma įtampa. Patikrinkime, ar teisingai matuojame įtampą, kad tai padarytume, naudodami multimetrą išmatuokite įtampą per POT centrą ir žemę. Multimetre rodoma įtampa turėtų būti artima LCD ekrane rodomai vertei, kaip parodyta žemiau esančiame paveikslėlyje.
Tai viskas, mes sužinojome, kaip išmatuoti analoginę įtampą, naudojant ADC MSP430 plokštę. Dabar mes galime susieti daugelį analoginių jutiklių su savo plokšte, kad galėtume nuskaityti realaus laiko parametrus. Tikiuosi, kad supratote pamoką ir jums patiko ją išmokti, jei turite kokių nors problemų, susisiekite su žemiau esančiame komentarų skyriuje arba forumuose. Peržiūrėkime kitą „MSP430“ mokymo programą su kita nauja tema.