Ideen für Rastschalter

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-Eingangsstift 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 besteht darin, zu messen, wie lange es her ist, dass die Tür geöffnet und wieder geschlossen wurde, und darauf basierend etwas zu tun. Sobald ich dies getan habe, kann ich den Schalter wieder zurücksetzen. Dabei spielt es keine Rolle, ob die Tür mehrmals geöffnet oder geschlossen wird.

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

Haben Sie also eine Vorstellung davon, wie Sie erkennen möchten, wann die Tür offen oder geschlossen ist, oder ist das Teil der Frage? Würden Sie auch sagen, dass Sie in erster Linie daran interessiert sind, wann sich die Tür öffnet und schließt, und nicht an einem "Riegel"?
Guter Punkt. Das ist Teil der Frage :) Es macht mir nichts aus, wenn sich die Tür öffnet und schließt, nur dass sie es getan hat.

Antworten (4)

Die meisten modernen MCUs wie der Atmel AVR (verwendet in Arduino) haben die Fähigkeit, in einem Zustand mit sehr geringem Stromverbrauch (< 1 uA) zu schlafen und aus einer Vielzahl von Quellen aufzuwachen, einschließlich eines Low-Power-Timers, der von 32-kHz-Quarz- oder Pin-Wechsel-Interrupts angetrieben wird . Die Verwendung eines Pin-Wechsel-Interrupts oder eines ausgelösten Low-Level-Interrupts kann den AVR-Mikrocontroller aus einem tiefen Stromausfall aufwecken. Dann kann der Zustand in einer Programmvariablen gespeichert werden. Siehe http://www.atmel.com/avr

Ein alternativer rein hardwarebasierter Ansatz für einen Latch-Schalter ist der RS-Latch, der aus zwei NOR- oder NAND-Gattern mit zwei Eingängen aufgebaut ist, wobei der Ausgang an einen der beiden 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 das Latch zurückzusetzen.

Atmelfaebrian

Wenn Sie einen Controller haben, ist es wahrscheinlich sinnvoll, ihn zu verwenden. Es kann auch Abschaltmodi haben, die es einem Timer oder RTC ermöglichen, weiter zu laufen, so dass Sie immer noch die Zeit behalten können, während die CPU schläft. Alternativ können Sie auch eine externe RTC verwenden.

Verwenden Sie einen Hall-Effekt-Sensor und einen Magneten an der Tür. Nimmt der Sensor ein Magnetfeld auf, wird die Tür geschlossen. Kein Magnetfeld - nicht geschlossen.

Jetzt können Sie den Sensor regelmäßig mit einer beliebigen Rate abfragen (etwas langes ... wie 250 ms?). Sobald Sie kein Magnetfeld erkennen, können Sie mit der Zeiterfassung beginnen.

Zur Verdeutlichung, Sie sprechen nicht davon, die Tür zu schließen, oder? Du meinst nur, dass der Schalter einrastet?

Angenommen ja: Ich würde mit einem optischen Schlitzsensor und einem an der Tür befestigten Stück Pappe beginnen und dann die Verriegelung in der Software vornehmen. Versuchen Sie etwas wie das Rohm RPI-131 von Digikey.

Ja - die Tür wird nicht geschlossen. Mit "Verriegeln" meine ich, dass der Schalter bis zum Zurücksetzen in einem bestimmten Zustand bleibt. Ich weiß, dass es möglich ist, dass die MCU kontinuierlich zuhört, aber ich würde das lieber nur alle paar Minuten tun. (Ich versuche wirklich, Strom zu sparen, also wird mcu hoffentlich die meiste Zeit schlafend verbringen)
Das ist eine ziemlich coole Idee, also würden Sie diesen Sensor am Rahmen montieren und ein Stück Pappe an der Tür anbringen, das den Strahl bricht, wenn die Tür geschlossen ist? Der Nachteil dieses Ansatzes besteht darin, dass dieser Sensortyp immer eingeschaltet ist und, wenn man sich das Datenblatt ansieht, zwischen 50 und 100 mA zieht.
Ich wette, das könntest du mechanisch lösen. Vielleicht könnte der Karton tatsächlich ein Stück Plastik sein, das so gebogen ist, dass es in den Schlitzsensor passt. Wenn sich die Tür öffnet, wird sie aus dem Schlitz gezogen und gebogen, aber wenn die Tür geschlossen wird, 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 immer ausschalten.
Beim Polling muss der Sensor nur eingeschaltet sein, wenn er gepollt wird. Ordnen Sie es so an, dass der Controller es ein- und ausschalten kann.

Ich würde etwas super Einfaches tun, wie einen Kontakt "schalten" und die "Verriegelungs" -Logik in Software ausführen. Das heißt, verwenden Sie einfach zwei Metallstücke, eines an der Tür und eines am Rahmen, die sich "berühren", wenn die Tür geschlossen ist, und sich trennen, wenn die Tür offen ist. Stellen Sie sicher, dass der Eingangspin den internen Pullup aktiviert hat. Befestigen Sie das Metall am Rahmen an Ihrem MCU-Eingangsstift. Befestigen Sie das Metall an der Tür an GND (gemeinsam mit Ihrem MCU GND). Wenn die Tür geschlossen ist, lautet dieser Eingang „0“, wenn die Tür offen ist, lautet dieser Eingang „1“. Ich denke, Sie können dann sogar bei einem logischen Pegelübergang an diesem Pin aufwachen (ich denke, so funktioniert es sowieso). Sie können dieses Aufwachen auch mit einem "periodischen" Aufwachen von einem Timer-Interrupt koppeln, wie von anderen vorgeschlagen.

Ich stimme zu. Am einfachsten ist es, wenn die Hardware nur "Tür geschlossen" oder "Tür offen" erkennt und die Software verfolgt, 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 obigen "2 Metallstücke" sind gut für das Prototyping. Später möchten Sie vielleicht zu einem anderen Türsensor wechseln, der weniger anfällig für statische Aufladung ist. -- ein Magnet und ein Hallsensor, ein weiß lackierter Punkt und ein optischer Reflexionssensor usw. Alles, was Ihnen eine "0" gibt, wenn die Tür offen ist, und eine "1", wenn die Tür geschlossen ist.