Forum: Mikrocontroller und Digitale Elektronik Impulse vom Wärmemengenzähler über Optokoppler kommen nicht an


von Paul R. (paulmichael85)


Angehängte Dateien:

Lesenswert?

Hallo,

ich stehe vor einem Rätsel und hoffe auf etwas Input.
Ich habe einen Wärmemengenzähler (Sontex Superstatic 789) mit 
Impulsausgang (OpenDrain 500ms, max 35V DC).

Daran habe ich einen Optokoppler angeschlossen und auf der anderen Seite 
einen ESP32 mit Tasmota. Einen PullUp habe ich dort nicht (hat der ESP32 
wohl intern?!). Zum Test hatte ich einen externen 10 kOhm angehangen, 
aber das hat auch keine Änderungen gebracht (GPIO 25 auf 3,3V)

Ziehe ich das den PIN "SIG" manuell auf Masse, dann kommen die Impulse 
auf der anderen Seite an. Ich bilde mir ein, dass beim Counter auch ab 
und an ein Impuls gezählt wird aber da kann ich auch falsch liegen.

Der Wärmemengenzähler gibt laut Datenblatt immer einen Impuls aus (kann 
man nichts einstellen).

Ich vermute nun einen Fehler in meinem Aufbau. Zum Verständnis, habe ich 
mit meinem Laienhaften Fritzing Kenntnissen was gemalt :)


Gruß Paul

von Obelix X. (obelix)


Lesenswert?

Paul R. schrieb:
> Einen PullUp habe ich dort nicht (hat der ESP32
> wohl intern?!).

Ist der auch aktiviert? Wenn unsicher : Mal einen extern ran hängen.

Was sagt dein Logic-Analizer oder Oszi am Optokopplerausgang?

von Michael B. (laberkopp)


Lesenswert?

Paul R. schrieb:
> Einen PullUp habe ich dort nicht (hat der ESP32 wohl intern?)

So viel Ahnungslosigkeit und du wundest dich  warum es nicht geht ?

Mach halt mal 10k dran.

von Falk B. (falk)


Lesenswert?

Paul R. schrieb:
> Hallo,
>
> ich stehe vor einem Rätsel und hoffe auf etwas Input.
> Ich habe einen Wärmemengenzähler (Sontex Superstatic 789) mit
> Impulsausgang (OpenDrain 500ms, max 35V DC).
>
> Daran habe ich einen Optokoppler angeschlossen

Was komplett sinnlos ist, denn beide Seiten haben Masseverbindung.

> Ich vermute nun einen Fehler in meinem Aufbau. Zum Verständnis, habe ich
> mit meinem Laienhaften Fritzing Kenntnissen was gemalt :)

Möglicherweise ist der Open Drain Ausgang auch eher schwach und kann den 
Optokoppler nicht ansteuern. Braucht auch keine. Ein einfacher 10k 
Pull-Up Widerstand gegen 3,3V reicht! Dann kann man SIG direkt an den 
Mikrocontroller anschließen.

von Sebastian R. (sebastian_r569)


Lesenswert?

Jep, interne Pullups müssen proaktiv eingeschaltet werden, die sind 
nicht von Haus aus aktiv.

Und das schöne am Open-Drain-Ausgang ist, dass man sich den Optokoppler 
sparen kann. Einfach einen Pullup auf 3.3V an den Ausgang und ab geht's!

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Angehängte Dateien:

Lesenswert?

Paul R. schrieb:
> Ich vermute nun einen Fehler in meinem Aufbau.
Da kann man ganz einfach Gewissheit bekommen: weil die Schaltung an sich 
ja völlig statisch funktionieren muss, dann nimm ein Multimeter und 
messe die Pegel an den Signalleitungen und am µC-Eingang. Wenn da Pegel 
irgendwo "zwischedrin" auftreten, dann ist irgendwas faul.

