[mit Happy End] Kromschröder BK G4 von 1993 auslesen

Begonnen von andies, 06 Mai 2017, 18:01:47

Vorheriges Thema - Nächstes Thema

andies

Ich bin fast am aufgeben. Ich habe einen Kromschröder BK G4 Gaszähler, der keinen Einschub für ein Reedrelais enthält. Auf der 6 ist ein kleines Silberplättchen abgedruckt. Ich will das Ding optisch auslesen und habe mir bereits eine grandiose Konstruktion gebastelt, siehe Foto unten. Dazu kam eine IR-Diode zum Einsatz (Kodenshi Corp, SG128IR von conrad), die an GPIO 0 eines Raspberry Zero angeschlossen wird und dann das Reflexionssignal abgreifen soll. So weit, so gut. Nun fangen die Probleme an.

Die Transmitter-Diode wird mit 5V gespeist und sendet schön. Die Empfangsdiode meldet sich auch, allerdings ist die Voltzahl problematisch: Der Signalpegel schwankt zwischen 2 V ("LOW", das ich nicht lache) und 2.5V ("HIGH", ok, das ist high). Am RPi steht natürlich ständig "1111111". Ich weiß nicht, wie ich das "Signal" so verändern kann, dass es im RPi verständlich wird.

Zudem habe ich bis jetzt noch nicht prüfen können, ob das Silberplättchen überhaupt ein Signal verursacht oder gar nicht messbar ist.

Hat hier jemand eine Idee, wie ich weitermachen kann? Die Gasag hat bisher auf den Wunsch, das Gerät zu tauschen, nicht reagiert (ich bleibe aber dran).
FHEM 6.1 auf RaspPi3 (Raspbian:  6.1.21-v8+; Perl: v5.32.1)
SIGNALduino (433 MHz) und HM-UART (868 MHz), Sonoff, Blitzwolf, Somfy RTS, CAME-Gartentor, Volkszähler, Keyence-Sensor, Homematic-Sensoren und -thermostat, Ferraris-Zähler für Wasseruhr, Openlink-Nachbau Viessmann

andies

#1
PS Die Schaltung.
FHEM 6.1 auf RaspPi3 (Raspbian:  6.1.21-v8+; Perl: v5.32.1)
SIGNALduino (433 MHz) und HM-UART (868 MHz), Sonoff, Blitzwolf, Somfy RTS, CAME-Gartentor, Volkszähler, Keyence-Sensor, Homematic-Sensoren und -thermostat, Ferraris-Zähler für Wasseruhr, Openlink-Nachbau Viessmann

Pfriemler

Sowas sieht in der Theorie immer schön aus, macht aber praktisch Probleme. Schon die Wahl des Vorwiderstands für den Fototransistor ist kritisch, aber bei 2-2.5V in Ruhe biste eigentlich schon optimal. Aber: je nachdem wie gut das Plättchen reflektiert werden die Schwankungen im Zehntelvoltbereich liegen.
Hier wäre es sinnvoll, auf einen A/D zu setzen, der das Signal richtig misst, und einen Algorithmus, der aus den Schwankungen den "Nullpunkt" und die Reflexionen selbst ermittelt. Für einen Arduino ein Klacks, eigentlich müsste das sogar mit einem ESP8266 gehen. 
Praktisch wäre ein sog. Ferrariszählersensor (für Stromzähler mit Drehscheibe) auch das Richtige für Dich.
Jm2c.

Gesendet von meinem SM-G900FD mit Tapatalk

"Änd're nie in fhem.cfg, denn das tut hier allen weh!" *** Wheezy@Raspi(3), HMWLAN+HMUART, CUL868(SlowRF) für FHT+KS+FS20, miniCUL433, Rademacher DuoFern *** "... kaum macht man es richtig, funktioniert es ..."

andies

