Misurare la temperatura con SHT20, SHT35 e SHT40

FunduinoUltimo aggiornamento il

Drei I2C-Sensoren für Temperatur und Luftfeuchtigkeit im Vergleich

Temperatur und Luftfeuchtigkeit zu messen gehört zu den häufigsten Aufgaben für einen Mikrocontroller. Die Sensoren SHT20, SHT35 und SHT40 erledigen beides in einem Bauteil und liefern ihre Werte fertig umgerechnet über den I2C-Bus – du brauchst also nur vier Leitungen und musst nichts kalibrieren.

Diese Anleitung zeigt für alle drei Sensoren die Verkabelung, die jeweils passende Bibliothek und ein lauffähiges Programm.

Kleine Platine mit dem Temperatur- und Feuchtigkeitssensor SHT40
Das Sensormodul SHT40
Schaltplan mit Arduino und SHT40-Modul
Anschluss des SHT40 am Arduino über den I2C-Bus
1 / 2

Material

Für dieses Projekt brauchst du:

  • 1× Mikrocontroller mit passendem USB-Kabel
  • 1× Sensormodul SHT40, SHT35 oder SHT20
  • 4× Steckkabel männlich/weiblich

Du brauchst nur einen der drei Sensoren. Die Anleitung zeigt für jeden das passende Programm – die Verkabelung ist bei allen dreien gleich.

Die drei Sensoren im Überblick

Temperatur und Luftfeuchtigkeit zu messen gehört zu den häufigsten Aufgaben für einen Mikrocontroller. Die Sensoren der SHT-Familie unterscheiden sich vor allem in ihrer Messgenauigkeit – und darin, welche Bibliothek sie brauchen.

Alle drei werden über den I2C-Bus angeschlossen. Neben der Spannungsversorgung und GND brauchen sie dafür nur zwei weitere Leitungen:

  • VCC → 3,3V
  • GND → GND
  • SDA → A4 (beim Arduino UNO)
  • SCL → A5 (beim Arduino UNO)

Beachte unbedingt die Beschriftung auf deinem Modul. Die Reihenfolge der Anschlüsse ist nicht bei allen Platinen gleich, und ein vertauschter Anschluss kann den Sensor beschädigen.

Kleine Platine mit dem Temperatur- und Feuchtigkeitssensor SHT40
Das Sensormodul SHT40
Kleine Platine mit dem Temperatur- und Feuchtigkeitssensor SHT35
Das Sensormodul SHT35
1 / 2

Der SHT40

Für den SHT40 brauchst du die Bibliothek Adafruit SHT4x. Installiere sie über Sketch → Bibliothek einbinden → Bibliotheken verwalten oder über das Symbol in der linken Leiste. Bestätige die Nachfrage nach den Abhängigkeiten mit „Install all“.

Nach dem Hochladen erscheinen Temperatur und Luftfeuchtigkeit alle zwei Sekunden im Seriellen Monitor bei 9600 Baud.

Der SHT40 kann mit drei Genauigkeitsstufen messen. Eine höhere Stufe liefert ruhigere Werte, braucht dafür aber etwas mehr Zeit und Strom. Im Sketch ist SHT4X_HIGH_PRECISION eingestellt.

Schaltplan mit Arduino und SHT40-Modul
Anschluss des SHT40 am Arduino über den I2C-Bus
Bibliotheksverwalter der Arduino IDE mit der Adafruit-SHT4x-Bibliothek
Die Bibliothek „Adafruit SHT4x“ im Bibliotheksverwalter
Serieller Monitor mit Temperatur- und Feuchtigkeitswerten
Ausgabe von Temperatur und Luftfeuchtigkeit im Seriellen Monitor
1 / 3
Sketch fuer den SHT40
// Benoetigte Bibliothek einbinden
#include "Adafruit_SHT4x.h"

// Name des Sensors (sht4)
Adafruit_SHT4x sht4 = Adafruit_SHT4x();

void setup()
{
  Serial.begin(9600);
  delay(1000);

  // SHT40 starten, im Fehlerfall Meldung anzeigen
  Serial.println("SHT40 Test");
  if (!sht4.begin()) Serial.println("Sensor SHT40 nicht gefunden");
  else Serial.println("Sensor SHT40 gefunden!");

  /*
    Genauigkeit bestimmen, moegliche Werte:
    SHT4X_LOW_PRECISION  (niedrig)
    SHT4X_MED_PRECISION  (mittel)
    SHT4X_HIGH_PRECISION (hoch)
  */
  sht4.setPrecision(SHT4X_HIGH_PRECISION);
}