Aber weil der Wärmezähler sowieso galvanisch getrennt von einer Batterie 
versorgt wird und links und rechts vom OK sowieso die selbe Masse ist: 
wozu dann einen OK?

Ich würde das so machen:
1
Zähler
2
                 ________µC
3
          .-----|Ve 3V3
4
          |     |
5
          1k    |
6
          |     |  
7
OD -------o-----| In  
8
                | 
9
GND ------------| GND
10
                |__________

Falk B. schrieb:
> Möglicherweise ist der Open Drain Ausgang auch eher schwach
Der kann bis zu 25mA.

: Bearbeitet durch Moderator
von Dietrich L. (dietrichl)


Lesenswert?

Michael B. schrieb:
> Mach halt mal 10k dran.

Das hat er doch schon gemacht:

Paul R. schrieb:
> Zum Test hatte ich einen externen 10 kOhm angehangen,
> aber das hat auch keine Änderungen gebracht (GPIO 25 auf 3,3V)

Michael B. schrieb:
> So viel Ahnungslosigkeit und du wundest dich  warum es nicht geht ?

Ahnungslosigkeit vorwerfen aber nicht richtig lesen finde ich auch nicht 
so toll..

von Paul R. (paulmichael85)


Lesenswert?

Danke euch erst einmal. Ich teste es mal mit den direkten PullUp

von Falk B. (falk)


Lesenswert?

Lothar M. schrieb:
>> Möglicherweise ist der Open Drain Ausgang auch eher schwach
> Der kann bis zu 25mA.

Vielleicht hat er den Anschluss verpolt.

: Bearbeitet durch User
von Otto K. (opto_pussy)


Lesenswert?

Vielleicht hat der Impulsausgang einen PNP Transistor mit Open 
Kollektorausgang und die LED vom Optokoppler muss gegen GND geschaltet 
werden. Außerdem kommen an Pin 20 vom ESP32 keine 5 Volt raus. Im 
Gegenteil, es muss eine Versorgungsspannung von 5V daran angeschlossen 
werden!

Eine Impulslänge von 500 Millisekunden ließe sich mit einer normalen LED 
im sichtbaren Bereich leicht am Impulsaugang prüfen.

: Bearbeitet durch User
von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Falk B. schrieb:
> Vielleicht hat er den Anschluss verpolt.
Das könnte man mit einem Multimeter messen, da braucht es nicht mal 
ein Oszi dafür. Wobei man sinnvollerweise tatsächlich ein Oszi nehmen 
würde, um gleich noch die Signalintegrität (Pegel,  Pulsdauer, Flanken) 
zu kontrollieren.

Otto K. schrieb:
> Eine Impulslänge von 500 Millisekunden ließe sich mit einer normalen LED
> im sichtbaren Bereich leicht am Impulsaugang prüfen.
Mit anderen Worten: das "Problem" hier ist im Grunde kein nennenswertes. 
Tausend Wege führen ans Ziel.

von Paul R. (paulmichael85)


Lesenswert?

Moin,
Ein Oszi habe ich leider nicht. Mit dem Multimeter ist es auch schwer zu 
messen. Aktuell erhalte ich vielleicht einen Impuls am Tag (wenn 
überhaupt) aktuell läuft nur warmwasser und keine Heizung.

Mit dem 1k PullUP auf 3,3V hat aber nicht funktioniert.
Der Impuls (scheinbar heute Nacht irgendwann) kam nicht an am Counter.

Im Handbuch den Sontex ist beschrieben, das die Impulsausgänge immer an 
sind. Einstellen kann man da nichts.

Den Optokoppler hatte ich deswegen, da ich den OpenDrain erst mit 24V 
versorgen wollte und der ESP kann da ja nicht direkt ab. Über einen 
Spannugsteiler wäre es vielleicht auch gegangen aber den Optokoppler 
hatte ich da.

: Bearbeitet durch User
von Rainer W. (rawi)


Lesenswert?

