- Den analoga världen med digital elektronik
- Vad är ADC och hur man använder det?
- Upplösning (bitar) och kanaler i ADC
- Referensspänning för en ADC
- Exempel
- ADC-typer och arbete
- Några vanliga frågor om ADC
Den analoga världen med digital elektronik
För några år tillbaka var hela elektronikutrustningen som vi använder idag, som telefoner, datorer, TV-apparater etc. analog. Sedan ersattes långsamt fasttelefonerna av moderna mobiltelefoner, CRT-tv och bildskärmar ersattes av LED-skärmar, datorer med vakuumrör utvecklades till att bli mer kraftfulla med mikroprocessorer och mikrokontroller inuti och så vidare.
I dagens digitala tidsålder är vi alla omgivna av avancerade digitala elektroniska enheter, detta kan lura oss att tro att allt runt omkring oss är digitalt, vilket inte är sant. Världen har alltid varit analog till sin natur, till exempel är allt som vi människor känner och upplever som hastighet, temperatur, lufthastighet, solljus, ljud etc analogt. Men våra elektroniska enheter som körs på mikrokontroller och mikroprocessorer kan inte läsa / tolka dessa analoga värden direkt eftersom de bara körs på 0 och 1. Så vi behöver något som kommer att konvertera alla dessa analoga värden till 0 och 1 så att våra mikrokontroller och mikroprocessorer kan förstå dem. Det här kallas Analog to Digital Converters eller ADC för kort. I den här artikeln kommer vi att lära ossallt om ADC och hur man använder dem.
Vad är ADC och hur man använder det?
Som sagt tidigare står ADC för Analog till digital konvertering och används för att konvertera analoga värden från verkliga världen till digitala värden som 1 och 0. Så vad är dessa analoga värden? Det är de som vi ser i vårt dagliga liv som temperatur, hastighet, ljusstyrka etc. Men vänta !! Kan en ADC omvandla temperatur och hastighet direkt till digitala värden som 0 och 1?
Nej trotsigt inte. En ADC kan bara konvertera analoga spänningsvärden till digitala värden. Så vilken parameter som helst vi vill mäta, den bör omvandlas till spänning först, denna konvertering kan göras med hjälp av sensorer. Till exempel för att konvertera temperaturvärden till spänning kan vi använda en termistor på samma sätt för att konvertera ljusstyrka till spänning vi kan använda en LDR. När den väl har omvandlats till spänning kan vi läsa den med hjälp av ADC.
För att veta hur man använder en ADC bör vi först bekanta oss med några grundläggande termer som kanalupplösning, intervall, referensspänning etc.
Upplösning (bitar) och kanaler i ADC
När du läser specifikationen för vilken Microcontroller eller ADC IC som helst kommer informationen om ADC att ges med termerna kanaler och upplösning (bitar). Till exempel har en Arduino UNO: s ATmega328 en 8-kanals 10-bitars ADC. Inte varje stift på en mikrokontroller kan läsa analog spänning, termen 8-kanals betyder att det finns 8 stift på denna ATmega328 mikrokontroller som kan läsa analog spänning och varje stift kan läsa spänningen med en upplösning på 10-bitars. Detta varierar för olika typer av mikrokontroller.
Låt oss anta att vårt ADC-intervall är från 0V till 5V och att vi har en 10-bitars ADC, vilket betyder att vår ingångsspänning 0-5 volt kommer att delas upp i 1024 nivåer av diskreta analoga värden (2 10 = 1024). Betydelsen 1024 är upplösningen för en 10-bitars ADC, på samma sätt för en 8-bitars ADC-upplösning blir 512 (2 8) och för en 16-bitars ADC-upplösning kommer den att vara 65 536 (2 16).
Med detta om den faktiska ingångsspänningen är 0V kommer MCU: s ADC att läsa den som 0 och om den är 5V kommer MCU att läsa 1024 och om den ligger någonstans mellan 2,5V kommer MCU att läsa 512. Vi kan använda formlerna nedan för att beräkna det digitala värdet som kommer att läsas av MCU baserat på upplösningen för ADC och driftspänning.
(ADC-upplösning / driftspänning) = (ADC Digital värde / Faktiskt spänningsvärde)
Referensspänning för en ADC
En annan viktig term som du bör känna till är referensspänningen. Under en ADC-omvandling hittas värdet på okänd spänning genom att jämföra det med en känd spänning, detta är känd spänning kallas referensspänning. Normalt har alla MCU möjlighet att ställa in intern referensspänning, vilket innebär att du kan ställa in denna spänning internt till något tillgängligt värde med hjälp av programvara (program). I ett Arduino UNO-kort är referensspänningen inställd på 5V som standard internt, om så krävs kan användaren ställa in denna referensspänning externt via Vref-stiftet även efter att ha gjort de nödvändiga ändringarna i programvaran.
Kom alltid ihåg att det uppmätta analoga spänningsvärdet alltid ska vara mindre än referensspänningsvärdet och att referensspänningsvärdet alltid ska vara mindre än mikrokontrollerns driftspänningsvärde.
Exempel
Här tar vi exempel på ADC som har 3-bitars upplösning och 2V referensspänning. Så det kan mappa 0-2v analog spänning med 8 (2 3) olika nivåer, som visas på bilden nedan:
Så om den analoga spänningen är 0,25 blir det digitala värdet 1 i decimal och 001 i binärt. Likaså om den analoga spänningen är 0,5 kommer det digitala värdet att vara 2 i decimal och 010 i binärt.
Vissa mikrokontroller har inbyggd ADC som Arduino, MSP430, PIC16F877A men en del mikrokontroller har det inte som 8051, Raspberry Pi osv. Och vi måste använda några externa IC till analogomvandlare som ADC0804, ADC0808.
Nedan hittar du olika exempel på ADC med olika mikrokontroller:
- Hur man använder ADC i Arduino Uno?
- Raspberry Pi ADC-handledning
- Gränssnitt ADC0808 med 8051 mikrokontroller
- 0-25V digital voltmeter med AVR-mikrokontroller
- Hur man använder ADC i STM32F103C8
- Hur man använder ADC i MSP430G2
ADC-typer och arbete
Det finns många typer av ADC, de vanligaste är Flash ADC, Dual Slope ADC, Successive approximation och Dual Slope ADC. För att förklara hur vart och ett av dessa ADC: s arbete och skillnaden mellan dem skulle vara utom räckvidden för den här artikeln eftersom de är ganska komplexa. Men för att ge en grov uppfattning har ADC en intern kondensator som laddas av den analoga spänningen som ska mätas. Sedan mäter vi spänningsvärdet genom att ladda kondensatorn över en tidsperiod.
Några vanliga frågor om ADC
Hur mäter jag mer än 5V med min ADC?
Som diskuterats tidigare kan en ADC-modul inte mäta spänningsvärde mer än mikrokontrollerns driftspänning. Det vill säga en 5V-mikrokontroller kan bara mäta maximalt 5V med sin ADC-stift. Om du vill mäta något mer än att säga, vill du mäta 0-12V kan du mappa 0-12V till 0-5V genom att använda en potentiell delare eller spänningsdelarkrets. Denna krets kommer att använda ett par motstånd för att kartlägga värdena för en MCU, du kan veta mer om spänningsdelarkretsen med hjälp av länken. För vårt ovanstående exempel bör vi använda ett 1K-motstånd och 720 ohm-motstånd i serie till spänningskällan och mäta spänningen mellan motstånden som diskuteras i länken ovan.
Hur konverterar man digitala värden från ADC till faktiska spänningsvärden?
När du använder en ADC-omvandlare för att mäta analog spänning blir resultatet som MCU erhållit i digital. Till exempel i en 10-bitars 5V mikrokontroller när den faktiska spänningen som ska mätas är 4V kommer MCU att läsa den som 820, vi kan återigen använda de ovan diskuterade formlerna för att konvertera 820 till 4V så att vi kan använda den i vår beräkningar. Låter krysskontroll samma.
(ADC upplösning / driftspänning) = (ADC Digital värde / faktiskt spänningsvärde) Verkligt spänningsvärde = ADC Digital värde * (Driftspänning / ADC upplösning) = 820 * (5/1023) = 4,007 = ~ 4V
Hoppas du har en rättvis uppfattning om ADC och hur du använder dem för dina applikationer. Om du hade några problem med att förstå begreppen är du välkommen att skicka dina kommentarer nedan eller skriva på våra forum.