Wie überwacht man den Schaltzustand?

Hintergrund

Ich baue eine einfache Webanwendung mit Himbeere als Server. Ich benutze diese Himbeere auch, um ein Arduino zu steuern. Ein Benutzer kann Befehle über den Browser an die Himbeere senden und einige Arduino-Funktionen steuern!

Was ich möchte

Geben Sie hier die Bildbeschreibung ein

Ich möchte ein Arduino verwenden, um eine Lampe ein- und auszuschalten, parallel zu einem normalen manuellen Schalter, mit dem ich die Lampe ein- und ausschalten kann, wie folgt:

1: Wenn die Lampe aus ist und der Schalter auch auf OFF steht (offener Schalter), kann ich die Lampe einschalten, indem ich den Schalter benutze, indem ich ihn in die ON-Position bringe (Schließen des Schalters). Dann teilt das Überwachungssystem Arduino (und dem Webserver) mit, dass der Schalter eingeschaltet / geschlossen ist und das Licht eingeschaltet ist.

2: Ich kann Arduino verwenden, um das Licht auszuschalten, ohne den Schalter unbedingt auf die Position AUS zu stellen. Wenn das Licht AUS ist (weil ich es mit einem Arduino ausgeschaltet habe) und der Schalter in der EIN-Position (geschlossen) ist, sollte ich es auf eine Weise, die ich wahrnehmen kann, in die AUS-Position und dann wieder in die EIN-Position schalten müssen diese Änderungen und senden Sie sie an Arduino (und folglich an den Webserver).

3 (Mögliche Verbesserung?): Immer wenn ich den Zustand des Schalters ändere, würde das Licht seinen Zustand in das Gegenteil des aktuellen ändern: Wenn das Licht an ist, geht es aus und umgekehrt, unabhängig vom Schalter Zustand.

Das Problem

Wie kann ich eigentlich wissen, ob der Schalter ein- und ausgeschaltet ist? Gibt es trotzdem einen Sensor, eine elektronische Schaltung oder Komponente, die erkennen kann, ob der Schalter ein- oder ausgeschaltet ist? Ich habe darüber nachgedacht, ein Relais zur Steuerung des Lichts zu verwenden, abhängig vom Zustand des Lichts, das auf dem Arduino / Webserver gespeichert ist. Ist dies ein zuverlässiger Weg (ich meine, mit einem Relais), dies zu tun?

Ich freue mich über jede mögliche Hilfe, ich interessiere mich für IoT und möchte einige einfache Anwendungen für die Heimautomatisierung machen; das ist mein erster! Vielen Dank im Voraus für jede Hilfe, wieder.

Antworten (4)

Um die von Ihnen beschriebene Funktionalität zu erhalten, benötigen Sie "3-Wege" (SPDT)-Schalter - einen manuellen und ein Relais, das der Arduino steuert. Das ist so, als hätten Sie zwei Schalter, die die Lichter von beiden Enden eines Flurs aus steuern, außer dass einer von ihnen von Ihrer MCU gesteuert wird.

Das Erfassen des Lichtzustands ist eine separate Angelegenheit. Es gibt viele Schaltungen auf dieser Seite und anderen, um das Vorhandensein von Netzspannung an der Lichtsteckdose sicher zu erkennen.

Vielen Dank für Ihre Antwort! Ihr Ansatz ist gültig und ich werde ihn implementieren, obwohl ich mich immer noch frage, wie ich ein solches System in einem einfachen SPST-Schalter installieren würde, obwohl sie nicht häufig als Lampenschalter verwendet werden (glaube ich?).
Sie werden (wo?) regelmäßig in Treppenhäusern verwendet, wo Sie oben und unten einen Schalter haben. Durch Umschalten einer von ihnen wird das Licht ein- oder ausgeschaltet. Viele Relais sind "3-Wege" und Sie verdrahten sie einfach in Reihe mit einem zweiten "3-Wege"-Schalter und dem Licht. An der Wand montierte Lichtschalter sind oft auch 3-Wege-Schalter, sodass sie so verdrahtet werden können, dass sie das Licht in beiden Konfigurationen einschalten oder tatsächlich als 3-Wege-Schalter verwendet werden.

Da Sie sowieso das Netz steuern müssten, können Sie nur Relais und Lichter in Reihe schalten. Vorhandener Schalter, den Sie mit GPIO von Arduino verbinden. Auf diese Weise kennt Arduino den Zustand des Schalters und kann Lichter ohne zusätzliche Verbindungen und Sensoren steuern. Es gibt ein Problem, dass Ihr Arduino korrekt funktionieren muss, um Lichter zu steuern, selbst wenn Sie nur eine physische Taste verwenden möchten. Diese Lösung ist also nur geeignet, wenn Sie mit der Unfähigkeit leben können, den Zustand der Lichter zu ändern, bis Sie Arduino reparieren.

