Optische Füllstandsmessung

Um den Füllstand von Wasser (oder anderen Flüssigkeiten) in einem Behältnis zu messen, gibt es verschiedene Verfahren. Hier wird die Möglichkeit der rein optischen Messung verwendet, welche den Vorteil hat keinerlei bewegliche Teile und somit eine minimale Angriffsfläche für das Wasser zu bieten.
Dieser Sensor lässt sich auch gut als Ergänzung für das Automatisches Bewässerungssystem mit dem ESP32 verwenden.

Optischer Füllstandssensor FS-IR02

Verwendete Bauteile

Funktionsweise

Optische bzw. optoelektronische Füllstandssensoren bestehen aus einer Lichtquelle (meist IR-LED) und einem Empfänger (z.B. Fototransistor). In Luft/Gas wird das ausgestrahlte Licht der LED durch die Eigenschaften des Prismas an der Spitze des Sensors fast vollständig zurückreflektiert. Umschließt Wasser (oder eine andere Flüssigkeit) die Spitze, so wird das Licht gebrochen und in das flüssige Medium abgelenkt. Somit trifft es nicht mehr (oder nur zu einem geringen Teil) auf den Empfänger und das Signal verändert sich (fällt meist ab).
Um ein möglichst korrektes Messergebnis zu erzielen, sollte direkt einstrahlendes (Sonnen)licht vermieden werden.

Messung mit optischem Füllstandsensor
Abb.: Funktionsprinzip des optischen Füllstandsensors.

Der hier verwendete Füllstandssensor kann auf verschiedene Arten im Behälter installiert werden:

Abb.: Arten der Anbringung des Füllstandssensors

Aufbau und Anschlüsse

Der hier verwendete Füllstandssensor besitzt vier verschiedenfarbige Anschlüsse, die dem folgenden Schaltplan des Sensors entsprechen:

Anschlüsse des optischen Füllstandssensors
Abb.: Anschlüsse des optischen Füllstandssensors

In meinem folgenden Aufbau mit dem Arduino Uno habe ich als Vorwiderstand 470Ω statt die im Bild angegebenen 390Ω für R1 verwendet und als Pulldown-Widerstand für R2 stattdessen einen 10kΩ-Widerstand. Als Indikatorleuchte habe ich eine Dual-LED (grün/rot) mit gemeinsamer Anode benutzt, es können aber auch alternativ eine RGB-LED oder zwei separate LEDs verwendet werden. (Hier kann sich evtl. das Verhalten für digitalWrite() ändern, denn die gemeinsame Anode wird über (+) gespeist und benötigt ein LOW-Signal, damit die LED leuchten kann.

Schaltplan mit Arduino und optischem Füllstandssensor

Der 4fach JST-Stecker, der an dem Kabel des Sensors angebracht ist, kann entweder mit den normalen Steckkabeln auf dem Breadboard verdrahtet werden oder man verwendet ein Stück einer Stiftleiste (2,54mm), die perfekt in den Stecker passt:

Stiftleiste als Anschluss für Breadboard
Abb.: Eine Stiftleiste passt perfekt als Adapter zwischen den JST-Stecker und das Breadboard.

Programmierung

Der folgende Sketch misst einmal pro Sekunde den Wasserstand und lässt die rote LED leuchten, sobald der Sensor sich außerhalb des Wassers befindet. Ansonsten leuchtet die LED grün. Zusätzlich wird der gemessene Werte auf der seriellen Konsole ausgegeben.

#define PIN_SENSOR    A0
#define PIN_LED_RED   7
#define PIN_LED_GREEN 8

void setup()
{
    Serial.begin(9600);
    pinMode(PIN_LED_RED, OUTPUT);
    pinMode(PIN_LED_GREEN, OUTPUT);
}

void loop()
{
    static unsigned int sensorValue = 0;
    sensorValue = analogRead(PIN_SENSOR);

    Serial.println(sensorValue);

    digitalWrite(PIN_LED_GREEN, HIGH);
    digitalWrite(PIN_LED_RED, HIGH);

    if (sensorValue < 50) {
        digitalWrite(PIN_LED_RED, LOW);
    } else {
        digitalWrite(PIN_LED_GREEN, LOW);
    }

    delay(1000);
}
Ausgabe auf der seriellen Konsole
Abb.: Die gemessenen Werte werden auf der seriellen Konsole der Arduino-IDE ausgegeben.
Video: Live-Demonstration
zurück