Udo hat so was ja auch im Angebot... Aber muss ich da ebenfalls im 1/10V-Bereich messen? Also einen Arduino o.Ä. vorschalten?
FHEM 6.1 auf RaspPi3 (Raspbian:  6.1.21-v8+; Perl: v5.32.1)
SIGNALduino (433 MHz) und HM-UART (868 MHz), Sonoff, Blitzwolf, Somfy RTS, CAME-Gartentor, Volkszähler, Keyence-Sensor, Homematic-Sensoren und -thermostat, Ferraris-Zähler für Wasseruhr, Openlink-Nachbau Viessmann

andies

OK, ich lese schon: MCP3008 usw. Also wieder basteln  ;D
FHEM 6.1 auf RaspPi3 (Raspbian:  6.1.21-v8+; Perl: v5.32.1)
SIGNALduino (433 MHz) und HM-UART (868 MHz), Sonoff, Blitzwolf, Somfy RTS, CAME-Gartentor, Volkszähler, Keyence-Sensor, Homematic-Sensoren und -thermostat, Ferraris-Zähler für Wasseruhr, Openlink-Nachbau Viessmann

andies

Ich habe mal mit einem digitalen Multimeter gemessen. Die gute Nachricht: Es geht. Die schlechte: Die Spannung fällt von 3,20V auf 3,16V, allerdings wirklich nur dann, wenn die silberne Sechs durchläuft.

Wenn man das Messgerät allerdings um etwa 2mm verschiebt (oder dranstößt, was wahrscheinlicher sein dürfte), ist der Spannungsabfall nur noch auf 3,18V. Also das ist wirklich minimal. Mal schauen, ob ich das hinbekomme. Wenn ja, melde ich mich mal wieder.

PS Drehscheibe habe ich nicht.
FHEM 6.1 auf RaspPi3 (Raspbian:  6.1.21-v8+; Perl: v5.32.1)
SIGNALduino (433 MHz) und HM-UART (868 MHz), Sonoff, Blitzwolf, Somfy RTS, CAME-Gartentor, Volkszähler, Keyence-Sensor, Homematic-Sensoren und -thermostat, Ferraris-Zähler für Wasseruhr, Openlink-Nachbau Viessmann

Klaus0815

Ich habe auch ewig mit Reedkontakten, Hallsensor,  IR-LED usw herumprobiert, alles nicht sehr zufriedenzustellend....
(Mein Zähler hatte allerdings eine Aussparung für den Reedkontakt)

Letztendlich läuft es jetzt seit 2 Jahren mit einem Magnetfeldsensor (+Arduino) zuverlässig

Versuch doch mal mit Handy und entsprechender App, ob sich das Magnetfeld bei einem Durchlauf ändert?
Das Handy zeigt dir das Magnetfeld als X, Y und Z-Vektor an, wenn sich einer ausreichend ändert hast gewonnen




Pfriemler

Zitat von: andies am 06 Mai 2017, 20:05:50
Die Spannung fällt von 3,20V auf 3,16V, allerdings wirklich nur dann, wenn die silberne Sechs durchläuft.
Das ist arg wenig.

ZitatPS Drehscheibe habe ich nicht.
Natürlich nicht. Aber die Sensoren für Stromzähler sind auf minimale Reflexionsunterschiede optimiert.
"Änd're nie in fhem.cfg, denn das tut hier allen weh!" *** Wheezy@Raspi(3), HMWLAN+HMUART, CUL868(SlowRF) für FHT+KS+FS20, miniCUL433, Rademacher DuoFern *** "... kaum macht man es richtig, funktioniert es ..."

andies

Ich habe vorhin mal das Handy rangehalten und nix gesehen. Allerdings kam es auf die genaue Haltung an - wo sind denn da die Sensoren (iPhone 6) und Messe ich die silberne 6 oder die internen Scheiben?


Gesendet von iPad mit Tapatalk Pro
FHEM 6.1 auf RaspPi3 (Raspbian:  6.1.21-v8+; Perl: v5.32.1)
SIGNALduino (433 MHz) und HM-UART (868 MHz), Sonoff, Blitzwolf, Somfy RTS, CAME-Gartentor, Volkszähler, Keyence-Sensor, Homematic-Sensoren und -thermostat, Ferraris-Zähler für Wasseruhr, Openlink-Nachbau Viessmann

Klaus0815

ich habe kein Iphone :-)

