Slim Vloeistofniveau Sensor & Controller met Arduino & Ultrasonische HC-SR04
Onderdelen en Benodigdheden
| Onderdeel | Aantal |
|---|---|
| Arduino UNO | 1 |
| Ultrasonische Sensor HC-SR04 (Generiek) | 1 |
Apps en online diensten
- Arduino IDE
Over dit project
Het onderstaande diagram toont de ultrasoonsensor en Arduino. Het model was voor presentatiedoeleinden.
Inleiding
Niveaumeters worden in alle industriële sectoren gebruikt. We kunnen hetzelfde toepassen voor kleinschalige of domestieke doeleinden. We hebben een vloeistofniveausensor gebouwd die continue data levert over de bezetting van de tank. Het systeem is een terugkoppelingssysteem: het meet niet alleen het niveau maar stuurt het ook via een pomp.
Constructie
De Arduino is de microcontroller. De HC-SR04 ultrasoonsensor is bovenop de tank gemonteerd. Voor het model werden twee ondergedompelde pompen gebruikt (enkelrichtings). Een tweerichtingspomp zou efficiënter zijn. De pompen krijgen signalen van de Arduino en vereisen 12V, dus een motordriver is nodig (niet in blokdiagram getoond).
Werking
We verdelen het model in twee secties:
- Meetysteem
- Regelsysteem
Meting
De HC-SR04 heeft een zender (40 kHz) en ontvanger. De ultrasoengolf reflecteert op het vloeistofniveau. De sensor heeft 4 pinnen: GND, VCC (3.3V/5V), Trig (trigger), Echo (ontvangst). De tijd tussen trigger en echo geeft de afstand:
duration = pulseIn(echoPin, HIGH);
distance = duration * 0.034 / 2; // in cm
Regelsysteem
De Arduino ontvangt sensordata en stuurt de pompen. In de code stel je de gewenste drempels in:
- Niveau > drempel (bijv. 10 cm): tankpomp aan, reservoirpomp uit → vloeistof afvoeren
- Niveau < drempel (bijv. 6 cm): reservoirpomp aan, tankpomp uit → vloeistof bijvullen
Alleen de tank en één pomp worden in de basisversie gebruikt.
Toekomstige verbeteringen
- Tweerichtingspomp buiten de tank (alleen 1 pomp nodig)
- Resultaat tonen op OLED/LCD scherm
- Data opslaan in cloud via IoT
- Niveau controleren en bekijken via app (Industrie 4.0)
- Veiligheidsbuzzer bij overflow, softwarematige overflow-preventie
Code
Water niveau controller (Arduino)
int tankPump = 3;
int reserviorPump = 2;
int trigPin = 9; // wit
int echoPin = 10; // bruin
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);
}
}
Schema's
Productieproces
- Een externe temperatuursensor bouwen met Raspberry Pi en Python – Stap-voor-stap handleiding
- Een Multi-sensor Temperatuur- & Lichtmonitoringssysteem Bouwen met Raspberry Pi & DS18B20
- Raspberry Pi-sensor- en actuatorbeheersing onder de knie: versnellingsmeter, servo en datastreaming
- Een geautomatiseerd aeroponisch systeem bouwen met Raspberry Pi en vochtigheidssensor
- Je vochtigheidssensor verifiëren en kalibreren voor nauwkeurige metingen
- Nauwkeurige Temperatuur- & Vochtigheidsmonitoring met SHT15 op Windows 10 IoT Core
- Versnellingsbakolie Uitgelegd: Doel, Belang En Onderhoudsgids
- Bloeddruksensor: Hoe Het Werkt & Belangrijkste Toepassingen
- Spanningssensoren: Hoe Ze Werken & Belangrijkste Toepassingen in Moderne Energiesystemen
- Arduino Sensoren: Typen, Toepassingen en Real-World Projecten
- Vingerafdruksensor Technologie: Werkprincipes, Toepassingen en Arduino Integratie