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?
VS1838B ist keine IR-Diode, sondern ein IR-Empfänger, der die
Trägerfreqznenz filtert und das aufmodulierte Signal demoduliert,
gedacht für Empfang von z.B. Signalen einer TV-Fernbedienung.
Smartmeter schrieb:> ich habe jetzt eine andere Diode angeschlossen und mit Osci gemessen...> Kann man da "B1" hex erkennen?
IrDA würde bei 9600 Baud mit 3/16 Pulsen arbeiten. Nur beim "0" Bit auf
dem UAART wird ein Puls generiert.
Da müsste man mal etwas rein zoomen und die Pulslänge messen, aber es
könnte ungefähr hinhauen.
Es ist nicht so schwer, mit einem Fototransistor aus der Kiste ein
sauberes Rechtecksignal auf den Schirm zu bekommen, von dem man dann
etwas erkennen kann.
batman schrieb:> Es ist nicht so schwer, mit einem Fototransistor aus der Kiste ein> sauberes Rechtecksignal auf den Schirm zu bekommen, von dem man dann> etwas erkennen kann.
hier eine Vergröserung...
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...
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...
Mach mal einen kleinen Schaltplan , wie du die Diode angeschlossen hast.
Mit einem IR-Phototransistor und nem 10k Widerstand habe ich die IR
Fernbedienung von meinem Sohn für sein Auto überprüft. Damit hatte ich
am Rigol ein sauberes Rechteck Signal.
Gruß JackFrost
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?
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)
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?
Wenn du NPN Transistoren zuhause hast, dann kannst du auch den
Empfangsteil eines Openv Optolinks nachbauen.
https://github.com/openv/openv/wiki/LAN-Ethernet-&-USB-Kombiadapter (
unten rechts )
Mit was willst du dann einlesen ? Wenn dein uC schon Schmidt-Trigger
Eimgänhe hat, dann kannst du den davor weglassen.
Gruß JackFrost
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?
Ü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.
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?
@ 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.
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.
@ 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.
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...
@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"
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.
@ 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.
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...
@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.
Falk B. schrieb:> Volkszähler 2.0, einfacher geht es nicht mehr.
Ich habe das ganze an ein Labornetzteil angeschlossen und ein Video
gedreht, wie sich der Pegel bei veränderter Spannung verhält...
https://youtu.be/NzEGs8dL4hs
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?
@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.
Falk B. schrieb:> icher, einfach R1 und PT1 vertauschen, dabei aber die Polarität von PT1> beachten!
Ok, super, danke.
kannst Du mir noch TXD Schaltung erläutern. Warum wurde 74HC14D 2 mal
kaskadiert? Würde da ein Transistor nicht ausreichen? Letzendlich wird
da ein Arduino / Raspberry senden.
@ 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.
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.
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?
@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.
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?
Hallo zusammen,
da es bei Volkszähler keine Platinen gerade gibt, habe in der Bucht 3
Teile mal bestellt. Sind schon bestückt. Und nein ich bin nicht der
Verkäufer.
https://www.ebay.de/itm/313525835802
VG Bernhard