Wieso verbraucht mein Ardulino Pro Mini so viel Strom?

Ich habe einen einfachen Temperaturlogger zusammengestellt. Ca. alle 2 Minuten werden die Temperaturwerte von drei Temperaturfühlern ausgelesen und zusammen mit der Uhrzeit aus der Real Time Clock auf eine MicoSD-Card geschreiben.

Alles funktioniert einwandfrei. Das Problem ist, dass drei AA Batterien nur 14 Tage halten.

Verbaute Module:
PRO MINI ATMEGA328 5V/16M
DS3231 Real Time Clock umgerüstet auf CR2032
Micro SD Card Module TF Reader Storage Card
DC-DC Step Up Wandler 1-5V zu 5V / 500mA, Wirkungsgrad: 96% An RAW und GND angeschlossen
3 x DS18B20 Temperatursensor Digital

// Schlafen und Energiesparen

for(int z=0 ;z<14; z++) // 14 X 8 = (120 Sekunden - 8 sekunden für Scriptausführung)
{
LowPower.powerDown(SLEEP_8S, ADC_OFF, BOD_OFF);
}

Als mögliche Stromfresser habe ich die LEDs am Arduino, der RTC und dem Spannungswandler lokalisiert.
Irgendwie bin ich aber nicht davon überzeugt, dass das so viel bringt.

Hat jemand eine Ahnung wieso mein Temperaturlogger so viel Strom braucht?

Tipps am Besten mit einem Code-Schnipsel, bin noch totaler Anfänger! Danke!!

Würde es etwas bringen, wenn ich nur alle 5 Zyklen die Daten auf die SD-Card schreibe?

Hallo,

miss mal den Ruhestrom in Sleep. Nimm mal die Batteriekapazität und überschlage die “Reichweite”.
Mit 14 Tagen und nur 3xAA biste schon gut dabei. Die kannste auch nicht leer zutschen.
Zum leer zutschen müßtest Du den µC auf 8MHz oder besser 1MHz umbauen. Dann kann Ub weiter sinken.
Im Datenblatt zum µC ganz hinten Zusammenhang Takt <> Ub.

Dein Schreibzyklus spielt eine untergeordnete Rolle im Verhältnis zur Schlafdauer.
Wenn dann müßtest du das Aufweckintervall vergrößern.
Welche RTC hast du?

DC-DC Step Up Wandler 1-5V zu 5V / 500mA, Wirkungsgrad: 96% An RAW und GND angeschlossen

Raw braucht mehr als 5V
7V mindestens.

Der Wirkungsgrad gilt für recht hohe Last.
Bei dir dümpelt es eher im Leerlauf rum.
Es zählt also die Ruhestromaufnahme des Wandlers

Real Time Clock: Dieses Modell
http://www.aliexpress.com/store/product/DS3231-AT24C32-IIC-Module-Precision-Real-Time-Clock-Memory-Module-For-Arduino/1182157_1984693922.html

Den Widerstand über der SCL Beschriftung habe ich entfernt.

Strom in Sleep: 8 mA (Wievlel verbrauchen davon die beiden LEDs?)
Strom bei Messung: 19 mA
Gemessen hinter dem Spannungswandler

Werden die Batterien nicht schon durch den DC-DC Step Up Wandler 1-5V zu 5V leergequetscht?

Raw braucht mehr als 5V
Danke für den Hinweis!!!
Der dahinter liegende Spannungswandler könnte noch Strom verbrauchen.

Neue Messwerte nach Stromversorgung über hintere Anschlüsse:
Strom in Sleep: 7 mA (Wievlel verbrauchen davon die beiden LEDs?)
Strom bei Messung: 18 mA
Gemessen hinter dem Spannungswandler

Der Pro Mini hat keinen USB Anschluss.

Strom in Sleep: 8 mA (Wievle verbrauchen davon die beiden LEDs?)

Den Vorwiderstand findest du im Schaltplan.
Oder ausmessen.
Die Leuchtfarbe kannst du sehen.
Damit kannst du die Stromaufnahme der LEDs berechnen.

