Suche

Feuchtigkeitssensor

Inhaltsverzeichnis

Für dieses Projekt benötigst du

Einen Feuchtigkeitssensor mit einem Mikrocontroller ansteuern

Mit dem diesem Sensor kannst du spielend leicht den anliegenden Feuchtigkeitswert, etwa die Haut- oder Bodenfeuchtigkeit, ermitteln.  Der Sensor ist ebenfalls dafür geeignet, den Wasserstand im Bereich des Sensors zu messen.

An den beiden Kontakten des Sensors liegt eine Spannung an. Je höher die Feuchtigkeit zwischen den beiden Kontakten ist, desto besser kann der Strom von einem Kontakt zum anderen fließen. Dieser Wert wird im Sensor elektronisch aufbereitet und in der Form eines analogen Signals an den Mikrocontroller übermittelt. So lassen sich Zahlenwerte von 0 bis ca 800 erfassen und entsprechend einordnen.  Diese Kalibrierung skaliert jedoch mit der elektrischen Leitfähigkeit der zu messenden Flüssigkeit.

Im ersten Schritt dieser Anleitung möchten wir den Feuchtigkeitssensor in Betrieb nehmen. Anschließend soll der erfasste Feuchtigkeitswert im seriellen Monitor ausgegeben werden.

Schaltpläne

Der Programmcode

Arduino UNO, Wemos D1 Mini und NodeMCU

// Variable für die Speicherung des des Messwertes
int Messwert = 0;

void setup()
{
  // Seriellen Monitor starten
  Serial.begin(9600);
}

void loop() 
{
  // Messwert am analogen Anschluss A0 lesen
  Messwert = analogRead(A0);

  // Messwert im Seriellen Monitor anzeigen
  Serial.print("Feuchtigkeits-Messwert:");
  Serial.println(Messwert);

  // Pause 500 Millisekunden
  delay(500);
}

ESP32-Wroom

Das analoge Signal wird durch den ADC-Wandler (Analog Digital Converter) in Ganzzahlen umgewandelt. Der ESP32-Wroom kennt verschiedene Auflösungen: Sie kann zwischen 9-Bit (0 – 511), 10 Bit (0 – 1023), 11 Bit (0 – 2047) und 12 Bit (0 – 4095) Die Standardeinstellung ist 12 Bit. Die Anweisung analogReadResolution() beeinflusst den ADC-Wandler. Um die Werte mit den anderen Mikrocontrollern vergleichen zu können muss die 10 Bit Auflösung eingestellt werden.

// Variable für die Speicherung des Messwertes
int Messwert = 0;

void setup()
{
  // Seriellen Monitor starten
  Serial.begin(9600);

  // ADC-Wandler ESP32 10-Bit (0-1023)
  analogReadResolution(10);
}

void loop() 
{
  // Messwert am analogen Anschluss 33 lesen
  Messwert = analogRead(33);

  // Messwert im Seriellen Monitor anzeigen
  Serial.print("Feuchtigkeits-Messwert:");
  Serial.println(messwert);

  // Pause 500 Millisekunden
  delay(500);
}

Erweiterung des Programmcodes

Im zweiten Schritt dieser Anleitung möchten wir eine Abhängigkeit zwischen dem Feuchtigkeitssensor und einem Piezo-Lautsprecher schaffen. Der Laut des Passiv-Buzzers soll immer dann ertönen, sobald die gemessene Feuchtigkeit einen von uns gegebenen Grenzwert unterschreitet.

Beispiel Arduino UNO R3

Schaltpläne

Der Programmcode

Am analogen Anschluss wird die anliegende Spannung gemessen und in einen digitalen Wert umgewandelt. Im loop-Teil wird der Messwert mit einer if-Abfrage ausgewertet. Ist der Wert größer als 200 gibt der Lautsprecher einen Ton aus, ist er kleiner oder gleich 200 bleibt der Lautsprecher stumm. Der Wert von 200 kann an den jeweiligen Zweck des Programms angepasst werden.

Arduino UNO

// Variable für die Speicherung des Messwertes
int Messwert = 0;

void setup()
{
  // Seriellen Monitor starten
  Serial.begin(9600);

  // Lautsprecher an Pin 7
  pinMode(7, OUTPUT);
}

void loop() 
{
  // Messwert am analogen Anschluss A0 lesen
  Messwert = analogRead(A0);

  // Messwert im Seriellen Monitor anzeigen
  Serial.print("Feuchtigkeits-Messwert:");
  Serial.println(Messwert);

  // wenn der Messwert > 200 -> Lautsprecher an
  if (Messwert > 200) digitalWrite(7, HIGH);

  // wenn der Messwert <= 200 -> Lautsprecher ausschalten
  else digitalWrite(7, LOW);

  // Pause 500 Millisekunden
  delay(500);
}

Wemos D1 Mini

// Variable für die Speicherung des Messwertes
int Messwert = 0;

void setup()
{
  // Seriellen Monitor starten
  Serial.begin(9600);

  // Lautsprecher an Pin D1
  pinMode(D1, OUTPUT);
}

void loop() 
{
  // Messwert am analogen Anschluss A0 lesen
  Messwert = analogRead(A0);

  // Messwert im Seriellen Monitor anzeigen
  Serial.print("Feuchtigkeits-Messwert:");
  Serial.println(Messwert);

  // wenn der Messwert > 200 -> Lautsprecher an
  if (Messwert > 200) digitalWrite(D1, HIGH);

  // wenn der Messwert <= 200 -> Lautsprecher ausschalten
  else digitalWrite(D1, LOW);

  // Pause 500 Millisekunden
  delay(500);
}

ESP32-Wroom

// Variable für die Speicherung des Messwertes
int Messwert = 0;

void setup()
{
  // Seriellen Monitor starten
  Serial.begin(9600);

  // ADC-Wandler ESP32 10-Bit (0-1023)
  analogReadResolution(10);

  // Lautsprecher an Pin 19
  pinMode(19, OUTPUT);
}

void loop() 
{
  // Messwert am analogen Anschluss 33 lesen
  Messwert = analogRead(33);

  // Messwert im Seriellen Monitor anzeigen
  Serial.print("Feuchtigkeits-Messwert:");
  Serial.println(Messwert);

  // wenn der Messwert > 200 -> Lautsprecher an
  if (Messwert > 200) digitalWrite(19, HIGH);

  // wenn der Messwert <= 200 -> Lautsprecher ausschalten
  else digitalWrite(19, LOW);

  // Pause 500 Millisekunden
  delay(500);
}

NodeMCU

// Variable für die Speicherung des Messwertes
int Messwert = 0;

void setup()
{
  // Seriellen Monitor starten
  Serial.begin(9600);

  // Lautsprecher an Pin D1
  pinMode(D1, OUTPUT);
}

void loop() 
{
  // Messwert am analogen Anschluss A0 lesen
  Messwert = analogRead(A0);

  // Messwert im Seriellen Monitor anzeigen
  Serial.print("Feuchtigkeits-Messwert:");
  Serial.println(Messwert);

  // wenn der Messwert > 200 -> Lautsprecher an
  if (Messwert > 200) digitalWrite(D1, HIGH);

  // wenn der Messwert <= 200 -> Lautsprecher ausschalten
  else digitalWrite(D1, LOW);

  // Pause 500 Millisekunden
  delay(500);
}

Funduino - Dein Onlineshop für Mikroelektronik

  • Dauerhaft bis zu 10% Rabatt für Schüler, Studenten und Lehrkräfte
  • Mehr als 3.500 Artikel sofort verfügbar!
  • Über 8 Jahre Erfahrung mit Arduino, 3D-Druck und co.
SALE