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.
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?
quelle
Antworten:
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:
TMP36:
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):
quelle
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.
quelle