Forum: Mikrocontroller und Digitale Elektronik Stromsparen Arduino Nano


von René L. (oneill5000)


Lesenswert?

Hallo,

ich habe ein Arduino Nano Board an 5V und betreibe ihn mit 16 MhZ.
Anhang des Artikels
http://s6z.de/cms/index.php/arduino/nuetzliches/9-winterschlaf-fuer-arduino
Wenn ich den ersten Code im Artikel lade, komme ich auf circa 60 mA 
Stromfluss. Wenn ich den zweiten Code im Artikel probiere, komme ich auf 
circa 40 mA.
In dem Artikel wird zwischen den beiden Codes bereits von einer 
Stromeinsparung Faktor 10 gesprochen. Da komme ich ja nun lange nicht 
hin.
Mein Frage nun, liegt es einfach daran, dass ich den µC mit 5 V und 16 
MhZ anstatt beispielsweise mit 3,3 V und 8 MhZ betreibe?
Oder warum spare ich nicht man annähernd die Hälfte an Leistung ein 
(Immerhin Sleepmode Power Down)?

von spess53 (Gast)


Lesenswert?

Hi

Der ATMega ist nicht der einzige Verbraucher auf dem Nano.

MfG Spess

von google (Gast)


Lesenswert?

Bitte Quellen gründlich lesen. Im zitierten Artikel wird ein Arduino Pro 
Mini verwendet, das ist praktisch ein Nano ohne USB Adapter ...

von Christian J. (Gast)


Lesenswert?

René L. schrieb:
> In dem Artikel wird zwischen den beiden Codes bereits von einer
> Stromeinsparung Faktor 10 gesprochen. Da komme ich ja nun lange nicht
> hin.

Das geht nicht!

LM7805 = 5mA
USB Interface = 20mA

usw.

Das kriegst du nur mit einem einzelnen Chip hin, der direkt an Ubatt 
ohne Linearregler betrieben wird (oder mit Low Drop - Low Power Regler) 
und das ist auch nicht schwer und sogar mit der Arduino IDE machbar.

PS: Der Text lässt keine tiefere Fachkenntnis vermuten, das ist 
"Ausprobiererei".

Hier ist die Lösung für dein Problem:

http://www.3bm.de/wp-content/uploads/2013/09/ATtiny84_arduino-tiny_pins.png

+ 8pol. ISP Stecker + UsBasp Programmer (o-ä.) + Arduino IDE.

von Joachim B. (jar)


Lesenswert?


: Bearbeitet durch User
von Christian J. (Gast)


Lesenswert?

Joachim B. schrieb:
> lieber einen miniPRO mit ATmega328
> Ebay-Artikel Nr. 171390098914

Und wie wird der programmiert? Passender Bootloader ist da mit drin? 
Oder muss noch gebrannt werden? Kompatibel zur IDE?

von rogger (Gast)


Lesenswert?

>Passender Bootloader ist da mit drin?
ja watt denn sonst, das iss nen Dino!

von Fritz* (Gast)


Lesenswert?


von René L. (oneill5000)


Lesenswert?

