Benutzer-Werkzeuge

Webseiten-Werkzeuge


Seitenleiste

projektewise1617:algoino2public:start

AlgoinO2 Projektdokumentation

Projektlabor Robotik: Sebastian Führ, Jan Phillips, Daniel Mayer und Tobias Schubert

Projektlabor Chemie: Leon Plath, Marisa Krauss, Arne Egersdorfer und Nico Friese

Beaufsichtigt von Felix Bonowski (Robotik), Corvin Jaedicke (Robotik) und Franz-Josef Schmitt (Chemie).

Projektbeschreibung

Das Projekt AlgoinO2 dient zur Überwachung, Dokumentation und Beeinflussung des Wachstums von Algen. Dazu wird der Sauerstoffgehalt einer Ansatzflüssigkeit überwacht und z.B. mit einem Algorithmus (Algorithmus01) ermittelt, bei welcher Lichtintesität die Sauerstoffproduktion der Algen maximal ist. Die Sauersoffmessungen werden durch eine Sonde (Fibox 3) durchgeführt.

Projektplanung:

Abb. 0.1: Von rechts nach links: LED-Ring mit Rührfisch und Algen; Gehäuse; Weithalsgewindeflaschen und Erlenmeyerkolben


Versuchsaufbau

Nachfolgend ein Bild, auf dem einige wichtige verwendete Werkzeuge abgebildet sind. Nicht zu sehen, aber trotzdem wichtig für das Projekt waren außerdem:

  • Arduino Starter Set(selbstverständlich =))
  • Eine Menge schwarzes Klebeband

Abb. 1.1: (01) Pipette und Pipettenspitzen, (02) Heizplatte und Rührfisch, (03) LED-Steuerungsbox, (04) Algenkolonie (Synechocystis), (05) Lichtleistungsmessgerät, (06) LED-Ringe, (07) Sauerstoffsonde

Sauerstoffsonde

Die Fibox 3 ermöglicht das Messen des Sauerstoffgehalts von Flüssigkeiten. Dazu schießt sie einen Laser durch ein Glasfaserkabel auf ein sich in der Flüssigkeit befindendes Plättchen, welches mit einer bestimmten Chemikalie gefüllt ist. Diese Chemikalie verhält sich je nach Sauerstoffanteil in der Flüssigkeit anders, wodurch das Licht unterschiedlich reflektiert wird und somit der Sonde Rückschlüsse über den Sauerstoffgehalt ermöglicht.

Die Sonde hat eine zugehörige Software vom Hersteller, das die Kalibirerung mit Hilfe der oben genannten Sensorplätchen ermöglicht. Auch das Messen und speichern des Messverlaufs über längere Zeit ist möglich, jedoch muss dazu dauerhaft ein Computer an das Gerät angeschlossen sein. Unser Ziel ist es, eine autark funktionierende 'Messstation' zu bauen, welche nicht nur Messungen durchführt, sondern auch Umwelteinflüsse innerhalb der Messstation kontrolliert. Des Weiteren befindet sich ein Thermometer an der Sonde.

Beide Messgeräte können analog ausgelesen werden, wobei die Sauerstoffsonde eine Spannung zwischen 0 und 1V zurück liefert, je nachdem, wieviel Prozent der Flüssigkeit aus Sauerstoff bestehen. Die Temperatursonde liefert einen Wert zwischen 0 und 5V, wobei der Spannungswert, einem Zehntel der Temperatur entspricht(d.h. dass eine Spannung von 2,35V einer Temperatur von 23,5 Grad Celsius entspricht).

Seite des Herstellers der Fibox 3, inklusive technischer Daten

Abb. 1.2: Anreichern einer Testflüssigkeit mit Sauerstoff für einen Test und eine spätere Kalibrierung der Sonde

Temperatur

Bei der Planung des Projekts wurde bemerkt, dass sich die Algen temperaturanfällig verhalten. Zum einen wollten wir deshalb das Wachstumsverhalten der Algen unter bestimmten Temperaturen untersuchen, andererseits kam die Frage auf, wie man die Temperatur gleich halten kann, wenn ein anderer Aspekt untersucht werden soll. Aus diesem Grund wird während des Versuchs dauerhaft die Temperatur gemessen.

Lüftung

Abb. 1.3.1: In Betracht gezogene Computerlüfter

