- Den analoge verden med digital elektronik
- Hvad er ADC, og hvordan bruges det?
- Opløsning (bits) og kanaler i ADC
- Reference spænding for en ADC
- Eksempel
- ADC-typer og arbejde
- Nogle ofte opståede spørgsmål om ADC
Den analoge verden med digital elektronik
For få år tilbage var hele elektroniske enheder, som vi bruger i dag som telefoner, computere, fjernsyn osv., Analoge. Derefter blev fasttelefoner langsomt erstattet af moderne mobiltelefoner, CRT-fjernsyn og skærme blev erstattet af LED-skærme, computere med vakuumrør udviklede sig til at være mere kraftfulde med mikroprocessorer og mikrokontroller inde i dem og så videre.
I nutidens digitale tidsalder er vi alle omgivet af avancerede digitale elektroniske enheder, dette kan bedrage os til at tro, at alt omkring os er digitalt, hvilket ikke er sandt. Verden har altid været analog i naturen, for eksempel er alt, hvad vi mennesker føler og oplever som hastighed, temperatur, lufthastighed, sollys, lyd osv., Analogt. Men vores elektroniske enheder, der kører på mikrocontrollere og mikroprocessorer, kan ikke læse / fortolke disse analoge værdier direkte, da de kun kører på 0 og 1. Så vi har brug for noget, der konverterer alle disse analoge værdier til 0'er og 1'er, så vores mikrocontrollere og mikroprocessorer kan forstå dem. Dette kaldes Analog til Digital Converters eller ADC for kort. I denne artikel vil vi lærealt om ADC og hvordan man bruger dem.
Hvad er ADC, og hvordan bruges det?
Som tidligere nævnt står ADC for analog til digital konvertering, og det bruges til at konvertere analoge værdier fra den virkelige verden til digitale værdier som 1 og 0. Så hvad er disse analoge værdier? Det er dem, vi ser i vores daglige liv som temperatur, hastighed, lysstyrke osv. Men vent !! Kan en ADC konvertere temperatur og hastighed direkte til digitale værdier som 0 og 1?
Nej trodsigt ikke. En ADC kan kun konvertere analoge spændingsværdier til digitale værdier. Så hvilken parameter vi nogensinde vil måle, skal den først konverteres til spænding, denne konvertering kan udføres ved hjælp af sensorer. For eksempel for at konvertere temperaturværdier til spænding kan vi bruge en termistor på samme måde til at konvertere lysstyrke til spænding, vi kan bruge en LDR. Når den er konverteret til spænding, kan vi læse den ved hjælp af ADC'er.
For at vide, hvordan man bruger en ADC, skal vi først blive fortrolige med nogle grundlæggende udtryk som, kanalopløsning, rækkevidde, referencespænding osv.
Opløsning (bits) og kanaler i ADC
Når du læser specifikationen for en hvilken som helst Microcontroller eller ADC IC, vil oplysningerne om ADC blive givet ved hjælp af udtrykkene kanaler og opløsning (bits). For eksempel har en Arduino UNOs ATmega328 en 8-kanals 10-bit ADC. Ikke hver pin på en mikrokontroller kan læse analog spænding, udtrykket 8-kanal betyder, at der er 8 ben på denne ATmega328 mikrokontroller, der kan læse analog spænding, og hver pin kan læse spændingen med en opløsning på 10-bit. Dette vil variere for forskellige typer mikrocontrollere.
Lad os antage, at vores ADC-interval er fra 0V til 5V, og vi har en 10-bit ADC, hvilket betyder, at vores indgangsspænding 0-5 volt opdeles i 1024 niveauer af diskrete analoge værdier (2 10 = 1024). Betydning 1024 er opløsningen for en 10-bit ADC, ligesom for en 8-bit ADC-opløsning vil være 512 (2 8) og for en 16-bit ADC-opløsning vil være 65.536 (2 16).
Med dette, hvis den faktiske indgangsspænding er 0V, vil MCU's ADC læse den som 0, og hvis den er 5V, vil MCU læse 1024, og hvis den ligger et sted imellem som 2,5V, læser MCU'en 512. Vi kan bruge nedenstående formler at beregne den digitale værdi, der læses af MCU'en baseret på opløsningen af ADC og driftsspænding.
(ADC-opløsning / driftsspænding) = (ADC Digital værdi / faktisk spændingsværdi)
Reference spænding for en ADC
Et andet vigtigt udtryk, som du bør være fortrolig med, er referencespændingen. Under en ADC-konvertering findes værdien af ukendt spænding ved at sammenligne den med en kendt spænding, dette er kendt spænding kaldes referencespænding. Normalt har alle MCU en mulighed for at indstille intern referencespænding, hvilket betyder at du kan indstille denne spænding internt til en vis tilgængelig værdi ved hjælp af software (program). I et Arduino UNO-kort er referencespændingen indstillet til 5V som standard internt, hvis det kræves, kan brugeren indstille denne referencespænding eksternt gennem Vref-stiften også efter at have foretaget de nødvendige ændringer i softwaren.
Husk altid, at den målte analoge spændingsværdi altid skal være mindre end referencespændingsværdien, og referencespændingsværdien altid skal være mindre end mikrokontrollerens driftsspændingsværdi.
Eksempel
Her tager vi et eksempel på ADC, som har 3 bit opløsning og 2V referencespænding. Så det kan kortlægge 0-2v analog spænding med 8 (2 3) forskellige niveauer, som vist på nedenstående billede:
Så hvis analog spænding er 0,25, vil den digitale værdi være 1 i decimal og 001 i binær. Ligeledes hvis analog spænding er 0,5, vil den digitale værdi være 2 i decimal og 010 i binær.
Nogle mikrokontroller har indbygget ADC som Arduino, MSP430, PIC16F877A, men nogle mikrokontroller har det ikke som 8051, Raspberry Pi osv., Og vi skal bruge nogle eksterne analoge til digitale konverter IC'er som ADC0804, ADC0808.
Nedenfor kan du finde forskellige eksempler på ADC med forskellige mikrocontrollere:
- Hvordan bruges ADC i Arduino Uno?
- Raspberry Pi ADC vejledning
- Interfacing ADC0808 med 8051 Microcontroller
- 0-25V digitalt voltmeter ved hjælp af AVR-mikrocontroller
- Sådan bruges ADC i STM32F103C8
- Sådan bruges ADC i MSP430G2
ADC-typer og arbejde
Der er mange typer ADC, de mest anvendte er Flash ADC, Dual Slope ADC, Successive approximation og Dual Slope ADC. For at forklare, hvordan hver af disse ADC's arbejde og forskellen mellem dem ville være uden for denne artikels anvendelsesområde, da de er ret komplekse. Men for at give en grov ide ADC har en intern kondensator, som bliver ladet af den analoge spænding, der skal måles. Derefter måler vi spændingsværdien ved at aflade kondensatoren over en periode.
Nogle ofte opståede spørgsmål om ADC
Hvordan måles mere end 5V ved hjælp af min ADC?
Som tidligere omtalt kan et ADC-modul ikke måle spændingsværdien mere end mikrokontrollerens driftsspænding. Det vil sige, at en 5V mikrokontroller kun kan måle maksimalt 5V med sin ADC-pin. Hvis du vil måle noget mere end det siger, vil du måle 0-12V, så kan du kortlægge 0-12V i 0-5V ved hjælp af et potentielt skille- eller spændingsdelerkredsløb. Dette kredsløb bruger et par modstande til at kortlægge værdierne for en MCU, du kan vide mere om spændingsdelerkredsløb ved hjælp af linket. Til vores ovenstående eksempel skal vi bruge en 1K modstand og 720 ohm modstand i serie til spændingskilden og måle spændingen imellem modstandene som beskrevet i linket ovenfor.
Hvordan konverteres digitale værdier fra ADC til faktiske spændingsværdier?
Når du bruger en ADC-konverter til at måle analog spænding, bliver resultatet opnået af MCU i digitalt. For eksempel i en 10-bit 5V mikrokontroller, når den faktiske spænding, der skal måles, er 4V, vil MCU læse den som 820, vi kan igen bruge de ovennævnte diskuterede formler til at konvertere 820 til 4V, så vi kan bruge den i vores beregninger. Lader krydstjekke det samme.
(ADC Opløsning / Driftsspænding) = (ADC Digital værdi / Faktisk spændingsværdi) Faktisk spændingsværdi = ADC Digital værdi * (Driftsspænding / ADC opløsning) = 820 * (5/1023) = 4,007 = ~ 4V
Håber du har en god idé om ADC og hvordan du bruger dem til dine applikationer. Hvis du havde problemer med at forstå begreberne, er du velkommen til at skrive dine kommentarer nedenfor eller skrive dem på vores fora.