Ok vielen Dank für die ganzen Antworten! Sowas in der Art dachte ich mir 
schon.
Wenn ich das Zeug aus dem Ausland bestelle, kann ich wegen den paar Euro 
wieder zum Zoll was!? :(

: Bearbeitet durch User
von René L. (oneill5000)


Lesenswert?

Man hätte ja den Nano eigentlich auch so bauen können, dass der USB IC 
nur mit der Spannung von einem eingesteckten USB Kabel versorgt wird und 
demzufolge auch nur dann aktiv ist, nicht auch von dem 5V Pin der 
Platine selber.

von Ulrich F. (Gast)


Angehängte Dateien:

Lesenswert?

> Man hätte ja den Nano eigentlich auch so bauen können,
Vielleicht....

Aber Arduinos sind nicht als Stromsparwunder konzipiert.
Das lag nie in der Absicht der Entwickler.
Ok, der Lilypad mag da eine Ausnahme sein.

Aber sonst....

Für meine "Sparmodelle" setzte ich auf Optiboot und internen Takt von 1 
oder 8 MHZ. Denn der originale Bootloader kann bei diesen niedrigen 
Frequenzen nicht mehr... Auch ist Optiboot kleiner, also etwas mehr 
Flash für Anwendungen
Die IDE 1.6.X bietet die Möglichkeit eigene hardware Kreationen unter zu 
bringen.
Siehe: 
https://github.com/arduino/Arduino/wiki/Arduino-IDE-1.5---3rd-party-Hardware-specification

Aus verschieden Quellen zusammengesuchtes und angepasstes, um Standalone 
ATMega328P zu betreiben, findet sich im Anhang.

Ist noch nicht 100% getestet, aber das kann ich ja euch überlassen.... 
;-)
Nach der Auswahl des "Breadboaard ATMega"  blendet die IDE 2 weitere 
Menues ein. Eins um Takt und Bootloader festzulegen, und das andere um 
den Brownout einzustellen.

von Joachim B. (jar)


Lesenswert?

Ulrich F. schrieb:
> Für meine "Sparmodelle" setzte ich auf Optiboot und internen Takt von 1
> oder 8 MHZ. Denn der originale Bootloader kann bei diesen niedrigen
> Frequenzen nicht mehr... Auch ist Optiboot kleiner, also etwas mehr
> Flash für Anwendungen
> Die IDE 1.6.X bietet die Möglichkeit eigene hardware Kreationen unter zu
> bringen.

interessant und warum nicht mal mit Baudratenquarzen 7.xx 14.xx oder 
18.xx

ich war schon drauf und ran Optiboot umzuschreiben, aber verdammt ich 
habe so viele andere Baustellen.

Auch musste ich mir ne Lösung für fastLED und mighty m1284p einfallen 
lassen:

Beitrag "Arduino FastLED LIB vs. WS28xx LIB"

Lösung, fastLED patchen.....

Joachim B. schrieb:
> "endgültige"  Lösung gefunden,
>
> welche nur AVR m1284p und fastled anspricht und alle anderen F_CPU
> unangefasst lässt:
>
> in delay.h in der fastLED LIB aus:
1
// #define NS(_NS) (_NS / (1000 / 
2
> (F_CPU / 1000000L)))
3
> #if F_CPU < 96000000
4
>   #define NS(_NS) ( (_NS * (F_CPU / 1000000L))) / 1000
5
>   #define CLKS_TO_MICROS(_CLKS) ((long)(_CLKS)) / (F_CPU / 1000000L)
6
> #else
7
> #define NS(_NS) ( (_NS * (F_CPU / 2000000L))) / 1000

einfach folgendes gemacht:
1
> // #define NS(_NS) (_NS / (1000 / (F_CPU / 1000000L)))
2
> #if F_CPU < 96000000
3
> #if defined(__AVR_ATmega1284P__) && (F_CPU==16000000L)
4
>   #define NS(_NS) ( (_NS * ( (F_CPU-1600000L) / 1000000L))) / 1000
5
>   #define CLKS_TO_MICROS(_CLKS) ((long)(_CLKS)) / ((F_CPU-1600000L) / 
6
> 1000000L)
7
> #else
8
>   #define NS(_NS) ( (_NS * (F_CPU / 1000000L))) / 1000
9
>   #define CLKS_TO_MICROS(_CLKS) ((long)(_CLKS)) / (F_CPU / 1000000L)
10
> #endif
11
> #else
12
> #define NS(_NS) ( (_NS * (F_CPU / 2000000L))) / 1000

> für AVR 1284p und 16 MHz
>
> könnte auf 8MHz erweitert werden

: Bearbeitet durch User
von Karl (Gast)


Lesenswert?

Ulrich F. schrieb:
> Die IDE 1.6.X bietet die Möglichkeit eigene hardware Kreationen unter zu
> bringen.

Das geht schon seit Ewigkeiten. Einfach die Boards.??? um einen 
passenden Eintrag erweitern und fertig. Außerdem kann auch die IDE über 
ISP programmieren, sodass man auf den Bootloader verzichten kann.

