Smartmeter - MT681 - Fehler beim IR-Lesen

Gast #5253588
Lesenswert?

Hallo,

ich nutze einen Smartmeter ISKRA MT681. Dieses Modell verfügt über eine 
Infrarotschnittstelle mit der die Zählerstände ausgelesen werden (SMS 
Protokoll). Die Datenübertragung erfolgt asynchron Seriell mit 9600, 8 
Bit, ohne Parity (N) und einem Stopbit (1).

Ich nutze eine VS1838B IR Diode, die laut Datenblatt 
Versorgungsspannung: DC 2,7 V – 5,5 V und Frequenz: 37,9 KHz hat.

Ich habe einen Logicanalyser angeschlossen. Die Daten kommen etwa jede 
Sekunde, was ok ist, ich bekomme aber jedes mal anstatt 
Start-Escape-Sequenz "B1 B1 B1" nur "Müll" (Siehe Anhang)...

Hat jemand eine Idee? Vielleicht ist die IR-Diode nicht geeignet?
Angehängte Dateien:
Gast #5254948
Lesenswert?

Homer schrieb:
> So wird das nix!
> Das sind keine sauberen Rechtecke

Also 9600bd = 1/9600s = 0,10417ms = 104us

Raster ist auf H = 100us eingestellt.

Ich habe einen Kursor eingerichtet. Zwischen linken (Ax) und rechten 
Linie (Bx) sind es genau 312us (Bx - Ax)

Ax -         Signal angelegt - Startbit: 1
Es dauert ungefähr 95us bis die volle Pegel erreicht ist

Ax + 104us - Signal getrennt -          Bit0: 0
Ax + 208us - Signal weiterhin fallend - Bit1: 0
Ax + 312us - Signal angelegt -          Bit2: 1
Ax + 416us - Signal getrennt -          Bit3: 0
Ax + 520us - Signal weiterhin fallend - Bit4: 0
Ax + 624us - Signal angelegt -          Bit5: 1
Ax + 728us - Signal weiterhin 1       - Bit6: 1
Ax + 832us - Signal weiterhin 1       - Bit7: 1
Ax + 936us - Signal getrennt          - Stopbit: 0

Byte 1 ist also: 00100111 = 43dec = 27hex

Es ist leider nicht B1 laut Protokol...

1) Kann jemand meine Berechnung bestätigen?
2) Warum dauert es so lange (etwa 90us) um den Pegel zu heben/senken? 
Was kann ich dagegen tun? Andere Diode? Welche?
3) Warum ist der erste Byte bei mir nicht wie im SML Protokoll B1?

Ich komme irgenwie nicht weiter...
Angehängte Dateien:
Gast #5254996
Lesenswert?

Ok, bin Schritt weiter gekommen :-)

Ich habe manuell etwa 50 Bits ausgelesen mit der folgenden Ergebniss:

RZ = Ruhezustand
SB = Startbit
ST = Stopbit
B1,B2, = Bits

RZ SB B1 B2 B3 B4 B5 B6 B7 B8 ST
1  0  0  1  0  0  1  1  1  0  1 ...

und dann gesehen, dass nach der invertieren der Bits ich den gewünschten 
Ergebniss bekomme:

0 1 10110001 0
  1 10110001 0
  1 10110001 0
  1 10110001 0
  1 00000001 0

Also Super!!!: B1 B1 B1 B1 01 ...

Jetzt ist nur die Frage, wie ich saubere Rechtecke automatisch 
bekomme... Entweder eine superschnelle Diode, oder es programmatisch 
lösen...
Gast #5255896
Lesenswert?

Peter schrieb:
> Nur mal so nachgefragt: Es gibt doch fertige
> Leseköpfe für USB zu kaufen. Muss es ein Selbstbau sein?

Die kosten aber etwa 40Euro und der Lerneffekt ist nicht da... 
Darüberhinaus brauche ich eine TTL Version.


Mountain schrieb:
> https://wiki.volkszaehler.org/hardware/controllers/ir-schreib-lesekopf

ich habe mir den Link angeschaut. Ich habe momentan den 74LVC1G17DBVR 
nicht. Was könnte man sonst benutzen? Kann man es mit z.B.: NE555 
ersetzen?
#5255941
Lesenswert?

