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