Tropfenzähler

Der Tropfenzähler soll als einzelner Baustein aber auch als Teil des Fraktionssammlerprojektes verwendbar sein. In Erweiterung seiner Verwendbarkeit soll er auch als Blasenwächter für Glas- oder Silikonschläuche verwendbar sein.

Lichtschranken können fallende Tropfen erkennen. Gabellichtschranken helfen Fehljustierungen zu vermeiden. Ein Wassertropfen besitzt ein Volumen von etwa 50 µl und damit einen entsprechenden Durchmesser von mehreren Millimetern. Elektronische Bauteile wie die Lichtquelle und der Lichtsensor der Lichtschranke sind unbedingt vor Feuchtigkeit zu schützen. Dieser Schutz kostet Spaltbreite / Raum. Die Gabellichtschranke GP1A57HRJ00F besitzt eine Öffnungsweite von 10 mm.

Gabellichtschranke_m_SchmitdtriggerSchaltplan des Breakoutboards:

https://www.sparkfun.com/datasheets/Sensors/Infrared/PhotoInterrupter-Breakout-v20.pdf

Datenblatt:

https://www.sparkfun.com/datasheets/Components/GP1A57HRJ00F.pdf

Auf der linken Seite des Bauteils ist die IR-LED untergebracht. Die größere Länge des hinteren Beinchens wie auch die Prägung auf dem Bauteil (obere Ansicht hier nicht gezeigt) gibt, weist daraus hin, dass es sich um die Kathode handelt. Im Datenblatt mit Pin (2) bezeichnet. Das kürzere, vordere, rechte Beinchen ist somit die Anode. Um die IR-LED ohne Schaden am Arduino UNO betreiben zu können, bedarf es eines 220 oder 330 Ohm Vorwiderstandes, der am besten zwischen die Kathode (rechtes, hinteres Beinchen im Bild) und Masse (GND) geschaltet wird.

Über die genaue Verwendung informiert dieser Forenbeitrag

http://forum.arduino.cc/index.php?topic=102418.0

oder der Schaltplan des Breakoutboards von Sparkfun.

https://cdn.sparkfun.com/datasheets/Sensors/Infrared/PhotoInterrupter-Breakout-2.2.pdf

Aus dem Schaltplan des Breakout-Boards geht auch nochmals die genaue Beschaltung hervor. Auf der linken Seite der obigen Darstellung befindet sich demnach vorne der Massenanschluss (-) (Englisch Ground = GND). Etwas zur Mitte versetzt befindet sich der im Datenblatt mit Vo bezeichnete Signalausgang und ganz hinten die Spannungsversorgung (+).

Ein Aufbau unmittelbar auf einem Breadboard funktioniert nicht. Die Beinchen sind zu dünn und falsch positioniert. Für einen fliegenden Aufbau bleibt also nur ein Aufbau mit Lötkolben und Schrumpfschlauch an eine Steckerleiste, die entsprechend in des Steckbrett eingefügt werden kann. Später wird der Aufbau mit einem Schrumpfschlauch mit größerem Durchmesser und weiblich-männlichen Patchkabeln im Einsatz getestet.

Zunächst aber die Funktionsprüfung mithilfe eines Sketches. Der Signalausgang der Lichtschranke wird mit digitalPin2 verbunden (Dieser Eingang ist interrupttauglich, was später verwendet werden soll). Dem Standard folgend verwenden wir zur Verbindung der Anode an Vcc ein rotes Jumperkabel und zur Verbindung mit GND ein schwarzes Jumperkabel. Die eingebaute LED am Digitaleingangspin 13 soll bei Aufleuchten, wenn sich ein Hindernis im Spalt der Lichtschranke befindet.

// Testprogramm Gabellichtschranke

int Led13 = 13;

int signalSchranke = 2;

int val;

void Setup () // Pins und Co initialisieren

{

pinMode Led13, OUTPUT); // Digitalpin 13 als Ausgang schalten

pinMode (signalSchranke, INPUT); // Digitalpin 2 als Eingang schalten

}

void Loop ()

{

val = digitalRead(signalSchranke);

if (val == HIGH)

{

digitalWrite (Led13, HIGH);

}

else

{

digitalWrite (Led13, LOW);

}

}

Für erste Gehversuche eignet sich auch das Breakoutmodul KY-010.

https://tkkrlab.nl/wiki/Arduino_KY-010_Optical_broken_module

Nach einer leichten Modifikation des Sketches (Zum Beispiel dem Einfügen einer Zeile „delay(500);“ nach dem „digitalWrite(Led13, HIGH);“ und vor allem vor das anschließende „}“) und dem Test der Lichtschranke mit einem dünnen Drahtstück, das schnell hindurchgezogen wird, stellen sich erste Irritationen ein. Offensichtlich führt nicht jeder Durchgang eines Gegenstandes durch die Lichtschranke zu einer Auslösung des Signals.

Das Problem tritt noch deutlicher auf, wenn das Programm umfangreicher wird und eine Kommunikation auf den „Serial Monitor“ erfolgt.

Während der Arduino gerade mit anderen Dingen beschäftigt ist, mangelt es an Aufmerksamkeit für den Sensor.

Erik Bartmann hat dieses Problem in dem frei verfügbaren Ergänzungstext zur ersten Auflage seines Buches „Die elektronische Welt mit dem Arduino entdecken“ ganz wunderbar beschrieben.

http://erik-bartmann.de/component/attachments/download/79.html

Die 2. Auflage des Buches deckt diesen Bereich zwar ab, ist aber nicht so  prägnant.

Mit der entsprechenden Modifikation des Sketches funktioniert der Sensor jetzt in der beabsichtigten Weise.

Das Echtzeitmodul des Tropfenzählers ersetzen zunächst die Funktionen millis(). Diese Funktion gibt die Zeit seit dem Start des Programms an und kann damit ein Zeitintervall von fast 50 Tagen messen, bevor der Wert der Funktion überläuft und damit wieder bei Null beginnt.

Es soll zum Beispiel die Tropfgeschwindigkeit in Anzahl Tropfen pro Minute angegeben werden. Die Variable vorwert soll den Zeitstempel des letzten Ereignisses beinhalten.

Sie wird vor der Setup-Funktion mit:

unsigned long vorwert;

eingeführt.

Die Tropfgeschwindigkeit kann durch Bestimmung der Differenz tropfzutropfzeit zwischen der istzeit und dem vorwert in der Einheit Millisekunden berechnet werden. Damit diese Routine nur aufgerufen wird, wenn ein Tropfen gefallen ist, wird eine boolsche Variable „getropft“ eingeführt, die die Interruptroutine auf „TRUE“ setzt.

if (getropft== TRUE)

{

istzeit = millis();

tropfzutropfzeit = istzeit – vorwert;

vorwert = istzeit;

tropfgeschwindigkeit = tropfzutropfzeit / 60000;

getropft = FALSE;

}

Es sollte noch berücksichtigt werden, dass eine Tropfgeschwindigkeit erst bestimmt werden kann, wenn wenigstens der zweite Tropfen gefallen ist. Die Geschwindigkeitsanzeige kann so angepasst werden, dass immer der gleitende Mittelwert von einer zuvor festgelegten Anzahl von Ereignissen (zum Beispiel 3) ein Wert auf dem „Serial Monitor“ ausgegeben wird.

Schreibe einen Kommentar

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.