Hallo, ich will mit einem Mikrocontroller und einer Knopfzelle möglichst stromsparend einen Reedkontakt auswerten. Meine Idee ist momentan, den Reedkontakt zwischen 2 Pins zu schalten. Einen Pin als Ausgang mit low, den Anderen als Eingang mit pull-up. Bei offenem Kontakt fließt praktisch kein Strom, der pull-up zieht den Eingang auf high. Ich kann einen pin-change-interrupt auf low oder fallende Flanke nehmen, um das Schließem des Reedkontaks zu detektieren. Bei geschlossenem Reedkontakt fließen dann aber immer ca. 50 µA durch den pull-up. Viel zu viel für eine Knopfzelle. Jetzt kann ich natürlich mit nahezu beliebiger Frequenz (z.B. minütlich) den pull-up einschalten und dann kurz messen; also praktisch pollen. Auch nicht wirklich schön. Nun habe ich schon oft gelesen, daß unbeschaltete Eingänge völlig undefiniert hin- und herschwingen. Kann man sich darauf verlassen, daß der Pin auch wirklich die Grenzen zwischen high und low passiert? Dann könnte ich ja einfach den pull-up ausschalten, der pin wird ja bei geschlossenem Reedkontakt auf low gezogen. Öffnet der Reedkontakt, schwingt der Eingang munter hin- und her, irgendwann auch auf high. Im Pin-change-interrupt (für high oder steigende Flanke) schalte ich den pull-up an und messe eine kurze Zeit, um wirklich ganz sicher zu sein. Funktioniert sowas? Wenn ja, zuverlässig? Oder ist das Roulette, auchin Bezug auf die Zeit? Undefiniert ist halt undefiniert... Wie macht man das sonst besser?
Unwichtig schrieb: > Funktioniert sowas? Nein. > Wenn ja, zuverlässig Schon gar nicht. Umschaltkontakte lassen sich mit 0 Strom auswerten.
Externen Pullup (4,7M) nehmen, Reedkontakt und Zuleitung schirmen.
Unwichtig schrieb: > Funktioniert sowas? Das kommt drauf an, wie lang die Antenne ist, wie stark die Sender in deiner Umgebung sind, welche Modulationsart sie verwenden und was gerade gesendet wird.
MaWin schrieb: > Umschaltkontakte lassen sich mit 0 Strom auswerten. Ja, aber es ist halt nur 1 Kontakt da. Gut, man könnte auch einen Öffner und einen Schließer gleichzeitig auswerten, ist aber auch nicht schön. hinz schrieb: > Externen Pullup (4,7M) nehmen, Reedkontakt und Zuleitung schirmen. Das wären dann gut 0,6 µA im ungünstigen Fall; das sollte zu verkraften sein. Optimist schrieb: > Das kommt drauf an, wie lang die Antenne ist, wie stark die Sender in > deiner Umgebung sind, welche Modulationsart sie verwenden und was gerade > gesendet wird. Undefiniert halt, ich weiß es ja leider selber...
Unwichtig schrieb: > einen Reedkontakt auswerten. Wie oft schaltet der? Und wie lang ist er dann offen bzw. geschlossen?
:
Bearbeitet durch Moderator
Unwichtig schrieb: > Nun habe ich schon oft gelesen, daß unbeschaltete Eingänge völlig > undefiniert hin- und herschwingen. Da fehlt das Wörtchen "können". > Kann man sich darauf verlassen, daß > der Pin auch wirklich die Grenzen zwischen high und low passiert? Wenn sie "schwingen", dann ja. Tatsächlich schwingen sie nämlich überhaupt nicht. Schwingen tut allenfalls das EM-Feld, was die Pins dazu bringt, zwischen H und L zu wackeln. Und übrigens: selbst wenn man sich darauf verlassen könnte, dass offene Pins sicher "schwingen": für dieses "Schwingen" wird natürlich auch Energie benötigt. Sprich: vom leichten Regen kommst du hier in eine gut gefüllte Traufe... Oder anders ausgedrückt: brutal schwachsinniger Ansatz.
Viele Kontakte brauchen einen Mindeststrom! Auch Reedrelais. Den externen Pullup, der auch noch groesser als 4.7 M sein kann, also mit einem kleinen Kerko (10 nF) stuetzen. Der sorgt dann fuer einen sicheren Mindeststrom. Wenn Geschwindigkeit wichtig wird, taugt das natuerlich nicht. Den Pullupwiderstand kann man nach der hoechsten zu erwartenden Eingangsrate dimensionieren. Bei sehr grossen Werten, wird das dann aber auch anfaellig gegen feuchten Staub. Also nicht uebertreiben.
Zwei Lösungen seh ich da: a) genau andersrum: der Controller schaltet den anderen Pin als Treiber H/L, der Eingang behält seinen Pullup. In der Ruhephase ist der Ausgang H, der Kontakt würde H auf Pullup legen, das braucht keinen Strom. In der Aktivphase Ausgang auf L, wenn der Eingang mitgeht ist der Kontakt geschlossen. Vorteil: Strom nahezu Null, Nachteil: der Kontakt wird nur im festen Raster abgefragt. b) Ein Wechsler, mit jedem Anschluss an einen Pin des µC. Der mittlere ist ein Eingang mit Pullup, die beiden Enden sind Ausgänge wobei einer H und einer L ist. Geht auch mit einem Ausgang und einem Inverter. Der Trick ist dann, den Eingang per Interrupt auf H->L abzufragen und die Ausgänge dann umzuschalten, so das der jetzt aktive Pin auch wieder H wird (H zu Pullup = Null Strom) und der offene Pin L. Nachteil: Wechslerkontakt und 3 Pins am µC nötig. Vorteil: Null Strom und sofortige Reaktion.
meine Idee: schalte mit dem Reed-Kontakt deinen µC ein (in die Versorgungsleitung damit) und dein Programm notiert im EEPROM was du so notiert haben möchtest. So läuft die Schaltung ewig weil 0 Stromverbrauch so lange nichts passiert.. Anselm
Lothar M. schrieb: > Wie oft schaltet der? > Und wie lang ist er dann offen bzw. geschlossen? Und - wie schnell muss eine Änderung erkannt werden? - was wird mit dieser Erkenntnis dann ausgelöst? Mal so als Beispiel, wenn die Zeiten nicht kritisch sind: - Annahme: eine Abfrage alle z.B. 100ms (oder welche Zeit auch immer) würde ausreichen - Am Eingang internen PU aktivieren - den Ausgang im Ruhezustand auf HIGH setzen dann wiederholt: 1. den Ausgang auf LOW schalten, den Eingang lesen, den Ausgang wieder auf HIGH schalten. Das geht im µs-Bereich (oder ms, wenn man ihn mit sehr langsamem Takt betreibt). 2. vorgesehene Aktion ausführen, wenn der Kontakt geschlossen bzw. geöffnet war/wurde 3. für 100ms schlafen legen 4. nach dem Aufwachen weiter mit 1. Es ist natürlich das Pollen, das du nicht so wirklich schön findest. Die genannten hochohmigen Widerstände sind natürlich sparsam im Stromverbrauch, aber dein µC braucht auch Strom.
Lothar M. schrieb: > Unwichtig schrieb: >> einen Reedkontakt auswerten. > Wie oft schaltet der? > Und wie lang ist er dann offen bzw. geschlossen? Das Ganze soll im Rahmen einer startenden Smarthome-Geschichte den Status von Fenster und Türen überwachen, also wohl nur einige Male am Tag schalten. Die Öffnungs- und Schließzeiten ergeben sich daraus. Sonderlich schnell braucht die Auswertung das daher auch nicht erfassen; so 2-3 Minuten würden mir wohl reichen. Im power-down mit integriertem 10 kHz-Oszillator würde der µC laut Datasheet ca. 1,5 µA verbrauchen. Ohne den Oszillator ca. 0,4 µA, der WAKEUP-Pin am Reedsensor würde ihn noch wecken, aber ich möchte ihn alle paar Stunden mal wecken, um aktiv durch messen den Reedkontaktstatus verifizieren zu können (wegen "entprellen" bei auf/zu und generellem anfänglichem Mißtrauen der Schaltung...). Problem ist, wie gesagt, die Knopfzelle. Sein Wissen preisgeben soll er dann per nRF24L01+ oder RFM69. Ähnlich dem TINO (https://forum-raspberrypi.de/forum/thread/41558-tino-batteriebetriebener-funksensor-weiterentwicklung/), nur mit anderer Hardware. Nach bisherigem Stand würde wohl ein Reedsensor als Wechsler meine Wünsche erfüllen, der kostet aber auch gleich knapp 5€ pro Stück und Steinecker 11126 habe ich mal reichlich günstig gebraucht bei Äbäh geschossen. Mein Favorit ist derzeit hochohmiger externer pull-up. werde ich die nächsten Wochen mal testen. Erstmal will ich eine minimalistische nRF24-Software schreiben, um überhaupt die Reichweite zu testen. Sollte das nicht klappen, teste ich die RFM69.
Unwichtig schrieb: > der kostet aber auch gleich knapp 5€ pro Stück Du kannst ja die Batteriekosten dagegen rechnen, für sagen wir mal 20 Jahre Nutzungsdauer.
Unwichtig schrieb: > der kostet aber auch gleich knapp 5€ pro Stück Als loses Teil 3€ bei reichelt: https://www.reichelt.de/reed-sensor-175-v-0-5-a-wechsler-mk23-90c2-p151863.html?&nbc=1 Googlesuche ca. 30 Sekunden, also sicher noch Potential nach unten. Für 40ct mehr mit Anschraubflansch, leider drei Strippen statt einer Leitung: https://www.reichelt.de/reed-sensor-59140-serie-1-co-5-w-litt-59140-030-p260414.html?&nbc=1
Unwichtig schrieb: > ich will mit einem Mikrocontroller und einer Knopfzelle möglichst > stromsparend einen Reedkontakt auswerten. Anstatt da irgendwas zu basteln könnte man auch sein Gehirn verwenden und einen zweiten Magneten vorsehen. Und schon wird aus den Öffner ein Schließer.
Unwichtig schrieb: > Das Ganze soll im Rahmen einer startenden Smarthome-Geschichte den > Status von Fenster und Türen überwachen Da würde ich mir mal anschauen wie die bereits erhältlichen Produkte aufgebaut sind. Für diesen Fall gibt es unzählige Tür/Fenster Kontakte.
Axel S. schrieb: > Unwichtig schrieb: >> ich will mit einem Mikrocontroller und einer Knopfzelle möglichst >> stromsparend einen Reedkontakt auswerten. > > Anstatt da irgendwas zu basteln könnte man auch sein Gehirn verwenden > und einen zweiten Magneten vorsehen. Und schon wird aus den Öffner ein > Schließer. Interessant. Erklär doch mal. Und vor allem, wo am Fenster du ihn anbringst. Wie auch immer: Ein zweiter Magnet ist ja kein basteln...?
Nimm einen hochohmigen Pullup, z.B. 4,7M. Wird high erkannt, dann schalte noch einen niederohmigen Pullup dazu, z.B. 4,7k. Damit ist der Eingang unempfindlich gegen Störungen. Das Umschalten macht z.B. ein ATtiny13 im Power-down (<1µA) über den Pin-Change Interrupt. Der höhere Strom über den 4,7k fließt ja nur kurzzeitig vom Schließen des Kontaktes bis zum Ausführen des Interrupts. Der mittlere Stromverbrauch bleibt also <1µA.
>>> einen Reedkontakt auswerten. >> Wie oft schaltet der? >> Und wie lang ist er dann offen bzw. geschlossen? > also wohl nur einige Male am Tag schalten. Ich betreibe einen Attiny seit fast 10 Jahren in einer Art "Eieruhr" an einer CR1620 Knopfzelle: der Watchdog weckt den µC alle 500ms auf, dann wird am Tasterpin der µC-Pullup eingeschaltet und kontrolliert, ob der angeschlossene Taster gedrückt ist. Wenn ja, dann wird die Eieruhr "gestartet". Wenn nein, dann wird der Portpin auf low geschaltet. Und in beiden Fällen wird wieder Schlafen gegangen (also läuft auch die Eieruhr an sich die meiste Zeit im Sleepmodus).
D00fi schrieb: > Viele Kontakte brauchen einen Mindeststrom! > Auch Reedrelais. Stimmt. Einige pA sollte man schon fließen lassen.
Lothar M. schrieb: > Ich betreibe einen Attiny seit fast 10 Jahren in einer Art "Eieruhr" an > einer CR1620 Knopfzelle: der Watchdog weckt den µC alle 500ms auf, dann > wird am Tasterpin der µC-Pullup eingeschaltet und kontrolliert, ob der > angeschlossene Taster gedrückt ist. Wenn ich mich jetzt nicht total verrechnet und das Datenblatt mißverstanden habe, wird das meine Lösung. Doch öfter mal Rechnen, statt dem Gefühl zu folgen... Wenn der µC jede Minute aufwacht, den pull-up einschaltet, den Pin liest und wieder schlafengelegt wird, komme ich auf einen Durchschnittsstrom deutlich geringer als mit der Variante großer externer pull-up. Irre. Hätte ich nie gedacht. Und dann noch zuverlässiger im Ergebnis. Zwar doch polling, aber bei dieser Anwendung ja egal.
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.