Stromsparen am Arduino I.

Vor allem in batteriebetriebenen Projekten mit dem Arduino will man eine möglichst lange Laufzeit erreichen, so dass man (unabhängig von einer hohen Kapazität der Batterie oder des Akkus) an allen möglichen Punkten Strom einsparen sollte.

Oft beschriebene Möglichkeiten der Reduzierung des Stromverbrauchs sind die Entfernung der Power-LED, die während des Betriebs des Arduino permanent leuchtet und die Entfernung des Spannungsregulators. Für beide Möglichkeiten (welche ich selbst noch nicht ausprobiert habe) wird ein Eingriff mit dem Lötkolben vorausgesetzt.

Eine weitere Möglichkeit besteht darin, alle nicht benötigten Pins auf einen bestimmten Zustand zu schalten anstatt sie "floating" (=undefinierter Zustand) zu lassen. Dies wird auch im offiziellen Datenblatt des Atmel ATmega328P im Kapitel 13.2.6 empfohlen:

If some pins are unused, it is recommended to ensure that these pins have a defined level. Even though most of the digital inputs are disabled in the deep sleep modes as described above, floating inputs should be avoided to reduce current consumption in all other modes where the digital inputs are enabled (reset, active mode and idle mode). The simplest method to ensure a defined level of an unused pin, is to enable the internal pull-up. In this case, the pull-up will be disabled during reset. If low power consumption during reset is important, it is recommended to use an external pull-up or pull-down. Connecting unused pins directly to VCC or GND is not recommended, since this may cause excessive currents if the pin is accidentally configured as an output.
(From the data sheet: 13.2.6 Unconnected Pins)

Verwendete Bauteile

In dem Video "What to do with unused Arduino pins" des YouTube-Kanals learnelectronics werden verschiedene Beschalt- und Konfigurationsmöglichkeiten getestet und deren resultierender Stromverbrauch. Das Basis-Setup ist ein Arduino Uno mit 4 durchgehend leuchtenden 5mm-LEDs an denen jeweils einem 270Ω-Vorwiderstand hängt. Als Eingangsspannung werden aus einem Labornetzteil 6,6V angelegt.
Hier die zusammengefassten Ergebnisse:

Konfiguration Stromverbrauch
Alle nicht verwendeten Pins "floating" 65mA
Alle nicht verwendeten Pins sind mit GND verbunden (TX und RX werden nicht mit GND verbunden) 60mA
Alle nicht verwendeten Pins sind mit GND verbunden (TX und RX werden nicht mit GND verbunden) + LOW im Sketch für alle unbenutzten Pins gesetzt 60mA
Alle nicht verwendeten Pins sind mit GND verbunden (TX und RX werden nicht mit GND verbunden) + INTERNAL_PULLUP im Sketch für alle unbenutzten Pins: (ob sie auch auf LOW gesetzt werden ist unklar) 62mA
Alle nicht verwendeten Pins "floating" + INTERNAL_PULLUP im Sketch 62mA

Wie schon im Datenblatt beschrieben, wird nicht empfohlen, die unbenutzten Pins mit GND oder VCC zu verbinden, da per Software versehentlich einer dieser Pins durchgeschaltet werden könnte und damit unerwartete Ergebnisse der Schaltung aber auch ein stark erhöhter Stromverbrauch das Resultat sein können.

Unabhängig davon, ob man mit der oben beschriebenen Methode (viel) Strom einspart, ist es aus Gründen der Robustheit zu empfehlen, nicht verwendeten Pins einen definierten Zustand zu geben. Außerdem sollten für Projekte, die wirklich mit jedem mA rechnen müssen, kein Development Board verwendet werden, da diese für Prototypen und nicht für hochoptimierte Low-Power-Anwendungen gemacht wurden.

zurück