- Den analoge verdenen med digital elektronikk
- Hva er ADC og hvordan bruker jeg det?
- Oppløsning (bits) og kanaler i ADC
- Referansespenning for en ADC
- Eksempel
- ADC-typer og arbeid
- Noen vanlige spørsmål om ADC
Den analoge verdenen med digital elektronikk
For noen år tilbake var hele elektronikkutstyr som vi bruker i dag som telefoner, datamaskiner, TV-apparater osv. Analoge. Så langsomt ble fasttelefonene erstattet av moderne mobiltelefoner, CRT-fjernsyn og skjermer ble erstattet av LED-skjermer, datamaskiner med vakuumrør utviklet seg til å bli kraftigere med mikroprosessorer og mikrokontroller inne i dem og så videre.
I dagens digitale tidsalder er vi alle omgitt av avanserte digitale elektroniske enheter, dette kan lure oss til å tro at alt rundt oss er digitalt, noe som ikke er sant. Verden har alltid vært analog i naturen, for eksempel er alt vi mennesker føler og opplever som hastighet, temperatur, lufthastighet, sollys, lyd osv. Av analog karakter. Men våre elektroniske enheter som kjører på mikrokontrollere og mikroprosessorer kan ikke lese / tolke disse analoge verdiene direkte siden de bare kjører på 0 og 1. Så vi trenger noe som konverterer alle disse analoge verdiene til 0 og 1, slik at våre mikrokontrollere og mikroprosessorer kan forstå dem. Dette kalles Analog to Digital Converters eller ADC for kort. I denne artikkelen vil vi lærealt om ADC og hvordan du bruker dem.
Hva er ADC og hvordan bruker jeg det?
Som tidligere sagt står ADC for Analog til digital konvertering, og den brukes til å konvertere analoge verdier fra den virkelige verden til digitale verdier som 1 og 0. Så hva er disse analoge verdiene? Dette er de som vi ser i vårt daglige liv som temperatur, hastighet, lysstyrke osv. Men vent !! Kan en ADC konvertere temperatur og hastighet direkte til digitale verdier som 0 og 1?
Nei trossig ikke. En ADC kan bare konvertere analoge spenningsverdier til digitale verdier. Så hvilken parameter vi ønsker å måle, bør den konverteres til spenning først, denne konverteringen kan gjøres ved hjelp av sensorer. For eksempel for å konvertere temperaturverdier til spenning kan vi bruke en termistor på samme måte for å konvertere lysstyrke til spenning, vi kan bruke en LDR. Når den er omgjort til spenning, kan vi lese den ved hjelp av ADC.
For å vite hvordan du bruker en ADC, bør vi først bli kjent med noen grunnleggende begreper som kanaloppløsning, rekkevidde, referansespenning etc.
Oppløsning (bits) og kanaler i ADC
Når du leser spesifikasjonen til en hvilken som helst Microcontroller eller ADC IC, vil detaljene i ADC bli gitt ved å bruke begrepene kanaler og oppløsning (bits). For eksempel har en Arduino UNOs ATmega328 en 8-kanals 10-bit ADC. Ikke alle pinner på en mikrokontroller kan lese analog spenning, begrepet 8-kanals betyr at det er 8 pinner på denne ATmega328 mikrokontrolleren som kan lese analog spenning, og hver pinne kan lese spenningen med en oppløsning på 10-bit. Dette vil variere for forskjellige typer mikrokontrollere.
La oss anta at ADC-området vårt er fra 0V til 5V, og vi har en 10-bit ADC, dette betyr at inngangsspenningen 0-5 volt vil bli delt opp i 1024 nivåer av diskrete analoge verdier (2 10 = 1024). Betydningen 1024 er oppløsningen for en 10-bit ADC, på samme måte for en 8-bit ADC-oppløsning vil være 512 (2 8) og for en 16-bit ADC-oppløsning vil være 65 536 (2 16).
Med dette, hvis den faktiske inngangsspenningen er 0V, vil MCUs ADC lese den som 0, og hvis den er 5V vil MCU lese 1024, og hvis den et sted i mellom som 2,5V, vil MCU lese 512. Vi kan bruke formlene nedenfor for å beregne den digitale verdien som vil bli lest av MCU basert på oppløsningen til ADC og driftsspenning.
(ADC-oppløsning / driftsspenning) = (ADC Digital verdi / faktisk spenningsverdi)
Referansespenning for en ADC
Et annet viktig begrep som du bør være kjent med er referansespenningen. Under en ADC-konvertering blir verdien av ukjent spenning funnet ved å sammenligne den med en kjent spenning, dette er kjent spenning kalles referansespenning. Normalt har alle MCU muligheter for å stille intern referansespenning, noe som betyr at du kan stille denne spenningen internt til en tilgjengelig verdi ved hjelp av programvare (program). I et Arduino UNO-kort er referansespenningen satt til 5V som standard internt, hvis nødvendig kan brukeren stille denne referansespenningen eksternt gjennom Vref-pinnen også etter å ha gjort de nødvendige endringene i programvaren.
Husk alltid at den målte analoge spenningsverdien alltid skal være mindre enn referansespenningsverdien, og referansespenningsverdien skal alltid være mindre enn driftsspenningsverdien til mikrokontrolleren.
Eksempel
Her tar vi eksempel på ADC som har 3-biters oppløsning og 2V referansespenning. Så det kan kartlegge 0-2v analog spenning med 8 (2 3) forskjellige nivåer, som vist på bildet nedenfor:

Så hvis analog spenning er 0,25, vil den digitale verdien være 1 i desimal og 001 i binær. På samme måte hvis analog spenning er 0,5, vil den digitale verdien være 2 i desimal og 010 i binær.
Noen mikrokontroller har innebygd ADC som Arduino, MSP430, PIC16F877A, men noen mikrokontroller har den ikke som 8051, Raspberry Pi osv., Og vi må bruke noen eksterne analoge til digitale omformere som ADC0804, ADC0808.
Nedenfor finner du forskjellige eksempler på ADC med forskjellige mikrokontrollere:
- Hvordan bruke ADC i Arduino Uno?
- Raspberry Pi ADC opplæring
- Grensesnitt ADC0808 med 8051 mikrokontroller
- 0-25V digitalt voltmeter ved hjelp av AVR-mikrokontroller
- Hvordan bruke ADC i STM32F103C8
- Hvordan bruke ADC i MSP430G2
ADC-typer og arbeid
Det er mange typer ADC, de mest brukte er Flash ADC, Dual Slope ADC, Successive approximation og Dual Slope ADC. For å forklare hvordan hvert av disse ADC-arbeidene og forskjellen mellom dem ville være utenfor omfanget for denne artikkelen, ettersom de er ganske komplekse. Men for å gi en grov ide ADC har en intern kondensator som vil bli ladet av den analoge spenningen som skal måles. Deretter måler vi spenningsverdien ved å tømme kondensatoren over en periode.
Noen vanlige spørsmål om ADC
Hvordan måler jeg mer enn 5V ved hjelp av ADC?
Som diskutert tidligere kan ikke en ADC-modul måle spenningsverdien mer enn driftsspenningen til mikrokontrolleren. Det vil si at en 5V mikrokontroller bare kan måle maksimalt 5V med ADC-pinnen. Hvis du vil måle noe mer enn det si, vil du måle 0-12V, så kan du kartlegge 0-12V i 0-5V ved å bruke en potensiell skillelinje eller spenningsdelerkrets. Denne kretsen vil bruke et par motstander for å kartlegge verdiene for en MCU, du kan vite mer om spenningsdelerkrets ved hjelp av lenken. For eksempelet vårt ovenfor, bør vi bruke en 1K motstand og 720 ohm motstand i serie til spenningskilden og måle spenningen mellom motstandene som diskutert i lenken ovenfor.
Hvordan konvertere digitale verdier fra ADC til faktiske spenningsverdier?
Når du bruker en ADC-omformer til å måle analog spenning, blir resultatet oppnådd av MCU i digital. For eksempel i en 10-biters 5V mikrokontroller når den faktiske spenningen som skal måles er 4V, vil MCU lese den som 820, vi kan igjen bruke de ovenfor omtalte formlene for å konvertere 820 til 4V slik at vi kan bruke den i vår beregninger. Lar kryssjekke det samme.
(ADC oppløsning / driftsspenning) = (ADC digital verdi / faktisk spenningsverdi) Faktisk spenningsverdi = ADC digital verdi * (driftsspenning / ADC oppløsning) = 820 * (5/1023) = 4,007 = ~ 4V
Håper du har en god ide om ADC og hvordan du bruker dem til applikasjonene dine. Hvis du hadde problemer med å forstå konseptene, kan du gjerne legge inn kommentarene nedenfor eller skrive det på forumet vårt.