timecatcher:
Alles funktioniert einwandfrei. Das Problem ist, dass drei AA Batterien nur 14 Tage halten.

Du hast in Deiner Schaltung drei ständig leuchtende LEDs? Das sind ja zusammen bestimmt 3mA Dauerstromverbrauch. Oder mehr, gemessen hast Du das nicht?

In 14 Tagen mit 24 Stunden = zusammen 336 Stunden macht das s336h * 3mA = 1008mAh.

D.h. Du verbrätst 1008 von ca. 2500 mAh Deiner Batterien bereits für die drei LEDs, alles andere mal komplett außen vor.

Im übrigen musst Du eine 5V Strromversorgung NICHT an Raw des Arduino-Boards anschließen, sondern am 5V-Pin. Von Raw zweigt der Spannungswandler auf dem Board 2V für sich ab, das würde bedeuten, dass der Controller nur 3V bekommt, was zu Problemen führen könnte, z.B. viele unerwünschte Resets wegen Unterspannung, insbesondere gegen Ende der Batterielaufzeit.

Vorher:
Strom in Sleep: 7 mA
Strom bei Messung: 18 mA

Nach entfernen der LED an der Uhr:
Strom in Sleep: 3,4 mA
Strom bei Messung: 16,5 mA

Nach zusätzlicher Entfernung der LED am Arduino:
Strom in Sleep: 3,1 mA
Strom bei Messung: 16 mA

Damit bin ich schon über einen Monat!!
Vielen vielen Danke für die Tipps!!!!!

Verwende jetzt als Eingang für die 5V hinten GND und VCC

Gibt es noch etwas zu verbessern?

Wenn ich den Spannungsregler entferne, dann kann ich den steckbaren Mini-USB-Anschluss anscheinend nicht länger verwenden. Dies möchte ich vermeiden.

Wenn ich den Spannungsregler entferne, dann kann ich den steckbaren Mini-USB-Anschluss anscheinend nicht länger verwenden

Bahnhof!

Entfernst du den Spannungsregler, kannst du nur den Raw-Pin nicht mehr nutzen. Ansonsten sollte der Mini wie gewohnt funktionieren.

Noch mehr verbessern kannst du durch einen 8Mhz 3,3V Pro Mini Arduino. Entfernst du bzw. durchtrennst du die Leiterbahn des Spannungsregler, kannst du den mit allem zw. 2,7 und 5,5V betreiben. Du sparst dir auch noch den Spannungsconverter, der bei niedrigen Strömen auch deutliche Verluste beschert. Alternative wäre das 328-Lilypad, was von vorherein weder Led noch Spannungsregler hat, aber kompatibel mit dem Pro Mini ist.

Mal zur Übersicht: how-to-run-atmega328p-for-a-year-on-coin-cell-battery

Bahnhof!
=> Habe mich schon gewundert, stand aber auf einer Seite, das der VCC Eingang hinten nicht länger funktioniert!

Habe jetzt den Spannungswandler vorsichtig entfernt.

Unverändert:
Strom in Sleep: 3,1 mA
Strom bei Messung: 16 mA

Warum bringt bei mir das Entfernen der LED und des Spannungswandler fast nichts?

Hallo,

mit der DS3231 kannste dir einen externen Wecker programmieren, der den µC an einem Interrupt Eingang aufweckt. Die beiden Alarme der RTC kannste einstellen. Zum Bsp. jede Minute. Bei längeren Intervallen zählst du die “Aufwach-Minuten”. Dann biste noch länger im Sleepmode. Der Rest sind sicherlich externe Wandlerverluste. Der Sleepmode Strom vom µC selbst sollte im µA Bereich sein ohne externe Baugruppen.

Deine 3,1mA und 16mA sind inklusive alles gemessen?

Ja, zwischen Arduino und dem DC-DC Step Up Wandler 1-5V zu 5V gemessen

