En vanlig funktion som används i nästan alla inbäddade applikationer är ADC-modulen (Analog till Digital Converter). Dessa analoga till digitala omvandlare kan läsa spänningar från analoga sensorer som temperatursensor, lutningssensor, strömgivare, flexsensor och mycket mer. Så i den här handledningen lär vi oss hur man använder ADC i MSP430G2 för att läsa analoga spänningar med Energia IDE. Vi kommer att ansluta en liten potentiometer till MSP-kortet och leverera en varierande spänning till en analog stift, läsa spänningen och visa den på Serial Monitor.
Förstå ADC-modulen:
Lita på mig, det skulle knappast ta 10 minuter att ansluta och programmera MSP430G2 för att läsa analog spänning. Men låt oss spendera lite tid på att förstå ADC-modulen i MSP-kortet så att vi kan använda den effektivt i alla våra kommande projekt.
En mikrokontroller är en digital enhet, vilket betyder att den bara kan förstå 1 och 0. Men i den verkliga världen är nästan allt som temperatur, luftfuktighet, vindhastighet etc. analoga till sin natur. För att interagera med dessa analoga förändringar använder mikrokontrollern en modul som heter ADC. Det finns många olika typer av ADC-moduler tillgängliga, den som används i vår MSP är SAR 8-kanals 10-bitars ADC.
Successive Approximation (SAR) ADC: SAR ADC fungerar med hjälp av en komparator och några logiska konversationer. Denna typ av ADC använder en referensspänning (som är variabel) och jämför ingångsspänningen med referensspänningen med hjälp av en komparator och skillnaden, som kommer att vara en digital utgång, sparas från den mest signifikanta biten (MSB). Jämförelsens hastighet beror på klockfrekvensen (Fosc) som MSP arbetar på.
10-bitars upplösning: Denna ADC är en 8-kanals 10 bitars ADC. Här innebär termen 8-kanal att det finns 8 ADC-stift med vilka vi kan mäta analog spänning. Termen 10-bitar innebär ADC-upplösningen. 10-bitar betyder 2 till kraften av tio (2 10) vilket är 1024. Detta är antalet exempelsteg för vår ADC, så intervallet för våra ADC-värden kommer att vara från 0 till 1023. Värdet kommer att öka från 0 till 1023 baserat på spänningsvärdet per steg, vilket kan beräknas med formeln nedan
Obs: Som standard i Energia kommer referensspänningen att vara Vcc (~ 3v), du kan variera referensspänningen med alternativet analogReference () .
Kontrollera också hur man gränssnitt ADC med andra mikrokontroller:
- Hur man använder ADC i Arduino Uno?
- Gränssnitt ADC0808 med 8051 mikrokontroller
- Använda ADC-modulen i PIC Microcontroller
- Raspberry Pi ADC-handledning
Kretsschema:
I vår tidigare handledning har vi redan lärt oss hur man gränssnitt LCD med MSP430G2, nu ska vi bara lägga till en potentiometer till MSP430 för att förse den med en variabel spänning och visa spänningsvärdet på LCD-skärmen. Om du inte är medveten om att gränssnittet mellan LCD-skärmen faller tillbaka till länken ovan och läser igenom den, eftersom jag kommer att hoppa över informationen för att undvika ånger. Det fullständiga kretsschemat för projektet ges nedan.
Som du kan se finns det två potentiometrar som används här, den ena används för att ställa in kontrasten på LCD medan den andra används för att mata en variabel spänning till kortet. I den potentiometern är en extrem ände av potentiometern ansluten till Vcc och den andra änden är ansluten till marken. Mittstiftet (blå ledning) är anslutet till stiftet P1.7. Denna stift P1.7 ger en variabel spänning från 0V (jord) till 3,5V (Vcc). Så vi måste programmera stiftet P1.7 för att läsa denna variabla spänning och visa den på LCD-skärmen.
I Energia behöver vi veta till vilken analog kanal stift P1.7 tillhör? Detta kan hittas genom att hänvisa till bilden nedan
Du kan se P1.7-stift på höger sida, denna stift tillhör A7 (kanal 7). På samma sätt kan vi också hitta respektive kanalnummer för andra stift. Du kan använda valfri stift från A0 till A7 för att läsa analoga spänningar här har jag valt A7.
Programmera din MSP430 för ADC:
Programmering av din MSP430 för att läsa analog spänning är väldigt enkel. I det här programmet läser man värdets analog och beräknar spänningen med det värdet och visar båda på LCD-skärmen. Det fullständiga programmet hittar du längst ner på den här sidan, längre ner förklarar jag programmet i utdrag för att hjälpa dig att förstå bättre.
Vi börjar med att definiera LCD-stift. Dessa definierar till vilken stift av MSP430 LCD-stiften är ansluten. Du kan hänvisa din anslutning för att se till att stiften är anslutna respektive
#define RS 2 #define EN 3 #define D4 4 #define D5 5 #define D6 6 #define D7 7
Därefter inkluderar vi rubrikfilen för LCD-skärmen. Detta kallar biblioteket som innehåller koden för hur MSP ska kommunicera med LCD-skärmen. Detta bibliotek kommer att installeras i Energia IDE som standard så att du inte behöver lägga till det. Se också till att funktionen Liquid Crystal anropas med de stiftnamn som vi precis definierade ovan.
#omfatta
Inuti vår setup () -funktion skulle vi bara ge ett introduktionsmeddelande som ska visas på LCD-skärmen. Jag går inte mycket djupt eftersom vi redan har lärt oss hur man använder LCD med MSP430G2.
lcd.begin (16, 2); // Vi använder en 16 * 2 LCD-skärm lcd.setCursor (0,0); // Placera markören på 1: a raden 1: a kolumnen lcd.print ("MSP430G2553"); // Visa ett introduktionsmeddelande lcd.setCursor (0, 1); // ställ markören till 1: a kolumn 2: a raden lcd.print ("- CircuitDigest"); // Visa ett introduktionsmeddelande
Slutligen, inuti vår oändliga loop () -funktion, börjar vi läsa spänningen som levereras till A7-stiftet. Som vi redan diskuterat är mikrokontrollern en digital enhet och den kan inte läsa spänningsnivån direkt. Med hjälp av SAR-teknik mappas spänningsnivån från 0 till 1024. Dessa värden kallas ADC-värden, för att få detta ADC-värde använder du bara följande rad
int val = analogRead (A7); // läs ADC-värdet från stift A7
Här används funktionen analogRead () för att läsa det analoga värdet på stiftet, vi har specificerat A7 inuti det eftersom vi har kopplat ut variabel spänning till stift P1.7. Slutligen sparar vi detta värde i en variabel som kallas " val ". Variabelns typ är heltal eftersom vi bara får värden från 0 till 1024 som ska lagras i denna variabel.
Nästa steg skulle vara att beräkna spänningsvärdet från ADC-värdet. För att göra detta har vi följande formler
Spänning = (ADC-värde / ADC-upplösning) * Referensspänning
I vårt fall vet vi redan att ADC-upplösningen för vår mikrokontroller är 1024. ADC-värdet finns också i föregående rad och lagrade variabeln som heter val. Den referensspänningen är lika med den spänning vid vilken mikrostyrenheten är i drift. När MSP430-kortet matas via USB-kabel är driftspänningen 3,6V. Du kan också mäta driftspänningen genom att använda en multimeter över Vcc och jordstiftet på kortet. Så formeln ovan passar in i vårt fall som visas nedan
flottörspänning = (flottör (val) / 1024) * 3,6; // formler för att konvertera ADC-värdet till spänning
Du kan förväxlas med linjefloat (val). Detta används för att konvertera variabeln "val" från int-datatyp till "float" -datatyp. Denna konvertering behövs för att bara om vi får resultatet av val / 1024 i float kan vi multiplicera det 3,6. Om värdet tas emot i heltal kommer det alltid att vara 0 och resultatet blir också noll. När vi väl har beräknat ADC-värdet och spänningen är allt som återstår att visa resultatet på LCD-skärmen, vilket kan göras med följande rader
lcd.setCursor (0, 0); // ställ in markören till kolumn 0, rad 0 lcd.print ("ADC Val:"); lcd.print (val); // Visa ADC-värde lcd.setCursor (0, 1); // ställ in markören till kolumn 0, rad 1 lcd.print ("Voltage:"); lcd.print (spänning); // Visningsspänning
Här har vi visat värdet på ADC i den första raden och värdet på spänningen i den andra raden. Slutligen ger vi en fördröjning på 100 mill sekunder och rensar LCD-skärmen. Detta var värdet kommer att uppdateras för varje 100 mil.
Testar ditt resultat!
Slutligen kommer vi ner till den roliga delen, som testar vårt program och leker med det. Gör bara anslutningarna som visas i kretsschemat. Jag har använt en liten brädbräda för att skapa mina anslutningar och använt bygelkablar för att ansluta brädbrädan till MSP430. När anslutningarna är klara såg min ut så här nedan.
Ladda sedan upp programmet som ges nedan till MSP430-kortet via Energia IDE. Du bör kunna se introduktionstexten på LCD-skärmen, om inte justera LCD-skärmens kontrast med potentiometern tills du ser tydliga ord. Försök också att trycka på återställningsknappen. Om saker fungerar som förväntat bör du kunna se följande skärm.
Nu varierar potentiometern och du bör också se att spänningen som visas på LCD-skärmen blir varierad. Låt oss verifiera om vi mäter spänningen korrekt för att göra det, använd en multimeter för att mäta spänningen över mitten av POT och marken. Spänningen som visas på multimetern ska vara nära det värde som visas på LCD-skärmen som visas på bilden nedan.
Det är det, vi har lärt oss hur man mäter analog spänning med ADC på MSP430-kortet. Nu kan vi gränssnitt många analoga sensorer med vårt kort för att läsa parametrar i realtid. Hoppas att du förstod handledningen och tyckte om att lära dig den, om du har några problem, vänligen kontakta kommentarsektionen nedan eller via forumen. Låt oss komma ikapp i en annan handledning om MSP430 med ett annat nytt ämne.