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.
ich habe jetzt eine andere Diode angeschlossen und mit Osci gemessen... Kann man da "B1" hex erkennen?
Das sieht so aus als würde der Arbeitspunkt der Diode nicht stimmen.
homie schrieb: > Das sieht so aus als würde der Arbeitspunkt der Diode nicht > stimmen. Eine andere nehmen?
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...
Nur mal so nachgefragt: Es gibt doch fertige Leseköpfe für USB zu kaufen. Muss es ein Selbstbau sein?
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
Siehe: https://wiki.volkszaehler.org/hardware/controllers/ir-schreib-lesekopf https://github.com/GBert/openwrt-misc/tree/master/sml-snmp-agent
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)
:
Bearbeitet durch User
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.
Diese massiven Probleme bei knapp 40KHz sind mir zwar noch nicht aufgefallen aber es geht ja auch nur um die 9600Baud, die er sehen will.
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.
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?
@ 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: > Sieht nach Wackelkontakt oder so aus. Mach mal ein Bild von deinem > Aufbau. Ok Bild vom noch primitiven Aufbau im Anhang...
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.
hmm, habe im eagle nur Bottom, Pads und Vias selektiert. Ergebnis ist im Anhang. Da werden aber die Vias 1-16 (GRD) nicht verbunden...
Du musst vorher auf RATSNEST drücken, damit die Masseflächen berechnet werden. Links in der Menuleiste.
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?
Mit R1 von 680 Ohm statt 10k wie in dem Beitrag Beitrag "Re: DTZ541 mMe Datenlogger mit ESP (WEB-Sicht)" beschrieben klappt es nun, siehe Bild.. Maximalstrom durch den Phototransistor ist etwa 5 mA.
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
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.