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.
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.
Die Fehlerzustände werden meist von Kollegen entdeckt und behoben, deshalb ist folgendes nicht zu 100% gesichert. Aber ich habe den Eindruck, daß im Fehlerfall der Schwimmer durchaus hochgekommen ist, also nicht am Stab festklemmt. Also das Problem ist nicht mechanisch, sondern elektrisch.
Tom H. schrieb: > Anschluß am Arduino an einen normalen I/O mit internem Pullup. Der Kontakt braucht mehr Strom. Nimm einen kleineren Pull-Up.
Tom H. schrieb: > Aber im Betrieb kommt es immer wieder vor, daß der Pegelschalter bei > langsam hochkriechendem Wasserpegel nicht anspricht. Wie stellst Du das fest? Doch hoffentlich nicht mit externem Interrupt.
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?
:
Bearbeitet durch Moderator
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.
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.
Tom H. schrieb: > Ein zu langsam vorbeikriechender Magnet betätigt den > Reedschalter nicht richtig? Nö, sobald sich die Kontakte nähern, steigt die Anzugskraft, d.h. ein Reedkontakt mach immer Klick. Es wird ein einfacher offener Kontakt sein. Ich würde den Kontakt mit 12V und 5..10mA belasten.
:
Bearbeitet durch User
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.
Tom H. schrieb: > die Kontakte bewegen sich in > meiner Vorstellung seeehr langsam und sanft aufeinander zu Nein. Relais schalten auch nicht langsam ein. Denn je näher sich die Kontakte kommen, umso weniger Magnetfeld ist dazu nötig. Ein Schmitt-Trigger Effekt ist da also mechanisch integriert.
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.
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
Ok, ich habs kapiert. Meine Vorstellung sich supersanft aufeinanderlegender Kontakte trifft nicht zu.
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.
Das hier https://mall.industry.siemens.com/mall/de/WW/Catalog/Product/3UG4501-1AW30 funktioniert einwandfrei. Da braucht es auch keinen Arduino.
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?
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?
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.
Tom H. schrieb: > Sonst hast Du keine Probleme? Der kann nur diesen einen Satz. Mich erinnert dieser Clown an "Ich bin Groot".
Wir verbauen ähnliche Pegelschalter wie auf dem Bild (allerdings nicht vom Chinamann) in Fäkalienbehälter an Schienenfahrzeugen. Sind zuverlässig und praktisch unkaputtbar. Haben einen oberen und einen unteren Schaltpunkt (von wegen Bottich ausreichend entleeren).
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.
Als Verbesserung für die Fehlerdiagnose kann man wie bei jeder SPS eine LED mit an den Eingang hängen. Erstens erhöht man damit etwas den Schaltstrom und zweitens sieht man sofort, ob der Schalter spielt. Allerdings muss mir jemand mal erklären, warum man für sowas einen Arduino braucht.
:
Bearbeitet durch User
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...
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.
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 ...
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.
Jet schrieb: > Stefan F. schrieb: >> Jester schrieb: Muss mich bei euch entschuldigen: Autor war natürlich nicht Jet, sondern ich. Keine Ahnung wie das passiert ist ...
Lothar M. schrieb: > 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. Es gilt eher, den bereits gemachten Vorschlag umzusetzen: Eine Kontrollampe (LED) direkt dran, um zu sehen, ob der Schalter kommt oder der µC Dummfug macht.
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.
Und nochwas: Die Notwendigkeit eines Stromflusses von ein paar mA gleich noch für eine Kontroll-LED zu nutzen, ist naheliegend und es wurmt mich, daß ich nicht selbst drauf gekommen bin. Danke für den Vorschlag. Falls noch eine Verbesserungsrunde an der Schaltung nötig ist, kommt das auf jeden Fall rein.
Du kannst die LED einfach in Reihe zum 2k2 Widerstand schalten, wenn du den µC-internen Pullup auch einschaltest. Denn dann sorgt der µC-Pullup für einen sauberen High-Pegel und der 690R samt LED für eine nennenswerte und "datenblattkonforme" Last am Schaltkontakt.
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.
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.
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.
Ich hab so eine Pumpenregelung mit einem Pegelschalter und einem Zeitrelais erschlagen. Funktioniert - ist aber nicht so cool, kommt ja ohne Mikrokontroller aus. Walta
Walta S. schrieb: > Ich hab so eine Pumpenregelung mit einem Pegelschalter und einem > Zeitrelais erschlagen. Funktioniert - ist aber nicht so cool, kommt ja > ohne Mikrokontroller aus. Schau mal was im Zeitrelais so werkelt.
In meinem sinds ein paar Zahnräder. Ich hab auch noch ein anderes, da sind ein paar alte Timer Bausteine drin. Und welche mit Mikrokontroller gibst auch noch. Welche mit Arduino hab ich noch nicht gesehen. Walta
Walta S. schrieb: > Welche mit Arduino hab ich noch nicht gesehen. Gibt es überhaupt Mikrocontroller, die mit "Arduino" beschriftet sind?
Steve van de Grens schrieb: > Walta S. schrieb: >> Welche mit Arduino hab ich noch nicht gesehen. > > Gibt es überhaupt Mikrocontroller, die mit "Arduino" beschriftet sind? Brauchst du welche? So ein kleiner Laserbeschifter kostet nicht viel...
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.