Normalerweise ist der Magnet hinter der silbernen Reflektionsstelle
Die Position des Handys ist unkritisch, falls ein Magnet verbaut ist siehst Du die Änderung sofort


andies

#10
Ein (etwas frustriertes) update zu meinem Kromschröder. Also die nbb Netzgesellschaft will 153 Euro für die Installation eines lesefähigen Gaszählers haben; die gute Nachricht ist: da ist die MWSt schon drin. Das lehne ich schon mal aus Prinzip ab.

Also habe ich weiter gebastelt. Es war ja so, dass ich mit meinem digitalen Multimeter sehr deutliche Spannungsschwankungen gesehen habe, auch wenn die wirklich gering waren. Dann habe ich mir einfach einen AC-Wandler besorgt, MCP3201. Da legt man diese Eingangsspannung dran und daneben eine Referenzspannung (die vom RPi) und das Gerät gibt einem den Quotienten aus beiden zurück. Versorgungsspannung ist 5V, weil dann das Gerät wohl stabiler liefert.

Nun steht der Gaszähler gerade, also habe ich mal etwa eine Minute aufgezeichnet. Das Bild ist im Anhang (jeder Datenpunkt eine Aufzeichnung, siehe Code unten). Damit kann ich doch nichts anfangen?! Angeblich schwankt die Eingangsspannung, die beim digitalen Voltmeter immer über 3V lag, beständig und zufällig zwischen null und 3,3V. Irgendwas stimmt da nicht. Der Chip wird nicht hinüber sein, oder?   

#!/usr/bin/env python3
import sys
import gpiozero
import time
while True:
  f = open('/home/pi/gas.log', "a")
  with gpiozero.MCP3201() as Nummer:
    f.write(str(Nummer.value) + '\n')
  f.close()
  time.sleep(0.1)


PS Insbesondere appelliere ich an Pfriemler: "geht nich gips nich" ;-)
FHEM 6.1 auf RaspPi3 (Raspbian:  6.1.21-v8+; Perl: v5.32.1)
SIGNALduino (433 MHz) und HM-UART (868 MHz), Sonoff, Blitzwolf, Somfy RTS, CAME-Gartentor, Volkszähler, Keyence-Sensor, Homematic-Sensoren und -thermostat, Ferraris-Zähler für Wasseruhr, Openlink-Nachbau Viessmann

andies

#11
Getreu dem Motto von Pfriemler machen wir also weiter  8)
Ich habe im Netz ein Stück Python-Code gefunden, der völlig andere und auch konsistente Ergebnisse liefert, mithin ist gpiozero fehlerhaft (das ist natürlich ärgerlich, wenn man das erst so merkt). Wenn ich dieses Programm (von mir minimal verändert) laufen lasse
import RPi.GPIO as GPIO
from time import sleep

# name pins
clock = 11
miso = 9
cs = 8

# set up pins
GPIO.setmode(GPIO.BCM)
GPIO.setup(clock, GPIO.OUT)
GPIO.setup(miso,GPIO.IN)
GPIO.setup(cs,GPIO.OUT)

# bring clock and cs high
GPIO.output(clock,True)
GPIO.output(cs,True)

# begin loop to print a stream of data
try:

  while True:
    # bring cs low
    GPIO.output(cs,False)

    # create a string to store the bits
    data = str()

    # begin loop to take in data
    for i in range(16):

        # bring clock low
        GPIO.output(clock, False)

        # read miso pin
        if GPIO.input(miso):
            data += "1"
        else:
            data += "0"

        # bring clock high
        GPIO.output(clock, True)

    # remove the first 4 bits from the data
    data = data.replace(' ','')[4:15]

    # convert the data from binary to decimal
    data = str(int(data,2)*(3.3/2045))
   
    # print data, mit nur zwei Nachkommastellen
    print (data[0:4])

    # bring cs high
    GPIO.output(cs, True)

    #short sleep
    sleep(.1)
   
except: #aufräumen
    GPIO.cleanup()
    print ("\nGPIO cleanup finished")
 
