Spring til indhold

Fra ADC-værdi til spænding og måling

Hvilken spænding og temperatur svarer min ADC-værdi til?

Svar: Når du bygger en prototype med en mikrocontroller, læser den en analog sensor som et heltal: på en Arduino Uno fra 0 til 1023 (10 bit). Beregneren omregner tallet til spænding ud fra referencespændingen og opløsningen, og videre til den fysiske størrelse for en lineær sensor: størrelse = (U − offset) ÷ følsomhed. Standardtallene er temperatursensoren TMP36 fra databladet. Har du en anden sensor, taster du dens offset og følsomhed fra dens datablad.

Formel

U = ADC-værdi ÷ (2^bits − 1) × U_ref

Størrelse = (U − offset) ÷ følsomhed (lineær sensor fra databladet)

TMP36: offset 0,5 V og følsomhed 0,01 V/°C, så 0,75 V = 25 °C

Opløsning = U_ref ÷ (2^bits − 1). Mindste ændring = opløsning ÷ følsomhed

Symboler og enheder i formlen
SymbolBetydningEnhed
adcAflæst ADC-værdi (fx fra analogRead)—
bitsADC'ens opløsning—
urefReferencespændingV
offsetSensorens spænding ved 0 (offset)V
foelsomhedSensorens følsomhedV pr. enhed
=Målt størrelse (fx °C)—
=Spænding på indgangenV
=Opløsning pr. trinmV
=Mindste ændring sensoren kan se—

Gyldighed og kilde

Kilde
Arduino analogRead()-reference (10 bit, 0-1023) og TMP36-databladet (Analog Devices: 10 mV/°C, 500 mV ved 0 °C)

Gælder ikke når

  • Arduinos egen dokumentation omregner med 1023 (2^bits − 1). Nogle bøger dividerer med 1024; forskellen er under 0,1 % og betyder kun noget ved fuld skala. Referencespændingen fra USB er sjældent præcis 5,00 V: mål den med multimeteret, hvis dine målinger skal passe.

Regneeksempel

Beregnerens egne standardværdier sat ind. Tallene er regnet med præcis den formel værktøjet bruger.

Sat ind

  • Aflæst ADC-værdi (fx fra analogRead)154
  • ADC'ens opløsning10
  • Referencespænding5 V
  • Sensorens spænding ved 0 (offset)0,50 V
  • Sensorens følsomhed0,01 V pr. enhed

Giver

  • Målt størrelse (fx °C)25,3
  • Spænding på indgangen0,753 V
  • Opløsning pr. trin4,89 mV
  • Mindste ændring sensoren kan se0,49

Selve beregneren er låst

Opret en gratis bruger for at låse op for alle artikler, beregnere, skabeloner og sortiment — og få adgang til quizzer og klasser. Det tager under et minut: navn, email og en adgangskode. Intet betalingskort.

Vil du prøve noget først? Se hvad du kan bruge uden konto — junior-zonen, leksikonet, videoerne og mere.

Sådan bruger du den

Når du bygger en prototype i teknologi eller programmering med en mikrocontroller og en analog sensor, og tallet fra analogRead() skal blive til en spænding og en temperatur eller et tryk. Beregneren viser også, hvor fint din opstilling kan måle.

Trin for trin

  1. Læs ADC-værdien i Serial Monitor.
  2. Vælg ADC'ens opløsning: Arduino Uno er 10 bit, ESP32 er 12 bit.
  3. Skriv referencespændingen. Mål den med multimeteret, hvis du vil være præcis.
  4. Skriv sensorens offset og følsomhed fra databladet.
  5. Aflæs spændingen, den målte størrelse og den mindste ændring, du kan se.

Typiske fejl

  • At regne med 5 V, når boardet faktisk får 4,8 V fra USB. Det giver flere graders fejl.
  • At glemme offset på TMP36. Uden den bliver 25 °C til 75 °C.
  • At regne med 10 bit på et board med 12 bit, eller omvendt.
  • At stole på én måling. Tag gennemsnittet af 10-20 aflæsninger i koden.

Eksempler fra hverdagen

TMP36 på en Arduino Uno

Din temperaturlogger læser 154 på A0. Arduinoen kører på USB med 5 V reference, og TMP36 har 0,5 V offset og 10 mV/°C.

Aflæst ADC-værdi (fx fra analogRead)
154
ADC'ens opløsning
10 bit (0-1023, fx Arduino Uno)
Referencespænding
5 V
Sensorens spænding ved 0 (offset)
0,5 V
Sensorens følsomhed
0,01 V pr. enhed

Det betyder: Indgangen får 0,753 V, og det svarer til 25,3 °C. Hvert trin er 4,89 mV, så du kan kun se ændringer på ca. 0,49 °C.

Samme sensor på en ESP32

Du flytter loggeren til en ESP32 med 12 bit og 3,3 V reference. Loggeren står i jeres drivhusprojekt en varm dag og læser 1.100.

Aflæst ADC-værdi (fx fra analogRead)
1.100
ADC'ens opløsning
12 bit (0-4095, fx ESP32, Arduino Due)
Referencespænding
3,3 V
Sensorens spænding ved 0 (offset)
0,5 V
Sensorens følsomhed
0,01 V pr. enhed

Det betyder: Det giver 0,886 V og 38,6 °C. Opløsningen er nu 0,81 mV pr. trin, ca. 0,08 °C. ESP32'ens ADC er dog ikke lineær nær 0 V og 3,3 V, så kalibrér mod et termometer.

Trykføler 0-5 V

En trykføler giver ifølge databladet 0 V ved 0 kPa og 0,05 V pr. kPa. Arduinoen læser 512.

Aflæst ADC-værdi (fx fra analogRead)
512
ADC'ens opløsning
10 bit (0-1023, fx Arduino Uno)
Referencespænding
5 V
Sensorens spænding ved 0 (offset)
0 V
Sensorens følsomhed
0,05 V pr. enhed

Det betyder: Spændingen er 2,502 V, og trykket er 50 kPa. Du kan skelne ændringer på ca. 0,1 kPa.

Tommelfingerregel

Arduino Uno: 1 trin ≈ 4,9 mV. TMP36: 1 °C = 10 mV ≈ 2 trin.

Sådan tjekker du svaret

Mål spændingen på sensorens udgang med multimeteret. Den skal passe med beregnerens spænding inden for et par trin.