Apropos Zuverlässigkeit. Ich habe genau die gleiche Lösung wie in dieser Antwort und habe einige kleinere Probleme mit dem Relais, das sich nicht trennt (Kontakte verschweißt). Daher würde ich raten, ein Qualitätsrelais und kein unbekanntes Teil von ebay zu kaufen, selbst wenn seine "Parameter" in Ordnung aussehen.

Wenn Sie nicht gerne mit 120 VAC arbeiten (könnte katastrophal sein, wenn Sie nicht wissen, was Sie tun), ist eine mechanische Lösung viel sicherer. Sie werden das hassen, aber für den Machbarkeitsnachweis könnten Sie einen Endschalter wie im Bild unten auf die Frontplatte unter Ihrem Lichtschalter kleben (weiß zu malen könnte es erträglicher machen). Ich würde einen Pulldown-Widerstand verwenden, um Ihnen ein aktives HIGH-Signal zu geben, das normalerweise intuitiver ist. Sehen Sie sich dieses Switch-Tutorial an , um eine Anleitung zu erhalten.

Geben Sie hier die Bildbeschreibung ein

Für eine fortschrittlichere Lösung würde ich die Spannung über dem Schalter reduzieren und gleichrichten, um zu sehen, ob auf beiden Seiten des Schalters dasselbe (CLOSED) oder verschiedene Dinge (OPEN) vorhanden sind. Idealerweise haben Sie einen kleinen Isolations-Abwärtstransformator zwischen jeder Netzspannung und Ihrem empfindlichen Mikrocontroller. Im Interesse einer billigen Lösung können Sie jedoch "X-bewertete" Kondensatoren zur Isolierung verwenden. Beide Lösungen müssen auf Gleichstrom gleichgerichtet werden, um von Ihrem Mikrocontroller gelesen werden zu können, der zwischen 0 und 5 Volt arbeitet.

schematisch

Simulieren Sie diese Schaltung – Mit CircuitLab erstellter Schaltplan

Schöne Ausgabe, würde ich sagen, und sie verbraucht laut Simulator nur etwa 25 mW (Blau ist die isolierte, gleichgerichtete Spannung und Orange ist die Zener-geregelte Spannung). Lesen Sie diesen Ausgang mit einem Ihrer Mikrocontroller-Eingänge und Sie haben eine Anzeige! (FYI 0V bedeutet kein Unterschied über Schalter = GESCHLOSSEN)

Kondensatorisolierte Spannungsversorgung

Während es für einen erfahrenen Ingenieur sicherlich eine gute Lösung ist, ist es ein Rezept für eine tödliche Katastrophe, Leuten, die gerade mit µC-Sachen vertraut sind, Netzspannungsschaltungen vorzuschlagen.
Guter Punkt, ich habe eine mechanische Lösung hinzugefügt. Obwohl OP beabsichtigt, ein 120-V-Relais mit einem Mikrocontroller anzusteuern, wird dies auch bei einer Hochspannungsschnittstelle eine Herausforderung sein.
Vielen Dank für Ihre Antwort! Nun, ich bin mir nicht sicher, ob ich verstanden habe, was Sie im ersten Absatz gemeint haben, aber ich habe nicht die Absicht, Arduino zu verwenden, um die Position des Schalters zu ändern. Ich möchte Arduino vielleicht wissen lassen, ob der Schalter ein- oder ausgeschaltet ist, aber ich möchte Arduino nicht verwenden, um seinen Zustand zu ändern!
Ein Bild hinzugefügt, um die Visualisierung zu erleichtern. Dies ist sperrig und unansehnlich, aber es sollte gut funktionieren, sobald Sie die Positionierung angepasst haben, damit es ausgelöst wird. Wenn Sie über oder unter dem Lichtschalter eine Projektbox hinzufügen, um Ihre IoT-Geräte unterzubringen, können Sie auch ein kleines Loch seitlich durch den Lichtschalter bohren und dann eine Drahtverbindung verwenden, die in Ihre Projektbox verläuft um die gesamte Elektronik unsichtbar zu machen. Die Bewegung des Lichtschalters nach oben/unten wäre mit dem gleichen Endschaltertyp in Ihrer Projektbox gekoppelt, um seine lineare Position (oben vs. unten) zu lesen.

Eine weitere kuriose Idee trage ich hier bei. Gibt es eine einfache optoelektronische Sensorlösung, die das lösen kann? Zwei Vorteile bringen uns, Isolierung zum Schutz, Spannungspegelverschiebung zu Ihren MCU-Teilen. Stellen Sie sich vor, dass im Netzschalter eine physische Verbindung besteht. Wenn er eingeschaltet ist, um ein Licht zum Auslösen des Optosensors auszusenden, erhalten wir ein logisches Signal als 1. Wenn er ausgeschaltet ist, erhalten wir keine Signale als 0.

So wie es derzeit geschrieben steht, ist Ihre Antwort unklar. Bitte bearbeiten Sie, um zusätzliche Details hinzuzufügen, die anderen helfen zu verstehen, wie dies die gestellte Frage beantwortet. Weitere Informationen zum Verfassen guter Antworten finden Sie in der Hilfe .