Hallo zusammen,
zu meinem Projekt:
ich habe vor den Wasserstand und die Temperatur unseres Gartenbrunnens
zu überwachen. Dabei handelt es sich um einen selbstgebohrten Brunnen
welcher in einem 125mm (5") Rohr ausgeführt etwa 9m tief ist. Nun möchte
ich im Jahresverlauf den Wasserstand überwachen sowie die
Grundwassertemperatur. nice-to-have wäre noch in höherer Zeitlicher
Auflösung das Nachlaufen des Wasserstandes im Rohr während und nach dem
Pumpvorgang. Dazu habe ich auch schon Ideen, aber das kommt später.
Mein Grundsätzliche Idee war eigentlich einen ESP8266 (Wemos D1 mini
oder ESP-01s) mit einem MS5803 (Absolutdrucksensos im Wasser) sowie
einem BME280 (Drucksensor an der Oberfläche) zu kombinieren und die
entsprechenden Differenzen zur Erfassung des Wasserstandes zu verwenden.
Erste Hürde war die Kabellänge des Sensors, da I2C nicht für so lange
Kabel gedacht ist, musste ich einen P82B715 Bus Extender verwenden bzw.
2 davon. Nun habe ich aber gar nicht darauf geachtet, dass der
erstaunlich viel Strom verbraucht. In meiner Testschaltung (angelehnt an
diesen Artikel:
http://www.raspberry-pi-geek.de/Magazin/2017/02/I2C-Reichweite-steigern-mit-dem-P82B715/(offset)/2)
verbraucht im Deepsleep der ESP (Wemos D1 mini) 0.02mA, der I2C-Teil
verbrät etwa 27mA. Für Batteriebetrieb wäre das etwas viel. Es wäre zwar
Strom vorhanden, jedoch würde ich gerne darauf verzichten, wenn es geht.
Nun dachte ich daran den I2C-Teil im DeepSleep vom ESP abzuschalten,
z.B. über einen Optokoppler oder ähnliches, leider fehlt mir dazu aber
die Erfahrung. Macht das Sinn? Gibt es bessere Lösungen? Würde es
genügen nur die 3.3V-Leitung abzuschalten oder müsste auch GND raus?
Danke schon mal!
Nach etwas Recherche bin ich auf den 2N2222 Transistor gestoßen, würde
sowas mit entsprechendem Vorwiederstand an der 3.3v - Leitung der
I2C-Schaltung
funktionieren? Ich würe dann den Transistor über einen GPIO steuern, der
natürlich nur High ist, wenn der ESP8266 auch eingeschaltet ist.
> Nach etwas Recherche bin ich auf den 2N2222 Transistor gestoßen> dass der erstaunlich viel Strom verbraucht
Ich glaub du solltest das ganze besser lassen.
Ansonsten schau dir den IRLML6402 an.
WiFi ist fuer Stromsparen eigentlich wirklich nix.
Deepsleep hin oder her...
rrhan schrieb:> entsprechenden Differenzen zur Erfassung des Wasserstandes zu verwenden.
Barometrische Höhenformel, oder wie willst du den Wasserstand messen?
Normalerweise misst man den Druck am Boden einer Zisterne. Bei einem
Brunnen ist der Boden (hoffentlich) etwas weiter weg von der
Eroberfläche.
Du müsstest den Sensor also auf der Wasseroberfläche schwimmen lassen.
Kann aber auch sein, dass ich deine Beschreibung falsch verstehe.
Die Wasserstandshöhe kann man dann besser optisch oder per Ultaschall
messen. Bei Ultraschall gibt es aber das Problem der Reflexionen an der
Rohrwand.
Das Abschaltproblem dürfte zu Anfang erst mal nebensächlich sein.
Der Absolutdrucksensor wird am Boden des Brunnen versenkt, der Sensor
misst die darüberliegende Wassersäule, der BME280 misst den Luftdruck an
der Erdoberfläche, dadurch kann ich die Wetterbedingten
Druckschwankungen aus der Luft rausrechnen. Auch wenn das nicht sehr
viel ausmacht, erhöht es doch etwas die Genauigkeit.
Der Stromverbrauch vom WIFI ist eigentlich gelöst. Bei nichtbenutzen der
Pumpe hatte ich an Intervalle im Stundenbereich gedacht. Da sollte der
Akku mindestens ein Jahr durchhalten. Bei Funk-Alternativen (433,868
oder LoRaWAN) bräuchte ich jeweils noch die Basis, die ich aktuell nicht
habe. Ich sehe keinen Grund von WIFI wegzugehen.
Den IRLML6402 schaue ich mir mal an. Sieht schonmal vielversprechend
aus.
rrhan schrieb:> Nun dachte ich daran den I2C-Teil im DeepSleep vom ESP abzuschalten,> z.B. über einen Optokoppler oder ähnliches, leider fehlt mir dazu aber> die Erfahrung.
Warum sollte ein Optokoppler keinen Strom benötigen?
An was für eine Schaltung hattest du dabei gedacht?
rrhan schrieb:> Nach etwas Recherche bin ich auf den 2N2222 Transistor gestoßen ...
Das waren dann wohl historische Dokumente aus dem vorigen Jahrhundert
;-)
Warum keinen LLevel MOSFETs?
rrhan schrieb:> Auch wenn das nicht sehr viel ausmacht, ...
Täusche dich da nicht.
Der Unterschied zwischen einem anständigen Tiefdruckgebiet (980hPa) und
einem satten Hoch (1030hPa) entspricht einer Wassersäule von ca. 50
Zentimetern. Der Unterschied der Extremwerte des vorigen Jahrhunderts
für Deutland entsprechen etwas 110 Zentimetern Wassersäule (lt.
Wikipedia).
rrhan schrieb:> Der Absolutdrucksensor wird am Boden des Brunnen versenkt, der Sensor> misst die darüberliegende Wassersäule, der BME280 misst den Luftdruck an> der Erdoberfläche, dadurch kann ich die Wetterbedingten> Druckschwankungen aus der Luft rausrechnen. Auch wenn das nicht sehr> viel ausmacht, erhöht es doch etwas die Genauigkeit.
Ich hatte die 9m überlesen (ich bin von einem "bodenlosen" Brunnen
ausgegangen).
Für 9m ist I²C bei 400kHz eher schlecht zu gebrauchen.
Der Bus wurde für den geräteintern Datenaustausch entwickelt.
Es könnte gehen, muss es aber nicht (zuverlässig).
Bei den Zisternenbetreibern wird auch gerne die Methode Luft einzuperlen
verwendet. Dafür braucht man eine Luftpumpe und einen
Differenzdrucksensor.
Hat aber eigentlich nichts mit deinem Problem zu tun.
Verbraucher, die miteinander kommunizieren brauchen das gleiche
Masse-Potential ("GND"), da sich auf dieses i.d.R. der Signalpegel
bezieht.
Würde man die Massen mit Hilfe eines Transistors trennen, gäbe es
Probleme.
Daher verwendet man sog. Highside-Switches - im einfachsten Fall ein
PNP- oder P-Kanal-Transistor.
Der 2N2222 ist dafür nicht geeignet, da es ein NPN ist.
Wolfgang schrieb:> Warum sollte ein Optokoppler keinen Strom benötigen?
Zumindest wenn er nicht beschaltet ist (worum es geht) wird er wohl
keinen Strom verbrauchen.
STK500-BEsitzer schrieb:> Daher verwendet man sog. Highside-Switches - im einfachsten Fall ein> PNP- oder P-Kanal-Transistor.
Ich denke das verfolge ich mal, habe mir einen Satz Transistoren
bestellt.
STK500-BEsitzer schrieb:> Für 9m ist I²C bei 400kHz eher schlecht zu gebrauchen.
Mit den P82B715-Bus-Extendern habe ich bereits eine Länge von ~50m
problemlos getestet. Im Moment läuft seid einem Tag über das geplante 9m
(CAT-7) Kabel alle 5 Sekunden eine Messung, kann keine Schwierigkeiten
feststellen. SDA habe ich mit VCC und SCL mit GND jeweils im Paar
angeschlossen.
Ich glaube meine Schaltung funktioniert nun. Habe mir nur leider bei
meinen Tests das WEMOS D1 Mini geschrottet :( der ESP darauf
funktioniert zwar noch, aber die USB-Schnittstelle scheint es zerstört
zu haben.
Jedenfalls sieht die Schaltung nun so aus (grob vereinfacht)
GPIO -> 4.7k Rb -> Basis des BC557 PNP-Transistor -> Sensor -> GND
Der GPIO wird nun nur zur Messung geschaltet. Die Messungen sind auch
plausibel, und die Stromaufnahme im Deepsleep wieder im normalen
Bereich.
Gibt es bedenken bei der Schaltung?
Vor vielen Jahren hatten wir die Füllstandsmessung in Wasser- und
Ölbehältern einfach so realisiert dass die Kapazität zwischen zwei
isolierten Drähten gemessen wurde. Das passierte ganz simpel über einen
Oszillator in kapazitiver Dreipunktschaltung (1 Transistor und ein paar
Bauelemente). Dessen Rückkopplung und damit seine Stromaufnahme änderte
sich mit dem Füllstand, dieses Gleichstromsignal konnte ähnlich wie bei
4-20 mA Signalen auch über viele Meter übertragen werden.
Billig und robust, funktionierte jahrelang zuverlässig. Einmaliger
Abgleich des Füllstandes an den nichtlinearen Verlauf ist natürlich
erforderlich.
was i2c angeht:
Den bus kann man auch sehr sehr langsam betreiben, je langsamer, umso
höher natürlich die mögliche Kabellänge ohne extender Oder sonstwas.
Außerdem macht es Sinn, sich die Werte der pull-ups anzusehen,
vielleicht sind die ja zu hoch.
Vermutlich macht es in der Praxis sowieso Sinn, sich in jedem Durchgang
je 2 Messungen zu holen und die Werte auf Plausibilität zu prüfen, um
Übertragungsfehler zu erkennen.
Dunno.. schrieb:> Den bus kann man auch sehr sehr langsam betreiben, je langsamer, umso> höher natürlich die mögliche Kabellänge ohne extender Oder sonstwas.
Das hatte ich auch überlegt, aber jetzt habe ich schon alles
zusammengelötet und weil es funktioniert lasse ich es erstmal so. Läuft
zuverlässig mit 400khz.
Dunno.. schrieb:> Vermutlich macht es in der Praxis sowieso Sinn, sich in jedem Durchgang> je 2 Messungen zu holen und die Werte auf Plausibilität zu prüfen, um> Übertragungsfehler zu erkennen.
Das ist eine gute Idee, ich denke das werde ich auch so implementieren.
Jetzt muss ich nur noch auf die BME280 warten ... diese Chinaware dauert
immer so ewig :(
Achso und noch eine Frage zur Elektrovergussmasse, was hält denn
dauerhaft unter Wasser dicht? Kann ich das hier nehmen:
https://www.amazon.de/Vergussmasse-Elektro-Gie%C3%9Fharz-Transparent-Elektroverguss/dp/B07LGGYN35/ref=sr_1_6?__mk_de_DE=%C3%85M%C3%85%C5%BD%C3%95%C3%91&keywords=elektrovergussmasse&qid=1571727703&sr=8-6&th=1
Die Temperaturmessung des Grundwassers ist nach meiner Erfahrung
überflüssig. Da ändert sich im Jahresverlauf nix.
Hier sinds aus 7m Tiefe immer konstant 7°C - egal ob Sommer oder Winter.
Lutz S. schrieb:> Vor vielen Jahren hatten wir die Füllstandsmessung in Wasser- und> Ölbehältern einfach so realisiert dass die Kapazität zwischen zwei> isolierten Drähten gemessen wurde. Das passierte ganz simpel über einen> Oszillator in kapazitiver Dreipunktschaltung (1 Transistor und ein paar> Bauelemente). Dessen Rückkopplung und damit seine Stromaufnahme änderte> sich mit dem Füllstand, dieses Gleichstromsignal konnte ähnlich wie bei> 4-20 mA Signalen auch über viele Meter übertragen werden.>> Billig und robust, funktionierte jahrelang zuverlässig. Einmaliger> Abgleich des Füllstandes an den nichtlinearen Verlauf ist natürlich> erforderlich.
Ich stelle mir das jetzt so vor, dass zwei Drähte parallel zueinander
bis zum Grund verlaufen. Mit höherem Wasserstand erhöht sich auch die
Kapazität?
Ist das nicht ziemlich ungenau? Der Abstand der beiden Drähte müsste
immer identisch sein? Ich wüsste auch gerade nicht so genau wie ich das
Kalibrieren könnte.
Matthias S. schrieb:> Die Temperaturmessung des Grundwassers ist nach meiner Erfahrung> überflüssig. Da ändert sich im Jahresverlauf nix.> Hier sinds aus 7m Tiefe immer konstant 7°C - egal ob Sommer oder Winter.
Werde ich dann sehen, theoretisch müsste Sie sich die Temperatur in der
Tiefe nämlich ändern. Hängt aber sicherlich auch vom Standort ab. Mir
ist das für mein zukünfigtes Projekt wichtig den Verlauf zu kennen.
Lutz S. schrieb:> Vor vielen Jahren hatten wir die Füllstandsmessung in Wasser- und> Ölbehältern einfach so realisiert dass die Kapazität zwischen zwei> isolierten Drähten gemessen wurde.
Heutzutage nimmt man einen MC (z.B. ATtiny25), der die Kapazität digital
mißt, z.B. mit dem ADC. Dabei wird das Verhältnis der internen
S&H-Kapazität zur externen Kapazität gemessen, was sehr genau ist.
Als Sensor kann man Flachkabel nehmen, z.B. Lautsprecherkabel. Führt man
das Ende wieder nach oben, braucht man unten keinen wasserdichten
Abschluß.
Sinkt der Wasserspiegel, bleibt etwas Wasser am Kabel hängen, d.h. es
wird ein zu hoher Pegel gemessen. Man muß daher etwas warten. Ein
Problem kann nach längerer Zeit auch Bewuchs und Verschmutzung des
Kabels werden.
Die Daten können über die UART oder Pulsmodulation wie bei IR-FBs
gesendet werden.
rrhan schrieb:> Ist das nicht ziemlich ungenau? Der Abstand der beiden Drähte müsste> immer identisch sein?
Nein, das Wasser ist ja nicht das Dieelektrikum, sondern das wird durch
die Isolation der Drähte gebildet. Und die ist schon recht konstant in
ihrer Stärke.