Gaszaehler & Reedkontakt.
Gaszähler besitzen an der mechanischen Zählwalze einen Magnetstreifen, der einen Reedkontakt
zum Schalten bringt. Im Internet findet man viele Beispiele wie so eine Abtasteinrichtung
funktioniert.
Das hier vorgestellte Projekt „Webserver für den Gasverbrauch“ steht oder
fällt mit der Reedkontakt-Signalqualität. Es sind einige Vorversuche notwendig bevor man dieses
Projekt „anschiebt“. Es gibt einiges zu beachten: Position Reedkontakt, Prellen Reedkontakt,
lange Signalleitung (8 Meter), maximaler- und minimaler Durchfluss und stundenlanges Verweilen
des Reedkontakt-Signals im High-Zustand, weil die Zählwalze genau zwischen 9 auf 0 stoppt.
Hier wollte ich die Flinte schon ins Korn werfen, letztendlich hat es dann doch geklappt.
Lese weiter in diesem Kapitel.
Unterhalb der mit einem Magnetstreifen ausgerüsteten rotmarkierten Zählwalze befindet sich eine
rechteckförmige Aussparung. Mit einer Länge von 33mm, einer Breite von 13mm und einer Tiefe von 5mm.
Hier wird der Reedkontakt platziert.
Zum Einsatz kommt ein Glaskolben Reedkontakt, Schließer, 100 mA
für unter einem Euro. Dieser Reedkontakt wird auf einer 10mm x 25mm Lochrasterplatine aufgelötet und
mit einer flexiblen zweiadrigen Litze (geringen Querschnitt, wenig Eigengewicht) angeschlossen.
Als Nächstes muss eine Prüfeinrichtung gebaut werden. Ich habe einen Mikrokontroller Raspberry
Pi Pico und ein Display genommen. Der Reedkontakt wird am Mikrokontroller angeschlossen.
Die Impulse sollen gezählt werden. Noch habe ich keine Soft- und Hardware-Entprellung eingebaut!
Nun wird der Reedkontakt in die obengenannte Aussparung mittels Schaumstoffes und etwas Klebeband
fixiert. Die Heiß-Wasseraufbereitung der Gasheizung wird auf Desinfektionstemperatur gestellt,
so dass der Gaszähler zählt. Während dieser Phase wird die optimale Position für den Reedkontakt
eingestellt. Das Finden des optimalen Abtastpunktes braucht Zeit! Ist dieser Vorgang abgeschlossen,
wird der Reedkontakt endgültig mit Panzerband abgeklebt. Siehe Bild oben.
Nun vergleicht man das
Ergebnis auf dem Display des Mikrokontrollers mit der Anzeige des Gaszählers. Das Resultat ist
erschreckend! Das Display zeigt ein Vielfaches mehr an. Nicht nur das! Es werden auch Impulse
registriert obwohl der Gaszähler nicht zählt. Wie man damit umgeht wird weiter unten in diesem
Kapitel behandelt.
Vorher betrachten wir noch die Eigenschaften des Zählers und die Besonderheiten
von Erdgas. Der Gaszähler vom Typ BK-G4-MT kann einen maximalen Durchfluss von sechs Kubikmeter
Gas pro Stunde (6m³/h) zählen. Weiterhin besitzt er eine Auflösung von 0,01m³ Gas pro Impuls.
Das bedeutet: 0,01m³ Gas dividiert durch 6m³ Gas pro Stunde multipliziert mit 3600 Sekunden pro
Stunde entspricht alle 6 Sekunden einen Impuls als maximalen Durchsatz. Hinweis! Man muss für das
Einlesen der Impulse mittels Reedkontakt kein GPIO-Interrupt in der Steuerung verwenden! Ganz
im Gegenteil!
Zum Thema Erdgas nur eine kurze Vorstellung: Der Haupanteil von Erdgas ist Methan.
Das Volumen von Erdgas wird in Kubikmeter angegeben. Bezogen auf die Einheiten der Masse entspricht
das in Abhängigkeit der Dichte 0,67 Kilogramm Gas oder 1,59 Liter Gas (flüssig!).
Reedkontakt-Schließer prellen. Undefiniertes Schalten kann auch durch Resonanzfrequenz entstehen.
Besuche auch diese Seite!
Weiterhin habe
ich installationsbedingt eine lange Signalleitung (8 Meter zum Raspberry Pi). Hier kann es zu
Rauschen durch Impedanzkopplung kommen. Der Einsatz von Schaltnetzteilen ist auch ein Thema.
Die obige Tiefpass-Schaltung ist die erste Maßnahme für ein störungsfreies Signal.
Mehr über dieses Thema findest du
hier.
Die rote Leuchtdiode in Reihe mit einem 680 Ohm Widerstand dient zur optischen Kontrolle. Das
bietet sich an, weil diese Einheit direkt neben den Gaszähler montiert ist. Ein Telefonkabel mit
zweimal paarverseilten Adern dient als Signalleitung.
Die Gaszufuhr stoppt genau zwischen Ziffer Neun und Null an der Zählwalze des Gaszählers.
Der Magnetstreifen aktiviert den Reedkontakt. Das Eingangssignal für den Raspberry Pi geht
von Null Volt auf 3,3 Volt und verweilt dort. Das obige Bild zeigt diese Situation. Aus meiner
Sicht kann die Software hier nichts mehr kompensieren! Ein RC-Glied (Hardware) ist erforderlich.
Python-Funktion: „reedSwitch()“, Auszug aus der Datei: tools.py, wird später noch behandelt.
In Zeile 235! Zählt die Software weniger als die Anzeige des Gaszählers, muss die Zeit verkürzt
werden. Umgekehrt, die Zeit vergrößern.
Alle sechs Sekunden liefert der Gaszähler bei maximalem Durchfluss einen Impuls. Das entspricht
ein High-Signal von etwa 1700 Millisekunden am Reedkontakt. Gemessen. Bei minimalem Durchfluss
messe ich ein High-Signal von bis zu 3400 Millisekunden.
Weiterhin, wie oben schon
erwähnt, kann es auch zu einem längeren High-Signal kommen, wenn die Gaszufuhr zwischenzeitlich
stoppt. Die Software muss all diese Gegebenheiten berücksichtigen.
Die Hardware-Endprellung und die Software-Entprellung ist keine „doppelt gemoppelte“
Angelegenheit!
Ich habe mich für ein Schrittschaltwerk entschlossen. Von Mitte Januar 2023 bis Ende Mai
2023 kam es zu keiner Abweichung zwischen Gaszähleranzeige und dem Raspberry Pi Projekt.
August 2023! Doch eine Korrektur erforderlich!
Änderung in Zeile 235, nach einer Betriebszeit von drei Monaten: Verweilzeit von 0,3 Sekunden
auf 0,15 Sekunden reduziert. Grund: Sporadisch aktiviert die Gasheizung eine thermische
Desinfektion für das Warmwasser. Erhitzen des gesamten Leitungsnetzes auf 71°C für drei
Minuten (Legionellen). Hier kam es zu Fehlzählungen!
Python Datei: reed_contact_Thread.py
Reedkontakt, beziehungsweise das Einlesen des Gasverbrauchs ist ein Python-Thread, eigenständiges
Parallelprogramm.
In Zeile 30, wird der Gasverbrauch eingelesen. In Zeile 34, wird der
Tage-Gasverbrauch zurückgesetzt (0 Uhr). In Zeile 35, wird jede Stunde eine CSV-Datei mit neuen
Daten gefüllt.