Otto K. schrieb:
> Vielleicht hat der Impulsausgang einen PNP Transistor mit Open
> Kollektorausgang und die LED vom Optokoppler muss gegen GND geschaltet
> werden

Der Optokoppler stammt von Paul. Da muss gar nichts gegen Gnd geschaltet 
werden, wenn man das nicht möchte.

Paul R. schrieb:
> Den Optokoppler hatte ich deswegen, da ich den OpenDrain erst mit 24V
> versorgen wollte ...

Die IR-LED eines Optokopplers besitzt eine Vorwärtsspannung von um die 
1,2V. Was willst du da mit 24V rumfummeln, wenn du die freie Wahl hast.

Warum schaltest du nicht ein Anzeige-LED in Serie zur Optokoppler-LED? 
Ein Puls von 500ms ist gut wahrnehmbar. Den Vorwiderstand müsstest du 
entsprechend anpassen.

Falk B. schrieb:
> Möglicherweise ist der Open Drain Ausgang auch eher schwach und kann den
> Optokoppler nicht ansteuern.

Die im Datenblatt des Zählers angegebenen 25mA sollten doch für einen 
PC817, der wesentlich weniger als 1mA schalten soll, mehr als 
ausreichend sein.

: Bearbeitet durch User
von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Paul R. schrieb:
> Den Optokoppler hatte ich deswegen, da ich den OpenDrain erst mit 24V
> versorgen wollte und der ESP kann da ja nicht direkt ab.
Ein OD-Augang muss nicht "versorgt" werden. Sondern der Mosfet schaltet 
entweder gegen GND durch, oder er sperrt.

> Über einen Spannugsteiler wäre es vielleicht auch gegangen aber den
> Optokoppler hatte ich da.
Du brauchst keinen Spanungsteiler. Dein OK ist genauso wie der 
Impulsgeberausgang ein OpenKollektor-Ausgang. Der OK braucht also auf 
der Ansteuerseite einen Vorwiderstand für die LED, und aus der 
Ausgangsseite exakt die selbe Hardware wie der Impulsausgang: einen 
Pullup.

Ich habe dir die Schaltung aufgezeichnet. Da ist kein Spannungsteiler 
drin, sondern nur der Pullup (den der OK sowieso auch braucht). Dieser 
OK ist hier absolut fehl am Platz. Er bringt nur unötige Freiheitsgrade 
und für Laien unerwartete Dimensionierungs- und Alterungsprobleme ins 
Spiel. Denn dann muss man auf einmal mit Stromübertragunsfaktoren und 
Lastwiderständen und LED-Strömen herumrechnen und alle Eventualitäten 
und Toleranzen berücksichtigen.

Und das ohne Notwendigkeit und ohne jeglichen Nutzen, denn der 
Wärmemengenzähler ist eh' schon ein galvanisch getrenntes , weil 
batteriebetriebenes Gerät. Wozu sollte dann eine weitere galvanische 
Trennung durch einen OK noch nötig sein?

Paul R. schrieb:
> Aktuell erhalte ich vielleicht einen Impuls am Tag (wenn überhaupt)
> aktuell läuft nur warmwasser und keine Heizung.
Du weißt also derzeit noch nicht mal, ob da überhaupt was rauskommt, 
oder ob du den Ausgang inzwischen "irgendwie kaputtgebastelt" hat?

In diesem Fall würde ich (wenn ich nicht ein Oszi hätte) erstmal sowas 
mit einem Relais in Selbsthaltung machen:
1
Zähler          Relais TE 5-1462037-9
2
OD --------o------.  
3
           |      |
4
          / .... [/]        .---47R---.
5
           |      '---------o----|<---o-- 5V
6
           |                    LED rot  
7
GND -------o----------------------------- GND
Dann reicht 1 Puls, um das Relais in Selbsthaltung zu bringen. Und wenn 
dann am nächsten Morgen der Zähler weitergezählt hat, aber die LED noch 
dunkel ist, dann ist der Ausgang kaputt.

