Forum: Mikrocontroller und Digitale Elektronik Sparsamkeit Atmega8 vs STMF0 für direkten Batterienetrieb


von Stojahn (Gast)


Lesenswert?

Hallo, ich möchte einen Mikrocontroller aus einer CR2032 direkt (ohne 
Regulator) versorgen. Zur Auswahl stehen der Atmega88PA und der 
STM32F030. Ich benötige ca 1-2 MHz, 2 Timer im kHz Bereich. Ich kann es 
leider nicht richtig einschätzen, nachdem was ich gesehen habe, ist der 
Atmega (0,2 mA) allerdings wesentlich sparsamer als der StmF0 (3,3 mA). 
Kommt das hin? Er hat natürlich nur 1/4 Bit aber ist auch schon sehr alt 
und dafür finde ich den Unterschied schon beachtlich.

von Irgend W. (Firma: egal) (irgendwer)


Lesenswert?

Stojahn schrieb:
> STM32F0

Falsche Serie. Für sowas sind fir STM32L0 da:
https://www.st.com/en/microcontrollers-microprocessors/stm32l0-series.html
Dynamic run mode: down to 49 µA/MHz (with external DC/DC) and 76 µA/MHz 
(with LDO)
Ultra-low-power mode + full RAM + low power timer: 340 nA (16 wakeup 
lines)
Ultra-low-power mode + backup register: 230 nA (2 wakeup pins)

von m.n. (Gast)


Lesenswert?

Stojahn schrieb:
> Zur Auswahl stehen der Atmega88PA und der STM32F030.

Es kommt auf Deine Anwendung an.
Ob der Ruhestrom im Schlafmodus 2 oder 0,1 µA beträgt, ist ziemlich 
egal. Mit einer CR2032 würde die Schaltung rund 10 Jahre laufen. 
Entscheidend ist, was in der aktiven Phase erledigt werden muß und was 
extern angeschlossen ist.
Was kannst Du dazu sagen?

von Stojahn (Gast)


Lesenswert?

Danke schon mal für eure Antworten.

Irgend W. schrieb:
> Falsche Serie. Für sowas sind fir STM32L0 da:

Ich weiß darüber bescheid, dieser ist aber einfach zu teuer.

m.n. schrieb:
> Es kommt auf Deine Anwendung an.

Der Ruhemodus ist wirklich egal, da das System nur ein paar Tage 
überleben muss. Es werden ausschließlich LEDs via PWM angesteuert. Da 
fallen dann die paar mAh der Ruhephase nicht ins Gewicht, wohl aber der 
Betriebsstrom des Controllers, da eine CR2032 nur paar mA kann. Projekt 
ist ein nicht kommerzielles Weihnachtsprojekt für Bildungseinrichtung. 
Also privat, größere Stückzahl, von mir bezahlt.

von Mono (Gast)


Lesenswert?

m.n. schrieb:
> Entscheidend ist, was in der aktiven Phase erledigt werden muß und was
> extern angeschlossen ist.
> Was kannst Du dazu sagen?

Die Frage ward doch ausreichen formuliert.
Bitte um konkrete Antwort.

Last und Zeitraum.

von Mono (Gast)


Lesenswert?

Stojahn schrieb:
> Er hat natürlich nur 1/4 Bit aber ist auch schon sehr alt
> und dafür finde ich den Unterschied schon beachtlich.

Wird das hier ein Kaffeekränzchen?

von Axel S. (a-za-z0-9)


Lesenswert?

Stojahn schrieb:
> Danke schon mal für eure Antworten.

Leider habe ich den Eindruck, daß es nichts nützt. Entweder willst, oder 
kannst du die Antworten, die man dir gibt, nicht verstehen.

> m.n. schrieb:
>> Es kommt auf Deine Anwendung an.
>
> Der Ruhemodus ist wirklich egal, da das System nur ein paar Tage
> überleben muss.

Was hat das eine mit dem anderen zu tun?

> Es werden ausschließlich LEDs via PWM angesteuert.