von Ulrich F. (Gast)


Lesenswert?

> Das geht schon seit Ewigkeiten.
Früher musste man das selbstgebastelte Zeugs im Arduino 
Programmverzeichnis unterbringen. Es kam einem bei einem IDE Update 
abhanden.
Das hat sich geändert.
Auch sind die Anpassungsmöglichkeiten vielfältiger geworden.


> Außerdem kann auch die IDE über ISP programmieren,
> sodass man auf den Bootloader verzichten kann.
Die Fuses kann man weiterhin (aus der IDE) nur setzen, wenn man den 
Bootloader schreibt.

> interessant und warum nicht mal mit Baudratenquarzen 7.xx 14.xx
> oder 18.xx
Genau den Quarz Tüddel spare ich mir ein.
Falls du mir deine Boards.txt (und die Bootloader) schicken willst, 
bastel ich sie gerne zusammen.


Durch Kalibrieren des Taktes verbessert sich das Verhalten bei 9600Baud 
und 1MHz. Aber 4800Baud bei 1MHz geht auch ohne Kalibrierung ganz gut.

von Joachim B. (jar)


Angehängte Dateien:

Lesenswert?

Ulrich F. schrieb:
> Falls du mir deine Boards.txt (und die Bootloader) schicken willst,
> bastel ich sie gerne zusammen.

das wäre prima

momentan nutze ich ja gerne optiboot mit 1M am 16 MHz Quarz

wenn es dann mehr Auswahlmöglichkeiten gäbe wäre klasse

die 7.xx 14.xx 18.xx MHz Baudraten für die Quarze Optiboot 1M wird dann 
nicht mehr gehen aber evtl. die 9xxk (für 14.xx und 18.xx MHz) und 4xxk 
(für 7.xx MHz)

Ist ein Haufen Zeug, sicher das du das machen willst?

die Arduino IDE sollte aber weiter funktionieren, nur eben die 
Auswahlmenüs erweitern, mit wieviel Baud fährt denn die IDE zur 
Programmierung normalerweise am FTDI?

Danke schon mal

per Mail über Forum geht nicht wegen Anhänge?

von Ulrich F. (Gast)


Lesenswert?

Joachim B. schrieb:
> die Arduino IDE sollte aber weiter funktionieren, nur eben die
> Auswahlmenüs erweitern, mit wieviel Baud fährt denn die IDE zur
> Programmierung normalerweise am FTDI?

Normale Baudraten sind 115200 57600 19200
Wobei wobei  115200 nicht für FTDI genutzt wird. (soweit mir bekannt)

von Dirk K. (dekoepi)


Lesenswert?

Also ich habe erfolgreich einen Arduino ProMini als Basis für eine 
7-Segment-LED-Uhr auf Stromsparen getrimmt. Dazu musste ich den LDO 
auslöten/zerstören und auch die Betriebs-LED musste dran glauben. Das 
Datenblatt erlaubt zwar keine 16MHz bei 3.0-4.2V, aber hat bei mir so 
funktioniert. (Bastelkram halt, da darf man auch mal die Spec missachten 
- sollte sie aber bei Fehlersuche im Hinterkopf haben.)

Anstatt mit Fuses Risiko einzugehen, habe ich im Programmcode auf 4 MHz 
runtergeschaltet. Zudem jede Menge Sleep, wo immer möglich, und mit 
1-1.5kHz die Anzeige mal aufblitzen lassen per Timer2/Interrupt. Reicht 
für Abends/Nachts, bei starker Sonneneinstrahlung erkennt man aber 
nichts mehr ;)

Bin damit unter 2 mA gelandet. Anstatt direkt aus einem LiIon zu 
speisen, noch einen sparsamen LDO mit Ausgangsspannung 3.3V davorsetzen, 
mit sehr niedrigem Quiescent Current (oder deutsch: Ruhestrom?); mit 
RT9166 waren das noch laut Datenblatt 220-300µA, der XC6206 soll da nur 
1µA verbraten. Akku direkt liefert 4 Wochen Laufzeit, mit RT9166 8 
Wochen. Der XC6206 sitzt erst 2 Wochen dadran, nach 4 Wochen seit 
letztem Akkuwechsel. Bin gespannt.

