Vraag:
Ideeën voor vergrendelende schakelaars
Dirk
2010-05-19 07:03:34 UTC
view on stackexchange narkive permalink

Ik probeer een vergrendelingsschakelaar te bouwen die op een deur is aangesloten en zou graag ideeën op prijs stellen.

De schakelaar is verbonden met een microcontroller-ingangspen en ik zou graag willen dat deze als volgt werkt: een persoon opent en sluit de deur, hij klikt vast. Het blijft branden totdat het in de software wordt gereset.

Het basisidee is na te gaan hoe lang het geleden is dat de deur geopend en weer gesloten was, en daar iets op te baseren. Zodra ik dit heb gedaan, kan ik de schakelaar weer resetten. Het maakt niet uit of de deur meerdere keren wordt geopend of gesloten.

Ik weet niet zeker waar ik moet beginnen, dus alle ideeën zijn welkom.

Dus heb je een idee over hoe je wilt voelen wanneer de deur open of dicht is, of is dat een deel van de vraag? Zou je ook zeggen dat je vooral geïnteresseerd bent in wanneer de deur open en dicht gaat, niet in een " klink "?
Goed punt. Dat is een deel van de vraag :) Ik vind het niet erg als de deur open en dicht gaat, alleen dat het zo is.
Vier antwoorden:
Atmelfaebrian
2010-05-19 08:16:27 UTC
view on stackexchange narkive permalink

De meeste moderne MCU's zoals de Atmel AVR (gebruikt in Arduino) hebben de mogelijkheid om te slapen in een zeer lage energiestand (< 1 uA) en wakker te worden uit een verscheidenheid aan bronnen, waaronder een timer met laag vermogen aangedreven door 32 kHz kristal of pinwissel onderbreekt. Het gebruik van een pinwisselonderbreking of een door een laag niveau getriggerde interrupt kan de AVR-microcontroller uit een diepe stroom halen. Vervolgens kan de toestand worden opgeslagen in een programmavariabele. Zie http://www.atmel.com/avr

Een alternatieve hardware-benadering voor een vergrendelingsschakelaar is de RS-vergrendeling die is opgebouwd uit twee NOR- of NAND-poorten met twee ingangen met uitgang teruggevoerd naar een van de 2 ingangen. Telkens wanneer de output hoog wordt, houdt de feedback deze in die toestand totdat de andere input hoog wordt getrokken om de latch te resetten.

Atmelfaebrian

Als je een controller hebt, is het waarschijnlijk logisch om deze te gebruiken, het kan ook zijn voorzien van uitschakelmodi waardoor een timer of rtc kan blijven draaien, zodat je nog steeds de tijd kunt houden terwijl de cpu slaapt. U kunt ook een externe RTC gebruiken.
ajs410
2010-05-19 22:38:23 UTC
view on stackexchange narkive permalink

Gebruik een Hall Effect-sensor en een magneet op de deur. Als de sensor een magnetisch veld oppikt, is de deur gesloten. Geen magnetisch veld - niet gesloten.

Nu kunt u de sensor periodiek pollen met elke gewenste snelheid (iets lang ... zoals 250 ms?). Zodra u geen magnetisch veld heeft gedetecteerd, kunt u beginnen met het bijhouden van de tijd.

pingswept
2010-05-19 07:16:14 UTC
view on stackexchange narkive permalink

Om te verduidelijken, je hebt het niet over het sluiten van de deur, toch? U bedoelt gewoon dat de schakelaar vergrendelt?

Ervan uitgaande dat ja: ik zou beginnen met een optische sleufsensor en een stuk karton dat aan de deur is bevestigd, en dan de vergrendeling in software uitvoeren. Probeer zoiets als de Rohm RPI-131 van Digikey.

Ja, ik doe de deur niet dicht. Met "latching" bedoel ik dat de schakelaar in een bepaalde staat blijft tot hij wordt gereset. Ik weet dat het mogelijk is om de MCU continu te laten luisteren, maar doe dat liever maar eens in de paar minuten. (Ik probeer echt energie te besparen, dus mcu zal hopelijk het grootste deel van zijn tijd in slaap doorbrengen)
Dit is best een cool idee, dus zou je deze sensor op het frame monteren en een stuk kaart op de deur monteren dat de balk breekt wanneer de deur gesloten is? Het nadeel van deze benadering is dat dit type sensor altijd aan staat, en kijkend naar de datasheet die het trekt tussen 50-100 mA.
Ik wed dat je dat mechanisch zou kunnen oplossen. Misschien kan het karton eigenlijk een stukje plastic zijn dat is gebogen zodat het in de gleufsensor past. Wanneer de deur opengaat, trekt hij uit de gleuf en buigt hij weer, maar wanneer de deur sluit, past hij niet terug in de gleuf. (Het zou met de hand moeten worden gereset, maar vanaf de vraag denk ik dat dat in orde is.) Dan zou je de sensor bijna altijd kunnen uitschakelen.
Bij polling hoeft de sensor alleen aan te staan ​​als hij wordt gepolld. Schik het zo dat de controller het kan in- / uitschakelen.
vicatcu
2010-05-19 20:46:03 UTC
view on stackexchange narkive permalink

Ik zou iets supereenvoudigs doen, zoals een contact "schakelaar" en de "latching" logica in software doen. Dat wil zeggen, gebruik gewoon twee stukken metaal, één op de deur en één op het frame, die elkaar "raken" wanneer de deur gesloten is en gescheiden wanneer de deur open is. Zorg ervoor dat de invoerpin de interne pullup heeft ingeschakeld. Bevestig het metaal dat op het frame zit aan uw MCU-invoerpin. Bevestig het metaal dat op de deur zit aan GND (gebruikelijk voor uw MCU GND). Als de deur gesloten is, geeft die ingang "0" aan, als de deur open is, leest die ingang "1". Ik denk dat je dan zelfs wakker kunt worden met een overgang op logisch niveau op die pin (ik denk dat het sowieso zo werkt). U kunt dit ontwaken ook koppelen aan een "periodiek" ontwaken door een timeronderbreking, zoals door anderen wordt voorgesteld.

Daar ben ik het mee eens. Het is het eenvoudigst om de hardware alleen "deur gesloten" of "deur open" te laten voelen en de software te laten bijhouden of de deur ooit is geopend, hoe lang de deur open is geweest, hoe lang de deur is gesloten, enz. De bovenstaande "2 stukken metaal" is prima voor prototyping. Later wilt u misschien overschakelen naar een andere deursensor die minder kwetsbaar is voor statische lading. - een magneet en een hall-effectsensor, een wit geverfde spot en een optische reflecterende sensor, enz. Alles wat je een "0" geeft als de deur open is en een "1" als de deur gesloten is.


Deze Q&A is automatisch vertaald vanuit de Engelse taal.De originele inhoud is beschikbaar op stackexchange, waarvoor we bedanken voor de cc by-sa 2.0-licentie waaronder het wordt gedistribueerd.
Loading...