Dann wird der Strombedarf der LED so oder so dominierend sein. Eine 
Schnapsidee ist es ohnehin. 10 Tage sind 240 Stunden. Wenn eine CR2032 
(230mAh) für 10 Tage halten soll, dann darfst du im Mittel weniger als 
1mA entnehmen. Für 5 Tage sind es 2mA. Für 3 Tage dann 3mA. etc. pp.

Das reicht für ein bißchen Gefunzel, das man in einem abgedunkelten Raum 
noch sieht. Für mehr nicht.

> Da  fallen dann die paar mAh der Ruhephase nicht ins Gewicht,
> wohl aber der Betriebsstrom des Controllers

Kann es sein, daß du das mit dem Ruhemodus so überhaupt nicht verstanden 
hast? Man schickt einen µC nicht nur dann in den Ruhemodus, wenn er für 
ein paar Tage nichts zu tun hat. Sondern immer dann, wenn er gerade 
nichts zu tun hat.

Mal ein Beispiel: nehmen wir an, der µC soll eine LED per PWM dimmen. 
Nehmen wir ferner an, er tut das in Software und mit einer PWM-Frequenz 
von 100Hz. Dann muß er in einer Sekunde die LED 100-mal ein- und 100-mal 
ausschalten. Wieviele Takte braucht man dafür wohl? Sagen wir je 10 
Takte zum Ein- und 10 zum Ausschalten. Macht 100-mal pro Sekunde 20 
Takte, gesamt 2000 Takte pro Sekunde. Wenn der µC mit 2MHz läuft, dann 
sind das aber 2 Millionen Takte pro Sekunde.

1000-mal soviel, wie Arbeit da ist.

Was meint du wohl, würde man da in der Leerlaufzeit machen? Richtig, man 
würde den µC in den Ruhemodus schicken. Der mittlere Stromverbrauch wäre 
dann 1/1000 Arbeitsstromverbrauch + 999/1000 Ruhestromverbrauch. Merkst 
du was? Es kommt absolut auf den Ruhestromverbrauch an.

Speziell für PWM würde man aber in erster Linie darauf sehen, daß es 
genügend Hardware-PWM Kanäle gibt. Dann muß der µC nur dann aufwachen, 
wenn die PWM-Einstellung geändert werden muß. Und beim 
Ruhestromverbrauch würde man darauf achten, daß es einen Ruhemodus gibt, 
bei dem zwar der Timer (vulgo: die PWM) weiterläuft, aber sonst 
möglichst viel abgeschaltet ist.

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


Lesenswert?

Axel S. schrieb:
> Wenn eine CR2032 (230mAh) für 10 Tage halten soll, dann darfst du im
> Mittel weniger als 1mA entnehmen.
Und für 1mA ist die Kapazitätsangabe denn auch spezifiziert:
https://www.arrowforge.de/WebRoot/Store20/Shops/63122672/5B84/F492/8123/631E/227B/0A0C/6D04/97D7/CR2032B10_Produktdatenblatt.pdf
Oder gar nur bei 600µA wie im 
Beitrag "Re: Versorgung aus einer CR2032"

Bei 10mA ist ja schon nach ein paar Sunden Schluss:
http://batterietest-online.com/testberichte.html

Mich wundert überhaupt, dass man zur Ansteuerung einer LED (arg viel 
mehr geht ja aufgrund der lausigen Batterie nicht) einen 
32-Rechenboliden bei 2MHz in Vollzeit braucht... ;-)

: Bearbeitet durch Moderator
von m.n. (Gast)


Lesenswert?

Stojahn schrieb:
> Es werden ausschließlich LEDs via PWM angesteuert.

Da würde ich nach einer anderen Batterie/Akku Ausschau halten. Eine 
CR2032 dürfte ungeeignet sein.
Bei Pollin gibt es ab und zu Restposten an LiIon-Akkus für 
Mobiltelefone. Diese haben höhere Kapazität und kleineren 
Innenwiderstand als eine CR2032. Den Tiefentladeschutz könnte der µC 
übernehmen. Als µC käme wegen der höheren Spannung der ATmega88 in 
Frage.
2 x AA oder AAA Zellen werden Dir wohl zu groß sein.

