Szenario
Ich habe ein schönes elektronisches Türschloss für meinen Schlafsaal geschaffen. Es ist derzeit ein Arduino Diecimila mit einem Servo [un], der die Tür verriegelt. Es hat eine numerische Tastatur mit 3x4 Tasten und 5 LEDs (2 Serienpaare und eine einzelne LED). Es läuft derzeit auch auf einem Handy-Ladegerät.
Ich habe es jetzt neu gestaltet, um es auf einem eigenständigen Arduino (ATmega328) laufen zu lassen, möchte es aber wirklich auf AA-Batterien oder sogar einer 9-V-Batterie laufen lassen.
Für den Softwareteil dachte ich, ich könnte sleep
Aufrufe für bestimmte Zeiten innerhalb der Schleifenmethode platzieren, um den ATmega-Stromverbrauch so gering wie möglich zu halten. Und lassen Sie die LEDs so lange wie möglich "blinken".
Frage 1
Wenn ein Knopf in den wenigen Millisekunden gedrückt wird, in denen das Board schläft, wird er "erinnert" / "gehalten", bis er nicht mehr schläft, und wird dann als Knopfdruck aufgenommen?
Was wäre der beste Weg, um mit diesem Knopfdruck im Schlaf umzugehen? Kann ich es codieren, um nach einer Tastenaktivität aufzuwachen, oder muss ich es einfach für z. B. 10 Minuten schlafen lassen. in jeder Schleife?
Frage 2
Wie würde ich rechnen, wie viele AA-Batterien benötigt werden, um dieses Gerät 10 Monate lang zu betreiben?
Außerdem weiß ich nicht, wie ich den durchschnittlichen Stromverbrauch pro Minute messen soll, da er sich schnell abwechselt usw.
Ich habe gerade einen Arduino Pro Mini auf meinem Schreibtisch, der 2 AA-Batterien verbraucht und bei Bedarf über ein Jahr lang laufen kann.
Es gibt drei Aspekte des Designs, die dies erreicht haben.
1. Ein anderer Regler
Ich verwende einen LTC3525-Boost-Regler. Es hat einen sehr niedrigen Ruhestrom (7 uA) und einen hohen Wirkungsgrad (> 90% bei 0,2 mA). So etwas wie dieses Sparkfun Board https://www.sparkfun.com/products/8999 sollte einen ähnlichen Job machen. Stellen Sie sicher, dass Sie ihn an den 5-V-Pin des Arduino und nicht an die VIN anschließen, damit der Arduino-Regler nicht verwendet wird.
2. Schläfrig
Der Anteil der Zeit, in der das Gerät aktiv ist, ist gering. Für den Rest der Zeit sollte das Gerät in SLEEP_MODE_POWER_DOWN eingeschlafen sein. Sie können Ihre Schlafroutinen auf der Grundlage der Rocketscreem Low Power Library erstellen . Laut diesem Link sollten Sie in der Lage sein, es mit ADC, BOD und WDT aus und im Power-Down-Modus auf 1,7 uA herunterzufahren.
3. Interrupts
Die andere Hälfte des Schlafs wird unterbrochen, um es aufzuwecken. Im Energiesparmodus werden nur die Pegelunterbrechungen von INT1 und INT2, TWI, berücksichtigt und der WDT aktiviert. Sie müssen also eine Taste an INT1 oder INT2 anschließen, damit sie durch Drücken der Taste aktiviert wird.
Andere Sachen:
Schalten Sie alle LEDs aus, sofern dies nicht unbedingt erforderlich ist. Wenn sich das Schloss in einem Gebäude befindet, müssen die LEDs nicht hell sein, wodurch mehr Strom gespart wird. Wenn die MCU regelmäßig Aufgaben ausführen muss, aktivieren Sie sie regelmäßig mit dem Watchdog-Timer.
Bearbeiten:
Eine mögliche Methode besteht darin, die oben beschriebene Low-Power-Bibliothek zu verwenden und dank des Watchdog-Timers für etwa 60 ms in jeder Schleife zu schlafen. Überprüfen Sie beim Aufwachen, ob eine Taste gedrückt wurde. Die aufzurufende Funktion wäre
quelle
Alle diese Kommentare sind genau richtig. Ich möchte noch ein paar Vorschläge hinzufügen:
1) Verwenden Sie für LEDs Hochleistungs-20-mA-LEDs. Hier ist die Logik. Nehmen wir an, Sie möchten eine Dimmstatus-LED, die alle 8 Sekunden blinkt. Sie möchten nicht, dass es hell ist, und verwenden daher eine zufällige LED. Das Problem ist, dass eine Dimm-LED immer noch 20 mA (oder mehr) benötigt, um nur 100 mcd auszugeben. Verwenden Sie stattdessen eine LED mit hoher Ausgangsleistung, die noch für 20 mA ausgelegt ist, aber 4000 mcd ausgeben kann (achten Sie darauf, dass Sie den Ausgangswinkel betrachten, und möchten, dass er wahrscheinlich 30 Grad oder mehr beträgt). Mit dieser 4000-mcd-LED schließen Sie sie an einen 3,3-k-Ohm-Widerstand an und erhalten eine Lichtleistung von ca. 100 mcd, verbrauchen jedoch weniger als 1 mA. Anstatt also 20 mA für die Status-LED zu verwenden, verwenden Sie einen Bruchteil eines einzelnen mA. Ich setze die Status-LED-Einschaltdauer normalerweise auch auf nur 5-15 ms, was auch viel Strom spart, wenn Sie die Einschaltdauer zuvor auf 100 ms eingestellt haben.
2) Mein Spannungsregler der Wahl ist der Microchip MCP1700. Es verbraucht nur 1,6 µA Ruhestrom und ist super günstig (ca. 0,30 USD in kleinen Mengen). Es ist nur eine Einschränkung, dass die maximale Eingangsspannung nur 6 Volt beträgt, sodass Sie keine 9-Volt-Batterie verwenden können. Aber es ist perfekt für 4 AA-Batterien, eine Einzelzellen-LiPo oder zwei Lithium-Knopfzellen.
3) Um eine ATmega-Schaltung mit 4 AA-Batterien zu versorgen, verwende ich normalerweise eine 1N4001-Diode auf VCC, um die maximalen 6 Volt der 4 Batterien auf 5,5 Volt zu senken. Außerdem schützt die Diode den ATmega vor Verpolung, sodass er zwei nützliche Funktionen erfüllt. Auf diese Weise kann ich einen batteriebetriebenen Schaltkreis erstellen, der im Schlaf nur 0,1 µA verbraucht, da kein Spannungsregler ständig Strom aufnimmt.
quelle
Ich habe einen Test mit einer nackten atmega328P-PU auf einem Steckbrett mit der RocketScream LowPower-Bibliothek durchgeführt
Verwendet diese Skizze:
Mit einem uCurrent Gold habe ich im Power-Down-Modus 7,25 uA gemessen.
quelle
Es gibt hier zwei Fragen, aber nur die zweite ist wirklich Teil des Fragentitels. Daher ist es wahrscheinlich besser, wenn Sie eine andere Frage für die Arduino-Programmierfrage öffnen. Ich beantworte die zweite Frage hier.
Eine einzelne 1,5-V-AA-Alkalibatterie der Spitzenklasse hat eine Kapazität von ca. 2600 mAh. Wenn Sie sich für Lithium-Batterien entscheiden, können Sie mit etwas Glück bis zu 3400 mAh erreichen. Lassen Sie uns mit dieser Zahl als Basis für den absoluten Best-Case gehen.
Die Art und Weise, wie Sie die theoretische maximale Laufzeit für eine Last berechnen, ist einfach die Kapazität geteilt durch die Last. Wenn Ihre Last 1 mA beträgt, können Sie sie für 3400/1 = 3400 Stunden = 141 Tage = ~ 5 Monate betreiben. Dies ist jedoch nur ein theoretisches Maximum , da in dieser Zeit eine signifikante Spannung von ca. 65% auftritt. Wenn Sie den Ausgang regulieren, kommt es zu einem außer Kontrolle geratenen Effekt. Je niedriger die Batteriespannung ist, desto höher ist der Strom, der zur Aufrechterhaltung der geregelten Spannung erforderlich ist, wodurch die Batterie schneller entladen wird. Es würde mich wundern, wenn Sie mit einer Spannung, die hoch genug ist, um Ihr Gerät zu betreiben, mehr als 80% der angegebenen Kapazität nutzen können.
Nehmen wir also an, Sie erhalten 80% dieser Zeit nach Spannungsabfall und Ineffizienzen des Reglers. Wir gehen davon aus, dass Sie mit 3,3 V aus drei in Reihe geschalteten Batterien arbeiten. Dies gibt Ihnen immer noch die gleiche Kapazität, aber die Spannung reicht für einen Regler. Wenn Ihr Gerät mit 15 mA betrieben wird (das ist eine eher konservative Schätzung), sehen die Zahlen folgendermaßen aus:
Sie benötigen also etwa 144 Lithiumbatterien (48 3er-Sets), um das Gerät ein Jahr lang zu betreiben. Nicht so gut!
Ich würde vorschlagen, stattdessen eine geregelte Gleichstromversorgung aus dem Netz zu verwenden. Ein Batterie-Backup kann mitgeliefert werden, das mit einem SPDT-Relais einfach eingerichtet werden kann. Schließen Sie einfach die Spule an das Gleichstromnetz an und lassen Sie den "Aus" -Kontakt an die Batterie anschließen. Wenn der Gleichstrom ausfällt, fällt der Kontakt ab und die Batterie wird stattdessen verwendet.
quelle
Was noch niemand erwähnt hat: Sie müssen eine Möglichkeit haben, die + 5V-Versorgung des Servos auszuschalten, wenn Sie es nicht verwenden. Selbst wenn es sich nicht bewegt, zieht ein Servo immer noch Strom.
Ein FET mit dem Gate, das von einem I / O-Pin vom Arduino gesteuert wird, ist eine gute Möglichkeit, dies zu tun.
quelle
Sie können einen Mikrocontroller verwenden, der speziell für den geringen Stromverbrauch Ihres nächsten Designs optimiert ist. Für einen geringen Stromverbrauch ist es notwendig, im Schlaf sehr wenig Strom aufzunehmen. Was oft übersehen wird, ist, dass es auch wichtig ist, wie schnell es aus diesem Schlaf aufwachen kann.
Was zählt, ist, wie viel Ladung vom tiefsten Schlaf benötigt wird, um eine Unterbrechung so schnell wie möglich zu bewältigen (da der Stromstoß dann sehr kurz ist) und wieder einzuschlafen.
Ein Beispiel für einen solchen Mikrocontroller ist MSP430 von Texas Instruments. Auf ihrer Website finden Sie Anwendungshinweise zum Einsparen von Energie und zur Energiegewinnung.
quelle