Forum: Mikrocontroller und Digitale Elektronik Temperatur mit NTC und ESP8266 ermitteln


von Torben S. (Firma: privat) (torben_25)


Lesenswert?

Ich möchte mit einem ESP8266 die Temperatur in Celsius ermitteln, die 
als Spannungswert am analogen Eingang des ESP8266 anliegt. Zur 
Temperaturmessung setze ich einen NTC ein.

Ich möchte nun ein Adruino-Programm schreiben, das mir den analogen 
Spannungswert in Celsius umwandelt.

Ich habe mir folgende Lösung überlegt.

1. Am analogen Eingang des ESP8266 liegt ja die Spannung U_NTC an.
2. Als Erstes würde ich die Quantisierungsstufe berechnen (qu= 
3,3V/2^10) und U_NTC durch die Quantisierungsstufe qu teilen.
3. Von diesem Ergebnis (aus 2.) würde ich dann 273,15 abziehen, um die 
Temperatur in Celsius zu bekommen.

Löst dieser Algorithmus das Problem tatsächlich?

von Rüdiger B. (rbruns)


Lesenswert?

Du hast einen Spannungsteiler, damit musst du den Widerstand berechnen.
Daraus ergibt sich die Temperatur aus Tabelle/Formel.
https://d-sensors.shop/media/pdf/cf/44/bf/Kennlinie_NTC-10kOhm.pdf
https://support.maxongroup.com/hc/de/articles/360007861394-Temperatursensor-NTC

von Stefan F. (Gast)


Lesenswert?

Deine Überlegung ist im Prinzip richtig. Leider sind die Bauteile nicht 
ideal.

Deine geheime Schaltung gibt mit 99% Wahrscheinlichkeit keine Spannung 
aus, die linear zur Temperatur steht. Dazu kommt, dass der ADC einen 
Offset hat und ebenfalls nicht linear arbeitet.

Wenn du keine Lust auf Abweichung von 5 Grad oder mehr hast, dann 
verwende eine Tabelle zur Übersetzung, deren Werte du manuell 
ermittelst. Und gehe mal davon aus, dass du das mit jedem ESP einzeln 
wiederholen musst, falls du davon mehrere baust.

Alternative: Sensoren mit digitalem Ausgang verwenden, z.B. DS1820.

Das könnte interessant sein:
https://www.electronicdeveloper.de/MesstechnikNTCLinearR.aspx

Wenn du dort einen 10kΩ NTC verwendest, kommt man mit Rs=10kΩ und 
Rp=100kΩ auf eine fast lineare Spannung im Bereich von 
Zimmertemperaturen.

Aber es bleibt der Offset und die nicht-linearität des ADC.
https://microcontrollerslab.com/esp8266-nodemcu-adc-tutorial-measure-analog-voltage/

von Jens G. (jensig)


Lesenswert?

Stefan F. schrieb:
> Aber es bleibt der Offset und die nicht-linearität des ADC.

Wie genau willst Du denn die Temperatur messen, daß Dich die geringe 
Nicht-Linearität so sehr stört?

: Bearbeitet durch User
von Stefan F. (Gast)


Lesenswert?

Jens G. schrieb:
> Wie genau willst Du denn die Temperatur messen, daß Dich die geringe
> Nicht-Linearität so sehr stört?

Ich will sie gar nicht messen, die Frage musst du den TO stellen.

Wir hatten hier schon genug Leute, die schockiert reagierten, als sie 
entdeckten, dass ihre 5 Thermometer alle etwas anderes im Bereich +/- 1 
Grad anzeigten.

von Wolfgang (Gast)


Lesenswert?

Torben S. schrieb:
> Löst dieser Algorithmus das Problem tatsächlich?

Das kommt drauf an, in welchem Temperaturbereich du welche Genauigkeit 
erzielen möchtest und welche Kalibriermöglichkeiten dir zur Verfügung 
stehen.
Außerdem musst du klären, wie Referenzspannung des ADC und 
Versorgungsspannung am Spannungsteiler zusammenhängen. Da der NTC 
nichtlinear ist, musst du eventuell dessen Kennlinie bei der Umrechnung 
berücksichtigen.

von Michael B. (laberkopp)


Lesenswert?

Torben S. schrieb:
> Löst dieser Algorithmus das Problem tatsächlich?

Nein, die Spannung eines NTC ist nicht linear mit der Temperatur, dazu 
müsstest du einen Halbleitersensor wie LM35 benutzen.

Ein NTC ist sowieso stark unlinear, der Wert ändert sich um 5% pro 
GradC, ideal um kleine Bereiche genau zu messen aber bei grossen 
Messbereich an den Rändern schwer an Auflösung verlierend.

Du musst schon (z.B. per Excel) berechnen welcher A/D-Wandlerwert zu 
welcher Temperatur gehört und den uC einfach nachgucken lassen.

http://www.dse-faq.elektronik-kompendium.de/dse-faq.htm#F.32

Mit Parallelwiderständen kann man die NTC Kurve wenigstens etwas 
linearisieren.

von Helmut -. (dc3yc)


Lesenswert?

Und wenn der WiFi im ESP8266 sendet, misst der ADC sowieso, was er will.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.