Bei Photodioden benutzt mnan sehr gern Transimpedanzverstärker (TIA), 
denn die bewirken eine I-U-Umwandlung. Der Photostrom wird also in eine 
Spannung gewandelt. Und zwar so, daß die Photodiode immer im 
Kurzschlußbetrieb läuft, also keinen Spannungshub sieht (Du hast 
dagegegen oben die Spannung der PD gemessen, was immer langsam ist). Das 
führt zu deutlich höherer Arbeitsfrequenz, und wird Dir dann auch 
einigermaßen saubere Rechteckimpulse liefern (bei den 9600Baud einfach 
realisierbar). Brauchst also nur einen OPV mit ein bißchen 
Ausenbeschaltung drumherum.
Aber für erste Tests kannste auch einfach einen R von paar 10kOhm der PD 
parallel schalten, und das Oszi in einen kleineeren Spannungsbereich 
umschalten, dann sollten die Impulse auch schon besser aussehen (wenn es 
nicht gerade eine großflächige Diode mit viel Sperrschichtkapazität ist)
Gast #5256036
Lesenswert?

Jens G. schrieb:
> Bei Photodioden benutzt mnan sehr gern Transimpedanzverstärker
> (TIA),
> denn die bewirken eine I-U-Umwandlung. Der Photostrom wird also in eine
> Spannung gewandelt. Und zwar so, daß die Photodiode immer im
> Kurzschlußbetrieb läuft, also keinen Spannungshub sieht (Du hast
> dagegegen oben die Spannung der PD gemessen, was immer langsam ist). Das
> führt zu deutlich höherer Arbeitsfrequenz, und wird Dir dann auch
> einigermaßen saubere Rechteckimpulse liefern (bei den 9600Baud einfach
> realisierbar). Brauchst also nur einen OPV mit ein bißchen
> Ausenbeschaltung drumherum.
> Aber für erste Tests kannste auch einfach einen R von paar 10kOhm der PD
> parallel schalten, und das Oszi in einen kleineeren Spannungsbereich
> umschalten, dann sollten die Impulse auch schon besser aussehen (wenn es
> nicht gerade eine großflächige Diode mit viel Sperrschichtkapazität ist)

Ich habe mit einem 56kohm versucht und es sieht wirklich besser aus. 
Könnte ich als OPV einen LM358P nehmen?
Gast #5256314
Lesenswert?

Puh man braucht doch nur die Spannung über einem vernünftig 
dimensionierten Vorwiderstand zu nehmen, um bei kurzer Entfernung vom 
IR-Emitter ein Rechtecksignal zu bekommen. Schon mal was von 
"Opto-Koppler" gehört?
#5256331
Lesenswert?

Übliche Allerweltsoptokoppler haben mit knapp 40kHz schon massiv 
Probleme - ganz so einfach, wie du es hier darstellst ist es also nicht.

Es gibt eigentlich immer mehrere Lösungen, wahrscheinlich bekommt man es 
auch nur mit 1 oder 2 passenden Widerständen hin. Bleibt aber frickelig. 
Exemplar- und temperaturabhängig, Abstand, Winkel etc.

Die beste Lösung (Kurzschlussbetrieb mit OP) wurde schon genannt, und 
einen LM358 sollte doch jeder rumliegen haben.
Gast #5258144
Lesenswert?

H.Joachim S. schrieb:
> Übliche Allerweltsoptokoppler haben mit knapp 40kHz schon massiv
> Probleme - ganz so einfach, wie du es hier darstellst ist es also nicht.
>
> Es gibt eigentlich immer mehrere Lösungen, wahrscheinlich bekommt man es
> auch nur mit 1 oder 2 passenden Widerständen hin. Bleibt aber frickelig.
> Exemplar- und temperaturabhängig, Abstand, Winkel etc.
>
> Die beste Lösung (Kurzschlussbetrieb mit OP) wurde schon genannt, und
> einen LM358 sollte doch jeder rumliegen haben.

Könnte jemand erläutern, wie die beste Lösung aufgebaut werden sollte? 
Wie soll die Diode mit dem OP LM358 verbunden werden?
#5258168
Lesenswert?

@ Smartmeter (Gast)

>Könnte jemand erläutern, wie die beste Lösung aufgebaut werden sollte?
>Wie soll die Diode mit dem OP LM358 verbunden werden?

So.

https://www.mikrocontroller.net/articles/Lichtsensor_/_Helligkeitssensor#Konstantstromquelle_mit_Transimpedanzverst.C3.A4rker

Achtung, da fehlt noch die Stromversorgung des OPVs! Und 100nF an 
GND/VCC könnten auch hier nicht schaden.

