System zur Messung der Ameisensäure-Konzentration im Bienenstock bei der Varroa-Behandlung

Danke für den Tipp @weef! In Ergänzung – wollte das schon länger mal hier dokumentieren, bin aber nicht dazu gekommen – hatte ich mit meinen älteren blau.de-SIM-Karten mit dem M7350 Probleme, die wurden partou nicht erkannt, dachte schon an einen technischen Defekt des Geräts, mit einer congstar-Karte funktionierte er dann aber, den eigentlichen Grund für die “Fehlfunktion” habe ich bisher nicht rausgefunden.

Erster Test: Alkohol-Sensor MQ-3

So, heute mal Trinken im Dienst der Wissenschaft!

Der MQ-3 Segor-Sensor ist auf einer kleinen Platine montiert. Auf dieser sind zwei LEDs, eine für “an” und eine zweite, die mit einem per Poti einstellbaren Komparator verbunden ist. Neben der LED wir am digitalen pin eine 1 für unter dem Sollwert und einer 0 für über dem Sollwert ausgegeben.

// the digital output is vice versa the expectation 
// you may have, 
// - a high signal means limit not reached
// - a low signal means limit reached 

Der zweite pin liefert einfach einen analogen Wert je nach Stoffkonzentration. Einen hohen Wert für viel Alkohol, ein niedriger für wenig.

Zu Testzwecken ist der Sensor gerade an einem klassischen Arduino Uno angeschlossen. Der Sensor hat ein Heizelement, das mit 5 V betrieben wird. Der Sensor selbst wird dadurch merklich warm, d.h. wir sollten nicht direkt daneben die Temperatur messen. Auch direkten Wachskontakt sollten wir vermeiden, dafür haben wir ja schon die Lockenwickler angedacht. Hoffe der Abstand damit reicht dann. D.h. es wird auch einiges an Energie verbrauchen. Wir müssen schauen, ob es noch ok ist, z.B. 4 oder 6 Sensoren über den 5 V-pin des Arduinos zu betreiben.

Der Sensor ist noch nicht eingebrannt, verläßliche Werte soll er erst nach 24h Dauerheizen liefern. Daher diese Angaben mit Vorsicht: Bei Raumluft liefert er analoge Werte um 130, Spiritus auf einem Wattebausch läßt die Werte auf über 800 steigen. Selbst wenn der Wattebausch dann weg ist braucht es aber ein, zwei Minuten bis der Wert wieder auf unter 200 ist.

Trinken war übrigens gar nicht nötig, schon die Elektro-Nase im Schlehen-Likör-Glas lässt die Werte auf über 700 steigern!

Aber zuerst müssen wir mal schauen, ob die Dinger neben Alkohol auch AS messen können und dabei nicht kaputt gehen.

2 Likes

Das Heizelement darin hat 33 Ohm (5% tol.) , da fließen bei 5V etwa 150 mA . Rechnerisch ergibt das 750 mW, das Datenblatt spricht von “less than 750 mW”.

Sechs Sensoren davon ziehen etwa 1 A bei 5V , also 5W. Und wie willst Du diese aus Arduino-Pins herausbekommen? Oder auch nur den Strom für einen davon, also 150 mA ist nicht so elegant, wenn das alles aus der USB kommt (letzteres für Test OK).

Stromversorgung

Mit dem Arduino Uno sollten über den 5 V-Pin Ströme bis 500 mA bzw. wenn nicht über USB bis 1 A gehen, s. http://robotics.lib-ieronimoub.gr/?p=715

Welcher Microcontroller?

Die erhobenen Daten müssen aber auch weg, und da bietet sich ein ESP oder was anderes mit WLAN an, die laufen aber mit 3,3 V und unser Sensor möchte

Circuit voltage 5V

Mit 3,3 V wird der nicht gehen, oder, selbst wenn ich die Heizung mit 5 V betreibe? Was nehme ich jetzt? Für jede Beute einen Arduino Yun?? bzw. LinkIt Smart 7688 Duo nur weil der auf 5 V läuft und WLAN kann? Den LinkIt kann ich aber nur mit USB füttern und zu current limitations des 5 V-pins habe ich noch nix gefunden. Oder ein Uno mit ESP8266 nur als Daten-Schaufel?

