Hinweis: Ich wollte darauf hinweisen, dass, obwohl meine Antwort akzeptiert wurde, der Leser (Sie) wirklich zuerst Anindos Antwort lesen sollte, wenn Sie mit einem Arduino-Board wirklich Energie sparen möchten. Sobald Sie diese Punkte in Ihrem Design angesprochen haben, sollten Sie meine Antwort lesen und sich Gedanken darüber machen, wie Sie die MCU in den Energiesparmodus versetzen.
Allerdings gibt es mehrere Techniken, mit denen ein Arduino Strom spart. Ich werde ein paar auflisten und Sie dann auf eine Seite verweisen, die sie alle ausführlicher erklärt.
Während der Controller nichts Wichtiges tut (z. B. zwischen zwei Lesevorgängen eines Sensors), können Sie den Controller mit dem Befehl in einen der folgenden Ruhemodi versetzen set_sleep_mode (SLEEP_MODE_PWR_DOWN)
. Neben jedem Modus ist der ungefähre Stromverbrauch jedes Modus angegeben.
- SLEEP_MODE_IDLE: 15 mA
- SLEEP_MODE_ADC: 6,5 mA
- SLEEP_MODE_PWR_SAVE: 1,62 mA
- SLEEP_MODE_EXT_STANDBY: 1,62 mA
- SLEEP_MODE_STANDBY: 0,84 mA
- SLEEP_MODE_PWR_DOWN: 0,36 mA
Deaktivieren Sie die Brownout -Erkennung (die Schaltung, die den Controller ausschaltet, wenn eine niedrige Spannung erkannt wird).
ADC ausschalten (Analog zu Digita Konvertierung)
Verwenden Sie die interne Uhr
Wenn Sie den Controller in den Energiesparmodus versetzen, müssen Sie einen oder mehrere der folgenden Mechanismen verwenden, um den Controller aufzuwecken und etwas damit zu tun:
Dies ist eine Zusammenfassung, die ich gemacht habe aus -
Dieser Artikel bezieht sich hauptsächlich auf ATmega328P, aber die Technik gilt auch für andere Arduino-kompatible Controller. Wie TheDoctor bereits sagte, müssen Sie den Datenbestand überprüfen, um sicherzustellen, dass Ihr Controller diese Techniken unterstützt und wie Sie dies genauer ausführen können.
Realistisch gesehen ist der lineare Spannungsregler auf einer Arduino-Platine die größte Energieverschwendung.
Solange der Mikrocontroller auf der Platine, die LEDs oder andere Peripheriegeräte Strom ziehen, verschwendet der Linearregler eine Leistung von
difference between supply and board voltage
xcurrent drawn
.Eine erste Lösung besteht darin, die Stromanzeige-LED auf der Platine zu trennen und keine der anderen LEDs so weit wie möglich zu verwenden. Zweitens, versorgen Sie die Platine mit einer so niedrigen Spannung wie möglich, die gerade ausreicht, um den integrierten Regler mit Strom zu versorgen.
Bei den Originalausführungen weisen die verwendeten Spannungsregler keinen geringen Ruhestrom auf. Dies bedeutet, dass der Regler selbst dann, wenn nichts auf der Platine Strom verbraucht, während der gesamten Einschaltdauer einiges an Strom verschwendet.
Eine einfache Lösung besteht darin, den On-Board-Regler durch einen LDO-Regler (Low Drop-Out-Linearregler) zu ersetzen, der für einen extrem niedrigen Ruhestrom ausgelegt ist. Parametrische Suchen auf verschiedenen Anbieterseiten ergeben wahrscheinlich Ersatz.
Selbst mit den obigen Schritten bietet die Arduino-Karte keinen Mechanismus, um das LDO in den Energiesparmodus zu versetzen, wenn das ausgewählte LDO dies unterstützt. Energieeffiziente Designs verwenden normalerweise einen "Schlafmodus" -Stift an Spannungsreglern, um ein gutes Stück Energie zu sparen - hier keine Option.
Selbst mit allen möglichen Energiesparmodi und Tricks, die auf Mikrocontrollerebene angewendet werden, ist der Arduino einfach nicht so konzipiert, dass er sofort ein Gerät mit extrem geringem Stromverbrauch ist. Nachdem ich mit mehreren nicht trivialen Anwendungen experimentiert habe, habe ich festgestellt, dass das Beste, was realistisch erreichbar ist, eine Energieeinsparung von 10% bis 30% je nach Anwendung ist, da der Spannungsregler und die LEDs den Rest sowieso verbrauchen werden.
quelle
Sie könnten das 200-seitige Datenblatt lesen und sich dann mit verwirrenden Bitverschiebungen und Registern herumschlagen, aber ich empfehle diese Bibliothek: http://playground.arduino.cc/Code/Enerlib
Wenn Sie einen Uno oder einen anderen mit einem USB-zu-Seriell-Chip verwenden, können Sie diesen deaktivieren oder entfernen.
quelle
Sobald Ihr Projekt funktioniert und Sie es in einer "Produktions" -Umgebung bereitstellen müssen, können Sie das Arduino durch ein Meta-ATMega328 oder einen beliebigen Chip der ATTiny-Familie ersetzen. Dadurch werden alle Stromfresser auf dem Arduino-Board entfernt, die Sie nicht benötigen. Ich fand:
Noch ein paar Informationen
Programmieren Sie einen ATtiny mit Arduino
ATTiny-Dateien für Arduino IDE
quelle