Aber dann braucht man eine echte IR-Photodiode, keinen intelligenten 
Empfänger! Es gehen nahezu alle gängigen Photodioden, allerdings sind 
die mit einem IR-Filter im Vorteil, daß man das Umgebungslicht nicht so 
sehr abschirmen muss.

Z.B. BPW41N, BPV 10NF, BPW82 etc.
#5258173
Lesenswert?

Wobei bei 9600 Baud ein PhotoTransistor + Arbeitswiderstand ausreichend 
ist. Was ist an der Lösung nicht OK? Man kann praktisch JEDES beliebige 
Gatter als Puffer verwenden.

https://wiki.volkszaehler.org/hardware/controllers/ir-schreib-lesekopf-ttl-ausgang

Und selbst der Schaltplan läßt sich noch vereinfachen. C1, T3 und R4 
kann man einsparen und direkt auf Gatter gehen. Für C3 reichen 100nF. 
Man kann einen einfachen 74HC14 nehmen, da hat man auch gleich 6 Gatter 
im IC, auch wenn man nur 2 braucht.
Gast #5258473
Lesenswert?

Falk B. schrieb:
> So.
>
> 
https://www.mikrocontroller.net/articles/Lichtsensor_/_Helligkeitssensor#Konstantstromquelle_mit_Transimpedanzverst.C3.A4rker

Es sieht jetzt mit einem lm358, 1MOhm Transistor und 30pF viel besser 
aus. Vor allem die Spannungbereich hat sich deutlich verbessert. Ich 
würde jedoch noch die Flanken verbessern, da gerade statt 10110001=B1 
eine 10100011=A3 gelesen wird. Soll ich die Kapazizät weiter verringern?
Angehängte Dateien:
#5258482
Lesenswert?

@ Smartmeter (Gast)

>https://www.mikrocontroller.net/articles/Lichtsens...

>Es sieht jetzt mit einem lm358, 1MOhm Transistor

Wie meinen? 1MOhm Transistor?

>und 30pF viel besser
>aus. Vor allem die Spannungbereich hat sich deutlich verbessert.

Hmm, der OPV geht wahrscheinlich in die Sättigung, weil der Widerstand 
zu groß ist bzw. die Photodiode zuviel Strom liefert.

> Ich
>würde jedoch noch die Flanken verbessern, da gerade statt 10110001=B1
>eine 10100011=A3 gelesen wird. Soll ich die Kapazizät weiter verringern?

Erstmal den Widerstand. Denn der LM358 ist bei +5V als 
Versorgungsspannung nur bis ca. 3,5V normal arbeitsfähig. Also den 
Widerstand soweit senken, daß der HIGH-Pegel bis auf 3-3,5V geht. Dann 
hast du abver ein Problem mit einem nachfolgenden 5V CMOS-Eingang, der 
will meist ein gutes Stück über 3,5V für HIGH sehen (incl. Störabstand). 
Zum Testen kann man ja mal die Versorgungsspannung des LM358 auf 9V 
erhöhen (9V Block) Später kann man den OPV gegen einen TS912 tauschen, 
der kann Rail to Rail und bringt saubere 5V am Ausgang bei 5V 
Versorgung.

Aber auch 30pF sind bei 1MOhm eher zuviel, dort kommen eher 1-10pF zum 
Zug. Mit etwas Glück geht es auch ohne den Kondensator, weil der LM358 
von Hause aus recht gutmütg ist. Probier's aus. Wenn schwingt siehst du 
das auf deinem Oszi.

Bei 9600 Baud mit ~100us/Bit sollte man auf ca. 10us oder weniger 
Anstiegszeit kommen. Gerade die steigende Flanke ist bei dir noch viel 
zu lahm.
Gast #5259411
Lesenswert?

Wie groß soll der Widerstand sein? Geht es um den Widerstand Parallel 
zur 30pf
Kondensator, die zwischen OP Output und OP + angeschlossen sind?
Hmmm. Momentan kämpfe ich warum auch immer an verschiedenen Fronten. Auf 
einmal muss ich die Diode sehr genau positionieren, da sonst kein Signal 
erkannt wird... ich dachte nicht, dass das ganze so schweirig wird...
#5259419
Lesenswert?

@smartmeter (Gast)

>Wie groß soll der Widerstand sein?

Kleiner als die jetzigen 1M. Sagen wir 470k oder 220k.

> Geht es um den Widerstand Parallel zur 30pf