: Bearbeitet durch Moderator
von Rolf (rolf22)


Lesenswert?

Lothar M. schrieb:
> Und das ohne Notwendigkeit und ohne jeglichen Nutzen, denn der
> Wärmemengenzähler ist eh' schon ein galvanisch getrenntes , weil
> batteriebetriebenes Gerät. Wozu sollte dann eine weitere galvanische
> Trennung durch einen OK noch nötig sein?

Technisch nötig ist die Trennung nicht. Wenn man aber ein fremdes Gerät 
nicht beschädigen will, ist so eine Trennung immer eine gute Idee. Das 
fremde Gerät prüfen und ggf. reparieren, das kann oder will man nicht 
müssen, insbesondere, wenn man – wie offensichtlich der OP – wenig 
Ahnung hat.

Auch wenn man eine gemeinsame Masse hat, schützt ein Optokoppler vor 
diversen Ereignissen.

> Du weißt also derzeit noch nicht mal, (...) ob du den Ausgang inzwischen
> "irgendwie kaputtgebastelt" hat?

Siehst du, nun sagst du es selbst: Kaputtbasteln ist immer möglich.

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Rolf schrieb:
> Wenn man aber ein fremdes Gerät nicht beschädigen will, ist so eine
> Trennung immer eine gute Idee.
Aber nur dann, wenn man auch eine wirklich potentialgetrennte 
Versorgung für diesen OD-Ausgang hat. Wenn das nicht der Fall ist, dann 
führt so ein OK nur zu zusätzlicher Verwirrung.

> Siehst du, nun sagst du es selbst: Kaputtbasteln ist immer möglich.
Wenn es so ist, dann wurde das Messgerät mit einem OK kaputtgebastelt... 
;-)

von Rainer W. (rawi)


Lesenswert?

Rolf schrieb:
> Auch wenn man eine gemeinsame Masse hat, schützt ein Optokoppler vor
> diversen Ereignissen.

Das tun zwei Widerstände auch - der eine als Pull-Up und der andere in 
Serie zum Eingang. Bei einem Optokoppler kann fast genauso viel schief 
laufen.

Oder was für "Ereignisse" meinst du?

von Rolf (rolf22)


Lesenswert?

Rainer W. schrieb:
> Rolf schrieb:
>> Auch wenn man eine gemeinsame Masse hat, schützt ein Optokoppler vor
>> diversen Ereignissen.
>
> Das tun zwei Widerstände auch - der eine als Pull-Up und der andere in
> Serie zum Eingang.

Ja, und? Es wurde von zwei Leuten gesagt, dass ein Optokoppler völlig 
überflüssig sei, weil es eine gemeinsame Masse gibt  – dem habe ich 
widersprochen, weil die Begründung(!) in dieser Allgemeinheit falsch 
ist.
(Was die Lösung mit den beiden Widerstände angeht, die funktioniert im 
allgemeinen Fall nicht. Aber das war ja nicht der Punkt.)

> Bei einem Optokoppler kann fast genauso viel schief laufen.

Mit Betonung auf "fast"? Und was genau bedeutet "schief laufen"? Es ging 
ja nicht um die Funktion, sondern um den Schutz von fremden 
Gerätschaften.

> Oder was für "Ereignisse" meinst du?

Überspannung aus Richtung der Signalsenke oder Kurzschluss der 
Signalquelle. Ja, man kann sich gegen beides auch auf andere Weise 
schützen. Und im speziellen Fall des OP ist ein Kurzschluss auch 
harmlos, im allgemeinen Fall nicht.

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Rolf schrieb:
> Ja, und? Es wurde von zwei Leuten gesagt, dass ein Optokoppler völlig
> überflüssig sei, weil es eine gemeinsame Masse gibt  – dem habe ich
> widersprochen, weil die Begründung(!) in dieser Allgemeinheit falsch ist.
Doch, die Begründung ist allgemein richtig: weil es einen gemeinsamen 
Massebezug gibt, ist ein OK nicht nötig. Er könnte bestenfalls aus 
völlig anderen Gründen nötig sein wie z.B.

