UltraLowPower für Arduinos - AZ-Delivery

Hallo zusammen,

da wir endlich wieder den Pro Mini in unserem Lieferprogramm haben möchte ich heute kurz Wege aufzeigen den Stromverbauch der Pro Mini zu reduzieren um Beispielsweise einen langen Batteriebetrieb zu ermöglichen. 

Um möglichst viel Energie zu sparen gibt es neben einer dafür erstellten Library auch hardwareseitige Änderungen die den Verbrauch noch weiter reduzieren können. Wie weit Sie den Stromverbrauch vermindern wollen bleibt dabei Ihnen überlassen.

Die einfachste und schnellste Möglichkeit den Stromverbrauch zu senken ist die auf Git verfügbare Library, diese befindet sich ebenfalls im Boardverwalter, ist dort jedoch nicht aktuell. Da sich der heutige Beitrag eher an fortgeschrittene Nutzer richtet werde ich den Part der Installation der Bibliothek heute auslassen. Das in der Bibliothek enthaltene Beispiel "powerDownWakePeriodic.ino" ist ziemlich selbsterklärend: 

#include "LowPower.h"

void setup()
{
    // No setup is required for this library
}

void loop() 
{
    // Enter power down state for 8 s with ADC and BOD module disabled
    LowPower.powerDown(SLEEP_8S, ADC_OFF, BOD_OFF);  
    
    // Do something here
    // Example: Read sensor, data logging, data transmission.
}

Die maximale Dauer des LowPower.powerDown liegt bei 8 Sekunden. Für den Wakeup kann anstelle des Timers auch ein Interrupt verwendet werden. Desweiteren bietet die Bibliothek mehrere Optionen des Betriebsmodus so z.B. auch einen IDLE- oder STANDBY-Modus, ein Blick in die LowPower.cpp hilft hier weiter.

Mit einer einfachen for-Schleife lässt sich dieses Zeitintervall beliebig wiederholen:

 

#include "LowPower.h"

const unsigned INTERVAL = 600;
void setup() {
}

void loop() { 
    int sleepcycles = INTERVAL / 8;
    for (int i=0; i<sleepcycles; i++) {
      LowPower.powerDown(SLEEP_8S, ADC_OFF, BOD_OFF);
    }
  }

 

Der Stromverbrauch liegt im normalen Betriebsmodus bei ca. 20 mA, im deep sleep verringert sich dieser auf ca. 4 mA wenn zur Versorgung der RAW-Pin benutzt wird. 

Damit angeschlossene Sensoren keinen zusätzlichen Strom verbrauchen können diese, anstelle des üblichen 5V-Pins, auch über einen digitalen GPIO versorgt werden. Somit lässt sich über ein einfaches HIGH/LOW die Stromzufuhr des Sensors kontrollieren. Damit dies zuverlässig funktioniert muss je nach Sensor ein entsprechendes delay() eingebaut werden.

Möchten wir den Stromverbrauch noch weiter verringern sind hardwareseitige Änderungen erforderlich, aber Achtung: Bei hardwareseitigen Änderungen erlischt die Gewährleistung.

Um die noch verbliebenen Verbraucher (rot) zu reduzieren können wir sowohl die Betriebs-LED (gelb) als auch den Festspannungsregler (grün) von der Platine entfernen. Der größere Verbraucher stellt dabei die Betriebs-LED dar.

Diese ist zum Betrieb nicht erforderlich und kann mit etwas Geschick ausgelötet werden.

Im Bild oben: Ausgelötete LED

Genau so verhält es sich mit dem auf dem Board befindlichen Festspannungsregler. Stehen 5V zur Verfügung ist dieser überflüssig und wir können diesen, genau wie die LED, bedenkenlos entfernen.

Im Bild oben: Ausgelötete LED und ausgelöteter Festspannungsregler

Da der RAW-Pin direkt mit dem Festspannungsregler verschaltet ist kann dieser nach auslöten des Bauteils nicht mehr benutzt werden.

Sollte der Stromverbrauch jetzt noch zu hoch sein empfiehlt sich ein Umstieg zur 3.3V Variante.

 

Viel erfolg beim nachbasteln und bis zum nächsten Beitrag :)

 

Esp-8266Specials

3 comments

Ulrich Engel

Ulrich Engel

Hallo, im Rahmen eines LoRa Wetterprojektes messe ich Wetterdaten eines BME280 und übertrage diese per LoRa vom Sender zum Receiver.
Aktuell messe ich alle 8 Sekunden und zwischen zwei Messzeiten wird der ESP32 LoRa “schlafen” gelegt:
LowPower.powerDown(SLEEP_8S, ADC_OFF, BOD_OFF);
Meine Frage:
Kann man den “Schlafzyklus” auf 30 Sekunden verlängern, um den Stromverbrauch des Senders (Akku) zu senken?
Viele Grüße und Danke für eine Antwort.

DD1UZ

DD1UZ

Wie hoch ist der Stromverbrauch ohne LED bei 3V / 5V?
Hat jemand Erfahrungen?

Andreas Engelmann

Andreas Engelmann

Um den Spannungsregler zu entfernen einfach die Beinchen mit einem schlanken Seitenschneider durchkneifen. Oft ist es auch leichter den Vorwiderstand der LED zu entfernen als die LED selbst. Wer die Platine noch sauber haben möchte kann ja anschließend mit dem Lötkolben die Reste vorsichtig entfernen.

Leave a comment

All comments are moderated before being published

Recommended blog posts

  1. ESP32 jetzt über den Boardverwalter installieren - AZ-Delivery
  2. Internet-Radio mit dem ESP32 - UPDATE - AZ-Delivery
  3. Arduino IDE - Programmieren für Einsteiger - Teil 1 - AZ-Delivery
  4. ESP32 - das Multitalent - AZ-Delivery