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
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
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?
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.
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
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.
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
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)?
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
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.
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.
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
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.
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.
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
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
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
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
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
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?
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