> Überspannung aus Richtung der Signalsenke
Die kann man auch haben, wenn die Versorgung der OK-LED durchgeht oder 
falsch angeklemmt wird.

> oder Kurzschluss der Signalquelle
und Blitzschlag und sonstnochwas. Und wenn das dann passiert, dann kommt 
die Überspannung auch noch über die Masse ins System. Richtig wirksam 
ist der OK also wie gesagt nur bei völliger galvanischer Trennung.

> Und was genau bedeutet "schief laufen"?
Messpitze rutscht ab, Draht wird falsch eingeklemmt, Spannung wird 
falsch eingestellt, usw. usf.

Aber speziell hier in Thread gilt: es ist ein batteriebetriebenes Gerät, 
das mit einer 3V-Lithium-Primärzelle versorgt wird. Wofür also ein OK?

> (Was die Lösung mit den beiden Widerstände angeht, die funktioniert im
> allgemeinen Fall nicht. Aber das war ja nicht der Punkt.)
Man muss sie so auslegen, dass sie funktioniert. Genauso muss man die 
Schaltung mit dem OK so auslegen, dass sie funktioniert.

Es gibt nach meiner Erfahrung 2 Arten von Menschen, die Optokoppler 
verwenden:
1. die, die nicht recht wissen, was sie tun
2. die, die Gründe für einen OK-Einsatz genau an dieser Stelle haben

Aber seis drum: dieses haarspalterische Kasperlestheater hilft dem TO 
nicht weiter. Im Prinzip müsste jede der Lösungen funktionieren. Jetzt 
gilt es herauszufinden, warum das nicht der Fall ist. Der Verdacht mit 
dem fehlerhaften Anschluss des OK steht da durchaus berechtigt im Raum.

von Rainer W. (rawi)


Lesenswert?

Rolf schrieb:
> Was die Lösung mit den beiden Widerstände angeht, die funktioniert im
> allgemeinen Fall nicht.

Bin gespannt - hier geht es nicht um den allgemeinen Fall, sondern um 
das Problem des TO.

> Es ging ja nicht um die Funktion, sondern um den Schutz von fremden
> Gerätschaften.

Ein Widerstand von einigen Kiloohm schützt nicht gegen alles, aber gegen 
alles, was von einem ESP32 i.A. so kommen kann, wenn es um einen Open 
Collector Ausgang geht, der 25mA/35V verträgt.

> Überspannung aus Richtung der Signalsenke oder Kurzschluss der
> Signalquelle

3.3V ist bei einem Ausgang, der 35V verträgt, keine Überspannung und zur 
Strombegrenzung dient einer der Widerstände, der bei Verwendung eines 
Optokopplers genauso vorhanden ist.
Und was soll passieren, wenn man einen Open Collector Ausgang 
kurzschließt?

: Bearbeitet durch User
von Frank S. (whugnit)


Lesenswert?

Unabhängig davon ob ein OK erforderlich ist oder nicht sehe ich jetzt 
auch keinen zwingenden Grund alles zu ändern. Ich finde es wichtiger zu 
lernen wie man Fehler sucht als ob man eine Schaltung noch weiter hätte 
optimieren können. Wenn ein original PC 817 verbaut ist dann wären 
selbst bei einem CTR von nur 50% absolut ausreichende Reserven und der 
Wärmemengenzähler kann mit seinem Open Drain MOS-Ausgang (25 mA) auch 
den LED-Strom treiben.

Für eine systematische Fehlersuche würde ich jetzt alles original (mit 
10k Pull-Up am ESP-Eingang) lassen und statt des Wärmemengenzählers 
einen Taster anschließen. Damit dann mit dem Multimeter gegen Masse in 
beiden möglichen Zustände alle wichtigen Signalpegel nachmessen.

