Ahoi, worüber ich in der letzten Zeit immer wieder nachgedacht habe: Welche der beiden MCUs (Atmega328 vs STM32F103C8) ist besser geeignet für Batteriebetrieb? Lässt sich da eine generelle Aussage treffen? Rahmenbedingungen sind Arduino Framework bzw. im Fall des STM32F103C8 STM32Duino. Hat einer mit beidem Erfahrungen? Klar könnte man einfach die Datenblätter vergleichen, jedoch ist fraglich ob beide Frameworks alle Möglichkeiten der MCUs voll ausschöpfen, was das Abschalten einzelner Teile zu Energiesparzwecken betrifft. Evtl. gibts in Verbindung mit Arduino bzw STM32duino ja auch irgendwelche bekannten Probleme mit diversen Sleepmodi, daher eben die Frage ob da jemand Erfahrung damit hat, bevor ich das selber ausprobiere. Ich hab auch kaum die Ausrüstung um im uA Bereich ordentlich messen zu können. Was die Ressourcen betrifft reicht mir eigentlich das was der Atmega328 kann (etwas mehr RAM wär schön, geht aber wohl auch so). Es muss also auch nicht der STM32F103C8 aka Bluepill sein, nur ist der halt so weit verbreitet und billig. Und mehr Power und Platz für die Firmware erleichtert das programmieren ungemein ;-) Anmerkung: natürlich ist das ein Bastelprojekt zwecks Gaudi und nichts professionelles (was die Verwendung von Arduino wohl schon impliziert hat). Endprodukt sollen batteriebetriebene Nodes mit NRF24L01+ sein die dann was auch immer tun, z.B. Temperatur messen. Danke schonmal.
Bei den AVR ist der durch Fuses festgelegte Oszillator großer Mist bei Low Power Anwendungen, falls man nur gelegentlich den Quarz bräuchte. Der "Blue Pill" hat einen 32kHz Uhrenquarz drauf, was für Low Power manchmal reicht. Richtig Strom spart man aber nur wenn so gut wie nix läuft (=möglichst tiefer Schlafmodus) - und falls doch mal was gerechnet werden muss dies möglichst schnell abläuft. Lucas N. schrieb: > Endprodukt sollen batteriebetriebene Nodes mit NRF24L01+ sein Dann sollte man sich dringend die NRF5x von Nordicsemi anschauen. Das sind eigentlich NRF24 Radios mit integriertem Cortex-M0 (oder -M4) µC Kern. Damit spart man sich den STM32 oder AVR komplett.
Lucas N. schrieb: > Lässt sich da eine generelle Aussage treffen? Nein. > Rahmenbedingungen sind Arduino Framework Dann hast du schon verloren. Arduino hat den Anspruch, einfach zu benutzen zu sein, und stellt den vor alle anderen Ansprüche, die jemand haben könnte. Wenn du auf der Suche nach einer Lösung bist, die die technischen Möglichkeiten ausschöpft, bist du mit Arduino auf dem Holzweg. Das ist ein bißchen so, wie mit dem Seifenkistenrenner in der Formel 1 fahren zu wollen.
Axel S. schrieb: > Lucas N. schrieb: > >> Lässt sich da eine generelle Aussage treffen? > > Nein. > >> Rahmenbedingungen sind Arduino Framework > > Dann hast du schon verloren. > > Arduino hat den Anspruch, einfach zu benutzen zu sein, und stellt den > vor alle anderen Ansprüche, die jemand haben könnte. Wenn du auf der > Suche nach einer Lösung bist, die die technischen Möglichkeiten > ausschöpft, bist du mit Arduino auf dem Holzweg. Das ist ein bißchen so, > wie mit dem Seifenkistenrenner in der Formel 1 fahren zu wollen. Das sind wieder solche Pauschalaussagen und ich kann mir jetzt sicher wieder anhören dass ich nicht fragen soll wenn ich alles besser weiß ;-) Es gibt genug Low Power Arduino Projekte, es ist also möglich. Vielleicht nicht mit hundertprozentiger Ausschöpfung der technischen Möglichkeiten aber das war ja auch nicht der Anspruch. Danke an die anderen Tippgeber bisher! Gibt es da Arduino kompatible NRF5x ICs, weißt du da zufällig was? Klingt jedenfalls interessant.
Lucas N. schrieb: > Es gibt genug Low Power Arduino Projekte, es ist also möglich. > Vielleicht nicht mit hundertprozentiger Ausschöpfung der technischen > Möglichkeiten aber das war ja auch nicht der Anspruch. Was soll dann der Anspruch sein? Die Batterien nicht mehr als 5 mal so oft zu wechseln, wie bei hundertprozentiger Ausschöpfung der Möglichkeiten? Oder nur 3 mal so oft wie nötig?
batman schrieb: > Lucas N. schrieb: >> Es gibt genug Low Power Arduino Projekte, es ist also möglich. >> Vielleicht nicht mit hundertprozentiger Ausschöpfung der technischen >> Möglichkeiten aber das war ja auch nicht der Anspruch. > > Was soll dann der Anspruch sein? Die Batterien nicht mehr als 5 mal so > oft zu wechseln, wie bei hundertprozentiger Ausschöpfung der > Möglichkeiten? Oder nur 3 mal so oft wie nötig? So gut es mit vertretbarem Aufwand in der Arduino Welt halt geht. Eigentlich logisch, oder?
Einen 328er habe ich schon auf 80uA Stromaufnahme mit laufenden Watchdog bekommen. Auf den Bluepill Boards ist anscheined ein RT9193 als LDO verbaut. Der braucht typisch alleine 90uA. Ist halt jetzt die Frage... wenn du direkt von der Batterie laufen kannst hast du mit einem mega328 ohne LDO einen kleinen Vorteil. Sonst würde ich auf den moderneren Halbleiter setzen. Wenn das Ding aber wach ist, dürfte es anders aussehen... 73
Hans schrieb: > Einen 328er habe ich schon auf 80uA Stromaufnahme mit laufenden Watchdog > bekommen. > > Auf den Bluepill Boards ist anscheined ein RT9193 als LDO verbaut. > > Der braucht typisch alleine 90uA. > > Ist halt jetzt die Frage... wenn du direkt von der Batterie laufen > kannst hast du mit einem mega328 ohne LDO einen kleinen Vorteil. Sonst > würde ich auf den moderneren Halbleiter setzen. > > Wenn das Ding aber wach ist, dürfte es anders aussehen... > Ja, das war auch mein Gedanke, mal was moderneres zu nutzen als die alten AVRs. Es wird zwar ne Bastelei, ich mach mir dann aber schlussendlich trotzdem meine eigene Platine, d.h. der LDO vom Bluepill ist kein Kriterium, da kann ich nen anderen nehmen oder mir eine andere Lösung überlegen. Eagle und Elecrow sei Dank ;-) > 73 Du meinst wohl 42? ;-)
:
Bearbeitet durch User
Also wenn du fähig bist, mit Eagle eine eigene Platine zu erstellen und dir diese vom Chinamann anfertigen zu lassen, dann bekommst du das auch hin, den STM32 in den Tiefschlaf zu versetzen. Eventuell gibt es da keine fertige API, dann musst du eben selber mal das Handbuch aufschlagen und die paar Bits in den Registern von Hand setzen. Das ist definitiv kein Hexenwerk und für den ganzen Rest (NRF24, etc.) kannst du trotzdem noch das Arduino-Framework nutzen.
Lucas N. schrieb: > Axel S. schrieb: >> Lucas N. schrieb: >>> Rahmenbedingungen sind Arduino Framework >> >> Dann hast du schon verloren. > Das sind wieder solche Pauschalaussagen und ich kann mir jetzt sicher > wieder anhören dass ich nicht fragen soll wenn ich alles besser weiß ;-) Du hast gefragt. Ich habe geantwortet. Wenn dir meine Antwort nicht gefällt, kann ich daran nichts ändern. Ist mir auch egal. Es gab schon immer Leute, die lieber schnell fertig sein wollten, als etwas richtig zu machen. Sollen sie halt.
Christopher J. schrieb: > Also wenn du fähig bist, mit Eagle eine eigene Platine zu erstellen und > dir diese vom Chinamann anfertigen zu lassen, dann bekommst du das auch > hin, den STM32 in den Tiefschlaf zu versetzen. Eventuell gibt es da > keine fertige API, dann musst du eben selber mal das Handbuch > aufschlagen und die paar Bits in den Registern von Hand setzen. Das ist > definitiv kein Hexenwerk und für den ganzen Rest (NRF24, etc.) kannst du > trotzdem noch das Arduino-Framework nutzen. Jo ich schätz mal so haben das auch viele mit klassischen Arduinos (328) gemacht, deren Low Power Projekte man so im Internet findet. Hätt auch kein Problem damit. Mir gings ja auch nicht um eine fertige Anleitung sondern um Erfahrungswerte. Wenn mir nun jemand gesagt hätte dass es da zb mit stm32duino und dem manuellen setzen von Registern und sonstigen Tricksereien (bekannte) Probleme gibt, hätt ich es gleich bleiben lassen und mich direkt mit dem 328p beschäftigt, da gibts ja schon genügend Vollzugsmeldungen im Internet.
Axel S. schrieb: > Lucas N. schrieb: >> Axel S. schrieb: >>> Lucas N. schrieb: > >>>> Rahmenbedingungen sind Arduino Framework >>> >>> Dann hast du schon verloren. > >> Das sind wieder solche Pauschalaussagen und ich kann mir jetzt sicher >> wieder anhören dass ich nicht fragen soll wenn ich alles besser weiß ;-) > > Du hast gefragt. Ich habe geantwortet. Wenn dir meine Antwort nicht > gefällt, kann ich daran nichts ändern. Ist mir auch egal. Es gab schon > immer Leute, die lieber schnell fertig sein wollten, als etwas richtig > zu machen. Sollen sie halt. Dude, ich hab einen Job und ein Leben und begrenzte Freizeit in der ich meinen Hobbies fröhnen kann. Nachvollziehbar, dass ich bei sowas dann nicht unbedingt eine Doktorarbeit mit Sternchen und Stempel von der Lehrerin machen will, oder? ;-) Wenn ich dafür erst lernen muss den AVR oder STM32 ohne Arduino Gedöns zu programmieren dann kann ich das bis zur Pension aufschieben, da hab ich dann vielleicht Zeit dafür. Bis dahin werden 97% reichen müssen.
Ja dann, andere lernen halt bissie schneller. Kann man nicht wissen.
Lucas N. schrieb: > Ja, das war auch mein Gedanke, mal was moderneres zu nutzen als die > alten AVRs. Habe ich auch gemacht, aber mit Cortex-M0, LPC812/824. Der uC mit Self Wakeup Timer braucht da ca. 1 uA im Deep power down. Mit mbed habe ich mehr Komfort als mit Arduino und der Jagd nach dem besten Core. Wenn STM32 und Selbstbau, dann zB eher die moderneren L0. Strom sparen ist kein ganz einfaches Thema, man muss dafür schon genau in die Datenblätter schauen. Beim LPC musste ich noch PullUp R nachstricken weil sogar die internen im Deep power down abgeschaltet werden.
batman schrieb: > Ja dann, andere lernen halt bissie schneller. Kann man nicht wissen. gut für diejenigen!
Johannes S. schrieb: > Lucas N. schrieb: >> Ja, das war auch mein Gedanke, mal was moderneres zu nutzen als die >> alten AVRs. > > Habe ich auch gemacht, aber mit Cortex-M0, LPC812/824. Der uC mit Self > Wakeup Timer braucht da ca. 1 uA im Deep power down. Mit mbed habe ich > mehr Komfort als mit Arduino und der Jagd nach dem besten Core. > Wenn STM32 und Selbstbau, dann zB eher die moderneren L0. Strom sparen > ist kein ganz einfaches Thema, man muss dafür schon genau in die > Datenblätter schauen. Beim LPC musste ich noch PullUp R nachstricken > weil sogar die internen im Deep power down abgeschaltet werden. klingt echt nicht schlecht aber PUH mbed scheint ja ein noch riesigeres framework/middleware/konstrukt zu sein als arduino (auf den ersten blick), oder? klar kommt man mit sowas dann noch viel schneller ans ziel, aber ich glaub das wär dann sogar mir, dem arduino freund, zu viel abstraktion. programmiert man da auch in C oder schon eher sowas wie lua oder python?
Auch C/C++, eher C++ aber ohne alle Features bis ins letzte zu nutzen. Ich habe hier schon einiges dazu geschrieben, es ist flexibler und mittlerweile gut ohne den Online Compiler zu nutzen. Ich hoffe ich komme mal dazu einen Artikel dazu zu schreiben, habe aber gerade wieder eine Dienstreise gewonnen und Ostern wenig Zeit. Habe heute eine Plexiglas Platte bekommen, das Gehäuse ist jetzt fertig. Die Platine habe ich 04/2016 gemacht, also auch einfache Dinge brauchen ihre Zeit wenn man etwas nebenbei tun muss... Also Full Ack wenn man es so startet wie man es sich zutraut.
Johannes S. schrieb: > Auch C/C++, eher C++ aber ohne alle Features bis ins letzte zu nutzen. > Ich habe hier schon einiges dazu geschrieben, es ist flexibler und > mittlerweile gut ohne den Online Compiler zu nutzen. Ich hoffe ich komme > mal dazu einen Artikel dazu zu schreiben, habe aber gerade wieder eine > Dienstreise gewonnen und Ostern wenig Zeit. Ihgitt, Dienstreisen. Den Artikel würde ich auf jeden Fall lesen! Was mich bei sowas halt immer abschreckt ist, dass das wohl eine Komplexität erreicht wo ich bei Bugs wirklich 100% den Entwicklern ausgeliefert bin. Beim Arduino Core für AVR würde ich es evtl noch schaffen Bugs zu finden (root cause) und zu beheben aber da ist der Code ja generell auch übersichtlicher (weniger) als bei mbed und auch weniger komplex, nehm ich an. Ich glaube der Arduino AVR Core hat mittlerweile einen Status erreicht wo man sagen kann dass man wirklich sehr, sehr selten auf schlimme Bugs trifft. Bei sowas wie mbed hab ich das Gefühl dass man da Patches im Monatsrhythmus wie bei aktuellen Betriebssystemen hat und das ist ja was, was eigentlich nicht die ursprüngliche Intention bei uControllern war (ständig einen fetten Koloss von Framework pflegen). Oder täuscht da der Eindruck und mbed ist ein ganz schlankes Teil? Bei „Online Compiler“ ist mir btw etwas schlecht geworden :-D ich bin so gar kein Cloud-Freund, außer es ist die private Cloud ;-)
Könnte viel dazu schreiben, aber is schon spät... mbed ist sehr stabil, da sitzt ein Team von ARM hinter die unendlich viel testen. PRs und Mitarbeit wird sehr freundlich angenommen. Komplex ist das große Ganze weil MultiKulti: MacOS, Linux und Windows als Host, jede Menge CortexM Plattformen und das mit Keil, GCC oder IAR kompilierbar. Über das eigene Build System mit Python Tools oder man exportiert es in ein makefile oder seine Lieblings IDE. Und da ist ein großer Vorteil: ordentlich Debuggen und analysieren zu können mit ordentlichen Tools. Arduino IDE ist einfach, aber mehr nicht. Layout habe ich auch in Eagle gemacht und das 3D Modell dann in Fusion360 fürs Gehäuse in den 3D Drucker. Was man da heute am heimischen Herd hinbekommt ist einfach Klasse.
Hab mir vor ein paar Tagen das NucleoL031K6 geholt (Amaz0n, 13€); mit Atom Editor + Platformio IDE + mbed Framework funktioniert das richtig gut, offline und ohne daß man jedes Bit mit Vornamen kennen muß. Der Controller ist ein M0+ aus der Stromsparlinie von ST, das Board hat Arduino Nano Formfaktor. Würde ich dir mal ans Herz legen..
Morgen, gut also ich seh schon, mbed wird Pflichtlektüre und STM32 scheint auch Lösungen zu haben. AVR ist zwar wohl noch immer eine Alternative, aber wenns moderner sein soll dann wohl eher nicht.. Danke jedenfalls für die ganzen Hinweise und Tipps!
Beide Mikrocontroller kannst du mit Arduino programmieren. bei beiden kannst du die Taktfrequenz im laufenden Betrieb per Software ändern und beide haben bei gleicher Taktfrequenz ungefähr die gleiche Stromaufnahme. Das Arduino Framework ist dabei nicht unbedingt ein Hindernis, denn die Taktfrequenz kannst du durch direkte Zugriffe auf die Register ändern. Mann muss ja nicht für jeden Furz eine vorgefertigte Library-Funktion haben. Beim ATmega328P kannst du allerdings wesentlich niedrigere Taktfrequenzen einstellen, als beim STM32. Dann sinkt die Stromaufnahme, jedoch ist der µC länger am Arbeiten. Anstatt permanent in einer Endlos-Schleife zu laufen, kann man die Arbeit auch möglichst rasch erledigen und den µC dann häufiger und länger schlafen legen. Wenn der Mikrocontroller ständig unter Strom sein soll und dabei Laufzeiten von mehreren Monaten angestrebt werden, dann bist du mit dem ATmega328P besser bedient. Ein ATtiny wäre noch sparsamer. Denn beim Schlafen ist die Stromaufnahme der AVR's erheblich geringer, als die STM32F1 Serie. Da das für Dich ein Thema ist, schau Dir auch mal die STM32L (L=Low Power) Serien an, die sind für so etwas eher gemacht. Bei den meisten Arduino Modulen und auch beim BluePill Board versaut Dir der Spannungsregler das Strom-Sparen. Den musst du entfernen und dann eine Batterie wählen, deren Spannung direkt zum µC passt. Das ist bei AVR wieder einfacher, da diese einen viel weiteren Versorgungsspannungsbereich haben. Mein Fazit: Wenn du schnell fertig werden willst, nimm den AVR. Wenn du was neues lernen willst, nimm einen STM32L.
Stefan U. schrieb: > Beide Mikrocontroller kannst du mit Arduino programmieren. bei beiden > kannst du die Taktfrequenz im laufenden Betrieb per Software ändern und > beide haben bei gleicher Taktfrequenz ungefähr die gleiche > Stromaufnahme. > > Das Arduino Framework ist dabei nicht unbedingt ein Hindernis, denn die > Taktfrequenz kannst du durch direkte Zugriffe auf die Register ändern. > Mann muss ja nicht für jeden Furz eine vorgefertigte Library-Funktion > haben. > > Beim ATmega328P kannst du allerdings wesentlich niedrigere > Taktfrequenzen einstellen, als beim STM32. Dann sinkt die Stromaufnahme. > Man kann das Programm allerdings auch so gestalten, das es seine > Aufgaben möglichst rasch erledigt und den µC in den Zwischenzeiten > schlafen legt. So spart man auch bei hohen Taktfrequenzen eine Menge > Energie. > > Wenn der Mikrocontroller ständig unter Strom sein soll und dabei > Laufzeiten von mehreren Monaten angestrebt werden, dann bist du mit dem > ATmega328P besser bedient. Ein ATtiny wäre noch sparsamer. Denn beim > Schlafen ist die Stromaufnahme der AVR's erheblich geringer, als die > STM32F1 Serie. > > Da das für Dich ein Thema ist, schau Dir auch mal die STM32L (L=Low > Power) Serien an, die sind für so etwas eher gemacht. > > Bei den meisten Arduino Modulen und auch beim BluePill Board versaut Dir > der Spannungsregler das Strom-Sparen. Den musst du entfernen und dann > eine Batterie wählen, deren Spannung direkt zum µC passt. Das ist bei > AVR wieder einfacher, da diese einen viel weiteren > Versorgungsspannungsbereich haben. Danke das hilft mir auch sehr weiter! Weniger RAM als beim 328p wird nicht gehen, fürchte ich, da ich ein selbstreparierendes mesh mit den NRF24 machen möchte und da einiges an dynamischen "routing tabellen" vorhalten muss. Ich hab zwar die fertige nrf24 lib die es da gibt schon weitgehend umgeschrieben und an meine bedürfnisse angepasst, einige dinge brauchen aber einfach RAM, da kommt ich nicht drum rum. ich bin hin- und hergerissen :-D Dann wohl doch erstmal AVR, wenn ich mich nicht zuerst in mbed einlesen will ;-) Obwohl ich gelesen hab dass der STM32 Arduino Core wohl auch mit den STM32L kompatibel zu sein scheint. Naja mal schauen... Was "für jeden Furz eine Lib" betrifft, stimme ich dir zu, über das Stadium bin ich Gottseidank schon hinaus. Ich verwende auch nicht die Arduino IDE zum programmieren, da wär ich schon längst irre geworden. Visual Studio mit Visual Micro Addin geht sehr gut, allerdings kompiliere ich mit der Arduino IDE da im Visual Micro irgendwo ein Hund drin ist/war und die Binaries die bei beiden hinten rausfallen unterschiedlich sind. Das von Visual Micro kompiliert Binary hatte bei komplexeren Dingen die merkwürdigsten Fehler (solche die auftreten, wenn man z.b. über arraygrenzen hinausschreibt).
Ich mache das auch manchmal so. Zum Editieren nutze ich eine anständige IDE, zum Compilieren jedoch die Arduino IDE weil keine Luft auf die aufwändige Konfiguration habe.
Stefan U. schrieb: > Ich mache das auch manchmal so. Zum Editieren nutze ich eine anständige > IDE, zum Compilieren jedoch die Arduino IDE weil keine Luft auf die > aufwändige Konfiguration habe. sag ich ja, vs zum coden und arduino ide zum kompilieren ;-)
> keine Luft
keine Lust sollte es heissen.
Das Arduino Framework nutze ich allerdings ohnehin nur für Spielereien
mit dem ESP8266 und wenn ich ein fertiges Arduino Projekt nur ein
bisschen anpassen will.
Ansonsten bin ich eher ein Fan vom guten alten make auf der
Kommandozeile.
Stefan U. schrieb: >> keine Luft > > keine Lust sollte es heissen. dachte ich mir schon. > Das Arduino Framework nutze ich allerdings ohnehin nur für Spielereien > mit dem ESP8266 und wenn ich ein fertiges Arduino Projekt nur ein > bisschen anpassen will. wer kann, der kann ;-) Bin ein großer fan vom esp8266 geworden. wenn man ein paar sachen beachtet und nicht die billigsten china clones nimmt, kann man damit sogar stabile dinge bauen. mein wifi dimmer auf esp8266 basis läuft seit monaten 24/7 ohne reboot durchgehend ohne probleme :-) hab seit monaten auch ein esp32 herumliegen aber noch immer nichts damit gemacht, wenn das so ist wie das 8266 nur besser dann kommen da noch viele coole projekte :-) > Ansonsten bin ich eher ein Fan vom guten alten make auf der > Kommandozeile. und wieder: wer kann, der kann ;-)
Ich habe mit dem ESP8266 eine kleine Verfügbarkeits-Kontrolle für meinen Webserver gebaut. Der läuft seit 11 Monaten ohne Ausfall durch. Mittlerweilen läuft die Firmware brauchbar stabil (das war im Jahr 2016 noch nicht der Fall).
Stefan U. schrieb: > Ich habe mit dem ESP8266 eine kleine Verfügbarkeits-Kontrolle für meinen > Webserver gebaut. Der läuft seit 11 Monaten ohne Ausfall durch. cool! > Mittlerweilen läuft die Firmware brauchbar stabil (das war im Jahr 2016 > noch nicht der Fall). hmm, dann lag das damals wohl nicht an mir... wir driften zwar etwas ab, aber: Hast du auch am watchdog rumspielen müssen damit das ding sich nicht selbst resettet "wenns mal wieder länger dauert"? delay bzw yield hab ich immer wieder drin (vor allem im main loop). mein esp spielt u.a. auch webserver und hat sonst auch so einiges zu tun (insg. 4000 zeilen ohne diverse libs) und da kam es schon mal vor, dass es dem WD mal zu lang gedauert hat bis das esp sich wieder um die eigenen funktionen kümmern konnte.
> Hast du auch am watchdog rumspielen müssen
Nein. Man muss natürlich drauf achten, keine Schleifen zu programmieren
die (ohne delay/yield) zu lange blockieren.
Stefan U. schrieb: >> Hast du auch am watchdog rumspielen müssen > > Nein. Man muss natürlich drauf achten, keine Schleifen zu programmieren > die (ohne delay/yield) zu lange blockieren. im setup: ESP.wdtDisable(); ESP.wdtEnable(WDTO_8S); im main loop am schluss: ESP.wdtFeed(); yield(); das wirkte Wunder bei mir, ich hatte schon überall yields und delays drin und trotzdem hat sich das Teil immer wieder resetted. Seit diesen beiden Zeilen ist es absolut rocksolid und durch nichts aus dem Tritt zu bringen. Allein das Auslesen bzw. Ausliefern einer HTML Seite aus dem Flash (PROGMEM) mit der mitgelieferten Webserver Lib hat den Controller schon manchmal zum Reset gebracht.
Stefan U. schrieb: > Denn beim > Schlafen ist die Stromaufnahme der AVR's erheblich geringer, als die > STM32F1 Serie. Wenn nur noch die RTC läuft, braucht selbst der alte stm32f103c8t6 nur 1.2 µA@3V. > Da das für Dich ein Thema ist, schau Dir auch mal die STM32L (L=Low > Power) Serien an, die sind für so etwas eher gemacht. > > Bei den meisten Arduino Modulen und auch beim BluePill Board versaut Dir > der Spannungsregler das Strom-Sparen. Den musst du entfernen und dann > eine Batterie wählen, deren Spannung direkt zum µC passt. Das ist bei > AVR wieder einfacher, da diese einen viel weiteren > Versorgungsspannungsbereich haben. Ein TPS78230DDC könnte den alten Spannungsregler ersetzen..
> Wenn nur noch die RTC läuft, braucht selbst der alte > stm32f103c8t6 nur 1.2 µA@3V. Aber dann stehen beim STM32 alle normalen Timer und normale Interrupts gehen auch nicht mehr. Aufwecken geht dann nur noch per Reset, dem Wakeup Pin oder RTC-Alarm Pin. Oder irre ich? In diesem Zustand ist man schon ziemlich eingeschränkt, aber ja, du hast schon Recht.
Hallo! Hat schonmal jemand auf dem Blue Pill Board eine Stromaufnahme in der 3 µA Region gesehen? Ich bin jetzt bei 38 µA im Shutdown Mode (mit stm32duino. Aber ein Testprogramm mit PlatformIO brachte mich auch nicht weiter runter). Ich such gerade nach dem Stromfresser.. - Kann der 5V LDO was brauchen? (ich betreibe das Board über den 3,3V Pin). - Ist mein günstiges UT61e Multimeter nicht mehr ausreichend für diese Messung? - Hat mein Board evtl. einen Defekt? (Mir fällt nur der Widerstand für USB ein, der hier aber nix machen sollte?) - Dann bliebe noch ein Software Problem. Sonst noch jemand eine Idee?
Andreas Rückert schrieb: > Kann der 5V LDO was brauchen? Ja sicher. Meistens sogar erheblich mehr, als zweistellige µA. Auch Kondensatoren haben Leckströme.
Vielen Dank für Deinen Tipp! Ich hatte schonmal gegoogelt, ob ich jemand finde, der den LDO entfernt hat, aber ich konnte nur Leute finden, die ihn gegen einen besseren Typ getauscht haben. Ich hab jetzt nochmal gegoogelt, und hier wird auch das Entfernen des LDO empfohlen: https://electronics.stackexchange.com/questions/401945/stm32f103c8t6-3-3v-pin-max-output/402017 Könnte evtl. mein nächster Schritt sein. Nochmal drüber nachdenken. Ein Jumper zum Abschalten wäre mir eigentlich sympathischer. Ich frag mich halt, wie der Kollege mit dem stm32f103 Nucleo Board auf die 2 µA kommt...
Andreas Rückert schrieb: > Ich frag mich halt, wie der Kollege mit dem stm32f103 Nucleo Board auf > die 2 µA kommt... Eben waren wir noch beim Blue-Pill Board. Beim Nucleo64 Board kannst du JP6 abziehen um den Mikrocontroller vom Spannungsregler zu trennen. Wenn man dort das Multimeter einschleift, misst es nur die Stromaufnahme des STM32. Das steht ziemlich unmissverständlich in dessen Manual.
Andreas Rückert schrieb: > Ich such gerade nach dem Stromfresser.. Der STM32F030 ist mir schon mehrfach mit ESD "kaputt" gegangen. Da war auf einmal der Stromverbrauch "riesig". Bei anderen Typen ist mir das so noch nicht aufgefallen - möglich wär's natürlich trotzdem. Also nur zur Sicherheit mal ein frisches Board testen. 73
Andreas Rückert schrieb: > Ich bin jetzt bei 38 µA im Shutdown Mode (mit > stm32duino. "shutdown" gibt es beim STM32F1 nicht, sondern höchstens bei "stm32duino". Korrekt heißen die drei Modi "sleep", "stop" und "standby", wobei low-power mit RTC sicher der "stop"-mode ist. Was definitiv ein Stromfresser sein kann, sind als Eingang konfigurierte GPIO die fröhlich vor sich hin floaten. Am besten vor dem schlafen legen die Eingänge per PU oder PD auf ein definiertes Potential legen und den Pin als PP-Output konfigurieren und auf selbiges Potential legen wie PU bzw. PD. Alternativ kann man die GPIO auch als analogen Eingang konfigurieren, wenn nichts an Peripherie dran hängt, was da dagegen spricht. PS: Es gibt da von ST auch ne Appnote zu und zwar AN4899 "STM32 GPIO configuration for hardware settings and low-power consumption". Eine andere AN die zum Thema passt ist AN2629 "STM32F101xx, STM32F102xx and STM32F103xxlow-power modes"
:
Bearbeitet durch User
Mit den Modes hast Du natürlich recht. Ich habe Arduino Shutdown und PlatformIO Standby getestet, was ja das gleiche sein sollte. Ich hab von dem Nucleo Board nur das Video gesehen und den Blog Artikel gelesen. Ich hab leider so ein Board nicht, und habe mir auch kein Datenblatt davon besorgt. Entschuldigung dafür.
Die Debug Engine im µC zieht gern Strom. Nach dem Programmieren Kabel ab und power cycle. (Normaler reset reicht afair nicht aus.)
Ich hab das Board ja über USB programmiert, und mir die 3,3 V danach über einen 3,3 V aus einem 5 V Netzteil geholt. Dieser Reset muss also stattgefunden haben. Meine beste Idee aktuell ist also der 5 V => 3,3 V Regler auf dem Board, der da ein paar µA abzwackt, obwohl er eigentlich umgangen sein sollte. Wird wohl mein nächster Test sein, den mal mit der Heissluftstation zu entlöten und dann die nächste Messung zu machen. Vielen Dank nochmal für eure Tipps!
Andreas Rückert schrieb: > Meine beste Idee aktuell ist also der 5 V => 3,3 V Regler auf dem Board, > der da ein paar µA abzwackt, obwohl er eigentlich umgangen sein sollte. Solange du ihn nicht abtrennst oder auslötest, wird er Strom aufnehmen.
So...wegen Jobstress wieder massig Verzögerung. Stand heute: den Original LDO ausgelötet und der Standby Strom liegt jetzt bei ca 2,66 bis 2,8 µA ! Die Kondensatoren rund um den entfernten LDO sind noch auf dem Blue Pill Board und werden auch noch bischen fressen. Da könnte man evtl. den Rest bis runter auf 2 µA holen. Weiss noch nicht, ob sich das lohnt, weil ich ggf eh eine eigene Platine mit Anschlüssen für mein Projekt machen muss. Hab mal ein Video von meiner Messung gemacht, falls das jemand interessiert. Code war jetzt ein Demoprogramm mit PlatformIO, aber da war der Strom vorher auch 39 µA. Ich gehe davon aus, dass mein stm32duino Code auch entsprechend im Stromverbrauch sinken wird. Muss ich die Tage testen. Auf jeden Fall mal vielen Dank für die hilfreichen Tipps hier im Forum!
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.