TMP36 - Tem­pe­ra­tur messen

Lese­zeit: 4 Minu­ten
Navi­ga­ti­on

Bis­her kennst du den Varia­blen­typ int. Am Bei­spiel der Tem­pe­ra­tur­mes­sung lernst du den Daten­typ float ken­nen. Im Gegen­satz zu int kann float auch Kom­ma­zah­len spei­chern. Du musst aber beach­ten, dass der Punkt das Dezi­mal­trenn­zei­chen ist.

Benö­tig­te Bauteile:

  • Tem­pe­ra­tur­sen­sor TMP36
  • Lei­tungs­dräh­te

Baue die Schal­tung auf.
(Fah­re mit der Maus über das Bild, um die Bezeich­nun­gen der Bau­tei­le zu sehen)

So sieht es beim Nähern einer Wär­me­quel­le aus:

Im Kopf des Pro­gramms und im setup-Teil sind nur weni­ge Anga­ben notwendig:

int TEMPERATURSENSOR = A0; 

void setup() 
{
  Serial.begin(9600); 
  Serial.println("Temperatur messen:"); 
}

Für die­se Auf­ga­be wird ein wenig Mathe­ma­tik benö­tigt.
Laut Daten­blatt müs­sen für die Berech­nung der Tem­pe­ra­tur ver­schie­de­ne Beson­der­hei­ten berück­sich­tigt werden:

Quel­le: https://​www​.ana​log​.com/​m​e​d​i​a​/​e​n​/​t​e​c​h​n​i​c​a​l​-​d​o​c​u​m​e​n​t​a​t​i​o​n​/​d​a​t​a​-​s​h​e​e​t​s​/​T​M​P​3​5​_​3​6​_​3​7​.​pdf

  • der ana­lo­ge Ein­gang hat einen maxi­ma­len Wert von 1023 mV 
  • der Ardui­no wird mit einer Span­nung von 5 V = 5000 mV betrieben 
  • vom gemes­se­nen Wert müs­sen 0,5 V abge­zo­gen werden 
  • ein Grad Cel­si­us ent­spricht 10 mV = 0,01 V 

Jetzt zur Rech­nung im loop-Teil:

void loop()
{
  // Wert des Sensors lesen
  float SensorWert = analogRead(TEMPERATURSENSOR);

  // richtiges Verhältnis zwischen 5 V = 5000 mV und 1023 mV  herstellen
  // → gemessenen Wert mit 5 malnehmen und dann durch 1023 teilen
  float MesswertVolt = SensorWert * 5.0;
  MesswertVolt = MesswertVolt / 1023.0;

  /*
    1 Grad = 10mV = 0,01 V = 1/100 V
    Versatz von 500mV = 0,5 V abziehen
    und durch 0.01 = 1 Grad teilen 
  */
  float Temperatur = (MesswertVolt - 0.5) / 0.01 ;

  // Ausgabe im Seriellen Monitor
  Serial.print("Temperatur: ");
  Serial.print(Temperatur);
  Serial.println(" °C");

  // Wartezeit bis zur nächsten Messung
  delay(3000);
}

Lei­der wird das Ergeb­nis mit einem Punkt als Dezi­mal­trenn­zei­chen ange­zeigt. Mit dem Befehl replace kannst du das Pro­blem lösen:

  // in Strings umwandeln, . durch , ersetzen   
  String AnzeigeTemperatur = String(Temperatur); 
  AnzeigeTemperatur.replace(".", ",");

Neben dem TMP36 kann auch der DHT22 die Tem­pe­ra­tur mes­sen. Hier ein Ver­gleich der gemes­se­nen Tem­pe­ra­tu­ren über einen Zeit­raum von drei Minu­ten.
Das dazu­ge­hö­ri­ge ➨Pro­gramm.



Ver­wand­te Aufgaben:


Letzte Aktualisierung: 24. Nov 2020 @ 9:20