Pegelschalter unzuverlässig

#7312723
Lesenswert?

Hallo zusammen,

ich mußte hier für die Firma eine (eigentlich) ganz einfache Sache zusammenkloppen, eine improvisierte Hebeanlage für das Kondenswasser eines Klimaschranks.

Das Problem: Die Abfrage des Pegelschalters mit dem Arduino ist unzuverlässig.

Pegelschalter: https://www.conrad.de/de/p/standexmeder-electronics-fuellstands-sensor-9522712054-1-st-1205904.html Vermutlich ein Reedkontakt im Inneren.

Anschluß am Arduino an einen normalen I/O mit internem Pullup. Arduino pollt den Anschluß einfach in Dauerschleife. Wenn er anspricht, schaltet er einen 12V DC Pumpe, wartet ab, ob die Pumpe den Pegelschalter in vernünftiger Zeit freibekommt, und läßt dann die Pumpe eine bestimmte Zeit laufen, so daß der Behälter sicher leergeschlürft wird. Dann legt sich Arduino wieder auf die Lauer...

Das kann man nun 100 mal ausprobieren, funktioniert immer wie gewünscht, auch simulierte Fehlerzustände, sollte die Pumpe verstopft sein usw.

Aber im Betrieb kommt es immer wieder vor, daß der Pegelschalter bei langsam hochkriechendem Wasserpegel nicht anspricht.

Was kann das sein? Ein zu langsam vorbeikriechender Magnet betätigt den Reedschalter nicht richtig? Kontakte schließen nicht richtig? Mehr Belastung mit mehr Leerlaufspannung und geringerem Pullup-Widerstand nötig?

Fürs erste werde ich einen weiteren Pegelschalter ähnlicher Bauart parallel schalten.

Viele Grüße Tom.

#7312731
Lesenswert?

Tom H. schrieb:

Was kann das sein?

Oberflächenspannung des Wassers und Dreck klebt den Schwimmer am Stab fest ?

Da sind wohl die Schalter, die knicken, besser.

https://www.ebay.de/itm/385129558427

Die lassen sich auch besser auf beliebiger Höhe in der Tankwand montieren.

Erfordern aber ein Loch unterhalb des Flüssigkeitsspiegels, also potentielle Undichtigkeit.

Moderator (Firma: Titel) Persönliche Seite #7312797
Lesenswert?

Tom H. schrieb:

Anschluß am Arduino an einen normalen I/O mit internem Pullup.

Da sollte schon EMV-mäßig ein wenig mehr dran sein an Beschaltung oder wenigstens der Pullup deutlich niederohmiger werden (so im 2k2-Bereich).

Bei arg hochohmigem Anschluss gibt es sonst evtl. Probelme mit dem Frittstrom und der Frittspannung.

Aber ich habe den Eindruck, daß im Fehlerfall der Schwimmer durchaus hochgekommen ist, also nicht am Stab festklemmt.

Du solltest dir da Gewissheit verschaffen.

Ein zu langsam vorbeikriechender Magnet betätigt den Reedschalter nicht richtig?

Wieos kann der sa "vorbei" kriechen? Das dibt das Datenblatt nicht her. Nach dem würde ich erwarten, dass der Kontakt geschlossen ist. Und wieder öffnet, wenn der Schwimmer weiter unten ist. Wie "knapp" vor dem oberen Anschlag schaltet denn der Kontakt üblicherweise?

#7312914
Lesenswert?

Danke, "Frittstrom" bzw. -spannung ist also der Fachbegriff für mein Bauchgefühl, daß so ein Reedkontakt nicht richtig schließen könnte.