void loop()
{
  // Sensorwerte erfassen (Luftfeuchtigkeit, Temperatur)
  sensors_event_t Luftfeuchtigkeit, Temperatur;
  sht4.getEvent(&Luftfeuchtigkeit, &Temperatur);

  // Gemessene Temperatur in String umwandeln und Punkt durch Komma ersetzen
  String gemesseneTemperatur = String(Temperatur.temperature);
  gemesseneTemperatur.replace(".", ",");
  Serial.println("Temperatur: " + gemesseneTemperatur + " Grad C");

  // Gemessene Luftfeuchtigkeit in String umwandeln und Punkt durch Komma ersetzen
  String gemesseneLuftfeuchtigkeit = String(Luftfeuchtigkeit.relative_humidity);
  gemesseneLuftfeuchtigkeit.replace(".", ",");
  Serial.println("Luftfeuchtigkeit: " + gemesseneLuftfeuchtigkeit + "%");

  Serial.println("------------------------");
  delay(2000);
}

Der SHT20

Der SHT20 wird genauso verkabelt wie der SHT40, braucht aber eine andere Bibliothek: SHT2x von Rob Tillaart. Auch sie findest du über den Bibliotheksverwalter.

Der Sketch gibt Temperatur und Luftfeuchtigkeit mit zwei Nachkommastellen aus.

Bibliotheksverwalter der Arduino IDE mit der SHT2x-Bibliothek
Die Bibliothek „SHT2x“ für den SHT20 im Bibliotheksverwalter
Sketch fuer den SHT20
#include "SHT2x.h"

// sht dem I2C-Bus (Wire) zuordnen
SHT2x sht(&Wire);

void setup()
{
  Serial.begin(9600);
  delay(1000);

  // I2C-Bus starten
  Wire.begin();

  // SHT20 starten, im Fehlerfall Meldung anzeigen
  Serial.println("SHT20 Test");
  if (!sht.begin()) Serial.println("Sensor SHT20 nicht gefunden");
  else Serial.println("Sensor SHT20 gefunden!");
}

void loop()
{
  // Sensor lesen
  sht.read();

  // Gelesene Temperatur mit 2 Nachkommastellen in einen String umwandeln
  String gemesseneTemperatur = String(sht.getTemperature(), 2);
  gemesseneTemperatur.replace(".", ",");
  Serial.println("Temperatur: " + gemesseneTemperatur + " Grad C");

  // Gelesene Luftfeuchtigkeit mit 2 Nachkommastellen in einen String umwandeln
  String gemesseneLuftfeuchtigkeit = String(sht.getHumidity(), 2);
  gemesseneLuftfeuchtigkeit.replace(".", ",");
  Serial.println("Luftfeuchtigkeit: " + gemesseneLuftfeuchtigkeit + "%");

  Serial.println("------------------------");
  delay(2000);
}

Der SHT35

Der SHT35 gehört zur Serie der SHT3x-Sensoren. Für ihn nimmst du die Bibliothek Adafruit SHT31 – sie deckt die gesamte SHT3x-Serie ab, also auch den SHT35.

Die Verkabelung ist dieselbe wie bei den beiden anderen Sensoren.

Meldet der Sketch „Sensor SHT35 nicht gefunden“, obwohl alles richtig verkabelt ist, sitzt dein Modul wahrscheinlich auf der I2C-Adresse 0x45 statt 0x44. Schreibe dann sht31.begin(0x45) in die entsprechende Zeile.

Bibliotheksverwalter der Arduino IDE mit der Adafruit-SHT31-Bibliothek
Die Bibliothek „Adafruit SHT31“ deckt die gesamte SHT3x-Serie ab
Sketch fuer den SHT35
// Benoetigte Bibliothek einbinden
#include "Adafruit_SHT31.h"

// Name des Sensors (sht31)
Adafruit_SHT31 sht31 = Adafruit_SHT31();

void setup()
{
  Serial.begin(9600);
  delay(1000);

  // SHT35 starten, im Fehlerfall Meldung anzeigen.
  // Die Standardadresse ist 0x44. Manche Module sitzen auf 0x45,
  // dann lautet die Zeile: sht31.begin(0x45)
  Serial.println("SHT35 Test");
  if (!sht31.begin()) Serial.println("Sensor SHT35 nicht gefunden");
  else Serial.println("Sensor SHT35 gefunden!");
}

void loop()
{
  // Sensorwerte erfassen und Punkt durch Komma ersetzen
  String Temperatur = String(sht31.readTemperature());
  String Luftfeuchtigkeit = String(sht31.readHumidity());
  Temperatur.replace(".", ",");
  Luftfeuchtigkeit.replace(".", ",");

  Serial.println("Temperatur: " + Temperatur + " Grad C");
  Serial.println("Luftfeuchtigkeit: " + Luftfeuchtigkeit + "%");

  Serial.println("------------------------");
  delay(2000);
}
Valuta le istruzioni

Commenti

Fare una domanda o condividere un'esperienza

Scrivici se qualcosa non funziona. Indica la tua scheda e il messaggio di errore.

Controlliamo ogni commento prima della pubblicazione. Il tuo indirizzo e-mail rimane presso di noi.