Wenn die Temperatur steigt, werden zwei ausrangierte Computerlüfter angesteuert, damit sich diese aktivieren. Dabei wird auf einer Seite Luft aus der Umgebung gesaugt und unten in das Gehäuse geblasen. Der zweite Lüfter zieht, als Abzug, die warme Luft oben ab und gibt sie auf der anderen Seite des Gehäuses mit einem gewissen Abstand an die Umgebung ab. Die Lüfter benötigen ein externes 12V Netzteil mit 0.3-0.6A Stromstärke und verfügen über zwei weitere Pins neben den zwei Stromversorgungsanschlüssen. Ein Kontakt dient zur Übertragung eines PWM-Signals während der zweite Kontakt angibt, wie schnell sich der Lüfter dreht.

Datenblatt der verwendeten Lüfter

Schematische Zeichnung der Luftzirkulation Abb. 1.3.2: Schematische Zeichnung der Luftzirkulation im Querschnitt der Tonne

Lichteinfluss

LED-Ringe


Abb. 1.4.1: Blauer LED Ring, Abb. 1.4.2: Rot-Blau gemischter LED Ring, Abb. 1.4.3: Roter LED Ring

Wir haben während unseres Projektes mit drei LED-Ringen gearbeitet. Dabei konnten wir zuerst nur einzeln blaues oder rotes Licht benutzen, weshalb wir noch einen dritten Ring gelötet haben. Dieser besteht zu gleichen Teilen aus roten und blauen LEDs.

Versuchsumgebung

Um eine möglichst gleich bleibende Versuchsumgebung zu gewährleisten, haben wir eine beschlossen, das Experiment in einer schwarzen Tonne stattfinden zu lassen. Dadurch erhoffen wir uns, dass die Algen nicht durch äußere Lichteinflüsse wie den Tag- und Nachtwechsel beeinträchtigt werden und so genauere Messwerte möglich werden. Das Innere dieses Gehäuses kann sich jedoch schnell erwärmen, weshalb wir zwei Löcher mit einem heißen Messer in das Plastik geschnitten haben (Abb. 4.1, 4.2), welche durch die oben beschriebenen Lüfter genutzt werden. Für die Farbe schwarz haben wir uns entschieden, weil diese möglichst viel Licht absorbiert und somit weniger Licht von außen in die Versuchsumgebung gelangen kann.

Abb. 1.5:
Gehäuse mit
angebauten
Lüftungsschächten

Programm

Quelldaten:

Processing: Processing Arduino: Arduino

Graphical User Interface

Um die Bedienung unseres Roboters auch Außenstehenden zu ermöglichen, haben wir mit Hilfe von Processing ein User Interface programmiert. Der Nutzer kann hier bequem die Einstellung (siehe nächstes Kapitel) des Versuchsablaufs verändern oder den Algorithmus für die Ermittlung des Maximums starten. Das angeschlossene USB-Kabel dient als serielle Schnittstelle für die Kommunikation zwischen Arduino und PC. Dabei liest der Arduino kontinuierlich den seriellen Buffer aus und analysiert die vom Processing-Programm gesendeten Bytes.

Wichtige Befehle, die an den Arduino gesendet werden sind:

  1. Einstellungen auf SD-Karte speichern
  2. Versuch starten/stoppen
  3. Messdaten von SD-Karte auslesen und an Processing schicken

Während des Versuches sendet der Arduino Live-Daten, die vom Processing-Programm in Echtzeit geplottet werden können.

Abb. 2.1: GUI

Kommunikation zwischen Arduino und Processing

Da unser Arduino-Programm mit dem Processing-Programm kommunizieren soll, benötigen wir uns ein Format zur Übertragung der Daten. Im Folgenden sind zwei Abbildungen gegeben, die die Kommunikation erklären sollen.