Gegen das Aufwecken über RTC habe ich mich entschieden, da ich mehrfach gelesen habe, dass man durch Deep-Sleep mehr Strom spart als durch das externe wecken.

Wie sieht es mit dem Verbrauch der SD-Karte aus? Könnte es was bringen, sie nur zur Benutzung mit Strom zu versorgen? Du könntest deine Daten ins Ram des Arduino legen und dann z.B. in 1kb-Blöcken auf SD-Karte schreiben.

Miss auch mal den DC-DC-Wandler im Leerlauf.

SD-Card Verbrauch: 0,9 mA (Anscheinend keine nennenswerte Schwankung während des Schreibens)
RTC: Stromverbrauch stark schwankend 1,5 bis 2 mA obwohl die UHR-Batterie nicht aufgeladen werden muss.
Stromversorgung durch die Batterien brach zu der Zeit zusammen = AA Batterien leer.

Demnach bleiben für den Arduino im Sleep-Modus nur 0,2-0,3mA, wobei wir noch nicht den Verbrauch der DS18B20 untersucht haben.

timecatcher:
Gegen das Aufwecken über RTC habe ich mich entschieden, da ich mehrfach gelesen habe, dass man durch Deep-Sleep mehr Strom spart als durch das externe wecken.

dann haste Unsinn gelesen. Weil den kannste immer in tiefsten Zustand schicken, wenn er einfach nichts tun soll außer warten geweckt zu werden. Ist jedoch erstmal zweitrangig, wenn man woanders noch Verluste hat.

dann haste Unsinn gelesen.
=> Kann gut sein, wenn man lange genug im Internet sucht findet man fast jede Aussage!
Ich glaube der Stromverbrauch des Arduino ist weniger mein Problem. Die Uhr bzw. der Card-Reader verbrauchen anscheinend sehr viel.

Könnte es was bringen, sie nur zur Benutzung mit Strom zu versorgen?

Das klingt nach einen interessanten Ansatz!
Wie kann ich den SD-Card-Reader und die Uhr zwischenzeitlich vom Strom trennen?

Hallo,

im dümmsten Fall mußte die Karte vorher immer neu initialisieren.
Die Datenleitung müßte man dann auch mit 1k in Reihe "absichern".
Müßte man probieren.

Die RTC hat im Standby allerdings auch nur µA.
Vielleicht liegt es an den I2C Pullups - keine Ahnung ...

Habe noch einmal mit einer stabilen Spannungsversorgung nachgemessen:

SD-Card Verbrauch: 2,3 mA (Anscheinend keine nennenswerte Schwankung während des Schreibens)
RTC: 0,9 mA
Temperatursensor: Nahezu 0 mA, beim Lesen ca. 0,5mA für 0,5 Sec.

im dümmsten Fall mußte die Karte vorher immer neu initialisieren.
Die Datenleitung müßte man dann auch mit 1k in Reihe "absichern".
Müßte man probieren.

=> Ich initialisiere bei jedem Zyklus, da es häufig passiert, dass ich die SD-Karte herausnehme um die Daten auszulesen.

Wie ich jetzt die Stomversorgung des SD-Card-Readers unterbrechen soll habe ich leider noch nicht einmal ansatzweise verstanden.

Habe gerade den DC-DC Step Up Wandler 1-5V zu 5V gekillt. Kurzschluss beim Messen! Bruche mehr rote und schwarze Kabel. Die Bunten verwechselt man zu schnell.

Ohne Spannungswandler kann ich doch jetzt drei 1,5V AA-Batterien direkt an VCC und GND anschließen?
Richtig?

Hallo,

3x 1,5V = 4,5V Leerlaufspannung ... paßt

Okay, wenn du sowieso initialisierst ist es egal.

Um der SD den Saft abzudrehen mußte mittels P-Channel Mosfet den (+) unterbrechen.
PNP scheitet hier aus, benötigt zu viel Strom.
Und da gehts wieder los einen passenden zu finden. War noch nicht lange her so ein ähnliches Thema.

Edit: komplett lesen