Intelligenter Füllstandssensor & Controller mit Arduino & Ultraschall HC-SR04
Komponenten und Materialien
| Arduino UNO | × | 1 |
| Ultraschallsensor HC-SR04 (Generisch) | × | 1 |
Apps und Online-Dienste
- Arduino IDE
Über dieses Projekt
Das untenstehende Diagramm zeigt den Ultraschallsensor und den Arduino. Das Modell diente nur Präsentationszwecken.
Einführung
Füllstandsanzeigen werden in fast allen Industriebereichen eingesetzt. Das gleiche Prinzip lässt sich auch für kleine oder private Anwendungen umsetzen. Wir haben einen Flüssigkeits-Füllstandssensor gebaut, der kontinuierlich Daten liefert: Er zeigt an, wie viel Flüssigkeit sich im Tank befindet. Das System ist ein Rückführsystem, das nicht nur den Füllstand anzeigt, sondern ihn über eine Pumpe auch regelt.
Aufbau
Das obige Bild zeigt ein vereinfachtes Blockdiagramm. Der Arduino ist der Mikrocontroller. Der Ultraschallsensor HC-SR04 ist mit dem Arduino verbunden und oben am Tank montiert. Für das Modell wurden zwei Tauchpumpen verwendet, die nur in eine Richtung fördern (unidirektional). Alternativ könnte eine bidirektionale Pumpe eingesetzt werden. Beide Pumpen erhalten Steuersignale vom Arduino. Da sie 12 V benötigen, ist ein Motortreiber erforderlich (im Blockdiagramm nicht dargestellt).
Funktionsweise
Zur besseren Verständlichkeit teilen wir das System in zwei Bereiche:
- Messsystem (Sensing)
- Regelsystem (Control)
Messsystem
Der HC-SR04 arbeitet mit 40 kHz Ultraschall. Er besitzt einen Sender und einen Empfänger. Der Sender sendet einen 40-kHz-Schallimpuls, der von der Flüssigkeitsoberfläche reflektiert wird und vom Empfänger detektiert wird. Der Sensor hat 4 Pins: GND an Arduino GND, VCC an 3,3 V oder 5 V. Der Trigger-Pin löst den Sendeimpuls aus, der Echo-Pin empfängt das reflektierte Signal. Aus der Laufzeit wird die Distanz berechnet:
duration = pulseIn(echoPin, HIGH); // Laufzeit in µs
distance = duration * 0.034 / 2; // Distanz in cm
Regelsystem
Der Arduino empfängt die Distanzdaten und steuert die Pumpen entsprechend. Der gewünschte Füllstand (Schwellenwert) wird im Code festgelegt. Wird der Schwellenwert überschritten, aktiviert der Arduino die Pumpe im Tank, um Flüssigkeit abzulassen, bis der Wert wieder unter dem Schwellenwert liegt. Fällt der Pegel unter den Schwellenwert, startet die Pumpe im Vorratsbehälter und füllt Flüssigkeit nach. Im Modell werden Tank und nur eine Pumpe verwendet.
Zukünftige Verbesserungen
- Bidirektionale Pumpe außerhalb des Tanks – nur eine Pumpe nötig.
- Anzeige auf OLED oder LCD.
- Datenlogging in der Cloud per IoT.
- Fernüberwachung und -steuerung per App (Industrial IoT).
- Sicherheits-Summer bei Überlauf; Code-Erweiterung zur Überlaufverhinderung.
Code
Wasserstands-Controller (Arduino)
int tankPump = 3;
int reserviorPump = 2;
int trigPin = 9; // weiß
int echoPin = 10; // braun
long duration;
int distance;
void setup() {
Serial.begin(9600);
pinMode(tankPump, OUTPUT);
pinMode(reserviorPump, OUTPUT);
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
}
void loop() {
ultrasound();
pump();
}
void ultrasound() {
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
duration = pulseIn(echoPin, HIGH);
distance = duration * 0.034 / 2;
Serial.print("Distance:");
Serial.println(distance);
delay(1000);
}
void pump() {
if (distance > 10) {
digitalWrite(tankPump, HIGH);
digitalWrite(reserviorPump, LOW);
} else {
digitalWrite(tankPump, LOW);
}
if (distance < 6) {
digitalWrite(reserviorPump, HIGH);
digitalWrite(tankPump, LOW);
} else {
digitalWrite(reserviorPump, LOW);
}
}
Schaltpläne
Herstellungsprozess
- Blutdrucksensor: Funktionsweise und Hauptanwendungen
- Spannungssensoren: Funktionsweise und Schlüsselanwendungen in modernen Energiesystemen
- Arduino-Sensoren: Typen, Anwendungen und reale Projekte
- Getriebeöl erklärt: Zweck, Wichtigkeit und Wartungsleitfaden
- Fern-Temperatursensor mit Raspberry Pi & Python bauen – Schritt-für-Schritt-Anleitung
- Multi-Sensor Temperatur- & Licht-Überwachung mit Raspberry Pi & DS18B20
- Raspberry Pi Sensor & Aktuator Steuerung meistern: Beschleunigungsmesser, Servo und Datenstreaming
- Automatisiertes Aeroponik-System mit Raspberry Pi und Feuchtigkeitssensor bauen
- Feuchtigkeitssensor verifizieren und kalibrieren für präzise Messungen
- Präzise Temperatur- & Feuchtigkeitsüberwachung mit SHT15 unter Windows 10 IoT Core