Wenn da alles stimmt kan man damit die SW testen. Wobei man wissen muss 
dass ein Taster prellen kann und damit bei einem Tastendruck auch 
mehrere Impulse erzeugt werden können. Für einen grundlegenden Test 
reicht das aber.

Und erst wenn da alles passt hängt man wieder den Wärmemengenzähler 
dran.

von Rainer W. (rawi)


Lesenswert?

Frank S. schrieb:
> ... und statt des Wärmemengenzählers einen Taster anschließen.

Ach - hast du den Eröffnungs-Post gelesen?
Ein Taster würde genau das bewirken.

Paul R. schrieb:
> Ziehe ich das den PIN "SIG" manuell auf Masse, dann kommen die Impulse
> auf der anderen Seite an.

p.s.
Auf deiner Tastatur zeigt die Taste für das Komma (',') schwerste 
Aussetzer.

: Bearbeitet durch User
von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Paul R. schrieb:
> Ziehe ich das den PIN "SIG" manuell auf Masse, dann kommen die Impulse
> auf der anderen Seite an.
Also jetzt wie eben beschrieben systematisch weitermachen: man nimmt 
die Signalkette ohne das fragliche Gerät in Betrieb und sorgt dafür, 
dass diese Signalverarbeitung funktioniert. Wenn man es richtig macht, 
dann schließt man als Quelle auch mal einen Signalgenerator an, lässt 
das Ganze übers Wochenende durchlaufen und kontrolliert dann, ob die 
Impulsanzahl über lange Zeit ebenfalls passt.

Frank S. schrieb:
> Wobei man wissen muss dass ein Taster prellen kann und damit bei einem
> Tastendruck auch mehrere Impulse erzeugt werden können.
Die Entprellung des Sensoreingangs zur Signalkonditionierung würde ich 
sowieso machen. Denn das Signal vom Sensor wird immer im Bereich um 
500ms sein, wenn es denn kommt. Man kann also alles, was was im Bereich 
bis 100ms "herumzappelt" per Software getrost als "Störung" 
herausfiltern.

Gute SW implementiert dann sogar noch einen Zähler, der beinhaltet, wie 
oft dieser Filter unerwarteterweise zugeschlagen hat. Und wenn dieser 
Fehlerzähler dann kontinuierlich hochläuft, dann sollte man sich mal die 
Verkabelung anschauen.

Und unabhängig davon muss man dann kontrollieren, ob der Geber sich 
überhaupt (noch) wie ein Taster nach GND verhält. Oder ob der Ausgang 
ganz oder teilweise kaputt ist.

Paul R. schrieb:
> Einen PullUp habe ich dort nicht (hat der ESP32 wohl intern?!).
Die internen Pullups von µC sind recht hochohmig. Für eine störsichere 
Schaltung sollten extern niederohmigere Widerstände angeschlossen 
werden.
Und wenn du aber nicht weißt, ob du in deiner eigenen SW den Pullup 
aktiviert hast, dann ist ein externer Pullup eh' die bessere Wahl.

> Ich bilde mir ein, dass beim Counter auch ab
> und an ein Impuls gezählt wird aber da kann ich auch falsch liegen.
Dann muss genau das gesichert werden: kommen aus dem Zähler Impulse 
heraus. Ich würde da jetzt einfach meinen Frequenz-/Impulszähler 
anschließen und das ein paar Tage laufen lassen.
Alternaitv hilft wie gesagt ein Oszilloskop, das auf Singleshot einen 
Impuls aufzeichnet, oder wenn es da kann, auf mehrere Impulse triggert 
und die dann abspeichert.

Inzwischen sind in diesem Thread aber alle nötigen Tipps aufgeführt, die 
man zur erfolgreichen Inbetriebnahme (ob mit Angst-Optokoppler oder per 
Direktanschluss) braucht.

: Bearbeitet durch Moderator
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
Noch kein Account? Hier anmelden.