Winziger Magnetsensorschalter

Ich weiß gerade genug über Elektronik, um gelegentlich ein Arduino- oder Raspberry Pi-Projekt durchzuführen, solange ich nicht zu viel von dem verstehen muss, was vor sich geht. Ich bin ein Software-Typ, der sich ein wenig mit Hardware beschäftigt. Ich bin mir also nicht einmal sicher, ob ich eine gute Frage formulieren kann, weshalb ich keine Antwort auf diese Frage googeln konnte.

Ich habe ein kleines tragbares Gerät (ca. 30 mm x 30 mm x 10 mm) hergestellt, das eine einfache Aufgabe hat. Auf dem Gerät ist ein Magnet aufgesteckt. Wenn der Magnet entfernt wird, teilt er dies meinem Telefon mit (über BLE). Stellen Sie sich eine Art persönliches Alarmgerät vor.

Mein erster Prototyp verwendet einen NC-Reed-Schalter und funktioniert perfekt ... außer dass der Reed-Schalter ziemlich anfällig für falsche Aktivierung ist, wenn er zu viel herumgerüttelt wird. Das Gerät sollte nur aktiviert werden, wenn der Magnet entfernt wird. Als Verbesserung dachte ich, dass die Lösung wahrscheinlich darin bestand, einen Hall-Effekt-IC zu verwenden. Ich habe auch ein wenig über MEMS gelesen. Die Kosten spielen keine Rolle, im Rahmen des Zumutbaren (dh unter 20 US-Dollar), aber Größe und Haltbarkeit sind absolut wichtig.

Meine Fragen:

  1. Erstens, ist ein Hall-Effekt-IC eine geeignete Lösung, oder gibt es etwas anderes, das besser funktionieren würde?
  2. Meine Annahme ist, dass ich einen NC-Schalter verwenden muss, der offen ist, wenn sich der Magnet in der Nähe befindet. Dadurch geht ein digitaler IO-Pin nur dann auf HIGH, wenn der Magnet entfernt wird. Meine Überlegung ist, dass, wenn der Schalter NO ist, er geschlossen wird, wenn sich der Magnet in der Nähe befindet, wodurch der IO-Pin die meiste Zeit HIGH wird. Ich dachte, dass dies die Batterie unnötig belasten würde. Aber ich habe kürzlich etwas gelesen, das darauf hindeutet, dass digitales IO so nicht funktioniert. Meine Frage ist also ... verbraucht es mehr Strom, um den HIGH-Status aufrechtzuerhalten als LOW?
  3. Denke ich da ganz falsch? Gibt es eine einfache Möglichkeit, dasselbe in einem sehr kleinen Paket zu erreichen? Ich verwende ein 3-V-Logik-Arduino-Derivat mit vielen Pins. Das Gerät verbraucht derzeit im Durchschnitt nur etwa 50 uA, und ich möchte, dass es so bleibt.
Sie können einen Shunt-C-Filter der Serie R einsetzen, um den Störimpuls des Hallsensors zu entfernen, der auf RC = T-Verzögerung eingestellt ist

Antworten (2)

Ihre Idee, ein Hall-Effekt-Gerät zu verwenden, scheint ideal zu sein.

Es gibt viele Hall-Effekt-Sensoren, hier ist einer für etwa 0,40 US-Dollar, der meiner Meinung nach ideal wäre. Es arbeitet bei 2,3 - 5 V und hat einen Open-Drain-Ausgang und könnte daher mit einem einzigen digitalen Eingang mit nur einem hochohmigen Pullup-Widerstand verwendet werden. Sie könnten wahrscheinlich sogar einfach den eingebauten Pullup verwenden, der auf den meisten MCUs (im Bereich von 20-50 kOhm) enthalten ist. Sie könnten auf Digikey nach anderen suchen .

Es hat einen extrem niedrigen Stromverbrauch, aber Sie könnten es mit einem digitalen Ausgangspin ansteuern, sodass es nur eingeschaltet wird, wenn Sie möchten. Ich gehe davon aus, dass Sie die meiste Zeit im Ruhemodus verbringen, um einen sehr geringen Stromverbrauch Ihrer MCU zu erzielen. Schalten Sie vor dem Schlafengehen einfach den stromliefernden Port auf einen Eingang (geringster Stromverbrauch) ohne Pullup-Widerstand.

Wenn Sie ein Schaltgerät wie das Reed-Relais verwenden, ist es entweder offen oder geschlossen. Im geschlossenen Zustand kann ein MCU-GPIO-Eingangspin problemlos auf GND geschaltet werden. Wenn der Schalter jedoch geöffnet ist, muss etwas dafür sorgen, dass der MCU-GPIO-Eingang wieder auf einen hohen Pegel gesetzt wird. Dies geschieht normalerweise mit einem Widerstand an der VCC des Mikrocontrollers. Der Niedrigstromzustand wäre in diesem Fall also, wenn der Schalter geöffnet ist. Wenn der Schalter schließt, fließt Strom vom Widerstand durch den Relaiskontakt zum GND, der Strom verbraucht.

Sie könnten den Widerstand und den Reed-Schalter so vertauschen, dass der Widerstand den GPIO-Eingang auf GND zieht und der Schalter (mit einer Seite zur Versorgungsspannung) dann den GPIO hochziehen würde, wenn der Schalter schließt.

In beiden Fällen ist der höhere Batterieentladungszustand, wenn der Reed-Schalter geschlossen ist, sodass Sie einen Schalter auswählen möchten, der sich öffnet, wenn der Magnet vorhanden ist (vorausgesetzt, der vorhandene Magnet ist der Teil des Nutzungsszenarios mit langer Einschaltdauer).

Ein Hall-Effekt-Gerät sollte das perfekte Gerät für Ihre Anwendung sein. Sie sind klein, relativ preiswert und robust. Wenn Sie einen Sensor auswählen, wählen Sie einen, der eine einfache hohe oder niedrige Ausgabe liefert, basierend auf dem Vorhandensein oder Fehlen eines Magnetfelds einer bestimmten Stärke. Es gibt andere Arten von Hall-Sensoren, die eine analoge Ausgabe basierend darauf erzeugen, wie stark das Magnetfeld in der Nähe des Sensors ist (entspricht ungefähr der Entfernung vom Magneten), aber diese sind teurer und haben ein komplexes Verfahren, um sie auf einen bestimmten Magneten in a zu kalibrieren gegebene Betriebsumgebung.