Verriegeln von Schalterideen

7

Ich versuche einen Verriegelungsschalter zu bauen, der mit einer Tür verbunden ist, und würde mich über Ideen freuen.

Der Schalter ist mit einem Mikrocontroller-Eingangspin verbunden, und ich möchte, dass er wie folgt funktioniert: Wenn eine Person die Tür öffnet und schließt, rastet sie ein. Es bleibt eingeschaltet, bis es in der Software zurückgesetzt wird.

Die Grundidee ist, zu bestimmen, wie lange es her ist, dass die Tür wieder geöffnet und geschlossen wurde, und darauf basierend etwas zu tun. Sobald ich dies getan habe, kann ich den Schalter wieder zurücksetzen. Es spielt keine Rolle, ob die Tür mehrmals geöffnet oder geschlossen wird.

Ich bin mir nicht sicher, wo ich anfangen soll, daher sind alle Ideen willkommen.

Dolch
quelle
Haben Sie eine Idee, wie Sie spüren möchten, wann die Tür geöffnet oder geschlossen ist, oder ist das Teil der Frage? Würden Sie auch sagen, dass Sie hauptsächlich daran interessiert sind, wann sich die Tür öffnet und schließt, nicht an einem "Riegel"?
W5VO
Guter Punkt. Das ist ein Teil der Frage :) Es macht mir nichts aus, wenn sich die Tür öffnet und schließt, nur dass es so ist.
Dirk

Antworten:

9

Die meisten modernen MCUs wie der Atmel AVR (in Arduino verwendet) können in einem Zustand mit sehr geringer Leistung (<1 uA) schlafen und aus einer Vielzahl von Quellen aufwachen, einschließlich eines Zeitgebers mit geringer Leistung, der von 32-kHz-Quarz- oder Pinwechselinterrupts angetrieben wird . Die Verwendung eines Pin-Wechsel-Interrupts oder eines durch einen niedrigen Pegel ausgelösten Interrupts kann den AVR-Mikrocontroller aus dem tiefen Ausschalten wecken. Dann kann der Zustand in einer Programmvariablen gespeichert werden. Siehe http://www.atmel.com/avr

Ein alternativer Hardware-Ansatz für einen Verriegelungsschalter ist der RS-Latch, der aus zwei NOR- oder NAND-Gattern mit 2 Eingängen aufgebaut ist, wobei der Ausgang auf einen der 2 Eingänge zurückgeführt wird. Immer wenn der Ausgang hoch geht, hält die Rückkopplung ihn in diesem Zustand, bis der andere Eingang hoch gezogen wird, um den Latch zurückzusetzen.

Atmelfaebrian

Atmelfaebrian
quelle
Wenn Sie einen Controller haben, ist es wahrscheinlich sinnvoll, ihn zu verwenden. Es kann auch Ausschaltmodi geben, mit denen ein Timer oder ein RTC weiterlaufen können, sodass Sie die Zeit behalten können, während die CPU im Ruhezustand ist. Alternativ können Sie eine externe RTC verwenden.
XTL
4

Verwenden Sie einen Hall-Effekt-Sensor und einen Magneten an der Tür. Wenn der Sensor ein Magnetfeld aufnimmt, ist die Tür geschlossen. Kein Magnetfeld - nicht geschlossen.

Jetzt können Sie den Sensor regelmäßig mit der gewünschten Geschwindigkeit abfragen (etwas langes ... wie 250 ms?). Sobald Sie kein Magnetfeld mehr erkennen, können Sie mit der Zeiterfassung beginnen.

ajs410
quelle
3

Zur Klarstellung, Sie sprechen nicht davon, die Tür zu verriegeln, oder? Du meinst nur, dass der Schalter einrastet?

Angenommen, ja: Ich würde mit einem optischen Schlitzsensor und einem Stück Pappe an der Tür beginnen und dann die Verriegelung in der Software durchführen. Probieren Sie so etwas wie den Rohm RPI-131 von Digikey.

pingswept
quelle
1
Ja - die Tür nicht verriegeln. Mit "Verriegeln" meine ich, dass der Schalter bis zum Zurücksetzen in einem Zustand bleibt. Ich weiß, dass es möglich ist, dass die MCU kontinuierlich zuhört, aber ich würde das lieber nur einmal alle paar Minuten tun. (Ich versuche wirklich, Energie zu sparen, also wird mcu hoffentlich die meiste Zeit im Schlaf verbringen)
Dirk
Das ist eine coole Idee, also würden Sie diesen Sensor am Rahmen montieren und ein Stück Karte an der Tür montieren, das den Strahl bricht, wenn die Tür geschlossen wird? Der Nachteil dieses Ansatzes besteht darin, dass dieser Sensortyp immer eingeschaltet ist und im Datenblatt zwischen 50 und 100 mA liegt.
Vicatcu
Ich wette, Sie könnten das mechanisch lösen. Vielleicht könnte der Karton tatsächlich ein Stück Plastik sein, das gebogen ist, damit es in den Schlitzsensor passt. Wenn sich die Tür öffnet, zieht sie sich aus dem Schlitz heraus und löst sich, aber wenn sich die Tür schließt, passt sie nicht wieder in den Schlitz. (Es müsste von Hand zurückgesetzt werden, aber von der Frage her denke ich, dass das in Ordnung ist.) Dann könnten Sie den Sensor fast die ganze Zeit ausschalten.
Pingswept
Beim Abrufen muss der Sensor nur eingeschaltet sein, wenn er abgefragt wird. Ordnen Sie es so an, dass der Controller es ein- und ausschalten kann.
XTL
3

Ich würde etwas supereinfaches tun, wie einen Kontakt "Schalter" und die "Verriegelungs" -Logik in der Software machen. Das heißt, verwenden Sie einfach zwei Metallteile, eines an der Tür und eines am Rahmen, die sich bei geschlossener Tür "berühren" und bei geöffneter Tür trennen. Stellen Sie sicher, dass am Eingangspin der interne Pullup aktiviert ist. Befestigen Sie das Metall am Rahmen an Ihrem MCU-Eingangsstift. Befestigen Sie das Metall an der Tür an GND (gemeinsam mit Ihrer MCU GND). Wenn die Tür geschlossen ist, lautet dieser Eingang "0", wenn die Tür geöffnet ist, lautet dieser Eingang "1". Ich denke, Sie können dann sogar mit einem logischen Pegelübergang an diesem Pin aufwachen (ich denke, so funktioniert es sowieso). Sie können dieses Aufwecken auch mit einem "periodischen" Aufwecken von einem Timer-Interrupt koppeln, wie von anderen vorgeschlagen.

vicatcu
quelle
Genau. Es ist am einfachsten, wenn die Hardware nur "Tür geschlossen" oder "Tür offen" erkennt und die Software nachverfolgt, ob die Tür jemals geöffnet wurde, wie lange die Tür geöffnet war, wie lange die Tür geschlossen war usw. Die oben genannten "2 Metallteile" eignen sich gut für das Prototyping. Später möchten Sie möglicherweise zu einem anderen Türsensor wechseln, der weniger anfällig für statische Aufladung ist. - ein Magnet und ein Hall-Effekt-Sensor, ein weiß gestrichener Punkt und ein optisch reflektierender Sensor usw. Alles, was Ihnen bei geöffneter Tür eine "0" und bei geschlossener Tür eine "1" gibt.
Davidcary