Ausschnitt aus dem Arduino-Quellcode:

  if (Serial.available() >= 1) {
    inByte = Serial.read();
    switch (inByte) {
      case 'a': //Messbedingungs-Daten werden auf Datei gespielt
        dateiname = Serial.readStringUntil(32);
        if (dateiname == " ") dateiname = "config.txt";
        einstellungenSpeichern(dateiname);
        break;

Zur Einstellung der Messbedingungen erwartet das Arduino Programm zunächst ein byte im Asci-Code von a, also 'a'.Zusätzlich wird ein String erwartet, der den Namen der anzulegenden Datei im Programm angibt. Danach ruft das Programm eine Methode namens einstellungenSpeichern() auf, welche weitere Werte im Integer-Format mit der Methode Serial.parseInt() liest und speichert diese in einer Datei auf der SD-Karte ab.

Ausschnitt aus dem Processing-Quellcode:

  void festlegen() { // die Methode legt die Messbedingungen fest
    port.write('a'); // Zeichen für: Achtung jetzt kommen die Messbedingungen
    port.write(textfield_save.getText()+" ");
    port.wirte(((int)(box_stunden.getValue()*60 + box_minuten.getValue()))+"\n"); // Dauer der Messung

Zur Einstellung der Messbedingungen sendet das Processing ein byte mit dem Stringwert von a ('a') über den seriellen Port. Danach wird der Name der anzulegenden Datei im String-Format verschickt. Anschließend Informationen wie Messdauer, Lichtintensität etc. mit port.write() im Integer-Format.

Algorithmus00

Dieser Algorithmus ist zu empfehlen, falls man vor dem Versuch schon weiß, wie sich die Lichtintensität und die Temperatur mit der Zeit verändern soll. Die Einstellung der Versuchsbedingungen werden genauer im Kapitel „Einstellungen“ beschrieben. Die Funktionsweise des Messalgorithmus00 ist in der nebenstehenden Abbildung zu sehen. Die Messschleife wird mit dem Klick auf den „Start“-Button gestartet bzw. mit dem „Stop“-Button oder nach Ablauf der Messdauer gestoppt.

Abb. 2.2:
Workflow der
LED Steuerung
für den Algorithmus00

Algorithmus01

Dieser Algorithmus dient zur Ermittlung eines Maximums der Sauerstoffproduktion der Algen in Abhängigkeit von Lichteinsatz. Dabei werden die Algen gleichzeitig mit roten und blauen LEDs beleuchtet, wobei beide Farben getrennt geregelt werden.
Beide LEDs starten mit 1% der Leuchtintensität, während jede Sekunde der Messwert des Sauerstoffgehalts ermittelt wird. Nach 5 Minuten kommt es dann zur Bildung eines Mittelwertes, welcher nun mit dem alten Mittelwert(nach den ersten 5 Minuten noch 0) verglichen wird. Ist der neue Messwert höher als der alte, deutet das darauf hin, dass die Algen das Licht gut vertragen haben und die Intensität der anderen LED Farbe wird nun ebenfalls um 1% erhöht.
Der Mittelwert wird in eine Hilfsvariable gespeichert, welche später zum Vergleich als alter Mittelwert dient, wobei der 'neue' Mittelwert wieder auf 0 gesetzt wird und nun für 5 Minuten wieder jede Sekunde einen Messwert aufaddiert. In diesem Wechsel steigern sich die Intensitäten beider Farben nahezu gleichzeitig, mit einem Unterschied von 0-1%. Dies fährt solange fort, bis der alte Mittelwert besser wird als der neue. Daraus kann man schließen, dass das Licht der zuletzt hochgeregelten LED nicht gut für die Sauerstoffproduktion der Algen war.
Deshalb wird nun die Intensität der LED, welche zuletzt hochgeregelt wurde um 1% verringert und die andere Farbe um 1% erhöht. Da nach 5 Minuten die andere LED sowieso wieder um 1% hochgeregelt wird, bleiben ab diesem Zeitpunkt die Intensitäten der LEDs auf einer konstanten Höhe. Es konnte ermittelt werden, welche LED ein Maximum an effektivität erreicht hat. und mit welcher LED-Farbe im nächsten Versuchsablauf die Intensität einzeln erhöht werden kann, während die andere auf einer konstanten Stufe bleibt. Im nächsten Versuchsablauf kann die LED mit dieser Farbe auf einer konstanten Stufe bleiben, während die Intensität der anderen allein erhöht wird.

Abb. 2.3:
Workflow der
LED Steuerung
für den Algorithmus01

Einstellungen

Wir haben uns überlegt, dass unser 'Messroboter' Messungen unter bestimmten Bedingungen (im folgenden Einstellung genannt) durchführen soll. Diese Einstellungen werden im Processing-Programm vor dem Messstart ausgewählt. Mit einem Klick auf den Button „Messbedingungen festlegen“ werden die Einstellungen an den Arduino gesendet. Die Einstellungen werden nun in einer Datei (Namen der Datei legt man auch im Processing-Programm fest) gespeichert. Der Arduino wird die Messwerte während des Versuchs ebenfalls in dieser Datei speichern.

Folgende Einstellungen sind enthalten:

  1. Versuchsdauer
  2. Frequenz der Messungen ( Zeitintervalle, in denen Messwerte genommen werden)
  3. Temperatur zu Beginn der Messung
  4. Temperaturzuwachs im bestimmten Zeitintervall (für Dynamik des Systems wichtig)
  5. Intervall des Temperaturzuwachses (Zeitintervall, nachdem sich die Temperatur immer um „Temperaturzuwachs“ ändert)
  6. Intensität der roten LEDs zu Beginn der Messung
  7. Intensitätszuwachs der roten LEDs im bestimmten Zeitintervall (Intensitätszuwachs wird in Prozent angegeben)
  8. Intervall des 'roten' Intensitätszuwachses (Zeitintervall, nachdem sich die Intens. der roten LEDs um Intens.-Zuwachs ändert)
  9. Intensität der blauen LEDs zu Beginn der Messung
  10. Intensitätszuwachs der blauen LEDs im bestimmten Zeitintervall
  11. Intervall des 'blauen' Intensitätszuwachses

Beim starten des Messvorganges liest unser Programm diese Einstellungen aus und passt dementsprechend seine Variablen an.

Die Einstellungen werden in einer TXT-Datei(config.txt) gespeichert und können vom Arduino zu Beginn des Messvorgangs ausgelesen werden.

100	// Versuchsdauer von 100 Minuten
300	// die Messungen werden in Zeitintervallen von 5 Minuten(300s) durchgeführt)
22	// 22 Grad Celcius als Ausgangstemperatur(zur Zeit nicht implementiert)
1	// Zuwachs von einem Grad Celcius im Temperaturintervall(zur Zeit nicht implementiert)
300	// Temperaturzuwachs wird alle 5 Minuten(300s) ausgelöst(zur Zeit nicht implementiert)
5	// 5% Lichtintensität des roten Lichtes zu Beginn der Messung
1	// Zuwachs von 1% der Lichtintensität im gewählten Zeitintervall für den Lichtzuwachs(rot)
300	// Zeitintervall für den roten Lichtzuwachs alle 5 Minuten(300s)
5	// 5% Lichtintensität des blauen Lichtes zu Beginn der Messung
1       // Zuwachs von 1% der Lichtintensität im gewählten Zeitintervall für den Lichtzuwachs(blau)
300     // Zeitintervall für den blauen Lichtzuwachs alle 5 Minuten(300s)

Abb. 2.4: Exemplarischer Inhalt der config.txt Datei

microSD Card BreakOut

Anschluss an den Arduino

Das SD-Shield verfügt über die folgenden 8 Pins:

  1. CD
  2. CS
  3. DI
  4. DO
  5. CLK
  6. GND
  7. 3V
  8. 5V

Zur Orientierung haben wir das Beispielprogramm Beispiele/SD/ReadWrite genutzt, welches angibt, welche Pins wo angeschlossen werden sollten.Es werden CS, DI, DO und CLK mit den Pins des Arduinos zur Datenübergabe verbunden. Der 5V-Pin des Shields wird mit der 5V Spannungsversorgung des Arduinos verbunden und die beiden GND Pins zusammengeführt. Nun ist der 'mSD-Breakout' einsatzbereit.

Er sich vertieft mit dem Zugreifen auf Daten einer MicroSD Karte auseinandersetzen möchte, findet hier ein verständlich erklärtes Tutorial dazu(Englisch). Dabei wird nicht nur auf den Programmcode eingegangen, sondern wie man die Erweiterung korrekt mit dem Arduino verbindet.

Datenmanipulierung auf der SD Card

Um auf die SD-Karte zugreifen zu können, haben wir die SD.h und SPI.h Bibliotheken eingebunden. Um nun eine Text-Datei auf der SD-Karte zu manipulieren, können wir das Kommando «SD.open('dateiname','Art des Zugriffs')» benutzen. 'Art des Zugriffs' legt fest, ob die Datei lediglich ausgelesen werden sollFILE_READ, oder auch verändert werden sollteFILE_WRITE.

Verbindung aller Komponenten

Abb. 3.1: Schaltplan

Messergebnisse

Es folgen einige Beispiele für Messreihen unter unterschiedlichen Bedingungen. Im ersten Fall wurde die Ansatzflüssigkeit der Algen mit Hilfe des roten LED-Rings mit rotem Licht bestrahlt. Es ist zu erkennen, dass zunächst ein Wachstum des Sauerstoffgehalts zustande kommt, bis die Population der Algen ein Maximum erreicht und somit auch der Sauerstoffgehalt in der Ansatzflüssigkeit. Nach ca. 82 Minuten beginnen dann die Algen abzusterben und es kommt zu einem erheblichen Einbruch an Sauerstoff im Ansatzgefäß.

Ein beinahe identischer Vorgang spielt sich auch unter blauem Lichteinfluss ab. Um allerdings zu veranschaulichen, wie störanfällig die Sauerstoffsonde mitunter ist, kann man im Graphen unten erkennen, dass es nach ca. 70 Minuten zu einem Abbruch der Messung kam. Daraufhin wurden durchgängig 0% Sauerstoff in der Flüssigkeit gemessen. In diesem Fall wurde das Glasfaserkabel, welche das Licht zum Messen von der Sonde auf das Messplättchen richtet um einen Millimeter verschoben und traf somit nicht mehr senkrecht auf das Plättchen.

Da sich beide Farben gleich auf die Algenansatzflüssigkeit ausgewirkt haben, wurde die Messung mit dem neu zusammengelöteten Ring wiederholt. Dadurch konnte der Sauerstoffgehalt in Abhängigkeit von roten und blauen Licht gleichzeitig und gleichmäßig ermittelt werden. Wären beide Ringe übereinander gestellt worden, wäre eine genaue Messung des Sauerstoffs nicht möglich gewesen. Auch hier ist bei ca. 380 Minuten ein starker Abfall des Sauerstoffgehalts zu erkennen. Jedoch kommt es danach kurzweilig noch zu einem zweiten Wachstum und ab ungefähr 650 Minuten zu einer Stagnation des Sauerstoffs in der Ansatzflüssigkeit.

Zuletzt ist nun noch ein Messverlauf zu sehen, welcher mit dem Algorithmus01 gearbeitet hat. Man kann erkennen, dass unser Programm auf die Messdaten reagiert und die Lichtintensität entsprechen angepasst hat, da da es immer wieder zu Wachstumsperioden kommt, nachdem der Sauerstoffgehalt beginnt zu sinken. Dadurch konnte bereits verhindert werden, dass es zu einem plötzlichen Einbruch des Sauerstoffgehalts in der Algenkolonie kommt, jedoch haben wir einen Fehler in unserem Quellcode ermittelt, welcher die Lichtintensität nach dem größten Maximum bei ca. 300 Minuten kontinuierlich wieder gesenkt hat. Wir haben den Quellcode bereits entsprechend angepasst, konnten bisher jedoch noch keine Messreihe in einem ausreichenden Zeitraum mit befriedigenden Ergebnissen durchführen.

Fazit

Messwerte

Wir sind zufrieden, dass wir die vielen Probleme auf dem Weg zur Verwirklichung unseres Roboters überwinden konnten und zu guten Ergebnissen gelangt sind. So haben wir festgestellt, dass die verwendeten Algenkolonien unter der Kombination von roten und blauen Licht mehr Sauerstoff produzieren(ca. 15%, wie bei den Messeverläufen zu sehen), als wenn man die Algen mit jeweils nur einer Lichtfarbe bestrahlt. Des Weiteren haben wir bereits den Ansatz gelegt, eine optimale Entwicklungsumgebung für die Algen zu schaffen, damit diese gedeihen können. An dieser Stelle könnte man auch sehr gut weiter arbeiten, da man versuchen könnte, die Algen auf einem Sauerstoffgehalt zu stabilisieren, damit eine Stagnation des Sauerstoffs erreicht, welche höher liegt als in Abb. zu sehen ist.

Projektarbeit

Bei der Umsetzung hatten wir vor Allem mit der Organisation unserer geteilten Gruppe zu kämpfen, da es sich als schwer herausgestellt hat, sich regelmäßig über die Fortschritte der anderen Gruppe zu informieren und seine eigene Arbeit entsprechend anzupassen. So kam es zum Beispiel vor, dass wir zwei Wochen an einem Problem(Algorithmus01) gearbeitet haben und dann fast den ganzen Algorithmus nochmal schreiben mussten, da sich das Ziel von der alleinigen Ermittlung eines Maximums auf die Ermittlung eines Maximums mit anschließender Stagnation auf diesen hohen, erreichten Wert geändert hatte. Trotzdem sind wir zufrieden mit den Erfahrungen die wir sammeln durften und auch den Einblicken in das jeweils andere Fachgebiet unserer Projektlabore, welche durch das interdisziplinäre Arbeiten möglich wurden.


Dateianhänge

Fotos


Abb. 4.1, Abb. 4.2 - Zuschneiden des Gehäuses

Arduino Programm:

Processing GUI AlgoinO2

projektewise1617/algoino2public/start.txt · Zuletzt geändert: 2017/05/18 17:13 von c.jaedicke