von Programmierer (Gast)


Lesenswert?

Stojahn schrieb:
> ist der
> Atmega (0,2 mA) allerdings wesentlich sparsamer als der StmF0 (3,3 mA).

Die 0,2mA beziehen sich auf den Betrieb bei 1 MHz. Wo hast du die 3,3mA 
her? Der STM32F030 kann alles zwischen 1,4µA und 30mA verbrauchen. 
Derart komplexe Mikrocontroller haben eine Menge Knöpfe, an denen man 
drehen kann, um die Leistungsaufnahme zu reduzieren. Extra sparsame 
Controller wie die STM32L-Serie erst recht. Eine derart pauschale Angabe 
kann man daher nicht gebrauchen.

Der Verbrauch des STM32 bei 1 MHz ist im Datasheet nicht angegeben; 
würde mich aber nicht wundern, wenn der bei dieser Taktrate und nur 
wenig aktiver Peripherie (Timer) und sinnvoller Bustakt-Konfiguration es 
mit dem AVR aufnehmen kann. Tatsächlich kann man die Taktrate ggf. sogar 
noch weiter reduzieren, weil der STM32 ja pro Takt viel mehr erledigt 
bekommt (hängt natürlich stark vom konkreten Code ab). Ggf. ist es aber 
sogar effizienter, die Taktrate höher zu setzen, und möglichst schnell 
wieder den Standby zu betreten, der ja, wie gesagt, sehr wohl relevant 
ist. Um das zu evaluieren hilft nur eine detaillierte Testreihe, einfach 
nur ein paar Zahlen aus dem Datenblatt vergleichen hilft nicht.

Geschummelt ist es sowieso, den extra-sparsamen ATmega der "P"-Serie mit 
dem STM32F030 aus der extra-billig-Serie zu vergleichen.

von Irgend W. (Firma: egal) (irgendwer)


Lesenswert?

Stojahn schrieb:
> Irgend W. schrieb:
>> Falsche Serie. Für sowas sind fir STM32L0 da:
>
> Ich weiß darüber bescheid, dieser ist aber einfach zu teuer.

STM32F030F4P6 100St. 0,649 €
STM32L010F4P6 100St. 0,673 €
Satte 3,5% Aufpreis, die würde ich für sowas auch nicht bezahlen 
wollen:-)
Dann doch schon lieber die fast 50% Museumszuschlag für den AVR:
ATMEGA88PA-AU 100St 0,958 €

Da dir aber anscheinend ja eh an einer Schnellentladung mittels LED 
gelegen ist, ist der µC sowieso völlig egal für den kurzen Moment wo er 
mal was zu tun hat.

von Johannes S. (Gast)


Lesenswert?

CubeMX hat einen Powercalculator, der sollte das für F0 / L0 sehr genau 
ausrechnen können.

von drm (Gast)


Lesenswert?

egal ob ATmega oder STM32,
die LED wird mit dem Ausgang eines Timers gesteuert, also zählt nur der 
Schlafstrom in uA des uC, da er ja nicht mehr für die LED aufwachen 
muss.
Da zihen die LEDs dan wesendlich mehr Strom, warscheinlich hält die 
Batterie dann keinen Tag

wenn der uC noch mehr machen soll muss der TO erst mal Infos rausrücken

Wer die laufenden Kosten der dauernd leeren CR2032 Batterien dem 
Benutzer aufdrückt sollte erst da mal optimieren bevor ein paar Cent in 
der BOM rausquetscht

von Stefan F. (Gast)


Lesenswert?

Programmierer schrieb:
> Tatsächlich kann man die Taktrate ggf. sogar
> noch weiter reduzieren, weil der STM32 ja pro Takt viel mehr erledigt
> bekommt (hängt natürlich stark vom konkreten Code ab)