Sollte™! ;)
Du hast da offenbar einen DIL-Uno v1, da ist als Linearregler ein MC33269 drauf. Der ist als 800 mA -Typ spezifiziert, das ist kein 1A-Typ. Der Uno ab Rev.2 hat einen NCP1117 , das erst wäre ein 1A-Typ.

Es ginge irgendwie - aber Du willst das aus thermischen Gründen nicht: wenn Du nicht über USB, sondern den Linearregler gehen mußt, dann brauchst Du eine Eingangsspannung, die z.B. beim Uno 1 -Regler mindestens 1,35V höher ist als 5V (das ist V_{\text{dropout}}). Alles, was dann noch höher ist, wird genauso verheizt: wenn z.B. ein Autoakku mit nominellen 12V sechs von den Sensorheizungen speist (etwa 1A), dann brauchen Deine Sensoren P = U \cdot I = 5V \cdot 1A = 5W , aber um diese 5W bei 5V bereitzustellen, heizt der Regler den Arduino mit 7W:

P = \Delta U \cdot I = (12V - 5V) \cdot 1A = 7W

Der Winkungsgrad \eta = \dfrac{P_{OUT}}{P_{IN}} = \dfrac{U_{OUT} \cdot I_{OUT}}{U_{IN} \cdot I_{IN}} = \dfrac{U_{OUT}}{U_{IN}} ist hier dann also ganze 0,42 (42%).

Selbst wenn einem der Wirkungsgrad egal wäre: die 7W-Platinenheizung in Form des Linearreglers hat zu wenig Kühlfläche, als daß sie einem egal sein darf, das willst Du nicht lange dem Arduino-Platinchen zumuten…


Also, ich sehe als nächstes erstmal eine Festlegung auf eine Stromquelle. Außerdem denke ich, daß Du keine Not hast, den auf dem Uno verwendeten Regler für die Sensorversorgung zu nehmen. Ob externer Linearregler oder Schaltregler: sie sollten über den Prozessor schaltbar sein; auch das ginge mit dem internen nicht.

1 Like

Hmmm, sehe gerade zwei Möglichkeiten:

Ein (2A) Netzteil mit 5 V, das den Arduino per 5 V-pin oder USB füttert und parallel (nicht über den Arduino) ggf. per FET schaltbar die Heizungen der Sensoren bedient.

oder ein 7 V-Netzteil, das den Arduino über den Hohlstecker / oder Vin versorgt und an dem zusätzlich eine Abzweigung zu den Heizungen geht, die dann mit eine schaltbaren Spannungsregler oder -wandler (7 V – 5 V) die Heizungen versorgt.

[Ok, drei Möglichkeiten]
Oder zwei Netzteile, eines für den Arduino und eines für die Heizungen.

Die Säurekonzentration wollen wir nur während der Anwendung der AS messen und ggf. ein paar Tage vorher als baseline, daher weiß ich noch gar nicht, ob wir die Heizung unbedingt schalten müssen, oder die einfach die maximal 3 Wochen beim Nassenheider an läßt. Ich weiß auch noch nicht wie lange die vor einer Messung Aufheizen müssen, bzw. wie “schlimm” die Alterung bei Dauerbetrieb ist.

Der LinkIt fällt leider schon mal raus, der Arduino-Teil läuft auf 3,3 V

http://wiki.seeedstudio.com/LinkIt_Smart_7688_Duo/

MCU
Chipset: ATmega32U4
Core: Atmel AVR
Clock Speed: 8MHz
Working Voltage: 3.3V

Nein, wieso denn? Der ist weiter dabei:

Aus Deinem Sensor kommt doch ein Analogsignal, und solange Deine beteiligten Elektroniken die gleiche Masse teilen (also GND), ist ein Spannungsteiler komplett legitim. Nimm z.B. 30k / 47k, und es paßt an den 10-bit-ADC eines AVR, der bei 3,3V läuft.

5W (sechs Sensoren) drei Wochen lang angeschaltet bedeutet mehr als 2,5 kWh, diese Heizenergie führst Du dem Bien zu. Willst Du das wirklich ? Also, kann man ja machen, Wärme wirkt auch gegen Varroa, aber hier ging es ja nicht um Bienensauna. ;)

