- Forståelse af ADC-modulet:
- Kredsløbsdiagram:
- Programmering af din MSP430 til ADC:
- Test dit resultat!
Et almindeligt træk, der bruges i næsten alle indlejrede applikationer, er ADC-modulet (Analog til Digital Converter). Disse analoge til digitale konvertere kan aflæse spænding fra analoge sensorer som temperaturføler, vippesensor, strømføler, fleksføler og meget mere. Så i denne vejledning lærer vi, hvordan man bruger ADC i MSP430G2 til at læse analoge spændinger ved hjælp af Energia IDE. Vi vil interface et lille potentiometer til MSP-kortet og levere en varierende spænding til en analog pin, læse spændingen og vise den på den serielle skærm.
Forståelse af ADC-modulet:
Tro mig, det ville næppe tage 10 minutter at oprette forbindelse og programmere MSP430G2 til at læse analog spænding. Men lad os bruge lidt tid på at forstå ADC-modulet i MSP-kortet, så vi kan bruge det effektivt i alle vores kommende projekter.
En mikrocontroller er en digital enhed, hvilket betyder, at den kun kan forstå 1'er og 0'er. Men i den virkelige verden er næsten alt som temperatur, fugtighed, vindhastighed osv. Analoge. For at interagere med disse analoge ændringer bruger mikrocontrolleren et modul kaldet ADC. Der er mange forskellige typer ADC-moduler til rådighed, den der bruges i vores MSP er SAR 8-kanal 10-bit ADC.
Successive Approximation (SAR) ADC: SAR ADC arbejder ved hjælp af en komparator og nogle logiske samtaler. Denne type ADC bruger en referencespænding (som er variabel) og sammenligner indgangsspændingen med referencespændingen ved hjælp af en komparator, og forskellen, som vil være en digital udgang, gemmes fra den mest betydningsfulde bit (MSB). Hastigheden på sammenligningen afhænger af den urfrekvens (Fosc), som MSP fungerer på.
10-bit opløsning: Denne ADC er en 8-kanals 10 bit ADC. Her betyder udtrykket 8-kanal, at der er 8 ADC-ben, hvor vi kan måle analog spænding. Udtrykket 10-bit indebærer opløsningen af ADC. 10-bit betyder 2 til 10 (2 10), hvilket er 1024. Dette er antallet af eksempletrin for vores ADC, så rækkevidden af vores ADC-værdier vil være fra 0 til 1023. Værdien stiger fra 0 til 1023 baseret på spændingsværdien pr. Trin, som kan beregnes ved hjælp af nedenstående formel
Bemærk: Som standard i Energia vil referencespændingen blive indstillet til Vcc (~ 3v), du kan variere referencespændingen ved hjælp af indstillingen analogReference () .
Kontroller også, hvordan du interfacer ADC med andre mikrocontrollere:
- Hvordan bruges ADC i Arduino Uno?
- Interfacing ADC0808 med 8051 Microcontroller
- Brug af ADC-modul fra PIC Microcontroller
- Raspberry Pi ADC vejledning
Kredsløbsdiagram:
I vores tidligere tutorial lærte vi allerede, hvordan man interface LCD med MSP430G2, nu skal vi bare tilføje et potentiometer til MSP430 for at give det en variabel spænding og vise spændingsværdien på LCD'et. Hvis du ikke er opmærksom på grænsefladen mellem LCD-skærmen, skal du falde tilbage til linket ovenfor og læse igennem det, da jeg vil springe over oplysningerne for at undgå anger. Projektets komplette kredsløbsdiagram er angivet nedenfor.
Som du kan se, er der to potentiometre anvendt her, den ene bruges til at indstille LCD-kontrasten, mens den anden bruges til at levere en variabel spænding til tavlen. I dette potentiometer er den ene ekstreme ende af potentiometeret forbundet til Vcc og den anden ende er forbundet til jorden. Midterstiften (blå ledning) er forbundet til stiften P1.7. Denne pin P1.7 vil give en variabel spænding fra 0V (jord) til 3,5V (Vcc). Så vi er nødt til at programmere pin P1.7 for at læse denne variable spænding og vise den på LCD'et.
I Energia skal vi vide, hvilken analog kanal pin P1.7 tilhører? Dette kan findes ved at henvise til nedenstående billede
Du kan se P1.7-pin på højre side, denne pin tilhører A7 (Channel 7). På samme måde kan vi også finde det respektive kanalnummer for andre ben. Du kan bruge alle ben fra A0 til A7 til at læse analoge spændinger her. Jeg har valgt A7.
Programmering af din MSP430 til ADC:
Programmering af din MSP430 til at læse analog spænding er meget enkel. I dette program læser den analoge værdi og beregner spændingen med den værdi og viser derefter begge på LCD-skærmen. Det komplette program findes nederst på denne side, længere nedenfor forklarer jeg programmet i uddrag for at hjælpe dig med at forstå bedre.
Vi begynder med at definere LCD-ben. Disse definerer, hvilken stift af MSP430 LCD-stifterne er tilsluttet. Du kan henvise tilslutningen for at sikre dig, at stifterne er forbundet henholdsvis
#define RS 2 #define EN 3 #define D4 4 #define D5 5 #define D6 6 #define D7 7
Dernæst inkluderer vi headerfilen til LCD-skærmen. Dette kalder biblioteket, som indeholder koden til, hvordan MSP skal kommunikere med LCD'et. Dette bibliotek installeres som standard i Energia IDE, så du behøver ikke gider at tilføje det. Sørg også for, at funktionen Liquid Crystal kaldes med de pinnavne, som vi lige har defineret ovenfor.
#omfatte
Inde i vores setup () -funktion giver vi bare en introduktionsmeddelelse, der skal vises på LCD-skærmen. Jeg kommer ikke meget dybt ind, da vi allerede har lært, hvordan man bruger LCD med MSP430G2.
lcd.begin (16, 2); // Vi bruger en 16 * 2 LCD-skærm lcd.setCursor (0,0); // Placer markøren på 1. række 1. kolonne lcd.print ("MSP430G2553"); // Vis en introduktionsmeddelelse lcd.setCursor (0, 1); // sæt markøren til 1. kolonne 2. række lcd.print ("- CircuitDigest"); // Vis en introduktionsmeddelelse
Endelig begynder vi i vores uendelige loop () -funktion at læse spændingen, der leveres til A7-stiften. Som vi allerede har diskuteret, er mikrokontrolleren en digital enhed, og den kan ikke læse spændingsniveauet direkte. Ved hjælp af SAR-teknik kortlægges spændingsniveauet fra 0 til 1024. Disse værdier kaldes ADC-værdier, for at få denne ADC-værdi skal du blot bruge følgende linje
int val = analogRead (A7); // læs ADC-værdien fra pin A7
Her bruges funktionen analogRead () til at læse den analoge værdi af stiften, vi har specificeret A7 inde i den, da vi har tilsluttet variabel spænding til pin P1.7. Endelig gemmer vi denne værdi i en variabel kaldet " val ". Typen af denne variabel er heltal, fordi vi kun får værdier fra 0 til 1024, der skal gemmes i denne variabel.
Det næste trin ville være at beregne spændingsværdien ud fra ADC-værdien. For at gøre dette har vi følgende formler
Spænding = (ADC værdi / ADC opløsning) * Reference spænding
I vores tilfælde ved vi allerede, at ADC-opløsningen på vores mikrocontroller er 1024. ADC-værdien findes også i den forrige linje og lagrede variablen kaldet val. Den referencespænding er lig med spændingen, ved hvilken microcontroller er i drift. Når MSP430-kortet får strøm via USB-kabel, er driftsspændingen 3,6V. Du kan også måle driftsspændingen ved hjælp af et multimeter på tværs af Vcc og jordstift på tavlen. Så ovenstående formel passer ind i vores sag som vist nedenfor
floatspænding = (float (val) / 1024) * 3,6; // formler til at konvertere ADC-værdien til spænding
Du kan blive forvekslet med line float (val). Dette bruges til at konvertere variablen "val" fra int-datatypen til "float" -datatypen. Denne konvertering er nødvendig, fordi kun hvis vi får resultatet af val / 1024 i float, kan vi gange det 3.6. Hvis værdien modtages i heltal, vil den altid være 0, og resultatet bliver også nul. Når vi først har beregnet ADC-værdien og spændingen, er alt der er tilbage at vise resultatet på LCD-skærmen, hvilket kan gøres ved hjælp af følgende linjer
lcd.setCursor (0, 0); // sæt markøren til kolonne 0, linje 0 lcd.print ("ADC Val:"); lcd.print (val); // Vis ADC-værdi lcd.setCursor (0, 1); // sæt markøren til kolonne 0, linje 1 lcd.print ("Voltage:"); lcd.print (spænding); // Display spænding
Her har vi vist værdien af ADC i den første linje og værdien af spænding i den anden linje. Endelig giver vi en forsinkelse på 100 mill. Sekunder og rydder LCD-skærmen. Dette var værdien vil blive opdateret for hver 100 mils.
Test dit resultat!
Endelig kommer vi ned til den sjove del, som tester vores program og leger med det. Foretag bare forbindelserne som vist i kredsløbsdiagrammet. Jeg har brugt et lille breadboard til at oprette mine forbindelser og brugt jumper ledninger til at forbinde breadboard til MSP430. Når forbindelserne er færdige, så min ud som dette nedenfor.
Upload derefter programmet, der er angivet nedenfor, til MSP430-kortet via Energia IDE. Du bør være i stand til at se introteksten på LCD'et, hvis ikke justere LCD-kontrasten ved hjælp af potentiometeret, indtil du ser klare ord. Prøv også at trykke på reset-knappen. Hvis ting fungerer som forventet, skal du kunne se følgende skærmbillede.
Nu varierer potentiometeret, og du bør også se spændingen, der vises i LCD'et, blive varieret. Lad os kontrollere, om vi måler spændingen korrekt for at gøre det. Brug et multimeter til at måle spændingen over midten af POT og jorden. Spændingen, der vises på multimeteret, skal være tæt på den værdi, der vises på LCD'et som vist på billedet nedenfor.
Det er det, vi har lært, hvordan man måler analog spænding ved hjælp af ADC på MSP430-kortet. Nu kan vi interface mange analoge sensorer med vores kort for at læse parametre i realtid. Håber du har forstået vejledningen og haft glæde af at lære den, hvis du har problemer, bedes du nå ud gennem kommentarsektionen nedenfor eller gennem foraene. Lad os indhente i en anden tutorial af MSP430 med et andet nyt emne.