In Durchschnitt trifft wohl eher das Gegenteil zu. Von den breiteren 
Registern profitieren nur wenige Programme. Dafür sind viele andere 
Aktionen deutlich teurer, zum Beispiel die Konfiguration der Peripherie 
und Funktionsaufrufe (Stacking). Dazu komtm noch, dass die C Library vom 
AVR (avr-libc) an vielen Stellen erheblich schlanker ist, als die vom 
STM32 (newlib nano).

von Programmierer (Gast)


Lesenswert?

Stefan ⛄ F. schrieb:
> Von den breiteren Registern profitieren nur wenige Programme

Immer wenn Pointer im Spiel sind...

Stefan ⛄ F. schrieb:
> zum Beispiel die Konfiguration der Peripherie

Das sind auch nur ein paar Takte mehr, und das macht man auch nur 1x zu 
Programmstart.

Stefan ⛄ F. schrieb:
> Funktionsaufrufe (Stacking)

Wieso das? Der ARM kann eine Rücksprungadresse im LR vorhalten und 
braucht somit weniger Stack-Zugriffe. Damit gehen Aufrufe sogar 
schneller.

Stefan ⛄ F. schrieb:
> dass die C Library vom AVR (avr-libc) an vielen Stellen erheblich
> schlanker ist, als die vom STM32 (newlib nano).

Das ist ein Software-Problem. Es steht frei, eine andere C-Library zu 
nutzen, die newlib ist nicht vorgeschrieben.

von Stefan F. (Gast)


Lesenswert?

Programmierer schrieb:
> Wieso das?

Ich habe es anhand einiger kleiner Beispielprogramme ausprobiert. In 
allen Fällen lief der STM32F103 bei 8MHz deutlich langsamer, als ein 
Atmega328.

> Das ist ein Software-Problem.

Sicher. Zur Performance gehört immer beides.

von Programmierer (Gast)


Lesenswert?

Stefan ⛄ F. schrieb:
> In allen Fällen lief der STM32F103 bei 8MHz deutlich langsamer, als ein
> Atmega328

Wow. Das will ich sehen. Wenn ARM das wüsste...

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Programmierer schrieb:
> Es steht frei, eine andere C-Library zu nutzen, die newlib ist nicht
> vorgeschrieben.

Die musst du aber auch erstmal haben. Es gibt zwar m.W. eine newlib für 
AVR, aber im Opensourcebereich keine (abgespecktere) Alternative zur 
newlib für Cortex-M.

Allerdings spielt die für das hier genannte Projekt wohl kaum eine große 
Geige, die eigentliche Schwachstelle (LED aus CR2032) wurde ja schon 
mehrmals genannt.

m.n. schrieb:
> Bei Pollin gibt es ab und zu Restposten an LiIon-Akkus für
> Mobiltelefone. Diese haben höhere Kapazität und kleineren
> Innenwiderstand als eine CR2032.

Fände ich dafür auch sinnvoller, und einer der Vorteile der klassischen 
AVRs ist es natürlich, aus einer LiIon-Zelle direkt betreibbar zu sein. 
Für das bisschen genügt auch noch was deutlich kleineres als ein 
ATmega8, selbst ein ATtiny13A sollte ausreichend sein.

von Olaf (Gast)


Lesenswert?

> Da würde ich nach einer anderen Batterie/Akku Ausschau halten. Eine
> CR2032 dürfte ungeeignet sein.

Doch das geht schon. Ich hab mal vor ein paar Jahren einen 
Weihnachtstern mit einem EFM230GG512 gebaut. Okay, etwas uebertrieben, 
aber lag gerade rum und ist sparsam. Ausserdem hab ich LEDs verwenden 
die mit 100 oder 200uA auskommen.

Die STM32F030 sind zugegeben schoen billig und koennen auch einiges. 
Aber was sie nicht koennen das ist sparsam zu sein. Wenn du dich 
anstrengst wirst du es schaffen mit dem unter 1mA zu kommen. Viel 
weniger wuerde ich bei dem Teil nicht erwarten.