: Bearbeitet durch User
von Joachim B. (jar)


Lesenswert?

Ulrich F. schrieb:
> Normale Baudraten sind 115200 57600 19200
> Wobei wobei  115200 nicht für FTDI genutzt wird. (soweit mir bekannt)

also muss man doch mal an TxD und RxD ein paar max3232 hängen und die 
Arduin IDE beim Proggen belauschen, ich habe nix im Netz gefunden mit 
welchen Baudraten ein Nano oder miniPRO 328 bei 16 MHz programmiert 
wird, aber gefühlt ewig, da ist der Mighty mit Optiboot 1M ein Segen.

von Ulrich F. (Gast)


Lesenswert?

Joachim B. schrieb:
> ich habe nix im Netz gefunden mit
> welchen Baudraten ein Nano oder miniPRO 328 bei 16 MHz programmiert
> wird,

Dann schau mal in die boards.txt
Da nennt sich das boardname.upload.speed , oder so ähnlich.

von René L. (oneill5000)


Lesenswert?

So habe jetzt einen Arduino Pro Mini genommen.
Bei 12,4 V mit einem ext. Spannungsregler (Ausgang 5V) vorm µC bin ich 
von ca. 26 mA (Arduino nano) auf 9,7 mA (Arduino pro mini) runter 
gekommen.
Zusätzlich setze ich nach 30 min den µC in den Power-down Modus, wodurch 
der Strom nochmal auf 4,1 mA sinkt. Aufgeweckt wird er durch Pin Change 
Interrupts von 3 definierten Eingängen (für meine Schaltung so möglich).

Ich weiß zwar nicht genau wieviel Strom durch die SMD LED am Ausgang des 
MIC5205 fließt, aber ich denke es wird ein Großteil der 4,1 mA sein 
oder?

In dem Schaltplan 
http://www.arduino.cc/en/uploads/Main/Arduino-Pro-Mini-schematic.pdf ist 
ein Jumper "SJ1" zu sehen. Verstehe ich es richtig, dass dieser nur bei 
der 3,3 V Variante vorhanden ist?

von Joachim B. (jar)


Lesenswert?

Ulrich F. schrieb:
> Dann schau mal in die boards.txt
> Da nennt sich das boardname.upload.speed , oder so ähnlich.

Danke gefunden, aber WTH machen die?

uno.name=Arduino Uno
uno.upload.speed=115200
uno.build.mcu=atmega328p
uno.build.f_cpu=16000000L
##############################################################

atmega328.name=Arduino Duemilanove w/ ATmega328
atmega328.upload.speed=57600
atmega328.build.mcu=atmega328p
atmega328.build.f_cpu=16000000L
##############################################################

nano328.name=Arduino Nano w/ ATmega328
nano328.upload.speed=57600
nano328.build.mcu=atmega328p
nano328.build.f_cpu=16000000L

alles mega328 alle 16MHz aber verschiedene upload speed?

ich glaube man sollte die alle mit optiboot tunen.....

von Ulrich F. (Gast)


Lesenswert?

Joachim B. schrieb:
> Danke gefunden, aber WTH machen die?
Ich vermute mal: Jedes von diesen Boards nutzt einen anderen Bootloader.
Zumindest der UNO nutzt Opiboot von Hause aus. (in meiner Arduino IDE)

von Ulrich F. (Gast)


Lesenswert?

René L. schrieb:
> Ich weiß zwar nicht genau wieviel Strom durch die SMD LED am Ausgang des
> MIC5205 fließt, aber ich denke es wird ein Großteil der 4,1 mA sein
> oder?

So ca. 3mA.

von René L. (oneill5000)


Lesenswert?

Vorwiderstand der Power-LED ausgelötet. Jetzt bin ich von den 4,1 mA 
nochmals auf 1,4 mA runter gekommen.

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.