Viena kopīga iezīme, kas tiek izmantota gandrīz katrā iegultā lietojumprogrammā, ir ADC modulis (Analog to Digital Converter). Šie analogie uz ciparu pārveidotāji var nolasīt spriegumu no analogiem sensoriem, piemēram, temperatūras sensora, slīpuma sensora, strāvas sensora, elastīgā sensora un daudz ko citu. Tātad šajā apmācībā mēs uzzināsim, kā izmantot ADC programmā MSP430G2, lai lasītu analogos spriegumus, izmantojot Energia IDE. Mēs sasaistīsim nelielu potenciometru ar MSP paneli un piegādāsim mainīgu spriegumu analogajai tapai, nolasīsim spriegumu un parādīsim to sērijas monitorā.
Izpratne par ADC moduli:
Ticiet man, diez vai būtu nepieciešamas 10 minūtes, lai savienotu un ieprogrammētu MSP430G2, lai nolasītu analogo spriegumu. Tomēr pavadīsim kādu laiku, lai izprastu ADC moduli MSP padomē, lai mēs varētu to efektīvi izmantot visos gaidāmajos projektos.
Mikrokontrolleris ir digitāla ierīce, kas nozīmē, ka tas var saprast tikai 1 un 0. Taču reālajā pasaulē gandrīz visam, piemēram, temperatūrai, mitrumam, vēja ātrumam utt., Ir analogs raksturs. Lai mijiedarbotos ar šīm analogajām izmaiņām, mikrokontrolleris izmanto moduli ar nosaukumu ADC. Ir pieejami daudz dažādu veidu ADC moduļi, mūsu MSP tiek izmantots SAR 8 kanāla 10 bitu ADC.
Secīgas tuvināšanas (SAR) ADC: SAR ADC darbojas ar salīdzinātāja palīdzību un dažām loģiskām sarunām. Šāda veida ADC izmanto atsauces spriegumu (kas ir mainīgs) un salīdzina ieejas spriegumu ar atsauces spriegumu, izmantojot salīdzinājumu, un starpība, kas būs digitāla izeja, tiek saglabāta no nozīmīgākā bita (MSB). Salīdzināšanas ātrums ir atkarīgs no pulksteņa frekvences (Fosc), ar kuru darbojas MSP.
10 bitu izšķirtspēja: Šī ADC ir 8 kanālu 10 bitu ADC. Šeit termins 8 kanāls nozīmē, ka ir 8 ADC tapas, ar kuru palīdzību mēs varam izmērīt analogo spriegumu. Termins 10 biti nozīmē ADC izšķirtspēju. 10 biti nozīmē 2 līdz desmit (2 10), kas ir 1024. Šis ir mūsu ADC paraugu soļu skaits, tāpēc mūsu ADC vērtību diapazons būs no 0 līdz 1023. Vērtība palielināsies no 0 līdz 102 1023, pamatojoties uz sprieguma vērtību vienā solī, kuru var aprēķināt, izmantojot šādu formulu
Piezīme: Pēc noklusējuma Energia standartspriegums tiks iestatīts uz Vcc (~ 3v), atsauces spriegumu var mainīt, izmantojot opciju analogReference () .
Pārbaudiet arī to, kā saskarni ADC ar citiem mikrokontrolleriem:
- Kā lietot ADC Arduino Uno?
- Saskarne ADC0808 ar 8051 mikrokontrolleru
- Izmantojot PIC mikrokontrollera ADC moduli
- Aveņu Pi ADC apmācība
Ķēdes shēma:
Iepriekšējā apmācībā mēs jau iemācījāmies saskarni LCD ar MSP430G2, tagad mēs vienkārši pievienosim MSP430 potenciometru, lai piegādātu tam mainīgu spriegumu un parādītu sprieguma vērtību LCD. Ja jūs nezināt par LCD saskarni, atgriezieties augšpusē esošajā saitē un izlasiet to, jo es izlaižu informāciju, lai izvairītos no grēku nožēlošanas. Pilna projekta shēma ir dota zemāk.
Kā redzat, šeit tiek izmantoti divi potenciometri, vienu izmanto LCD kontrasta iestatīšanai, bet otru - mainīga sprieguma padevei uz plates. Tajā potenciometrā viens potenciometra gala gals ir savienots ar Vcc, bet otrs gals ir savienots ar zemi. Centrālā tapa (zilā stieple) ir savienota ar tapu P1.7. Šis tapa P1.7 nodrošinās mainīgu spriegumu no 0V (zemējums) līdz 3.5V (Vcc). Tāpēc mums jāprogrammē tapa P1.7, lai nolasītu šo mainīgo spriegumu un parādītu to LCD.
Programmā Energia mums jāzina, kuram analogajam kanālam pieder tapa P1.7? To var atrast, atsaucoties uz zemāk esošo attēlu
Labajā pusē var redzēt P1.7 tapu, šī tapa pieder A7 (7. kanāls). Līdzīgi mēs varam atrast attiecīgo kanāla numuru arī citām tapām. Varat izmantot jebkuras tapas no A0 līdz A7, lai nolasītu analogo spriegumu. Šeit esmu izvēlējies A7.
MSP430 programmēšana ADC:
MSP430 programmēšana analogā sprieguma nolasīšanai ir ļoti vienkārša. Šajā programmā tiks nolasīts vērtības analogs un aprēķināts spriegums ar šo vērtību, un pēc tam abi tiks parādīti LCD ekrānā. Pilnu programmu var atrast pie šīs lapas apakšā, tālāk tekstā es izskaidrot programmu fragmentus, lai palīdzētu jums saprast labāk.
Mēs vispirms definējam LCD tapas. Tie nosaka, kurai MSP430 tapai ir pievienoti LCD kontakti. Jūs varat norādīt savienojumu, lai pārliecinātos, vai tapas ir attiecīgi savienotas
#define RS 2 #define EN 3 #define D4 4 #define D5 5 #define D6 6 #define D7 7
Tālāk mēs iekļaujam galvenes failu LCD displejam. Tas izsauc bibliotēku, kurā ir kods, kā MSP vajadzētu sazināties ar LCD. Šī bibliotēka pēc noklusējuma tiks instalēta Energia IDE, tāpēc jums nav jācenšas to pievienot. Pārliecinieties arī, vai funkcija Liquid Crystal tiek izsaukta ar tapu nosaukumiem, kurus mēs tikko definējām iepriekš.
# iekļaut
Funkcijas setup () iekšpusē mēs vienkārši norādīsim ievadziņu, kas tiks parādīta LCD ekrānā. Es neesmu iedziļinājies daudz dziļumā, jo mēs jau esam iemācījušies izmantot LCD ar MSP430G2.
lcd.begin (16, 2); // Mēs izmantojam 16 * 2 LCD displeju lcd.setCursor (0,0); // Novietojiet kursoru 1. rindas 1. kolonnā lcd.print ("MSP430G2553"); // Parādīt ievada ziņojumu lcd.setCursor (0, 1); // iestatiet kursoru uz 1. kolonnas 2. rindu lcd.print ("- CircuitDigest"); // Parādīt ievadziņu
Visbeidzot, mūsu bezgalīgās cilpas () funkcijas iekšpusē mēs sākam nolasīt A7 tapai piegādāto spriegumu. Kā mēs jau apspriedām, mikrokontrolleris ir digitāla ierīce, un tā nevar tieši nolasīt sprieguma līmeni. Izmantojot SAR tehniku, sprieguma līmenis tiek kartēts no 0 līdz 1024. Šīs vērtības sauc par ADC vērtībām, lai iegūtu šo ADC vērtību, vienkārši izmantojiet šo rindu
int val = analogRead (A7); // nolasīt ADC vērtību no tapas A7
Šeit funkcija analogRead () tiek izmantota, lai nolasītu tapas analogo vērtību. Mēs tajā norādījām A7, jo mēs esam pievienojuši mainīgu spriegumu tapai P1.7. Visbeidzot, mēs saglabājam šo vērtību mainīgajā, ko sauc par “ val ”. Šī mainīgā tips ir vesels skaitlis, jo šajā mainīgajā tiks saglabātas tikai vērtības no 0 līdz 1024.
Nākamais solis būtu aprēķināt sprieguma vērtību no ADC vērtības. Lai to izdarītu, mums ir šādas formulas
Spriegums = (ADC vērtība / ADC izšķirtspēja) * Atskaites spriegums
Mūsu gadījumā mēs jau zinām, ka mūsu mikrokontrollera ADC izšķirtspēja ir 1024. ADC vērtība ir atrodama arī iepriekšējā rindā un glabā mainīgo, ko sauc par val. Nominālais spriegums ir vienāds ar spriegumu, kurā mikrokontrolleru strādā. Kad MSP430 valde darbina, izmantojot USB kabeli, tad darba spriegums ir 3.6V. Jūs varat arī izmērīt darba spriegumu, izmantojot multimetru pāri Vcc un zemes tapu uz tāfeles. Tātad iepriekš minētā formula iekļaujas mūsu gadījumā, kā parādīts zemāk
pludiņa spriegums = (pludiņš (val) / 1024) * 3,6; // formulas, lai pārveidotu ADC vērtību spriegumā
Jūs varētu sajaukt ar līnijas pludiņu (val). To izmanto, lai mainīgo “val” pārveidotu no int datu veida uz “float” datu tipu. Šī konversija ir nepieciešama, jo tikai tad, ja mēs iegūstam val / 1024 rezultātu pludiņā, mēs varam to reizināt ar 3,6. Ja vērtība tiek saņemta vesels skaitlis, tā vienmēr būs 0 un rezultāts būs arī nulle. Kad esam aprēķinājuši ADC vērtību un spriegumu, atliek atainot rezultātu LCD ekrānā, ko var izdarīt, izmantojot šādas rindas
lcd.setCursor (0, 0); // iestatiet kursoru uz 0 kolonnas 0 rindu lcd.print ("ADC Val:"); lcd.print (val); // Parādīt ADC vērtību lcd.setCursor (0, 1); // iestatiet kursoru uz 0. kolonnas 1. rindu lcd.print ("Spriegums:"); lcd.print (spriegums); // Displeja spriegums
Šeit mēs parādījām ADC vērtību pirmajā rindā un sprieguma vērtību otrajā rindā. Visbeidzot, mēs piešķiram 100 mill sekunžu aizkavi un notīra LCD ekrānu. Tā bija vērtība, kas tiks atjaunināta par katriem 100 miljoniem.
Pārbauda savu rezultātu!
Visbeidzot, mēs nonākam pie jautrās daļas, kas pārbauda mūsu programmu un spēlē ar to. Vienkārši izveidojiet savienojumus, kā parādīts shēmā. Esmu izmantojis nelielu paneļu, lai izveidotu savus savienojumus, un izmantoju džemperu vadus, lai savienotu paneļu ar MSP430. Kad savienojumi ir izdarīti, manējie izskatījās šādi zemāk.
Pēc tam augšupielādējiet zemāk norādīto programmu MSP430 dēlī, izmantojot Energia IDE. Jums vajadzētu būt iespējai redzēt ievaddaļas tekstu LCD ekrānā, ja tas nav pielāgots LCD kontrastam, izmantojot potenciometru, līdz redzat skaidrus vārdus. Mēģiniet arī nospiest atiestatīšanas pogu. Ja lietas darbojas kā paredzēts, jums vajadzētu redzēt nākamo ekrānu.
Tagad mainiet potenciometru, un jums vajadzētu redzēt, ka LCD displejā redzamais spriegums mainās. Pārbaudīsim, vai mēs pareizi mērām spriegumu, lai to izdarītu, izmantojiet multimetru, lai izmērītu spriegumu pāri POT centram un zemei. Multimetrā parādītajam spriegumam jābūt tuvu LCD ekrānā redzamajai vērtībai, kā parādīts zemāk redzamajā attēlā.
Tas ir viss, mēs esam iemācījušies izmērīt analogo spriegumu, izmantojot MSP430 plates ADC. Tagad mēs varam sasaistīt daudzus analogos sensorus ar mūsu dēli, lai nolasītu reāllaika parametrus. Ceru, ka sapratāt apmācību un jums patika to mācīties. Ja jums ir kādas problēmas, lūdzu, sazinieties ar tālāk esošo komentāru sadaļu vai forumiem. Apskatīsim citu MSP430 apmācību ar vēl vienu jaunu tēmu.