Olaf

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Olaf schrieb:
> Ausserdem hab ich LEDs verwenden die mit 100 oder 200uA auskommen.

Glücklicherweise ist es in unserer Hemisphäre zu Weihnachten relativ 
dunkel draußen. :-)

von Cyblord -. (cyblord)


Lesenswert?

Jörg W. schrieb:
> Olaf schrieb:
>> Ausserdem hab ich LEDs verwenden die mit 100 oder 200uA auskommen.
>
> Glücklicherweise ist es in unserer Hemisphäre zu Weihnachten relativ
> dunkel draußen. :-)

Du bist nicht auf dem laufenden. Wir setzen in unseren Geräten auch LEDs 
mit 300µA ein, und die leuchten enorm hell.

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Cyblord -. schrieb:
> Du bist nicht auf dem laufenden.

Die Physik lässt sich trotzdem nicht überlisten.

Außerdem ist es natürlich immer eine Frage, ob „enorm hell“ nun einen 
hohen Lichstrom oder eine hohe punktuelle Lichststärke meint. Letzteres 
kann man bei gleichem Lichtstrom durch entsprechend kleine 
Abstrahlwinkel erreichen, aber das passt nicht sinnvoll zu jeder 
Anwendung.

Wir haben hier auch einen Bausatz entwickelt, der ein LED-Thermometer 
mit Bandanzeige beinhaltet, und das läuft aus 2 x LR03 ein paar Wochen 
lang.

von m.n. (Gast)


Lesenswert?

Olaf schrieb:
> Ausserdem hab ich LEDs verwenden
> die mit 100 oder 200uA auskommen.

Wenn man selber eine "Leuchte" ist, braucht man nur Reflektoren ;-)

von Olaf (Gast)


Lesenswert?

> Außerdem ist es natürlich immer eine Frage, ob „enorm hell“ nun einen
> hohen Lichstrom oder eine hohe punktuelle Lichststärke meint.

Aehem..hier geht es um Weihnachtsfirlefanz und keine 
Strassenbeleuchtung.

Bei mir mussten die Teile nur huebsch blinken wenn man draufgeschaut hat 
um das weihnachtliche Gluecksgefuehl zu aktivieren.


> Wenn man selber eine "Leuchte" ist, braucht man nur Reflektoren ;-)

Ja, aber blinken ist immer noch schwierig. :-D

BTW: In dem von mir noch nicht oft genug gelobten Projekt:

Beitrag "Ersatz von Aiwa Schokoriegel durch Lithium /HS-PX101 Reparatur"

Setze ich eine weisse LED mit 1k Vorwiderstand an 2.5V ein. Zugegeben es 
war in einem Moment geistiger Schwaeche und eine rote LED waere klueger 
gewesen, aber trotzdem, man kann die bei normaler Zimmerbeleuchtung noch 
gut erkennen.

Olaf

von m.n. (Gast)


Lesenswert?

Olaf schrieb:
>> Wenn man selber eine "Leuchte" ist, braucht man nur Reflektoren ;-)
>
> Ja, aber blinken ist immer noch schwierig. :-D

Hast Du noch nie Geistesblitze gehabt ;-)

Egal, es gibt Weihnachtszeug mit hellen LEDs und kleinen Batterien, was 
aber immer nur ein paar Stunden läuft: das taugt alles nichts.
Immer schade um die Batterien!

von Stojahn (Gast)


Lesenswert?

Olaf schrieb:
> Die STM32F030 sind zugegeben schoen billig und koennen auch einiges.
> Aber was sie nicht koennen das ist sparsam zu sein. Wenn du dich
> anstrengst wirst du es schaffen mit dem unter 1mA zu kommen. Viel
> weniger wuerde ich bei dem Teil nicht erwarten.

Danke Olaf. Ähnliches Anwendungsgebiet und damit ist meine Frage 
beantwortet.

Lothar M. schrieb:
> Mich wundert überhaupt, dass man zur Ansteuerung einer LED (arg viel
> mehr geht ja aufgrund der lausigen Batterie nicht) einen
> 32-Rechenboliden bei 2MHz in Vollzeit braucht... ;-)

