Forum: Mikrocontroller und Digitale Elektronik Laufzeit uC an Batterie


von Filth _. (filth)


Lesenswert?

Hallo,

ich habe einen Atmega 328 8Mhz an 3 AA Mignon Zellen laufen (Arduino 
micro 3.3v).
Der uC wacht 1x pro Minute auf, sendet einen Datensatz über einen 
NRF24L01+ und geht wieder schlafen.

Den Vorwiderstand für die Led auf dem Board hab ich ausgelötet.

Der Datensatz beinhaltet auch die aktuelle Akkuspannung. Man kann sehen, 
dass die Spannung um 0.01v pro 5 Stunden sinkt.
1
{
2
id: 82770,
3
nodeId: "2",
4
value: 4.51,
5
unity: "V",
6
createDate: "28.05.2014 04:33:41"
7
},
8
9
{
10
id: 84192,
11
nodeId: "2",
12
value: 4.49,
13
unity: "V",
14
createDate: "28.05.2014 10:33:47"
15
}

Das erscheint mir etwas viel / schnell. Oder vertue ich mich?
Wenn ich davon ausgehe, dass bei 3.5v Schluss ist, kommt man auf ca 
100*5 = 500 Betriebsstunden ~ 20 Tage

: Bearbeitet durch User
von Karol B. (johnpatcher)


Lesenswert?

Filth __ schrieb:
> Oder vertue ich mich?

Kommt mir auch nach zu viel vor. Ohne Details zu deinem Power-Management 
kann man das aber schlecht beurteilen. Welcher Sleep-Mode? Sicher, dass 
der AVR nicht vorher durch irgendwelche Interrupts aufgeweckt wird? 
Schon einmal den Stromverbrauch beobachtet?

Mit freundlichen Grüßen,
Karol Babioch

von Dominik S. (dasd)


Lesenswert?

Schläft der AVR auch richtig?
Was macht das Sendemodul in der Zeit? Schaltest du das per IO-Pin 
komplett weg?

Hast du mal die Stromaufnahme im Sleep gemessen?

von MaWin (Gast)


Lesenswert?

Bei 1.5V fällt die Spannung schneller als bei 1.4V
http://datasheet.octopart.com/GP15A-40.-GP-Batteries-datasheet-8828895.pdf
und mit der Tempoeratur schwankt sie auch, daher ist aus dem einen 
Messweert nichts zu schlussfolgern.
Trotzdem sollte man überprüfen, ob der NRF24L01+ auf 900nA geschaltet 
ist, ob der AVR in sleep oder power down oder welcherm Mode steckt, und 
ob nicht anderer Verbraucher parallel hängen.
Das können WIR auf Grund deiner mangelhaften Beschreibung nicht 
herausfinden.

von Filth _. (filth)


Lesenswert?

Zum Schlafen / NRF24 verwende ich diese Librarys:

https://github.com/n0m1/Sleep_n0m1
https://github.com/maniacbug/RF24Network


Konkret gehe ich so in den Sleep-Mode:
1
...
2
  radio.powerDown();
3
  sleep.pwrDownMode(); 
4
  sleep.sleepDelay(60000); 
5
...


Aber die Stromaufnahme noch nicht gemessen.

: Bearbeitet durch User
von Gerald G. (gerald_g)


Lesenswert?

Wenn der Mikrocontroller nur alle 1 Minute "aufwacht" dann schläft er 
nicht richtig. Die größte Zeitdauer nach der der Mikrocontroller 
aufwachen kann sind 4 Sekunden. Und zwar per watchdog Oszillator mit 
maximalem Prescaler. Bei allen anderen Einstellungen muss der 
Mikrocontroller mitzählen, kann also nicht richtig schlafen.
Leider kenne ich mich bei Aduino nicht aus, aber im powerdown mode, alle 
4 s aufwachen, jedes 15. mal etwas senden, mit 3 AA Zellen, sollte er 
über ein Jahr halten

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Gerald G. schrieb:
> Die größte Zeitdauer nach der der Mikrocontroller aufwachen kann sind 4
> Sekunden.
Damit betreibe ich eine Art "Eieruhr" seit gut 4 Jahren mit einer 1620 
Knofzelle. Der uC wacht 5 mal pro Sekunde auf, sieht nach, ob eine Taste 
gedrückt ist und geht dann entweder gleich wieder schlafen oder macht 
sein Timerprogramm (= 20 min. mit einer 2mA LED blinken und zum Schluss 
mit einem Piezo hupen)...

