Verwendung eines Timers zum Ein-/Ausschalten eines Hochstromkreises

Ich arbeite an einem Arduino-Projekt, das Messungen aus der Umgebung vornimmt und sie über WLAN an einen Remote-Server sendet. Die Schaltung sollte batteriebetrieben sein, und ich habe gemessen, dass das, was ich im Moment habe, etwa 160 mA Strom verbraucht, was es unmöglich macht, länger als ein paar Tage mit Batterie zu laufen. Das Gute ist, dass es ausreicht, den Stromkreis einmal pro Stunde einzuschalten und etwa eine Minute lang laufen zu lassen und ihn dann auszuschalten.

Also dachte ich daran, eine Zeitschaltung mit sehr geringem Stromverbrauch zu erstellen, die meine Hauptschaltung jede Stunde eine Minute lang mit Strom versorgt. Leider habe ich keine Ahnung wie das geht :). Ich habe versucht zu recherchieren und denke, dass es mit IC 555 möglich sein könnte, aber wenn ich das Datenblatt richtig verstanden habe, zieht es etwa 3-6 mA Strom, was etwas zu viel ist.

Hat jemand irgendwelche Ideen, um mich in die richtige Richtung zu weisen?

Kann ich vorschlagen, dass Sie, wenn es Ihnen nichts ausmacht, dass Ihr Prozessor die ganze Zeit läuft, einfach Millis () verwenden können, um den Zeitstempel zu erhalten, und einfach alle 3600 Sekunden den Ein- / Ausschaltzyklus durchführen ( * 1000 für Millisekunden, alle vorzeichenlose lange Variable Datentypen!)
Andernfalls lernen Sie, wie Sie Ihr Arduino in den Ruhezustand versetzen, und verwenden Sie den externen Interrupt-Pin und tun Sie, was Motoprogger mit einem 555-Timer vorschlägt, und wachen Sie auf und zählen Sie + 1 jedes Mal, wenn Sie aufwachen, einmal pro Sekunde, bis die Zählervariable 3600 erreicht und dann Führen Sie Ihren Vorgang wie erforderlich 1 Minute lang durch und kehren Sie dann zum Sleep-Wait-Count-Betrieb zurück

Antworten (3)

Eine Stunde ist zu viel für einen 555-Timer oder einen anderen Oszillator. Eine bessere Lösung könnte ein 1-Hz-Multivibrator (ein 4011-Chip verbraucht weniger als 0,5 mA bei 1 MHz und noch weniger bei 1 Hz) und ein Zähler sein, der bis 3600 zählt.

Das ist eine ziemlich coole Idee, ich stimme dem zu. Ich hoffe, Sie meinen mit Zähler, dass der Arduino nur zählt, wie oft der Pin hoch geht (Zählung der steigenden Flanken oder nur Aufwachen bei Unterbrechung und Zählen ++, dann schlafen, wenn nicht> = 3600)
Wenn Sie mit dem 6-mA-Stromverbrauch des 555 nicht zufrieden sind, würden Sie mit dem Always-on-Arduino zufrieden sein?
Warum nicht das Arduino bei einem externen Interrupt aufwachen lassen, der durch das 1-Hz- (oder sogar 0,2-Hz-, spielt keine Rolle) 555-Timer-Signal ausgelöst wird, eine Zählung durchführen und dann schlafen, wenn nicht >= 3600 gezählt wird?

Wenn Sie ein Arduino haben und so lange Zeit haben, kaufen Sie doch ein RTC-Addon für das Arduino. Sie sind nicht so viel und auf diese Weise können Sie über lange Zeiträume eine anständige Genauigkeit erzielen.

http://playground.arduino.cc/Main/DS1302

Der ATmega auf dem Arduino-Board hat einige Schlaffunktionen , wodurch er praktisch keinen Strom verbraucht.

Der ATMega328 hat einen eingebauten Watchdogtimer. Sie können ihn auf bis zu 8 Sekunden einstellen. Legen Sie es einfach ein SLEEP_MODE_PWR_DOWN, und der Watchdog weckt es in 8 Sekunden wieder auf. Wenn Sie dies 450 Mal tun, haben Sie eine Stunde Schlaf mit nur wenigen ms CPU-Zeit.

Die andere Sache ist, das WLAN-Modul auch in den Ruhezustand zu versetzen.

Und vielleicht entlöten Sie einige der LEDs auf der Arduino-Platine, um den Stromverbrauch zu reduzieren.

Es ist eine gute Option, die Sensoren zusätzlich zu Wi-Fi zu deaktivieren, bevor der Mikrocontroller in den Ruhezustand versetzt wird.