Ich schrieb LEDs, das ist Plural und weist auf mehrere hin. Zudem sagt 
niemand, dass sie gleichzeitig angesteuert werden. Prinzipiell kann er 
auch 128Bit haben, solang der Rest passt. Warum spielt das eine Rolle? 
Der STM ist einfach günstig und gut verfügbar. Dazu einfach zu flashen 
und wenn man M0 programmieren kann und eine IDE dafür zur Verfügung 
steht, die man beherrscht, warum sollte man dann etwas anderes nehmen? 
Auch habe ich nicht von Vollzeit gesprochen. Es geht einfach darum, dass 
bei dem gerungen Nennstrom der Batterie, diese durch den Prozessor nicht 
noch weiter belastet wird.

Meine Frage war ja relativ eindeutig und ich bin für alternative 
Ratschläge auch sehr dankbar. Warum man aber städnig irgendwelche Sachen 
erfindet um sich selbst zu ergötzen, ist mir wirklich rätselhaft.

Das Teil soll einfach ein paar Tage schlafen und dann zu einer vorher 
eingestellten Uhrzeit aufwachen (Timer, kein RTC, +/-30 Min reicht, auch 
keine extreme Temperatureinwirkung, kine alpha Strahlung, kein 
Granatenbeschuss, habe ich noch etwas vergessen?), dann bisschen blinken 
und dann war es das. Je länger die Batterie hält, desto besser. Wenn sie 
eine Stunde hält reicht es. Ob jetzt 0,4 µA oder 6µA im idle ist egal, 
da ich nicht in den Energiebedarf der eigentlichen Betriebszeit komme. 
Und da wie oben schon mehrfach erkannt die effektive Kapazität vom Strom 
abhängt, möchte ich diesen gering halten. Das war einfach meine Frage.

von Stojahn (Gast)


Lesenswert?

Olaf schrieb:
> Aehem..hier geht es um Weihnachtsfirlefanz und keine
> Strassenbeleuchtung.
>
> Bei mir mussten die Teile nur huebsch blinken wenn man draufgeschaut hat
> um das weihnachtliche Gluecksgefuehl zu aktivieren.

Danke.

Programmierer schrieb:
> Wow. Das will ich sehen. Wenn ARM das wüsste...

Man kann jeden Benchmark auf eine Architektur anpassen. Wenn nur +1 
gerechnet wird, kann der AVR schon schneller sein.

Johannes S. schrieb:
> CubeMX hat einen Powercalculator, der sollte das für F0 / L0 sehr genau
> ausrechnen können.

genau den habe ich genommen.

von Johannes S. (Gast)


Lesenswert?

Stojahn schrieb:
> genau den habe ich genommen.

Beim F031 zeigt der aber 1,15 mA @ 1 MHz an (incl 2 Timer), das ist 
allerdings auch nicht wenig. Der hier schon genannte  L0 liegt mit MSI 
getaktet bei 0,22 mA € 2,097 MHz.
Also Geld für Controller oder Batterien ausgeben :)

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Johannes S. schrieb:
> Also Geld für Controller oder Batterien ausgeben :)

Oder eben den vom TE ins Feld geführten ATmega8(A) nehmen: 6 µA 
power-save current (32 kHz Oszillator tickt, um die Zeit bis Weihnachten 
zu zählen), 120 µA idle current (Timer aktiv, CPU nicht). Mit aktiver 
CPU 1,2 mA, aber das braucht er ja nur, während er irgendwas rechnen 
will.

von Stefan F. (Gast)


Lesenswert?

Olaf schrieb:
> Bei mir mussten die Teile nur huebsch blinken wenn man draufgeschaut hat
> um das weihnachtliche Gluecksgefuehl zu aktivieren.

Bei mir lösen solche Lichter immer den Reflex aus, sie herunter reißen 
zu wollen. Nur der Respekt vor anderer Leute Eigentum hält mich davon 
ab.

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.