Projekt 65: Wasserstandsmessgerät-Aufsatz für Arduino: Unterschied zwischen den Versionen
(27 dazwischenliegende Versionen von 2 Benutzern werden nicht angezeigt) | |||
Zeile 1: | Zeile 1: | ||
[[Kategorie:Projekte]] | [[Kategorie:Projekte]] | ||
Autoren: Lukas Brexler | '''Autoren:''' [[Benutzer:Lukas Brexler| Lukas Brexler]] | [[Benutzer:Thorsten Drees| Thorsten Drees]] <br/> | ||
Betreuer: [[Benutzer:Mirek_Goebel| Prof. Göbel]]<br/> | Betreuer: [[Benutzer:Mirek_Goebel| Prof. Göbel]]<br/> | ||
→ zurück zum Hauptartikel: [[Angewandte Elektrotechnik (WS 16/17)|Angewandte Elektrotechnik (WS 16/17)]] | → zurück zum Hauptartikel: [[Angewandte Elektrotechnik (WS 16/17)|Angewandte Elektrotechnik (WS 16/17)]] | ||
Zeile 57: | Zeile 57: | ||
Um die Übersicht über das Projekt zu behalten, wurde zu Begin ein Projektplan erstellt. Die folgende Abbildung 1 zeigt einen Screenshot dieses Projektplans. Alle notwendigen Dokumente zu diesem Projekt sind im SVN [https://svn.hshl.de/svn/Elektrotechnik_Fachpraktikum/trunk/Projekte/65_Wasserstandsmessgeraet_Arduino/] abgelegt. | Um die Übersicht über das Projekt zu behalten, wurde zu Begin ein Projektplan erstellt. Die folgende Abbildung 1 zeigt einen Screenshot dieses Projektplans. Alle notwendigen Dokumente zu diesem Projekt sind im SVN [https://svn.hshl.de/svn/Elektrotechnik_Fachpraktikum/trunk/Projekte/65_Wasserstandsmessgeraet_Arduino/] abgelegt. | ||
[[Datei:Projektplan Wasserstandsmesser.jpg|gerahmt|zentriert|x120px| Abbildung 1: Projektplan]] | [[Datei:Projektplan Wasserstandsmesser.jpg|gerahmt|zentriert|x120px| Abbildung 1: Projektplan]] | ||
===Recherche nach bestehenden Lösungen=== | |||
Gemäß der Aufgabenstellung ist zunächst eine Recherche nach den bestehenden Lösungen durchgeführt worden. Dabei wurde mittels Internet nach ähnlichen Realisierungen gesucht. Zur Inspiration wird hier auf einige Quellen verwiesen. | |||
*Arduino Forum [https://forum.arduino.cc/index.php?topic=52088.0] | |||
*Smarte Welt, Webblog [http://blog.smartewelt.de/?p=2414] | |||
*Turaus.de [https://www.turais.de/arduino-zisternen-pegelstandsmessung/] | |||
Mit einem morphologischer Kasten können kreativ viele unterschiedliche Lösungswege aufgezeigt werden. Für das Projekt "Wasserstandsmessgerät-Aufsatz für Arduino" ist ein solcher Kasten im Rahmen der Recherche erstellt worden: | |||
{| border="1" | |||
|'''Messmethode''' | |||
|Distanzermittlung | |||
|Vergleich mit Wasserstandsskala durch Schwimmer | |||
|Wiegen der Wassersäule | |||
|Vergleich mit 1l Wasserflasche durch Umfüllen | |||
|- | |||
|'''Sensor''' | |||
|Ultraschall | |||
|Wasserflasche mit 1l Volumen | |||
|Drucksensor | |||
|Massensensor (Waage) | |||
|- | |||
|'''Messbereich''' | |||
|<5cm | |||
|<100cm | |||
|<200cm | |||
|<400cm | |||
|- | |||
|} | |||
Die Messmethode ist die Methode, mit der die Höhe der Wassersäule ermittelt werden kann. Der Sensor liefert den Messwert, je nach Messmethode. Der Messbereich des Sensors ist für die Höhe der zu messenden Wassersäule zu berücksichtigen. | |||
Mögliche Lösungskombinationen sind: | |||
* Distanzermittlung+ Ultraschall+ 400cm, da der Ultraschallsensor einen Messbereich von bis zu 400cm hat. | |||
* Vergleich mit Wasserstandsskala durch Schwimmer+ Drucksensor | |||
* Wiegen der Wassersäule+Massensensor (Waage) | |||
Eine Lösung mit einem Flachbandkabel, siehe auch [http://www.mikrocontroller.net/topic/73496], kam dabei nicht in Frage. Der Wasserstand könnte hierbei nur sehr eingeschränkt gemessen werden. | |||
Schlussendlich wurde aus Gründen der Praktikabilität, der Einfachheit und der Robustheit der Ultraschall als Messmethode festgelegt. | |||
==Systemaufbau== | ==Systemaufbau== | ||
Zeile 92: | Zeile 131: | ||
===Software=== | ===Software=== | ||
Die Arduino Programmierung basiert auf einer s.g. integrierten Entwicklungsumgebung. Diese Java Anwendung ist für Linux, Mac und Windows kostenlos verfügbar. Aufgrund einer GPL-Lizenz fallen keine Lizenzgebühren an. Die eigentliche Programmierung erfolgt in C bzw. C++. | Die Arduino Programmierung basiert auf einer s.g. integrierten Entwicklungsumgebung. Diese Java Anwendung ist für Linux, Mac und Windows kostenlos verfügbar. Aufgrund einer GPL-Lizenz fallen keine Lizenzgebühren an. Die eigentliche Programmierung erfolgt in C bzw. C++. Das Programm ist im SVN-Projektordner zu finden.[https://svn.hshl.de/svn/Elektrotechnik_Fachpraktikum/trunk/Projekte/65_Wasserstandsmessgeraet_Arduino/Software/Wasserstandmessung/] Der Programmablauf ist auf dem nachfolgendem Ablaufplan dargestellt. | ||
<br /> | |||
[[Datei:PAP-Wasserstandsmessgerät.JPG]] | |||
==Auswertung== | |||
Zur Auswertung wurde der Wassertank zunächst mit zwei Litern Wasser gefüllt. Im nächsten Schritt wurde die Füllhöhe mittels Maßband ermittelt, sodass das im Rohr befindliche Wasservolumen bestimmt werden konnte. Im nächsten Schritt wurde über den Seriellen Monitor die vom Arduino ermittelte Füllhöhe und das Volumen ausgegeben. [[Datei:Fehler Messung.JPG|200px|thumb|right|Laufzeitmessung]]Dieser Vergleich zeigt, dass die Messung korrekt funktioniert, d.h. auf dem Seriellen Monitor wurde das Volumen an Wasser ausgegeben was zuvor durch Berechnung ermittelt wurde. Zudem wurde durch das Füllen des Wassertanks und anschließendes Ablassen des Wassers über den Ablasshahn eine Kennlinie über den Seriellen Plotter erstellt. Dies zeigt, dass es auch bei verschiedenen Füllhöhen nicht zu Messfehlern kommt. Für Messfehler durch Temperaturänderungen ist zu erkennen das bei einer Temperaturdifferenz von 20°C ein Fehler von durchschnittlich 3,4% entsteht. Messergebnisse zur Laufzeitmessung sind in der Tabelle rechts zu sehen. | |||
<br /> | |||
==Fazit== | ==Fazit== | ||
Aufgabe war es einen Wasserstandsmessgerät zur Vermessung der Füllhöhe in einem Tank zu entwickeln. Die Ausgabe der Füllstandshöhe sollte dabei per Serial Monitor am PC erfolgen. Das entwickelte System ist in der Lage sowohl die Füllhöhe zu ermitteln als auch das vorhandene Flüssigkeitsvolumenen auszugeben. Die Anschlüsse am am Proto-Shield zur Verbindung des Sensors wurden wie gefordert über Schraubklemmen ausgeführt. | Aufgabe war es einen Wasserstandsmessgerät zur Vermessung der Füllhöhe in einem Tank zu entwickeln. Die Ausgabe der Füllstandshöhe sollte dabei per Serial Monitor am PC erfolgen. Das entwickelte System ist in der Lage sowohl die Füllhöhe zu ermitteln als auch das vorhandene Flüssigkeitsvolumenen auszugeben. Die Anschlüsse am am Proto-Shield zur Verbindung des Sensors wurden wie gefordert über Schraubklemmen ausgeführt. | ||
[[Datei:IMG 2195.JPG|gerahmt|zentriert|x300px|Abbildung 7: Messestand des Projektes]] | |||
==Ausblick== | ==Ausblick== | ||
Zeile 202: | Zeile 157: | ||
<references /> | <references /> | ||
[1] http://www.pepperl-fuchs.com/global/de/25518.htm <br /> | [1] http://www.pepperl-fuchs.com/global/de/25518.htm <br /> | ||
[2] http://deskfactory.de/arduino-projekt-utraschall-sr-04 | [2] http://deskfactory.de/arduino-projekt-utraschall-sr-04 <br /> | ||
[3] http://blog.smartewelt.de/?p=2414 <br /> | |||
[4] https://www.turais.de/arduino-zisternen-pegelstandsmessung/ <br /> | |||
[5] http://www.mikrocontroller.net/topic/73496<br /> | |||
---- | ---- | ||
→ zurück zum Hauptartikel: [[Angewandte_Elektrotechnik_(WS_16/17)|Angewandte Elektrotechnik (WS 16/17)]] | → zurück zum Hauptartikel: [[Angewandte_Elektrotechnik_(WS_16/17)|Angewandte Elektrotechnik (WS 16/17)]] |
Aktuelle Version vom 25. Januar 2017, 16:38 Uhr
Autoren: Lukas Brexler | Thorsten Drees
Betreuer: Prof. Göbel
→ zurück zum Hauptartikel: Angewandte Elektrotechnik (WS 16/17)
Aufgabe
Entwickelung eines Wasserstandsmessgerätes zur Vermessung der Füllhöhe in einem Tank, die Ausgabe soll per Serial Monitor am PC erfolgen.
Erwartungen an die Projektlösung
- Recherche nach bestehenden Lösungen
- Erstellen Sie das System als prototypischen Eigenbau auf einem Proto-Shield für einen Arduino Uno
- Beschaffen Sie die Bauteile
- Realisierung und Erprobung des Aufbaus
- Machen Sie ein spektakuläres Video, welches die Funktion visualisiert.
- Test und wiss. Dokumentation
- Live Vorführung während der Abschlusspräsentation
Schwierigkeitsgrad
Anspruchsvoll (***)
Einleitung
Diese Aufgabe wurde im Rahmen der Lehrveranstaltung "Angewandte Elektrotechnik" im Masterstudiengang "Business & Systems Engineering" vergeben und bearbeitet. Dieser Wiki-Artikel stellt das Vorgehen dar und zeigt den Lösungsweg auf. Dabei wird darauf eingegangen welche Hard- und Software benötigt wird, wie das Wasserstandsmessgerät funktioniert und welche Möglichkeiten zur Verbesserung oder Weiterentwicklung bestehen.
Aufgabenstellung
Die Aufgabe dieser Projektarbeit bestand darin, einen Wasserstandsmessgerät zur Vermessung der Füllhöhe in einem Tank zu entwickeln. Als Plattform soll der Arduino Uno R3 dienen. Der ermittelte Füllstand soll per Serial Monitor am PC ausgegeben werden. Die Auswahl der eingesetzten Sensorik und Messmethode ist dabei vom Projekteam zu wählen.
Theorie
Bei diesem Projekt wurde sich für die Wasserstandsmessung mittels Ultraschall entschieden. Der eingesetzte Ultraschall Sensoren besitzt einen Signalgeber, den sogenannten Trigger und einen Messgeber, auch Echo genannt. Die Funktion dieser Bauteile kann mit Mund und Ohren einer Fledermaus verglichen werden.
Unter Ultraschall wird ein Hochfrequenzton (meistens 40 KHz) verstanden. Ein kurzer Stoß von Tonwellen wird durch den Signalgeber ausgegeben. Dann wartet der Messgeber auf das Echo.
Die Distanz kann nun wie folgt berechnet werden:
Dabei ist die Länge und ist die Geschwindigkeit des Schalls in der Luft. Der Zeitunterschied zwischen Senden und Empfangen der Schallwellen durch Signalgeber und Messgeber wird durch beschrieben. Da wir den Schall in eine Richtung senden und dieser von einem Gegenstand reflektiert den gleichen Weg zurück antritt, wird die Zeit durch zwei geteilt. Die Schallgeschwindigkeit beträgt in einem Raum bei 20° Grad Celsius 344 Meter pro Sekunde.
Die Geschwindigkeit des Schalls wird durch die Luftdichte bestimmt, welche sich mit der Temperatur verändert, dazu mehr im Ausblick.[2]
Benötigtes Material
Das zur Lösung der Projektarbeit verwendete Material besteht aus:
- Ultraschallsensor HC-SR04
- Arduino Uno R3
- Arduino Proto-Shield Kit DEV-07914
- 2x Schraubklemmblock 1.50 mm² Polzahl 2 AKZ350/2-5,08-V PTR Grün
- 2x Abzweigkasten (L x B x H) 86 x 86 x 39 mm ABB 2TKA140012G1 Weiß IP65
- 2m Datenleitung 4 x 0.5 mm²
- div. Einzelardern 0.5 mm²
- 1m Rohr durchmesser 50mm mit Abschlusskappe
- Ablasshahn Kunststoff
- Metallgestell aus ITEM Profil
- USB-Kabel Stecker Typ A zu Stecker Typ B
Projektplanung
Um die Übersicht über das Projekt zu behalten, wurde zu Begin ein Projektplan erstellt. Die folgende Abbildung 1 zeigt einen Screenshot dieses Projektplans. Alle notwendigen Dokumente zu diesem Projekt sind im SVN [1] abgelegt.
Recherche nach bestehenden Lösungen
Gemäß der Aufgabenstellung ist zunächst eine Recherche nach den bestehenden Lösungen durchgeführt worden. Dabei wurde mittels Internet nach ähnlichen Realisierungen gesucht. Zur Inspiration wird hier auf einige Quellen verwiesen.
Mit einem morphologischer Kasten können kreativ viele unterschiedliche Lösungswege aufgezeigt werden. Für das Projekt "Wasserstandsmessgerät-Aufsatz für Arduino" ist ein solcher Kasten im Rahmen der Recherche erstellt worden:
Messmethode | Distanzermittlung | Vergleich mit Wasserstandsskala durch Schwimmer | Wiegen der Wassersäule | Vergleich mit 1l Wasserflasche durch Umfüllen |
Sensor | Ultraschall | Wasserflasche mit 1l Volumen | Drucksensor | Massensensor (Waage) |
Messbereich | <5cm | <100cm | <200cm | <400cm |
Die Messmethode ist die Methode, mit der die Höhe der Wassersäule ermittelt werden kann. Der Sensor liefert den Messwert, je nach Messmethode. Der Messbereich des Sensors ist für die Höhe der zu messenden Wassersäule zu berücksichtigen.
Mögliche Lösungskombinationen sind:
- Distanzermittlung+ Ultraschall+ 400cm, da der Ultraschallsensor einen Messbereich von bis zu 400cm hat.
- Vergleich mit Wasserstandsskala durch Schwimmer+ Drucksensor
- Wiegen der Wassersäule+Massensensor (Waage)
Eine Lösung mit einem Flachbandkabel, siehe auch [5], kam dabei nicht in Frage. Der Wasserstand könnte hierbei nur sehr eingeschränkt gemessen werden.
Schlussendlich wurde aus Gründen der Praktikabilität, der Einfachheit und der Robustheit der Ultraschall als Messmethode festgelegt.
Systemaufbau
Das Gesamt-System kann in drei Teilsysteme unterteilt werden. Dabei stellt der Wassertank das erste, der Arduino Uno R3 mit dem Ultraschallsensor das zweite und die Software das dritte Teilsystem dar.
Wassertank
Bei dem Projekt kommt als Wassertank ein Rohr mit einer Höhe von 49 cm und einem Durchmesser von 10 cm zum Einsatz. Am unteren Ende ist dieses Rohr durch eine Abschlusskappe verschlossen. Des Weiteren befindet sich am unteren Ende des Rohres ein Ablasshahn der es ermöglicht den Wasserstand zu verändern. Dies geschieht von unten da bei dem Befüllen von oben keine akkurate Messung möglich ist, weil das zufließende Wasser den von oben kommenden Ultraschall reflektiert. Der Ultraschallsensor wird am oberen Ende des Rohres eingehängt. Das Rohr befindet sich auf einem Gestell aus ITEM Profilen um einen sicheren Stand zu gewährleisten, sowie den Zugang zum Ablasshahn zu ermöglichen. Insgesamt fasst der Wassertank ein Volumen von 3,8 Litern. Anzumerken ist das der Durchmesser im unterm Bereich (erste 8 cm) einen um 1 cm größeren Durchmesser besitzt. Hierauf wird im Softwareteil genauer eingegangen. Abbildung 2 Zeigt den kompletten Aufbau des Wassertanks mitsamt der verbauten Sensorik.
Arduino UNO R3 und Ultraschallsensor
Als Ultraschallsensor mit der Bezeichnung HC-SR04 zum Einsatz. Dieses Ultraschallmodul arbeitet in einem Distanzrahmen von 3 bis 400 cm. Die maximale Abweichung beträgt hierbei 0,3 Millimeter.
Die technischen Daten sind folgende:
- Reichweite: 3 bis 400 cm
- Betriebsspannung: 5 V DC
- Frequenz: 40 kHz
- Trigger-Pulsweite: 10 µs
- Maximale Abweichung beträgt 0,3mm
Der hier beschriebene Sensor wurde in eine Abzweigdose verbaut wodurch dieser vor Spritzwasser geschützt ist und sich mittels eines Bleches an der Abzweigdose einfach am Rohr befestigen lässt. Abbildung 4 zeigt den verbauten Ultraschallsensor.
Die Verbindung zum Proto-Shield des Arduino Uno R3 erfolg mittels einer 4 x 0,5mm² Steuerleitung. Der Schaltplan zur Verdrahung des Sensors mit dem Proto-Shield ist in Abbildung 5 zu sehen. Abbildung 6 zeigt den Arduino mit dem fertig verdrateten Proto-Shield. Hier sieht man auch wie dieser in der Abzweigdose verbaut wurde.
Der Arduiuno Uno R3 wurde für das Projekt mit einem Proto-Shield erweitert. Das Proto-Shield hat dabei die Funktion das einfache wechseln bzw. den einfachen Ausbau des Arduinos zu ermöglichen. Die von dem Sensor kommende Steuerleitung wird über die am Proto-Shield angelöteten Schraubklemmen angeschlossen, somit kann der Sensor schnell gewechselt werden bzw. die länge der Steuerleitung an andere Situationen angepasst werden. Über die USB-Schnittstelle des Arduino wird dieser sowohl mit Spannung versorgt als auch programmiert. Zudem dient diese Verbindung dazu über den Serial Monitor die Füllstandshöhe sowie das aktuelle Volumen des Wassertanks zu übertragen.
Software
Die Arduino Programmierung basiert auf einer s.g. integrierten Entwicklungsumgebung. Diese Java Anwendung ist für Linux, Mac und Windows kostenlos verfügbar. Aufgrund einer GPL-Lizenz fallen keine Lizenzgebühren an. Die eigentliche Programmierung erfolgt in C bzw. C++. Das Programm ist im SVN-Projektordner zu finden.[6] Der Programmablauf ist auf dem nachfolgendem Ablaufplan dargestellt.
Auswertung
Zur Auswertung wurde der Wassertank zunächst mit zwei Litern Wasser gefüllt. Im nächsten Schritt wurde die Füllhöhe mittels Maßband ermittelt, sodass das im Rohr befindliche Wasservolumen bestimmt werden konnte. Im nächsten Schritt wurde über den Seriellen Monitor die vom Arduino ermittelte Füllhöhe und das Volumen ausgegeben.
Dieser Vergleich zeigt, dass die Messung korrekt funktioniert, d.h. auf dem Seriellen Monitor wurde das Volumen an Wasser ausgegeben was zuvor durch Berechnung ermittelt wurde. Zudem wurde durch das Füllen des Wassertanks und anschließendes Ablassen des Wassers über den Ablasshahn eine Kennlinie über den Seriellen Plotter erstellt. Dies zeigt, dass es auch bei verschiedenen Füllhöhen nicht zu Messfehlern kommt. Für Messfehler durch Temperaturänderungen ist zu erkennen das bei einer Temperaturdifferenz von 20°C ein Fehler von durchschnittlich 3,4% entsteht. Messergebnisse zur Laufzeitmessung sind in der Tabelle rechts zu sehen.
Fazit
Aufgabe war es einen Wasserstandsmessgerät zur Vermessung der Füllhöhe in einem Tank zu entwickeln. Die Ausgabe der Füllstandshöhe sollte dabei per Serial Monitor am PC erfolgen. Das entwickelte System ist in der Lage sowohl die Füllhöhe zu ermitteln als auch das vorhandene Flüssigkeitsvolumenen auszugeben. Die Anschlüsse am am Proto-Shield zur Verbindung des Sensors wurden wie gefordert über Schraubklemmen ausgeführt.
Ausblick
Den größten Einfluss auf die Messgenauigkeit besitzt die Lufttemperatur. Nach der Laufzeitmessung des reflektierten Ultraschallimpulses wird wie bereits beschrieben die Entfernung zum Objekt über die Schallgeschwindigkeit berechnet. Mit der Lufttemperatur ändert sich jedoch auch die Schallgeschwindigkeit um 0,17% pro Grad Kelvin. [1] Um das Wasserstandsmessgerät weiter zu verbessern, wäre daher der Einsatz eines zusätzlichen Temperatursensors anzudenken. Dieser passt die Schallgeschwindigkeit, welche zur Entfernungsberechnung genutz wird, zyklisch an die Umgebungstemperatur an.
Youtube-Video
Zu diesem Projekt wurde ein Ergebnisvideo angefertigt. Dieses lässt sich unter dem folgenden Link abrufen [7].
Quellen
[1] http://www.pepperl-fuchs.com/global/de/25518.htm
[2] http://deskfactory.de/arduino-projekt-utraschall-sr-04
[3] http://blog.smartewelt.de/?p=2414
[4] https://www.turais.de/arduino-zisternen-pegelstandsmessung/
[5] http://www.mikrocontroller.net/topic/73496
→ zurück zum Hauptartikel: Angewandte Elektrotechnik (WS 16/17)