Grove - Wassersensor
Autor: | Denim Hilz |
Studiengang: | Business and Systems Engineering |
Modul: | BSE-M-2-1.03, Hausarbeit in Angewandte Informatik gehalten von Prof. Dr.-Ing. Schneider |
Semester: | Sommersemester 2024 |
Abgabetermin: | 28.07.2024 |
Einführung
Aufgabenstellung
In diesem Artikel wird der Grove Water Sensor näher erläutert, die Implementierung in Matlab/Simulink aufgezeigt und die Kalibrierung und Filterung vorgestellt. Der Grove Water Sensor dient zur Erkennung von Wasser und zur Messung des Wasserstands. Einsatzbereiche sind unter anderem das Aufspüren von Wasserlecks, die Steuerung automatischer Bewässerungssysteme, die Überwachung des Wasserstands in Behältern, die Detektion von Flüssigkeiten in Maschinen sowie die Überwachung unerwünschten Wassers in Smart Home Systemen. [1]
Anforderungen | |||||||||||||||||||||||||||
|
- Thema/Fragestellung: Feststellen ob es zum gegenwärtigen Zeitpunkt Niederschlag gibt mittels des Grove Water Sensor.
- Hypothese: Niederschlag lässt sich über den Grove Water Sensor feststellen.
- Einordnung in den Lehrplan: Die im Modul Angewandte Informatik vermittelten Lernziele, werden im Rahmen dieses Praxisbeispiels angewendet. Folgende Lernziele gilt es dabei zu überprüfen.
- mit der Versionskontrolle SVN nachhaltig Quelltext entsprechend der Programmierrichtlinien schreiben, sichern, kollaboriert bearbeiten und Konflikte lösen.
- in einer mathematisch orientierten Systax (z. B. MATLAB®) mit Vektoren und Matrizen rechnen, Programmteile in Funktionen auslagern, Zweige und Scheifen programmieren, Daten importieren und visualisieren.
- die Mikrocontrollerplattform Arduino modellbasiert mit Simulink programmieren, so dass Sensoren eingelesen und Aktoren angesteuert werden können. [2]
Projektbeschreibung
In diesem Abschnitt werden die verwendeten Komponenten vorgestellt.
# | Anzahl | Material |
---|---|---|
1 | 1 | PC mit MATLAB/Simulink R2023b |
2 | 1 | Arduino Uno R3 |
3 | 1 | Grove Water Sensor |
4 | 1 | Streckbrett |
5 | 1 | Buzzer |
6 | 5 | LCD Display |
6 | 1 | Jumper Kabel, männlich/männlich, 20 cm |
Beschreibung der verwendeten Hard- und Software
Simulink R2023b
Simulink ist eine grafische Entwicklungsumgebung, die zur MATLAB-Software von MathWorks gehört. Sie dient vor allem der Modellierung, Simulation und Analyse dynamischer Systeme. In diesem Praxisbeispiel dient Simulink der Verarbeitung der Sensordaten. [3]
Arduino Uno R3
Der Arduino Uno R3 ist ein beliebtes Mikrocontroller-Board für Elektronikprojekte, basierend auf dem ATmega328P mit 32 KB Flash-Speicher. Es bietet 14 digitale Ein-/Ausgänge, von denen 6 PWM-fähig sind und 6 analoge Eingänge. Der Uno wird über USB oder eine externe Quelle betrieben und lässt sich einfach über die Arduino IDE in C/C++ oder über Matlab/Simulink programmieren.[4]
Grove Water Sensor
Der Grove Water Sensor wird eingesetzt, um Wasserpräsenz und -stand zu erfassen. Er findet in verschiedenen Bereichen Anwendung:
- Wasserleckerkennung: In Haushalten, Büros und industriellen Umgebungen hilft der Sensor, Wasserlecks aufzuspüren und dadurch Schäden durch undichte Stellen zu verhindern.
- Automatisierte Bewässerungssysteme: In der Landwirtschaft und Gartenpflege misst der Sensor den Bodenfeuchtigkeitsgehalt und steuert automatische Bewässerungssysteme.
- Füllstandsmessung: Der Sensor überwacht den Wasserstand in Behältern, Tanks oder Reservoirs und verhindert Überlauf oder Trockenlauf.
- Flüssigkeitserkennung in Maschinen: In industriellen Anwendungen überwacht der Sensor den Flüssigkeitsstand in Maschinen oder Systemen, um einen sicheren Betrieb zu gewährleisten.
- Smart Home Anwendungen: In Smart Home Systemen sendet der Sensor Alarme oder Benachrichtigungen, wenn unerwünschtes Wasser erkannt wird, beispielsweise im Keller oder in der Küche. [5]
Steckbrett
Ein Steckbrett ermöglicht die Verbindung elektrischer Bauelemente ohne Löten. Es ist in horizontale und vertikale Reihen unterteilt, in denen die Bauteile miteinander verbunden sind. Im Gegensatz zu Leiterplatten werden die Komponenten bei Steckbrett nicht gelötet, sondern in Federkontakte gesteckt. Dadurch kann die Schaltung einfach durch Umstecken angepasst werden. [6]
LCD Display
Das I2C 1602 LCD Modul hat ein zweizeiliges Display, das jeweils 16 Zeichen pro Zeile anzeigen kann, und ist mit einem I2C Modul HW-061 auf der Rückseite ausgestattet. Es benötigt eine Taktverbindung (SCL), eine Datenverbindung (SDA) sowie +5VDC und GND. Das Display kann über den I2C-Bus mit lediglich vier Anschlusskabeln betrieben werden. [7]
Piezo-Lautsprecher Ein Piezo-Lautsprecher ist ein elektronisches Bauteil, das Schallwellen erzeugt, indem es die piezoelektrischen Effekte nutzt. Dabei wird an ein piezoelektrisches Material, ein Spannung angelegt. Dadurch dehnt sich das Material aus und zieht sich zusammen. Diese Verformung erzeugt Schallwellen, welche als Geräusche oder Töne wahrgenommen werden.
Funktionsweise des Grove Water Sensor
Der Grove-Wassersensor gehört zu dem Grove-System und misst die Leitfähigkeit, um den Feuchtigkeitszustand des Sensors anzuzeigen, also ob der Sensor trocken, feucht oder vollständig in Wasser eingetaucht ist. Der Sensor hat mehrere parallele Leiterbahnen, die auf einem PCB (Printed Circuit Board) aufgebracht sind. Die Sensorkontakte verfügen über einen 1 MΩ Widerstand, der den Sensorwert hochhält. Fällt ein Wassertropfen auf Leiterbahnen, dann werden in dem betroffenen Bereich die Leiterbahnen durch das Wasser überbrückt und der Stromkreis zwischen dem Sensorsignal und GND geschlossen. Umso mehr Leiterbahnen vom Wasser bedeckt sind, umso mehr sinkt der Widerstand. Damit kann dann bestimmt werden ob der Sensor trocken, feucht oder vollständig in Wasser eingetaucht ist. Der Sensor kann dabei sowohl mit den digitalen I/O-Pins, wie auch den analogen Pins des Arduino genutzt werden. [9]
Technische Daten
Messbereich | 0 V - 5 V |
Versorgungsspannung | 5 V |
Versorgungsstrom | 20 mA |
Arbeitstemperatur | 10 °C - +30 °C |
Abmessungen | 20 mm x 20 mm x 10 mm |
Pinbelegung
Pin | Belegung | Signal |
---|---|---|
1 | Masse (GND) | 0 V |
2 | Versorgungsspannung VCC | 5 V |
3 | Not Connected (NC) | - |
4 | Analog Output (SIG) | 0 V - 5 V |
Versuchsaufbau und Durchführung
Versuchsaufbau
Der Versuchsaufbau wird durch einen Schaltplan (Abbildung. 2), Anschlussplan (Abbildung. 3) und Foto des Aufbaus (Abbildung. 4) dokumentiert.
Sensor
Der Sensor wird mit dem Arduino über drei Kabel verbunden. Der VCC Anschluss des Sensors wird mit den 5V Versorgungsspannung des Arduinos und GND des Sensors mit GND des Arduinos verbunden. Der Kontakt SIG wird an den analogen Port (A0) angeschlossen.
Buzzer
Der negative Ausgang des Buzzers wird an GND angeschlossen. Der positive Ausgang wird mit dem digitalen Pin (A8) das Arduino verbunden.
LED
Zur visuellen Anzeige ob Niederschlag gemessen wird, sind zwei LEDs angeschlossen. Die grüne LED leuchtet solange kein Niederschlag gemessen wird und ist über GND und den den digitalen Port A9 angeschlossen. Die rote LED leuchtet sobald es regnet und ist über GND und den digitalen Port A10 angeschlossen.
Versuchsdurchführung
Simulink Modell
Das in Matlab/Simulink erstellte Modell zur Verarbeitung der vom Sensor gelieferten Daten ist in Abbildung ?? zusehen. Die Sensorwerte werden über den analogen Eingang A0 eingelesen und von dem Digitalwert in eine Spannung umgerechnet. Die Spannung wird dann über einen rekursiven gleitenden Mittelwertfilter gefiltert. Aus dem gefilterten Signal wird der Mittelwert der letzten 10 Werte berechnet. Der Mittelwert wird dann an den digitalen Output A8 gegeben. Über den digitalen Output A9 wird eine 1 gegeben wenn der gefilterte Wert größter gleich 1V liegt und eine 0 wenn der Wert kleiner als 1V ist. Über den digitalen Output A10 wird eine 0 gegeben wenn der gefilterte Wert größter gleich 1V liegt und eine 1 wenn der Wert kleiner als 1V ist.
Modelleinstellungen:
- Hardware Board: Arduino Uno
- Type: Fixed-step
- Solver: ode1 (Euler)
- Abtastrate: 0,001 s
Filterung der Messdaten
Abbildung ?? zeigt das ungefilterte Signal in Rot des Sensors im trockenen Zustand. Die Sensorkennlinie zeigt dabei deutlich Messausreißer auf, welche gefiltert werden müssen.
Für die Filterung wurde eine rekursiver gleitender Mittelwertfilter eingesetzt. Der Filter wurde in der Lehrveranstaltung "Signalverarbeitende Systeme" behandelt.
Bei der Auslegung eines rekursiven gleitenden Mittelwertfilters muss die Fensterbreite, also die Anzahl der in die Berechnung einbezogenen Datenpunkte, festgelegt werden. Eine größere Fensterbreite verbessert die Filterung des Rauschens, was zu einer glatteren Kurve führt. Allerdings nimmt mit einer größeren Fensterbreite auch die zeitliche Verzögerung des gefilterten Signals zu, weil mehr vergangene Datenpunkte berücksichtigt werden müssen.
Es ist somit wichtig, einen Kompromiss zwischen der Qualität der Filterung und der zeitlichen Verzögerung des gefilterten Signals im Vergleich zum Originalsignal zu finden.
Die Fensterbreite für diesen Sensor wurde auf 80 festgelegt. Somit erhält man ein geglättetes Signal, mit einer geringen zeitlichen Verzögerung. Da der Sensor nicht in harten Echtzeitsystemen zum Einsatz kommt, ist eine geringe zeitliche Verzögerung hinnehmbar. Das gefilterte Signal des Sensors in Blau im trockenen Zustand ist in Abbildung ?? zu sehen.
Mabtlab Code des rekursiven gleitenden Mittelwertfilters:
function RGM = RekGleitenderMittelwert(x) persistent n aSchieberegister persistent bErsterDurchlauf if isempty (bErsterDurchlauf) n = 80; aSchieberegister = x * ones (n,1); bErsterDurchlauf = 1; end for m=1:n-1 aSchieberegister (m) = aSchieberegister(m+1); end aSchieberegister (n) = x; RGM = x; RGM = sum(aSchieberegister) / n; end
Mess- und Vertrauensbereich
Um den Messbereich des Sensors festlegen zu können wurden zwei Tests durchgeführt: Zuerst wurde der Sensor an einen Arduino angeschlossen und die Daten im trockenen Zustand gemessen. Danach wurde der Sensor vollständig mit Wasser bedeckt, um die Messwerte im nassen Zustand zu erfassen. Diese Tests ermöglichten es, die Extremwerte bei keinem Niederschlag und bei heftigen Niederschlag zu bestimmen.
Kalibrierung des Sensors
Hier könnte ihre Werbung stehen.
Versuchsbeobachtung
Der Sensor soll den Niederschlag zuverlässig messen und feststellen ob es regnet. Dazu wurde der Sensor in eine Halterung geschraubt, die es ermöglicht von oben Wasser darauf tropfen zu lassen. Die Halterung (Abbildung ??) wurde dabei in Autodesk Fusion360 selbst modellierte und über einen 3D-Drucker ausgedruckt.
Auswertung
Regenerkennung
Zusammenfassung und Ausblick
Zusammenfassung
Diskussion der Ergebnisse
Ausblick
Selbstreflexion/Lessons learned
Ergebnisvideo
Video der Versuchsdurchführung
Anleitung: Videos im Wiki einbinden
Lernzielkrontrolle
Beantworten Sie in Ihrem Artikel die Lernzielkontrollfragen.
Lernzielkontrollfragen |
|
Literatur
Zitieren Sie nach DIN ISO 690:2013-10.
Anhang
- Datenblätter
- Simulink-Modell
- Originaldateien (PAP, Schaltplan,... )
→ zurück zum Hauptartikel: BSE Angewandte Informatik SoSe24 | Hausarbeit SoSe24
- ↑ https://cdn-reichelt.de/documents/datenblatt/A300/101020018_01.pdf, abgerufen am 14.07.2024
- ↑ https://wiki.hshl.de/wiki/index.php/BSE_Angewandte_Informatik_-_SoSe24, abgerufen am 14.07.2024
- ↑ https://de.mathworks.com/products/simulink.html, abgerufen am 14.07.2024
- ↑ https://docs.arduino.cc/hardware/uno-rev3/, abgerufen am 14.07.2024
- ↑ https://cdn-reichelt.de/documents/datenblatt/A300/101020018_01.pdf, abgerufen am 14.07.2024
- ↑ https://wiki.hshl.de/wiki/index.php/Steckbrett, abgerufen am 14.07.2024
- ↑ https://wiki.hshl.de/wiki/index.php/LCD_Modul_16x02_I2C, abgerufen am 14.07.2024
- ↑ https://wiki.seeedstudio.com/Grove-Water_Sensor/
- ↑ https://www.mouser.com/datasheet/2/744/Seeed_101020018-1217524.pdf, abgerufen am 21.07.2024
- ↑ https://cdn-reichelt.de/documents/datenblatt/A300/101020018_01.pdf, abgerufen am 14.07.2024
- ↑ https://cdn-reichelt.de/documents/datenblatt/A300/101020018_01.pdf, abgerufen am 14.07.2024