> kommt man auf ca 100*5 = 500 Betriebsstunden ~ 20 Tage
Also wundert mich der hohe Stromverbrauch hier auch sehr. Wie gesagt: 
ich bin jetzt schon weit über 1000 Tage mit der kleinen 3V Knopfzelle.

von chris (Gast)


Lesenswert?

Wo wird der Strom denn eingespeist, Vin oder 5V ?

Der Arduino hat mindestens 2-3 Mal einen 10K Widerstand zwischen vcc un

von Oliver R. (superberti)


Lesenswert?

Hi,

das Board hat doch einen Spannungsregler. Dessen Leerlaufstrom ist 
normalerweise um Faktoren höher, als die Stromaufnahme von Controller 
und Funkmodul (im Sleep-Mode). Schau Dir den Regler im Datenblatt an und 
Du wirst Dich wundern...

Gruß,
Oliver

von fff (Gast)


Lesenswert?

Gerade nachgemessen:

Beim Senden geht der Stromverbrauch auf ca 18mA hoch.
Im Schlaf sind es 1.8mA.

Ich gehe auf den Spannungsregler im Arduino, da er und das Funkmodul 
jeweils 3.3v benötigen.

Wie könnte man jetzt die Laufzeit noch verlängern (ausser, die 
Schlafdauer zu verlängern)?

von Mike (Gast)


Lesenswert?

fff schrieb:
> Wie könnte man jetzt die Laufzeit noch verlängern (ausser, die
> Schlafdauer zu verlängern)?

Die 1.8mA im Schlaf saugen dir Batterie leer, nicht das Verhältnis von 
Einschalt- zu Schlafdauer

von Filth (Gast)


Lesenswert?

Ok! Was könnte man nun dagegen tun?

von Sebastian W. (wangnick)


Lesenswert?

fff schrieb:
> Ich gehe auf den Spannungsregler im Arduino, da er und das Funkmodul
> jeweils 3.3v benötigen.

Wie oben schon gefragt: VIN oder +5V? Bei VIN hast du zwei Mal die 
Reglerverluste, bei +5V nur einmal. Siehe 
http://arduino.cc/de/uploads/Main/arduino-micro-schematic.pdf.