Wir reden von dieser Schaltung.

https://www.mikrocontroller.net/wikifiles/6/68/Photo_diode_tia.png

Dort heißt der R1

>Kondensator, die zwischen OP Output und OP + angeschlossen sind?

Der heißt C1

>Hmmm. Momentan kämpfe ich warum auch immer an verschiedenen Fronten. Auf
>einmal muss ich die Diode sehr genau positionieren, da sonst kein Signal
>erkannt wird... ich dachte nicht, dass das ganze so schweirig wird...

Weil du das Rad neu erfinden willst. Der Volkszähler ist doch komplett 
und sehr einfach aufgebaut. Nimm den und dessen Bauteile. UNd selbst das 
geht NOCH einfacher ohne Leistungseinbußen.

Beitrag "Re: Smartmeter - MT681 - Fehler beim IR-Lesen"
Gast #5259539
Lesenswert?

ich habe mit etwas kleineren Widerstand probiert (erstes Bild) und dann 
habe ich Kondensator rausgenommen (2-tes Bild).

Leider keine Verbesserung.

Falk B. schrieb:
> Weil du das Rad neu erfinden willst. Der Volkszähler ist doch komplett
> und sehr einfach aufgebaut. Nimm den und dessen Bauteile. UNd selbst das
> geht NOCH einfacher ohne Leistungseinbußen.

Ich habe die Teile bereits bestellt, die Lieferung wird aber noch 
dauern. Ich wollte zwischendurch ein Lösung mit dem Teilen, die mir zur 
Verfügung stehen basteln, es scheint aber mit lm358 nicht wie erwartet 
funktionieren.
Angehängte Dateien:
#5259546
Lesenswert?

@ Smartmeter (Gast)

>ich habe mit etwas kleineren Widerstand probiert

Wie groß ist der? (Mensch Leute, denkt ihr mal 1 Miunte mit, daß die 
"Anderen" nicht neben euch sitzen und hellsehen können?)

> (erstes Bild) und dann
>habe ich Kondensator rausgenommen (2-tes Bild).

Warum sehe ich da 3 Spannungspegel? Was hast du da gemacht?

>Verfügung stehen basteln, es scheint aber mit lm358 nicht wie erwartet
>funktionieren.

Es gibt Dutzende Gründe, warum das so nicht funktioniert.
Gast #5259569
Lesenswert?

Falk B. schrieb:
> Wie groß ist der? (Mensch Leute, denkt ihr mal 1 Miunte mit, daß die
> "Anderen" nicht neben euch sitzen und hellsehen können?)

720KOhm

Falk B. schrieb:
> Warum sehe ich da 3 Spannungspegel? Was hast du da gemacht?

frage mich auch... ich habe eigentlich nur den Kondensator rausgnommen. 
Es könnte aber auch sein, dass die ir-diode nicht ausreichend Spannung 
liefert... ich versuche die Spannung der Diode auf Kanal2 zu messen...
#5259595
Lesenswert?

@Smartmeter (Gast)

>> Warum sehe ich da 3 Spannungspegel? Was hast du da gemacht?

>frage mich auch...

8-0

>ich habe eigentlich nur den Kondensator rausgnommen.

Sieht nach Wackelkontakt oder so aus. Mach mal ein Bild von deinem 
Aufbau.

>Es könnte aber auch sein, dass die ir-diode nicht ausreichend Spannung
>liefert...

Die liefert Strom, keine Spannung, denn sie wird im Kurzschluß 
betrieben.

>ich versuche die Spannung der Diode auf Kanal2 zu messen...

Da wirst du rein gar nichts messen.
Gast #5277650
Lesenswert?

Falk B. schrieb:
> Volkszähler 2.0, einfacher geht es nicht mehr.

Danke.

Ich habe jetzt Deine Schaltung umgesetzt, die Flanken sehen jetzt 
perfekt aus. RS232 Decoder liefert 00011011, es sollte aber 10110001 = 
B1 liefern...

ich würde es so interpretieren. Decoder von Rigol kommt durcheinander, 
da es einen invertierten Signal erwartet. Wenn ich alle Bits invertiere, 
dann bekomme ich

Ruhezustand Startbit Bits     Stopbit
0           1        10110001 0

dann ist es ok. Kann man das Schaltung so verändern, dass es invertiert 
ist?
Angehängte Dateien:
#5277665
Lesenswert?

@Smartmeter (Gast)