1 Like

Ja, die Wärmeentwicklung gefällt mir auch nicht! Vor allem hatte ich den Sensor gerade nach ein, zwei Tagen wieder angeschaltet und er brauchte mehrere Minuten bis er wieder von ca. 300 auf eine baseline von 110 runter ist (und der Wert fällt gerade immer noch)! Vor ein paar Tagen waren es ja 130, heute haben wir ggf. andere Temperaturen und eine andere Feuchtigkeit, aber die Justierung wird sicher (k)ein Spaß! Ich habe ihn aber auch noch nciht 24h “eingebrannt” vielleicht verbessert das dann auch diese Daten.

Zu den Figaro TGS-Sensoren gibt es die technical note General Information for TGS Sensors

The minimum period for preheating final assemblies would be 2 hours, but for best results it is strongly recommended that 1 day or more preheating be done.

Auch zu den Messwerten nach dem Einschalten sagen sie was:

As shown in Figure 7, all sensors exhibit a transient behavior referred to as “Initial Action” when stored unenergized and later energized in air. The Rs drops sharply for the first few seconds after energizing, regardless of the presence of gases, and then reaches a stable level according to the ambient atmosphere. The length of initial action depends on the atmospheric conditions during storage and length of storage and varies by sensor model.

In der Abb. 7 stabilisiert sich der Messwert nach ca. 1 Minute!

In diesem post bei stackexchange (zum MQ-5, das ist nicht “unser” Sensor) wird beschrieben, dass es nicht so recht klar ist was nun einmaliges “Einbrennen” und “Vorheiten” bei kontinuierlicher Messung mit Abschaltung der Heizung dazwischen ist.

one time only pre-heat and when you mean turning the sensor on to take a measurement.

Die Einschätzung zur “warm up” time:

About 5 minutes might be okay. I think that 2 minutes is definitely too short.

D.h. wenn wir in 5 Minuten-Abständen messen brauchen wir die Heizung nicht abschalten. Das war für den MQ-5, denke für den MQ-3 wird das nicht anders sein.

Der erste Versuch mit dem MQ-3 schaut schon mal nicht ganz schlecht aus. Ein paar Tropfen 60 %ige AS auf einem Wattepad schlagen an und erzeugen Werte bis 600, das könnte schon fast zu viel sein, wenn man bedenkt, dass das Maximum 1024 (10 bit) beim Arduino Uno ist, cool!

1 Like

Wenn, wie von @weef erwähnt, ein einfacher voltage divider reicht, um den MQ-3 auch mit einem 3,3 V-System zuverlässig auszulesen, könnte auch ein ESP32 als Microcontroller funktionieren.

Als board könnten wir den Feather Huzzah ESP32 verwenden

und dazu dieses Display das auch einr SD zur Zwischenspeicherung hätte:

Hier schon einmal ein kleines dashboard, das man für einen groben Überblick verwenden kann, im Betrieb oder für die Kalibrierung der Sensoren:

Alle sketches unter:

Ein Imker-Kollege hat etwas interessantes auf dem Apisticus-Tag in Münster entdeckt:

https://cdn.bee-my.world/books/deploy/beemyworld-heft.html

Dort gibt es den Prototypen einens “Tec frames”, ein breites Rähmchen, eher eine größere Box, u.a. mit verschiedenen Gas-Sensoren:

IMG_0294 IMG_0295

Wenn wir nicht die fertigen Breakouts verwenden, sondern den nackten Sensor kann die Empfindlichkeit auch über den verwendeten Widerstand angpasst werden, s. https://www.diyspacepk.com/mq3-gas-sensor-with-arduino/

Resistance value of MQ-3 is difference to various kinds and various concentration gases. So,When using this components, sensitivity adjustment is very necessary. We calibrate the detector for 0.4mg/L ( approximately 200ppm ) of Alcohol concentration in air and use value of Load resistance that (RL) about 220KΩ (100KΩ to 470 KΩ).

P.S.: Hatte heute mit Holger telefoniert (er ruft ab und an mal an :) und er meinte, es könnte ggf. auch funktionieren, wenn man den Heiz-Teil mit 5 V betreibt und den Sensor-Teil mit 3,3 V fährt, was hälst du davon?? Ginge nur mit eine nackten Sensor, da hier die beiden Stromkreisläufe getrennt sind, mit den breakouts nicht.