Der LP2985-33 (http://www.ti.com/lit/ds/symlink/lp2985-33.pdf) hat einen 
bei IL=0 einen Iq von 65uA, aber der NCP1117-5 
(http://www.mouser.com/ds/2/308/NCP1117-D-81326.pdf) hat recht hohe 
Iq-Werte!

LG, Sebastian

: Bearbeitet durch User
von Filth (Gast)


Lesenswert?

Ich speise bei VIN ein (der Pin heißt in dem Fall "Raw"). Das Board ist 
ja ein +3.3v Board, daher hat man hier nur 1x Reglerverlust.

Mit den 4.5v aus den Zellen könnte ich ja nicht direkt auf den +3.3v Pin 
gehen.

von Arbeitgeberpräsident (Gast)


Lesenswert?

Schmeiss den Arduino weg, ich hatte das selbe problem mit einem nano, 
hatte u.a. auch ein NRF-Modul im Einsatz, das hat mit dem Problem aber 
nix zu tun.

Das Problem ist der Spannungsregler, den kannst du nicht umgehen auch 
wenn da was anderes im Datenblatt steht. Nutzt du Hardwareserial wird 
automatisch auch der USB-Serial Baustein betrieben, angeblich nur dann, 
durch Tests habe ich rausgefunden dass der immer genutzt wird.
Und das frisst halt alles Strom.

Dann gibts noch folgendes Verhalten:
Klemm den Arduino mit Batterie an USB, ziehe ihn wieder ab, Batterie 
muss immer dran bleiben, jetzt ist der Verbrauch seltsamerweise 
niedriger, als wenn man ihn gleich an die Batterie klemmt.

Habe das dann mal auf einen nackten 328p auf einem Breadboard 
umgestrickt und siehe da die Stromaufnahme liegt in Bereichen wie im 
AVR-Datenblatt angegeben plus was sonst noch so dranhängt, bei dir wäre 
das dann das NRF Modul und das hat auch einen sleep mode (automatisch 
iirc).

Sleep machts du am besten über den WDT, die ganze Peripherie die nicht 
genutzt wird auch ausschalten, Pullups auch disablen,...  Das Ding läuft 
bei mir jetzt Wochen, vorher nur ein paar Tage, je nach Batteriepack.

Den Arduino nutze ich nur noch in der Entwicklung, wenn das mit später 
mit Batterie öglichst lange laufen soll wird das auf einem nackten AVR 
umgesetzt.

von Sebastian W. (wangnick)


Lesenswert?

Filth schrieb:
> Ich speise bei VIN ein (der Pin heißt in dem Fall "Raw"). Das Board ist
> ja ein +3.3v Board, daher hat man hier nur 1x Reglerverlust.
>
> Mit den 4.5v aus den Zellen könnte ich ja nicht direkt auf den +3.3v Pin
> gehen.

Also, Filth, welchen Arduino Micro 3.3V benutzt du denn nun? Laut 
http://arduino.cc/de/uploads/Main/arduino-micro-schematic.pdf gibt es da 
ZWEI Regler, U2 und U4!

LG, Sebastian

von Filth (Gast)


Lesenswert?

Das hilft mir leider nicht weiter, zumal der Arduino Micro gar keinen 
USB Port hat.

von Filth (Gast)


Lesenswert?

Sebastian:

Ich benutze den hier:
https://www.sparkfun.com/products/11114

Der hat nur einen 3.3v Regler. Die 5v Version hat in der Tat 2, wie du 
beschreibst

von Sebastian W. (wangnick)


Lesenswert?

Filth schrieb:
> Ich benutze den hier:
> https://www.sparkfun.com/products/11114
>
> Der hat nur einen 3.3v Regler. Die 5v Version hat in der Tat 2, wie du
> beschreibst

Ok, das sieht schon besser aus: 
http://dlnmh9ip6v2uc.cloudfront.net/datasheets/Dev/Arduino/Boards/Arduino-Pro-Mini-v13.pdf. 
Der Regler ist also ein MIC5205, Datenblatt 
http://www.micrel.com/_PDF/mic5205.pdf, mit nur 80-125uA Verlust bei 
100uA Last.

Nächster Tip: Versorge den nRF24L01+ wie oben schon angedeutet über 
einen Arduino-Port mit Strom, und schalte den Port (und auch 
MISO-MOSI-SCK) in den Schlafzeiten aus. Dann sparst du die 700uA 
Idle-Verbrauch des nRF24L01+ plus den dazugehörigen Reglerverlusten.

LG, Sebastian

: Bearbeitet durch User
von Holger L. (max5v)


Lesenswert?

Wenn man sich nur das Datenblatt vom 328 ansieht, schaut es eher nach 
Idel statt Power Down Mode aus.
Von daher wäre es interessant mal ohne externe Beschaltungen zu messen.

Du könntest noch sparen in dem du von den 8mhZ auf 1 MhZ gehen würdest, 
wenn es deine Anwendung zuläßt.

Sebastian Wangnick schrieb:
> Nächster Tip: Versorge den nRF24L01+ wie oben schon angedeutet über
> einen Arduino-Port mit Strom, und schalte den Port (und auch
> MISO-MOSI-SCK) in den Schlafzeiten aus. Dann sparst du die 700uA
> Idle-Verbrauch des nRF24L01+ plus den dazugehörigen Reglerverlusten.

Der nRF24L01 hat eigentlich nur 22μA in standby-I. Zudem muß man ihn 
nach dem Aufwecken nicht wider neu konfigurieren.
Oder habe ich das komplett falsch verstanden ?

Filth schrieb:
> Mit den 4.5v aus den Zellen könnte ich ja nicht direkt auf den +3.3v Pin
> gehen.

Nur als Idee :
Der nRF24L01 hat 5 Volt tolerante Eingänge.
Der 328 hat eine Arbeitsspannung von 1.8 - 5.5V,
der nRF24L01 1.9 - 3.6V die man mit zwei Dioden hinbekommen könnte.
Aber dazu sollte sich besser ein Profi äußern, nicht das du dir dein 
Funkmodul abbrennst.

: Bearbeitet durch User
von Carsten R. (kaffeetante)


Lesenswert?

Filth __ schrieb:
> Der Datensatz beinhaltet auch die aktuelle Akkuspannung. Man kann sehen,
> dass die Spannung um 0.01v pro 5 Stunden sinkt.

Abgesehen davon, daß der Regler seinen Biasstrom braucht und sich alle 
einig sind über die Bedeutung für den Akku/Batteriebetrieb, fällt mir 
die folgende Kombination auf.

Filth __ schrieb:
> value: 4.49,

Wenn das Volt sind, liegen wird da gerade bei ca. 1,5 Volt pro Zelle, 
bei einem Akku. Das ist viel. Der ist frisch geladen und rappelvoll. Es 
ist nicht ungewöhlich daß da die Spannung schnell fällt. Zum einen wurde 
schon erwähnt, daß die Kapazität in der "obersten Spannungslage" gering 
ist. Zum anderen ist die Selbstentladung direkt nach dem Laden am 
Höchsten. So gesehen kann man den Spannungsabfall von diesen Meßwerten 
aus nicht so einfach extrapolieren.

von Sebastian W. (wangnick)


Lesenswert?

Holger L. schrieb:
> Sebastian Wangnick schrieb:
>> Nächster Tip: Versorge den nRF24L01+ wie oben schon angedeutet über
>> einen Arduino-Port mit Strom, und schalte den Port (und auch
>> MISO-MOSI-SCK) in den Schlafzeiten aus. Dann sparst du die 700uA
>> Idle-Verbrauch des nRF24L01+ plus den dazugehörigen Reglerverlusten.
>
> Der nRF24L01 hat eigentlich nur 22μA in standby-I. Zudem muß man ihn
> nach dem Aufwecken nicht wider neu konfigurieren.
> Oder habe ich das komplett falsch verstanden ?

Stimmt. Im Power Down sind es sogar nur 900nA. Mein Fehler.

LG, Sebastian

von Sebastian W. (wangnick)


Lesenswert?

fff schrieb:
> Im Schlaf sind es 1.8mA.

Filth __ schrieb:
> radio.powerDown();
> sleep.pwrDownMode();
> sleep.sleepDelay(60000);

Das passt doch nicht zusammen. nRF24L01 typ 0.9uA; Atmega328P, 
pwrDownMode, NoWdt typ 0.1uA; MIC5205 Regler typ 80uA. Wo gehen die 
restlichen 1719uA hin ???

LG, Sebastian

von Filth (Gast)


Lesenswert?

Es hängt noch ein DHT22 an der Schaltung, aber auch der verbraucht nicht 
so viel.

Also insgesamt:

3x AA Zellen (Batterie)
328 Atmega 3.3v mit 8mhz
nRF24L01
DHT22

von Sebastian W. (wangnick)


Lesenswert?

Filth schrieb:
> Es hängt noch ein DHT22 an der Schaltung, aber auch der verbraucht
> nicht
> so viel.
>
> Also insgesamt:
>
> 3x AA Zellen (Batterie)
> 328 Atmega 3.3v mit 8mhz
> nRF24L01
> DHT22

Ein kompletter Schaltplan wäre nicht schlecht. Was für ein 
nRF24L01-Modul benutzt du? Wie ist der DHT22 angeschlossen?

LG, Sebastian

von Filth (Gast)


Lesenswert?

Einen Schaltplan habe ich leider nicht parat, aber ist eigentlich 
schnell beschrieben:


VCC ---> DHT Pin1
VCC ---> Arduino Raw
Arduino +3.3v Pin --> nRF24L01+

DHT22 hat noch einen 4.7k Widerstand zwischen Pin1 (VCC) und Pin2 (Data)

Der NRF24 ist dieser hier:
http://www.ebay.de/itm/281155206446?ssPageName=STRK:MEWNX:IT&_trksid=p3984.m1497.l2649

von Mike (Gast)


Lesenswert?

Filth schrieb:
> DHT22 hat noch einen 4.7k Widerstand zwischen Pin1 (VCC) und Pin2 (Data)

Und welcher Pegel liegt an Pin2, wenn du alles schlafen legst?

von Dietrich L. (dietrichl)


Lesenswert?

Filth schrieb:
> Es hängt noch ein DHT22 an der Schaltung, aber auch der verbraucht nicht
> so viel.

Hast Du gemessen wie viel?
Im Datenblatt steht:
                           Min Typical Max
Current supply Measuring   1.3   1.5   2.1  mA
               Average     0.5   0.8   1.1  mA

Also solltest Du den DHT22 + Ziehwiderstand auch abschalten.

Gruß Dietrich

von Filth (Gast)


Lesenswert?

Hi,

das muss es gewesen sein!
Habe den DHT auf einen Portpin gelegt und schalte den mit aus - jetzt 
bin ich bei ~0.4mA im Schlaf.

Danke!

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.