Mit "Kriechen" meine ich folgendes: Wenn man die Mimik ausprobiert, betätigt man den Schwimmer entweder von Hand oder läßt mit munter plätscherndem Strahl Wasser in den Pumpensumpf ein. Da funktionierts. Im realen Betrieb wird der Pumpensumpf aber unendlich langsam mit Kondensat-Getröpfel gefüllt, und entsprechend langsam kriecht der Schwimmer am Röhrchen hoch. (Slip-Stick Effekte und Verkanten am Röhrchen jetzt mal ausgenommen) Damit steigt das Magnetfeld, das die Kontake im Reedkontakt zusammenbringt, ja auch sehr langsam an, die Kontakte bewegen sich in meiner Vorstellung seeehr langsam und sanft aufeinander zu. So daß sie zuletzt so sanft aufeinander gelegt wurden, daß sie keinen Kontakt machen.

Also, jetzt sind ZWEI Schwimmerschalter mit je einem 2k2-Pullup an 5V an zwei getrennten IOs des Arduino. Die werden jetzt im Programm noch verodert (und später vielleicht noch intelligenter ausgewertet, denn sie schalten bei leicht unterschiedlichen Pegelständen).

Jetzt baue ich das ganze wieder ein und beobachte es im realen Betrieb.

#7312951
Lesenswert?

Ich hatte in der Tat das gleiche Problem mit den Schaltern in der von dir genannten Bauform. Die Klappvariante hat sich bei mir auch als weniger störanfällig erwiesen.

Letztlich habe ich aber immer mindestens 2 Schwimmer genutzt, dann lief das zuverlässig.

Warum die Dinger manchmal einfach keinen Kontakt gegeben haben, obwohl geschlossen habe ich dann nicht weiter untersucht.

#7313001
Lesenswert?

Peter D. schrieb:

Ich würde den Kontakt mit 12V und 5..10mA belasten.