Ich bin etwas skeptisch, da das ja schon ein etwas komplexerer chemischer Prozess ist, wenn es im Prinzip aber nur ein Spannungsteiler ist, wäre es ja egal, ob der mit 3,3 V oder 5 V beschickt wird … nur die Platinchen, die ich schon bestellt habe bräuchte ich dann nicht mehr.

Aalso, ich muss den ADS1115 ja mit 5 V für Vdd versorgen, da bei Adafruit steht:

The absolute maximum analog input voltage is VDD + 0.3v. To avoid damage to the chip, do not attempt to measure voltages greater than VDD.

und unser MQ3-Signal könnte ja theoretisch 5 V haben (jedenfalls mehr als 3,3 V).

Level-Converter ist ja etwas tricky, da SDA bi-direktional ist und mit einer open drain-Schaltung geht auch nicht alles. Von Adafruit gibt es den BSS138, 4-channel I2C-safe Bi-directional Logic Level Converter, der sollte dafür funktionieren. Alternativ auch der SparkFun Logic Level Converter oder etwas Pegelwandler 4-Kanal von Watterott. Danke für den Hinweis @weef!

1 Like

1 Like

Schon vor der ersten Testmessung mit Ameisensäure (AS) habe ich eine handvoll Sensoren bestellt, die ggf. auch sensitiv für AS sein könnten. Hier die schon oben beschriebenen Sensoren

  • TGS822
  • MQ-3

und die “neuen”

  • MQ-2 (Rauch / LPG / Kohlenstoffmonoxid), in der weiteren Beschreibung steht dann auch “alcohol”, LPG ist vermutlich liquefied petroleum gas, Autogas
  • MQ-4 (Methan CNG), CNG steht übrigens für “compressed natural gas”, was compressed bedeutet??

diese beiden (nicht auf dem Foto) kamen schon mit breakout:

  • MQ-5 (LPG, i-butane, Methan, Alkohol, Wasserstoff)
  • MQ-135 (“Luftqualität”), “high sensitity to Ammonia, Sulfide and Benze steam”

Hier schon mit dem Sparkfun breakout. Ich habe mir die breakouts mal genauer angesehen und man kann mit denen doch die Versorgungsspannung für die Heizeinheit und den Sensor getrennt bespielen. Ich versuche das mal testweise, veilleicht könnte man sich dann den Aufwand für externen (5 V) ADC und level converter sparen.

@clemens:
Hi! gibt’s zu der Gas-Sensor-Thematik ein aktuelles update?
Ich selber arbeite seit Anfang September 2020 im Projekt BeeVar am IMSAS an der Uni Bremen. Dazu habe ich auch schon Tests mit Gas-Sensoren gemacht, in meinem Fall dem SGP30 der Fa. SENSIRION, verbaut auf dem Modul SVM30 zusammen mit einem Temperatur / Luftfeuchtigkeitssensor SHTC1.
Der Gas-Sensor reagiert auf H2 und Ethanol, scheint aber recht sensitiv zu sein und geht bei höheren Konzentrationen schon mal in die Begrenzung - wobei die Tests wärend einer Ameisensäurebehandlung noch ausstehen…
LG, Thomas Schweizer

1 Like

Hi @Thomas, cool, dass du auch hier bist @diren und @caro haben mir vor längerem schon vom AS-Projekt in Bremen erzählt.

Ich bin seit dem post oben leider nicht weiter gekommen. Die oben aufgeführten Sensoren haben den Vorteil, dass man mit einem Widerstand die Sensitivität einstellen kann, brauchen für die Heizung aber viel Energie und werden bei Dauermessungen vermutlich auch viel Wärme ins Bienenvolk eintragen. Weiter braucht es eine sehr lange Aufwärm oder gar “Einbrenn”-Phase, wäre natürlich cool, wenn man diese Nachteile alle nicht mehr hätte. Von den BMEs gibt es ja auch Varianten die Volatile Organic Compounds (VOCs) messen können. Wäre ggf. auch ein Kandidat.