Forum: Mikrocontroller und Digitale Elektronik STM32 „Bluepill“ vs. Atmega328 Batteriebetrieb mit Arduino


von L. N. (derneumann)


Lesenswert?

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.

von Andreas R. (daybyter)


Lesenswert?


von Jim M. (turboj)


Lesenswert?

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.

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


Lesenswert?

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.

von L. N. (derneumann)


Lesenswert?

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.

von batman (Gast)


Lesenswert?

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?

von L. N. (derneumann)


Lesenswert?

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?

von Hans (Gast)


Lesenswert?

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

von L. N. (derneumann)


Lesenswert?

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
von Christopher J. (christopher_j23)


Lesenswert?

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.

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


Lesenswert?

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.

von L. N. (derneumann)


Lesenswert?

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.

von L. N. (derneumann)


Lesenswert?

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.

von batman (Gast)


Lesenswert?

Ja dann, andere lernen halt bissie schneller. Kann man nicht wissen.

von Johannes S. (Gast)


Lesenswert?

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.

von L. N. (derneumann)


Lesenswert?

batman schrieb:
> Ja dann, andere lernen halt bissie schneller. Kann man nicht wissen.

gut für diejenigen!

von L. N. (derneumann)


Lesenswert?

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?

von L. N. (derneumann)


Lesenswert?

batman schrieb:
> Ja dann, andere lernen halt bissie schneller. Kann man nicht wissen.

ps: troll...

von Johannes S. (Gast)


Angehängte Dateien:

Lesenswert?

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.

von L. N. (derneumann)


Lesenswert?

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 ;-)

von Johannes S. (Gast)


Lesenswert?

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.

von Alexander S. (alex998)


Lesenswert?

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..

von Johann (Gast)


Lesenswert?


von L. N. (derneumann)


Lesenswert?

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!

von Stefan F. (Gast)


Lesenswert?

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.

von L. N. (derneumann)


Lesenswert?

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).

von Stefan F. (Gast)


Lesenswert?

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.

von L. N. (derneumann)


Lesenswert?

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 ;-)

von Stefan F. (Gast)


Lesenswert?

> 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.

von L. N. (derneumann)


Lesenswert?

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 ;-)

von Stefan F. (Gast)


Lesenswert?

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).

von L. N. (derneumann)


Lesenswert?

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.

von Stefan F. (Gast)


Lesenswert?

> 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.

von L. N. (derneumann)


Lesenswert?

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.

von stromsparer (Gast)


Lesenswert?

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..

von Stefan F. (Gast)


Lesenswert?

> 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.

von Andreas Rückert (Gast)


Lesenswert?

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?

von Stefan F. (Gast)


Lesenswert?

Andreas Rückert schrieb:
> Kann der 5V LDO was brauchen?

Ja sicher. Meistens sogar erheblich mehr, als zweistellige µA.

Auch Kondensatoren haben Leckströme.

von Andreas Rückert (Gast)


Lesenswert?

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...

von Stefan F. (Gast)


Lesenswert?

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.

von Hans W. (Firma: Wilhelm.Consulting) (hans-)


Lesenswert?

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

von Christopher J. (christopher_j23)


Lesenswert?

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
von Andreas Rückert (Gast)


Lesenswert?

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.

von Johannes (Gast)


Lesenswert?

Die Debug Engine im µC zieht gern Strom. Nach dem Programmieren Kabel ab 
und power cycle. (Normaler reset reicht afair nicht aus.)

von Andreas Rückert (Gast)


Lesenswert?

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!

von Stefan F. (Gast)


Lesenswert?

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.

von Andreas Rückert (Gast)


Lesenswert?

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
Noch kein Account? Hier anmelden.