dann kriege ich stabile 3.17V bis 3.3V als Rückmeldung. Also setze ich da mal fort.
FHEM 6.1 auf RaspPi3 (Raspbian:  6.1.21-v8+; Perl: v5.32.1)
SIGNALduino (433 MHz) und HM-UART (868 MHz), Sonoff, Blitzwolf, Somfy RTS, CAME-Gartentor, Volkszähler, Keyence-Sensor, Homematic-Sensoren und -thermostat, Ferraris-Zähler für Wasseruhr, Openlink-Nachbau Viessmann

Pfriemler

Ich hab's wohl gelesen, aber diesbezüglich ratlos. Bin mehr der Analogelektroniker. Aber mach weiter so!
"Änd're nie in fhem.cfg, denn das tut hier allen weh!" *** Wheezy@Raspi(3), HMWLAN+HMUART, CUL868(SlowRF) für FHT+KS+FS20, miniCUL433, Rademacher DuoFern *** "... kaum macht man es richtig, funktioniert es ..."

andies

#13
OK, mit dem neuen Code kann ich sinnvollere Werte produzieren. Die habe ich normiert, so dass sie zwischen 0 und 2050 liegen. Aber das System ist zu instabil. Zuerst hatte ich bei drei Umläufen des Zählers die Daten im 0.1-Sekundentakt eingelesen und gespeichert. Wenn das ein ideales System wäre, hätte ich insgesamt an ca 9% der Werte einen niedrige Zahl (immer dann, wenn die silberne 6 da ist) und in 91% der Werte (alle anderen zehn Ziffern) eine hohe Zahl. Das sah aber nicht so aus, die Werte schwanken zwischen 1900 und 2050 und vor allem nicht im Verhältnis 1:10.

Also habe ich gewartet, bis der Zähler an der 1 feststand - und da ist nichts silbernes etc dran. Also habe ich ca drei Minuten aufgezeichnet, alles mit Stillstand. Bei einem idealen System wäre immer dieselbe Zahl erschienen. Hier nicht. Zudem schwanken die Werte bei Stillstand genau so stark wie beim Durchgang der silbernen 6! Das sieht man im Häufigkeitsdiagramm unten. Also leider ist es so, dass ich auf diese Weise nichts erfassen kann - die Störung bei Stillstand ist größer als der Effekt beim Durchgang des silbernen Plättchens. Mist.

Ich vermute, dass das an einer nicht konstanten Referenz-Spannung am MCP liegt. Die Zahl, die ich kriege, wird ja errechnet aus dem Quotienten aus Pegelspannung an der Diode dividiert durch Referenzspannung (mal 2048 und davon der ganze Teil).  Wenn nun die Referenzspannung zu stark schwankt, was sie vermutlich tut, ist der Quotient Mist.

Ich werde mal versuchen, aus den 5V mit einem Spannungsteiler eine Referenzspannung zu konstruieren. Vielleicht geht das besser. Mit dem digitalen Messgerät konnte ich ja zwar gering, aber deutlich einen Spannungseinbruch an der silbernen 6 sehen.
FHEM 6.1 auf RaspPi3 (Raspbian:  6.1.21-v8+; Perl: v5.32.1)
SIGNALduino (433 MHz) und HM-UART (868 MHz), Sonoff, Blitzwolf, Somfy RTS, CAME-Gartentor, Volkszähler, Keyence-Sensor, Homematic-Sensoren und -thermostat, Ferraris-Zähler für Wasseruhr, Openlink-Nachbau Viessmann

andies

PS Hier noch einmal das Häufigkeitsdiagramm bei insgesamt drei Umläufen. Da ist also dreimal eine silberne 6 drin. Nur wo versteckt sie sich ;-)
FHEM 6.1 auf RaspPi3 (Raspbian:  6.1.21-v8+; Perl: v5.32.1)
SIGNALduino (433 MHz) und HM-UART (868 MHz), Sonoff, Blitzwolf, Somfy RTS, CAME-Gartentor, Volkszähler, Keyence-Sensor, Homematic-Sensoren und -thermostat, Ferraris-Zähler für Wasseruhr, Openlink-Nachbau Viessmann