Przejdź do treści

Od wartości ADC do napięcia i pomiaru

Jakie napięcie i temperatura odpowiadają mojej wartości ADC?

Odpowiedź: 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.

Wzór

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

Symbole i jednostki we wzorze
SymbolZnaczenieJednostka
adcOdczytana wartość ADC (np. z analogRead)—
bitsrozdzielczość przetwornika ADC—
urefNapięcie odniesieniaV
offsetNapięcie czujnika na 0 (przesunięcie)V
foelsomhedCzułość czujnikaV pr. enhed
=Zmierzona wielkość (np. °C)—
=Napięcie na wejściuV
=Rozdzielczość na krokmV
=Minimalna zmiana, którą czujnik może zobaczyć—

Ważność i źródło

Źródło
Dokumentacja Arduino analogRead() (10 bitów, 0-1023) i arkusz danych TMP36 (Analog Devices: 10 mV/°C, 500 mV przy 0 °C)

Nie dotyczy, gdy

  • Dokumentacja Arduino dzieli przez 1023 (2^bits − 1). Niektóre książki dzielą przez 1024; różnica to mniej niż 0,1 % i ma znaczenie tylko w pełnej skali. Napięcie odniesienia z USB rzadko wynosi dokładnie 5,00 V: zmierz je multimetrem, jeśli twoje pomiary mają się zgadzać.

Przykład obliczeniowy

Wstawiono domyślne wartości kalkulatora. Liczby obliczono dokładnie tym wzorem, którego używa narzędzie.

Wstawiono

  • Odczytana wartość ADC (np. z analogRead)154
  • rozdzielczość przetwornika ADC10
  • Napięcie odniesienia5 V
  • Napięcie czujnika na 0 (przesunięcie)0,50 V
  • Czułość czujnika0,01 V pr. enhed

Dawca

  • Zmierzona wielkość (np. °C)25,3
  • Napięcie na wejściu0,753 V
  • Rozdzielczość na krok4,89 mV
  • Minimalna zmiana, którą czujnik może zobaczyć0,49

Sam kalkulator jest zablokowane

Utwórz bezpłatne konto, aby odblokować wszystkie artykuły, kalkulatory, szablony i asortyment — i uzyskać dostęp do quizów i klas. Zajmuje to poniżej minuty: imię, email i hasło. Żadna karta kredytowa.

Chcesz najpierw czegoś spróbować? Zobacz, czego możesz używać bez konta — strefa junior, leksykon, filmy i więcej.

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.

Krok za krokiem

  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.

Typowe błędy

  • 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.

Przykłady z codzienności

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.

Odczytana wartość ADC (np. z analogRead)
154
rozdzielczość przetwornika ADC
10 bit (0-1023, fx Arduino Uno)
Napięcie odniesienia
5 V
Napięcie czujnika na 0 (przesunięcie)
0,5 V
Czułość czujnika
0,01 V pr. enhed

To znaczy: 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.

Odczytana wartość ADC (np. z analogRead)
1100
rozdzielczość przetwornika ADC
12 bit (0-4095, fx ESP32, Arduino Due)
Napięcie odniesienia
3,3 V
Napięcie czujnika na 0 (przesunięcie)
0,5 V
Czułość czujnika
0,01 V pr. enhed

To znaczy: 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.

Odczytana wartość ADC (np. z analogRead)
512
rozdzielczość przetwornika ADC
10 bit (0-1023, fx Arduino Uno)
Napięcie odniesienia
5 V
Napięcie czujnika na 0 (przesunięcie)
0 V
Czułość czujnika
0,05 V pr. enhed

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

Reguła praktyczna

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

Jak sprawdzić odpowiedź

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