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.
:
Bearbeitet durch User
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
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.
CubeMX hat einen Powercalculator, der sollte das für F0 / L0 sehr genau ausrechnen können.
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.
Olaf schrieb: > Ausserdem hab ich LEDs verwenden > die mit 100 oder 200uA auskommen. Wenn man selber eine "Leuchte" ist, braucht man nur Reflektoren ;-)
> 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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.