Ist im Prinzip möglich, da Pumpe und Arduino mit 12V versorgt sind. Erfordert aber mehr Schaltungsgedöns (12V auf der Platine zu den Pullups, aber zusätzlich Spannungsteiler für die 5V-Eingänge des Arduino, oder genügt ein hoher Vorwiderstand und die Ableitdiode des Eingangs? Ich beobachte jetzt erstmal die Betriebssicherheit mit Redundanz und den 2k2-Pullups nach 5V.

#7313018
Lesenswert?

Christian schrieb:

Eine fertige Kondensatpumpe ist keine Option?

Natürlich habe ich das Problem nicht vollständig beschrieben.

Es handelt sich nicht nur um Kondensat, sondern bisweilen auch um das Spülwasser eines Befeuchter-Dampfzylinders. Darin wird mit simpel eintauchenden 230V-Elektroden Wasser gekocht, und ab und zu wird ein Schwung Wasser unten rausgelassen, um die Kalkplorre loszuwerden.

Mir war klar, das muß man mit einer halbwegs robusten Tauchpumpe machen. Als mir der Installateur die vorgesehene Kondensatpumpe gezeigt hat (https://www.kaelte-klima-welt.de/shop/22/Kondensatpumpen_fuer_Klimageraete/168/Kondensatpumpe_Aspen_Silent__Mini_Orange.html), war mir klar, ich muß es selbst machen. Sowohl der Schwimmerschalter als auch die Dichtungen der winzigen (vermutlich Schwingkolben-)Pumpe wären mit dem ersten Kalkbrösel überfordert gewesen.

Gast #7313019
Lesenswert?

Lothar M. schrieb:

Tom H. schrieb:

Anschluß am Arduino an einen normalen I/O mit internem Pullup.

Da sollte schon EMV-mäßig ein wenig mehr dran sein an Beschaltung oder wenigstens der Pullup deutlich niederohmiger werden (so im 2k2-Bereich).

Bei arg hochohmigem Anschluss gibt es sonst evtl. Probelme mit dem Frittstrom und der Frittspannung.

Auch bei einem Reedkontakt? Bist Du dir da sicher? Was, wenn dieser "nass" ist (Hg-benetzt)?

Was Reedkontakte absolut nicht mögen sind unkontrolierte Kontaktströme - selbst wenn diese nur für <100ns fließen. Schon 100pF über dem Kontakt oder der Last (z.B. wenige Meter Kabel) können da zu viel sein.

Auzug aus dem Katalog "Reed Technologie" Standex Meder, Kapitel "Kontaktschutz – Elektrische Schutzbeschaltungen" (standexmeder.com):

"Bei bestimmten Betriebszuständen kann es zu Materialwanderungen kommen, diese wiederum haben einen ganz erheblichen Einfluss auf die Lebensdauer eines Schalters."

"Schaltet man Strom und Spannung über einen Reedschalter, so ist Streukapazität in gewissem Umfang in jeder elektrischen Schaltung vorhanden. Dabei spielen die ersten 50 Nanosekunden des Schaltvorgangs je nach Höhe von Strom und Spannung eine entscheidende Rolle."

just my 2ct

Gast #7313042
Lesenswert?

Jester schrieb:

Schon 100pF über dem Kontakt oder der Last (z.B. wenige Meter Kabel) können da zu viel sein.

Guter Hinweis. Es könnte also helfen, einen Widerstand in Reihe zum Kontakt zu schalten (z.B. 100Ω). Wegen dem Frittstrom würde ich außerdem wie empfohlen einen stärkeren Pull-Up Widerstand einbauen. Vielleicht ist er nicht nötig, kann aber nicht schaden und so wird man eine Ungewissheit los.

#7313132
Lesenswert?

Forist schrieb:

Tom H. schrieb:

Das Problem: Die Abfrage des Pegelschalters mit dem Arduino ist unzuverlässig.

Was hat das mit Fragen rund um Mikrocontroller und sonstige digitale Elektronik zu tun, solange du deine SW nicht zeigst?

Es geht um die Beschaltung eines Mikrocontroller-Eingangs mit einem "digitalem Meldegerät" (Schalter). Was willst Du noch? Soll ichs in "Analogelektronik" verschieben? Oder in "Smart Home"? Passt es da viel besser?

Sonst hast Du keine Probleme?

#7313144
Lesenswert?

Peter M. schrieb:

Das hier https://mall.industry.siemens.com/mall/de/WW/Catalog/Product/3UG4501-1AW30 funktioniert einwandfrei. Da braucht es auch keinen Arduino.

Es handelt sich um einen Pumpensumpf, vulgo Bottich, der sich langsam füllt bis der Pegelschalter anspricht. Dann wird die Pumpe EINE BESTIMMTE ZEIT LANG eingeschaltet, damit der Bottich auch wirklich geleert wird. NICHT NUR BIS DER PEGELSCHALTER WIEDER FREIGIBT.

Denn das in der Steigleitung befindliche Wasser fließt über die ausgeschaltete Pumpe wieder zurück. Wenns dumm läuft, reicht das, um den Pegelschalter erneut auszulösen. Feine Oszillation.

Um das zu verhindern, Pegestandsüberwacher mit Nachlauffunktion. KANN DAS DING IM LINK DAS? Eher nicht.

Oder, super, zwei Pegelschalter und "nur ein bißchen" Digitalelektronik.

Nee nee, ich hab da einen Arduino, der läßt auch noch im Fehlerfall einen Piezo-Signalgeber intermittierend ertönen, notfalls stricke ich noch ne SD-Card dran und logge mit, was so passiert.

Moderator (Firma: Titel) Persönliche Seite #7313309
Lesenswert?

Tom H. schrieb:

genügt ein hoher Vorwiderstand

Den hochohmigen Vorwiderstand hast du doch schon. Und es funktioniert nicht.

Jester schrieb:

Bei arg hochohmigem Anschluss gibt es sonst evtl. Probelme mit dem Frittstrom und der Frittspannung.

Auch bei einem Reedkontakt? Bist Du dir da sicher?

Nein, denn es kommt einfach drauf an.

Was, wenn dieser "nass" ist (Hg-benetzt)?

Was, wenn der nicht mal vergoldet ist oder uns sonstwie der Himmel auf den Kopf fällt? Weiß ja keiner, was die Chinesen da reinlegieren...

Anekdote am Rande: im Datenblatt ist dann ein maximaler Kontaktwiderstand von 280mOhm "gemessen bei 40% Übererregung" spezifiziert, wobei nirgends spezifiziert ist, was denn überhaupt die "Nennerregung" ist.

Mir fehlen in dem Datenblatt sowieso die Angaben zu den Schaltpositionen und der Schalthysterese.

Gast #7313619
Lesenswert?

Steve van de Grens schrieb:

Wegen dem Frittstrom würde ich außerdem wie empfohlen einen stärkeren Pull-Up Widerstand einbauen. Vielleicht ist er nicht nötig, kann aber nicht schaden und so wird man eine Ungewissheit los.

Im Fernmeldebereich liegt der Benetzungsstrom (Frittstom, wetting current) typisch zwischen 0,2 - 3 mA (1 - 20 mA in USA) und ist notwendig, um ev. Oxidschichten an Kontakten und Spleißstellen ("contact fritting") auch in ausgedehnten Installationen zu durchbrechen.

Das impliziert aber auch, dass betroffene Kontakte i.A. NC ("normally closed") sein sollten...

Reedkontakte brauchen das i.A. nicht, sind diese doch durch Schutzgas vor Oxidation (und manchmal Hg-Benetzung) geschützt, daher auch für Schaltströme <1 uA spezifiziert. Ein paar wenige mA "Ruhestrom" dürfte bei bei einem Reedkontakt in allen Lagen ausreichend sein.

Aber über "Fritting" bzw. NC darf man trotzdem mal nachdenken, auch wenn es sich "nur" um Steckkontakte handelt...

Gast #7314331
Lesenswert?

Stefan F. schrieb:

Jester schrieb:

Reedkontakte brauchen das i.A. nicht, sind diese doch durch Schutzgas vor Oxidation (und manchmal Hg-Benetzung) geschützt

Die frage ist, wie gut das gemacht wurde. Es gibt ja viel Billig-Schrott.

Mal sehen -- aber Hauptsache was gesagt?

Tom H. schrieb:

Pegelschalter: https://www.conrad.de/de/p/standexmeder-electronics-fuellstands-sensor-9522712054-1-st-1205904.html Vermutlich ein Reedkontakt im Inneren.

Ich denke mal, wenn der Sensor von Standex-Meder kommt, dass dann auch deren Reedkontakte verbaut sind. Und diese sind vom Typ "Best Money Can Buy". Aber wie immer: Ist natürlich nur eine wilde Spekulation...

Aber man kann zumindest deren Datenblätter studieren, die ich hier liegen, und aus genau denen ich übrigens zitiert habe ... (*)

Genau genommen ist mir das alles so ziemlich Wurst -- und ihr könnt mit euren Fritten machen was ihr wollt: Mir geht's am Allerwertesten vorbei -- auch wenn hier einige, geblendet vom eigenen Heiligenschein, die guten Mederkontakte im duzend verheizen -- oder dazu anleiten ...

just my 2ct

(*) standexmeder.com, inzwischen standexelectronics.com profiliert sich wie folgt: "Standex Electronics ist weltweiter Marktführer in Design, Entwicklung und Produktion von Standardversionen und Sonderanfertigungen elektromagnetischer Bauteile und Innovationen auf der Basis von Reed Schaltern."

Na dann ...

Moderator (Firma: Titel) Persönliche Seite #7314468
Lesenswert?

Jet schrieb:

weltweiter Marktführer

Und bringt nicht mal ein anständiges Datenblatt zusammen?

Auch dort sind keine Schaltpunke angegeben: https://standexelectronics.com/viewer/pdfjs/web/viewer.php?file=https%3A%2F%2Fstandexelectronics.com%2Fwp-content%2Fuploads%2F2019%2F11%2FLS02_V02.pdf

Aber: die Lebensdauer ist bei min. 4 mA spezifiziert. Am längsten lebt der Kontakt offenbar bei 5V und 10mA. Das spricht für einen Pullup von 680 Ohm auf 5V.

duzend

Man kann sich duzend unterhalten. Aber wenn das im Dutzend passiert, dann wird es schnell laut.

#7314792
Lesenswert?

Hier mal eine Rückmeldung vom TO:

Noch etwas schwache Statistik nach zwei Tagen, aber der Fehler ist nicht mehr aufgetreten.

Nochmal zur Erinnerung nach so vielen Beiträgen: Von der Ausgangssituation "1 Pegelschalter wie im Link, nur mit dem internen Pullup 47k" habe ich jetzt zwei (verschiedene) solcher Pegelschalter, jeweils mit einem Pullup 2k2 nach 5V.

Daß nach genauer Betrachtung des Datenblatts der Pullup sogar noch niedriger (680R) ausfallen dürfte, ok, ich werds jetzt erstmal noch nicht ändern.

Lothars Nachfrage nach dem "Vorwiderstand": Damit war die Situation gemeint, daß ich den Pullup für den Reedkontakt nach +12V schalte. Dann müßte ich ja die entstehenden Pegel am Reedkontakt auf Arduino-verträgliche 5V bringen. Nach meinem Verständnis entweder mit einem nachfolgenden (hochohmigen) Spannungsteiler oder, verwegener Gedanke: vielleicht nur mit einem hohen Vorwiderstand zum Arduino-Pin und auf das Ableiten der Überspannung durch die internen Schutzdioden vertrauen. Aber nochmal: Daß der Reedkontakt selbst einen einigermaßen niedrigen Pullup sehen muß, habe ich verstanden und stelle ich nicht in Frage.

Die von Christian B. im Bild gezeigten doppelten Pegelschalter in Edelstahl sind natürlich sehr schick. Da täten mich noch die Bezugsquelle und/oder ungefähre Preise interessieren.

#7314849
Lesenswert?

Tom H. schrieb:

Damit war die Situation gemeint, daß ich den Pullup für den Reedkontakt nach +12V schalte. Dann müßte ich ja die entstehenden Pegel am Reedkontakt auf Arduino-verträgliche 5V bringen. Nach meinem Verständnis entweder mit einem nachfolgenden (hochohmigen) Spannungsteiler oder, verwegener Gedanke: vielleicht nur mit einem hohen Vorwiderstand zum Arduino-Pin und auf das Ableiten der Überspannung durch die internen Schutzdioden vertrauen.

Ich würde es bei 12V so machen:

1
    +12V
2
      |
3
      o
4
       \  Kontakt
5
      o \
6
      |
7
      R1
8
      |
9
      +---R3--- µC-Eingang
10
      |
11
      R2
12
      |
13
     GND

Spannungsteiler R1/R2 so niederohmig, dass der benötigte Kontaktstrom fließt. Dann zusätzlich R3 (hochohmig, z.B. 10kΩ) als Schutz gegen extern eingekoppelte Spannungsspitzen. Und er hilft auch, wenn der µC mal nicht versorgt ist. Bei +5V entfällt R1 einfach.

#7341021
Lesenswert?

Ich wollte das hier nochmal abrunden:

So unzuverlässig das mit nur einem Pegelsensor und vor allem nur dem AVR-internem Pullup-Widerstand von 47k lief

genauso unaufällig zuverlässig funktioniert es jetzt mit einem echten Pullup-Widerstand von 2k2.

Klar kann ich nicht ganz trennen, ob der aus Angst eingebaute zweite Pegelsensor (ebenfalls mit 2k2 Pullup, an einem zweiten IO-Port) da mithilft.

Aber auf jeden Fall: Vorher Problem - jetzt gelöst.

Dank Eurer Antworten bzw. Eurer Bestätigung meiner vagen Vermutung.

Gast #7341251
Lesenswert?

Jester schrieb:

Reedkontakte brauchen das i.A. nicht, sind diese doch durch Schutzgas vor Oxidation (und manchmal Hg-Benetzung) geschützt

Stefan F. schrieb:

Die frage ist, wie gut das gemacht wurde. Es gibt ja viel Billig-Schrott.

Jet schrieb:

Mal sehen -- aber Hauptsache was gesagt?

Tom H. schrieb:

zuverlässig funktioniert es jetzt mit einem echten Pullup-Widerstand von 2k2.

Siehst du Jet, da hast du umsonst gelästert.

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