Servus allerseits
Es handelt sich bei dem Projekt um einen USB-Dongle, der periodisch die
Umgebungstemperatur misst, sie abspeichert und dann die Daten via USB
dem PC zur Verfügung stellt.
Aus Kostengründen habe ich den STM32F072 (und nicht den STM32L072)
eingesetzt.
Gespeist wird das Ganze mit einer Lithium Zelle (CR2032).
Soweit die Theorie.
In der Praxis funktioniert auch alles wie gewuencht; nur was den
Stromverbrauch anbelangt, habe ich eine beachtliche Diskrepanz zwischen
dem was ich messe, und dem, was ich eigentlich messen sollte.
Gemaess dem Datenblatt (Table 31) sollte die MCU im standby-mode so um
die 2uA ziehen.
Tatsache ist aber, dass ich bei 20uA liege.
Zwar würden mir die 20uA genügen, aber es würde mich schon
interessieren, wo der Fehler liegt.
1
PORTA,PORTB,PORTCundPORTFenable
2
AllePortsaufLow-Speed
3
AllePortspull-up
4
AllePortsaufanalog
5
StandbyMode
Auf der Platine befindet sich z.Zt.:
- 2 externe pull-up Widerstaende zu je 1M
- die MCU mit dem 32kHz Quarz (der aber nicht aktiviert wird)
Die Messung:
- keine Battery
- 3.3V über einen 100R Widerstand
- der Debugger ist nicht eingesteckt
Entweder interpretiere ich das Datenblatt nicht korrekt, oder bei meinem
Setup uebersehe ich etwas.
Beiliegend das abgespeckte Schema.
Waere nett, wenn jemand mir einen Fingerzeig geben könnte.
Erde Dich mal, und dann fahre mit dem Finger ueber die Portpins waehrend
Du die Stromaufnahme beobachtest. Wenn sich die Stromaufnahme
aendert,gibt es noch Verbesserungsmoeglichkeiten mit dem Portpins
Die Details zur angeschlossenen Peripherie (Temperaturmessung) sind
sowohl im Schaltplan als auch im Text wirklich sehr klein geraten...
Oder hast du auch mal den "nackten" Chip gemessen? Und gibt dein
Meßgerät die Genauigkeit in dem Meßbereich garantiert her?
@Lutz
Vielleicht meinen Beitrag nochmals lesen?
Kastanie schrieb:> Ich würde die unbenutzten Ports auf Output schalten und die PullUps> deaktivieren.
Saemtliche Kombinationen habe ich bereits durchgehaechelt.
Das, was Du vorgeschlagen hast, steht bei mir mit 2mA nicht gerade bei
den Top-Ten.
Alle ports auf analog ist schon richtig.
Bist du sicher, dass er auch im Standby ist?
Ist die Schaltung so wirklich auf einer eigenen Platine oder mit dem
"stm32f072 discovery" aufgebaut?
Mehmet K. schrieb:> Kastanie schrieb:>> Ich würde die unbenutzten Ports auf Output schalten und die PullUps>> deaktivieren.> Saemtliche Kombinationen habe ich bereits durchgehaechelt.> Das, was Du vorgeschlagen hast, steht bei mir mit 2mA nicht gerade bei> den Top-Ten.
Das kann nicht sein.
Nur die unbenutzten (=offenen) Pins dürfen auf Ausgang geschaltet
werden.
Der Strom kann ja dann nirgends hin. Also treibst du einen falschen Pin
mit.
Ich arbeite mit dem eigentlichen Board; also nicht mit einer Discovery
oder aehnlichem.
Wie bereits geschrieben, habe ich alles entfernt.
Auf dem Board ist also nur die MCU, 2x 1M Widerstaende, 32kHz Quarz + 2
Caps. Also so, wie im gepostetem Schema.
Warum ziehst du den Wakeup Pin nach High? Würde ihn auf gnd ziehen. Der
controller wird ja aufgeweckt wenn eine steigende Flanke am WKUP pin
kommt. So sparst du dir schonmal 3,3µA.
R.F schrieb:> Warum ziehst du den Wakeup Pin nach High? Würde ihn auf gnd ziehen. Der> controller wird ja aufgeweckt wenn eine steigende Flanke am WKUP pin> kommt. So sparst du dir schonmal 3,3µA.
JP2 ist ein Kurzschluss. Sobald dieser getrennt wird, beginnt die
Aufzeichnung.
Mehmet K. schrieb:> Saemtliche Kombinationen habe ich bereits durchgehaechelt.> Das, was Du vorgeschlagen hast, steht bei mir mit 2mA nicht gerade bei> den Top-Ten.
Überleg dir doch mal wo die 2mA herkommen sollen.
Eine Vermutung:
Du hast zwar auf Ausgang geschaltet, jedoch die PullUps aktiviert
gelassen und die Ausgänge auf Low getrieben.
Ist vielleicht noch irgendwelcher etwas leitender Dreck auf der Platine?
Schwarze Flussmittelreste vom Löten oder ähnliches?
Wasch das mal ab. Wenn man Pech hat, kann so Zeug durchaus im niedrigen
µA-Bereich leiten.
Ne, an der Sauberkeit kann es nicht liegen. Da bin ich sehr pingelig.
Habe es aber nichtsdestotrotz nochmals gereinigt. Keine Aenderung.
Also ich darf davon ausgehen, dass meine Erwartung von 1 - 2uA seine
Berechtigung hat und ich zumindest die Möglichkeit, das Datenblatt
falsch interpretiert zu haben, ausschliessen kann.
Falls die Methode
"auch-ein-blinkdes-Huhn-findet-hin-und-wieder-ein-Korn" zum Erfolg
führen sollte, werde ich hier berichten.
Habe nochmals die Manuals durchgesehen ...
Ich vermute, der zusaetzliche Stromverbrauch kommt vom VDDIO2.
Dieser wird als "Independent I/O supply rail" bezeichnet, weshalb man
davon ausgehen kann, dass die Angaben Ivdd und Ivda den Strom durch
diesen Pin nicht miteinbeziehen.
Leider laesst das PCB es nicht zu, diese Vermutung zu verifizieren;
werde also erst nach Erhalt eines neuen PCB berichten können.
> Also ich darf davon ausgehen, dass meine Erwartung von 1 - 2uA seine> Berechtigung hat und ich zumindest die Möglichkeit, das Datenblatt> falsch interpretiert zu haben, ausschliessen kann.
Die "power consumption" angeben sind schon korrekt im Datenblatt.
Kannst du mal deinen source code hochladen, vll liegt da noch irgendwo
der Fehler.
VDDIO2 denke ich eher nicht, dass dieser die ca. 12µA verbraucht.
--
Ich nutzte für IoT den STM32L051K6T6 und da komme ich auf ca. 900nA im
Stop-Modus (+RTC und GPIO-IRQ wake-up).
R.F schrieb:> VDDIO2 denke ich eher nicht, dass dieser die ca. 12µA verbraucht.
Danke für die Info. Denn danach suche schon seit laengerem. Wo im
Datenblatt steht das?
20µA - 12µA = 8µA
R.F schrieb:> Ich nutzte für IoT den STM32L051K6T6 und da komme ich auf ca. 900nA im> Stop-Modus (+RTC und GPIO-IRQ wake-up)
Sauber!
Der STM32L0 würde aber den finanziellen Rahmen sprengen.