Die Temperatursensoren TMP36 und LM35 haben einen Temperaturunterschied. (Offset) im gleichen Stromkreis

8

Ich versuche, die beiden Temperatursensoren TMP36 (aus dem Sparkfun Inventor-Kit) und KEYES LM35 zu verwenden.

Lesen Sie TMP36 Sensor und konvertieren Sie das Ergebnis mit dem folgenden Code in Celsius:

// TMP36 input sensor -> degrees Celsius calculation
TM36reading = analogRead(TM36sensor);  
TM36voltage = (TM36reading/1024.0)*5.0;
//converting from 10mv per degree with 500 mV offset
//             (TMP36 voltage - 500mV) times 100)
TM36degreesC = (TM36voltage - 0.5) * 100; 

Beim Lesen des LM35-Sensors konvertieren ich das Ergebnis mit dem folgenden Code in Celsius:

// LM35 input sensor -> degrees Celsius calculation
LM35reading=analogRead(LM35sensor);    // reads the LM35 output
LM35voltage = (LM35reading/1024.0)*5.0;
LM35degreesC=LM35voltage*100.0;    

Ich habe auch ein LCD-Display angeschlossen, um die Werte dieser beiden Sensoren visuell zu überwachen. Hier ist mein vollständiger Code . Ich benutze auch ein serielles Protokoll. Hier ist ein Beispiel aus diesem seriellen Protokoll (wie Sie sehen können, gibt es einen Unterschied / Versatz zwischen 0,5 und 0,9 Grad Celsius).

TM36: 17.38, LM35: 16.60 diff -> 0.78
TM36: 16.89, LM35: 16.11 diff -> 0.78
TM36: 16.89, LM35: 16.60 diff -> 0.29
TM36: 16.89, LM35: 16.60 diff -> 0.29
TM36: 16.89, LM35: 16.60 diff -> 0.29
TM36: 17.87, LM35: 16.60 diff -> 1.27
TM36: 16.89, LM35: 16.60 diff -> 0.29
TM36: 16.89, LM35: 16.60 diff -> 0.29
TM36: 16.89, LM35: 17.09 diff -> 0.20
TM36: 17.38, LM35: 17.09 diff -> 0.29
mean difference between sensors: 0.48
TM36: 17.38, LM35: 16.11 diff -> 1.27
TM36: 16.89, LM35: 16.60 diff -> 0.29
TM36: 17.38, LM35: 16.60 diff -> 0.78
TM36: 16.41, LM35: 17.58 diff -> 1.17
TM36: 16.89, LM35: 16.60 diff -> 0.29
TM36: 17.38, LM35: 16.11 diff -> 1.27
TM36: 16.89, LM35: 16.60 diff -> 0.29
TM36: 17.38, LM35: 16.11 diff -> 1.27
TM36: 16.89, LM35: 16.60 diff -> 0.29
TM36: 16.89, LM35: 17.09 diff -> 0.20
mean difference between sensors: 0.71
TM36: 17.38, LM35: 16.60 diff -> 0.78
TM36: 16.89, LM35: 16.60 diff -> 0.29
TM36: 17.38, LM35: 16.11 diff -> 1.27
TM36: 17.38, LM35: 16.11 diff -> 1.27
TM36: 17.38, LM35: 16.11 diff -> 1.27
TM36: 17.38, LM35: 16.60 diff -> 0.78
TM36: 17.38, LM35: 16.11 diff -> 1.27
TM36: 17.38, LM35: 16.11 diff -> 1.27
TM36: 17.38, LM35: 17.09 diff -> 0.29
TM36: 16.89, LM35: 16.11 diff -> 0.78
mean difference between sensors: 0.93

Ich schalte den Arduino über das USB-Kabel vom Computer aus ein. Wenn der Computer eingeschaltet ist, haben wir den Offset, den ich oben bereits demonstriert habe. Wenn der Computer ausgeschaltet wird (nach dem Herunterfahren des Computers), fällt der Sensor des TMP36 sofort um 1 Grad Celsius. Und dann haben beide Sensoren eine ähnliche Temperatur. Arduino mit USB und Computer EIN versus Computer aus (LM35- und TMP36-Temperatursensoren)

Warum gibt es diesen Temperaturunterschied zwischen TMP36- und LM35-Sensoren? Wie können wir diese Sensoren "fein einstellen", um die tatsächliche Temperatur zu überwachen?

ggia
quelle
Ich bin mir nicht sicher, ob dies zutrifft (ich bin ein absoluter Neuling bei Arduino), aber dieser Link ( learn.adafruit.com/tmp36-temperature-sensor ) enthält unten einen Abschnitt mit dem Titel "Probleme, die bei mehreren Sensoren auftreten können". Könnte etwas zu überprüfen sein und sehen, ob es auf Ihren Fall zutrifft.
PatrickSteele

Antworten:

5

Die Sensoren haben je nach Datenblatt eine unterschiedliche Genauigkeit. Der TMP36 hat eine typische Genauigkeit von ± 2 ° C , während der LM35 eine typische Genauigkeit von 0,5 ° C (über 25 ° C) hat. Lesen Sie das Datenblatt sorgfältig durch und achten Sie auf die Eigenschaften, insbesondere auf die Genauigkeitsfehlerdiagramme für jeden Sensor. Bei Ihrer gemessenen Temperatur (~ 17 ° C) sollten Sie den folgenden Fehler erwarten (die rote Linie ist nicht sehr genau, sollte aber einen allgemeinen Hinweis geben):

LM35:

LM35-Genauigkeitsfehlereigenschaften gemäß Datenblatt

TMP36:

TMP36-Genauigkeitsfehlereigenschaften gemäß Datenblatt

Wie Michal sagte, kann es außerdem zu Rauschen in Ihrer Schaltung kommen, und Sie schließen den TMP36 nicht gemäß den Angaben im Datenblatt an (beachten Sie den Kondensator zwischen + V und Masse):

TMP36 typische Anwendung gemäß Datenblatt

Omer
quelle
Vielen Dank für die detaillierten Diagramme. Ich werde versuchen, den 100nF-Kondensator in den nächsten Tagen zu verwenden (ich muss zuerst einen kaufen).
Ggia
Das ist gut und kann ein bisschen helfen, solange Sie verstehen, dass Sie aufgrund unterschiedlicher Eigenschaften immer noch Unterschiede zwischen den beiden Sensoren feststellen werden.
Omer
3

Es gibt viele Dinge: Erstens haben verschiedene Sensoren unterschiedliche Genauigkeiten oder sie wurden möglicherweise nicht ab Werk kalibriert. Darüber hinaus sind beide analog und analoges Lesen ist anfällig für Rauschen. Ich vermute, es gibt ein hochfrequentes Rauschen auf der Stromleitung, das vom Computer kommt und Ihre Messwerte stört. Versuchen Sie, einen kleinen Kondensator (100 nF) zwischen AREF und GND-Pin zu legen. Sie können immer nur den Median der gemessenen Werte als tatsächliche Temperatur verwenden.

Cano64
quelle
Ich habe hier gelesen , dass Arduino Mega bereits einen Kondensator 100nF zwischen AREF und GND hat. Ich werde versuchen, in den nächsten Tagen einen 100nF zu kaufen und zu sehen, ob das Rauschen auf diese Weise gefiltert wird. Vielen Dank.
Ggia