>ich würde es so interpretieren. Decoder von Rigol kommt durcheinander,
>da es einen invertierten Signal erwartet. Wenn ich alle Bits invertiere,
>dann bekomme ich

>Ruhezustand Startbit Bits     Stopbit
>0           1        10110001 0

Ist invertiert, der Ruhezustand ist immer das Stopbit = 1 und das 
Startbit ist immer 0. Denn an der 1/0 Flanke erkennt der Empfänger den 
Zeichenanfang.

>dann ist es ok. Kann man das Schaltung so verändern, dass es invertiert
>ist?

Sicher, einfach R1 und PT1 vertauschen, dabei aber die Polarität von PT1 
beachten! Der Kollektor muss an VCC. Ich hab die Polarität aber 1:1 vom 
Volkszähler übernommen. Komisch.
#5277844
Lesenswert?

@ Sam (Gast)

>Ok, super, danke.

Also geht es jetzt?

>kannst Du mir noch TXD Schaltung erläutern. Warum wurde 74HC14D 2 mal
>kaskadiert?

Damit sich die Invertierung aufhebt. Kann man auch anders machen, das 
ist nur eine von vielen Möglichkeiten.

> Würde da ein Transistor nicht ausreichen?

Ja, aber der "Trick" meiner Version ist, daß man nur ein IC braucht und 
nicht noch andere Bauteile. Wahrscheinlich ist auch die Polarität des 
Senders falsch, weil die Seite vom Volkszähler das noch mal extern 
invertiert.

Ich hab mal gegoogelt. So wie ich es sehe, ist der optische Ruhepegel = 
Licht AUS!!! D.h. die Treiber MÜSSEN invertieren. Siehe Anhang.

Die ultimative Sparvariante findet man auch im Anhang, wenn man das 
direkt an einen Mikrocontroller anklemmen will. Dann sollte man aber 
nicht zu lange Kabel zwischen Sensorkopf und Mikrocontroller haben, denn 
das ist besonders für den Empfänger ungünstig (Kabelkapazität, 
Einkopplung von Störungen). Ich sag mal 1m sollte noch OK sein.
Angehängte Dateien:
Gast #5278144
Lesenswert?

Falk B. schrieb:
> Also geht es jetzt?

Ja es läuft super! Fürs senden werde ich die einfachere Lösung nehmen 
und fürs empangen die mit 74HC14D. Die weitere Pins des 74HC14D nutze 
ich dann fürs Gaszähler, der hat auf dem kleinsten Rad unter Ziffer 6 
eine Reflexfolie und ich habe IR Reflective Optical Sensor...

Danke für Deine Unterstützung, ich habe viel gelernt und endlich mal 
Funktionsweise meines Osziloscop gennengelernt und sinnvoll benutzt.
Angehängte Dateien:
Gast #5288945
Lesenswert?

Hallo Mark,

Die Schaltung, die Du gemacht hast (Volkszaehler_2.0.sch). Kann man es 
mit eagle ausdrucken? Es ist nur vorderseite, oder? GRD muss ich auf der 
anderen Seite mit draht überbrücken?
#5288968
Lesenswert?

@Smartmeter (Gast)

>Die Schaltung, die Du gemacht hast (Volkszaehler_2.0.sch). Kann man es
>mit eagle ausdrucken?

Sicher.

> Es ist nur vorderseite, oder?

Nein, das Layout ist zweiseitig.

>GRD muss ich auf der
>anderen Seite mit draht überbrücken?

Naja, kann man machen. Dann musst du aber alle Kontakte verbinden, die 
auf GND gehen.
#6631857
Lesenswert?

Ich hab die Schaltung mal nachgebaut, nur den Empfangsteil und genau die 
angegebenen Bauteile. Ziel: Die IR-Diode von einem eHZ empfangen.
Aber: Der SFH reagiert zu träge.

Mein Testimpuls kommt mit 9600 Baud 8E1 "0x55" (also im Prinzip 
Rechteck) von einem UART mit 5V, Vorwiderstand und einer SFH 4346 IR Led 
(Blauer Kanal) und ist direkt auf den Phototransistor SFH 309 FA 
gerichtet.

Roter Kanal ist im Bild 1 am Eingang vom 74HC14D gemessen, Bild 2 am 
Ausgang.

Wenn ich R1 verkleinere wird es zwar minimal besser aber eine halbe 
Bitzeit Verzögerung ist einfach zuviel. Ist die Schaltung ungeeignet?
Angehängte Dateien:

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren