Forum: Platinen Wetterstation - Low Power Design


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von Martin K. (dschadu)


Angehängte Dateien:

Lesenswert?

Hi,

ich bin aktuell eine Wetterstation am bauen. Das ganze soll mit einem 
18650 LiIon-Akku versorgt werden. Geladen wird der Akku über eine kleine 
Solarzelle, mit Hilfe von einem Solar-IC. Die Daten werden dann 
regelmäßig per Funk an die Innenstation übertragen. Als Controller kommt 
ein STM32L4 zum Einsatz.
Ein erster Prototyp der Platine ist auch schon aufgebaut. Die 
Kern-Funktionen sind soweit alle gegeben (Sensoren funktionieren, Funk 
läuft, Sleep Modes usw...). Der Prototyp hat mir aber folgende Probleme 
aufgezeigt, die ich hoffentlich mit der neuen Platine beheben kann:

Der 32,768 kHz Schwingt nicht. Das Design rund um den Quarz ist wohl 
sehr kritisch. Ich habe versucht, mich mit dem neuen Design an die 
AppNote (AN2867) von STM zu halten. Als Quarz habe ich folgenden raus 
gesucht. Der ist auch in in der Recommended Liste in der AppNote: FC-135 
32.7680KA-AG5
Der Standby-Strom war deutlich höher wie zuvor berechnet. Ich habe die 
Messung der Akku-Spannung, die vorher mit einem Spannungsteiler gelöst 
war, jetzt gegen einen OpAmp als Spannungsfolger (Verstärkung 0,5) 
getauscht.
Die 0 Ohm Widerstände sind immer dazu gedacht, dass ich dem 
Stromverbrauch einzelner ICs messen kann.

Meine Fragen wären jetzt: Ist das Quarz-Layout so ok? Passt das mit dem 
OpAmp? Allgemeine Anregungen zum Layout oder der Schaltung sind 
ebenfalls willkommen!

von Rainer W. (rawi)


Lesenswert?

Martin K. schrieb:
> Der Standby-Strom war deutlich höher wie zuvor berechnet. Ich habe die
> Messung der Akku-Spannung, die vorher mit einem Spannungsteiler gelöst
> war, jetzt gegen einen OpAmp als Spannungsfolger (Verstärkung 0,5)
> getauscht.

-0.5
Der OP funktioniert so nicht und -0.5 bringt dir nichts.

von J. S. (jojos)


Lesenswert?

ich habe so etwas etwas einfacher gebaut, nur mit SHT Sensor, aber auch 
mit RFM69. Der Controller LPC812/824 schaltet im Deep Sleep auch die 
Pull Up ab, das führte zu erhöhter Stromaufnahme des RFM durch die 
floatenden SPI Leitungen, da habe ich noch ext. Pull Up eingebaut. Also 
mal kontrollieren was der L4 da macht.
Bei neueren STM32 kann man den Laststrom für den Quarz einstellen, da 
habe ich beim H7 auch lange gesucht weil der nicht ordentlich schwingen 
wollte.

von Vanye R. (vanye_rijan)


Lesenswert?

> Der 32,768 kHz Schwingt nicht. Das Design rund um den Quarz ist
> wohl sehr kritisch.

Ja, 32khz Quarze sind deutlich sensibler. Sie schwingen z.B auf
keinen Fall wenn du da einen 1:1 Tastkopf dran haelst und manchmal
auch mit 1:10 nicht.
Ich weiss zwar nicht ob dein Guardring unbedingt not tut, aber
ich denke das es eigentlich funktionieren sollte. Falls die 10pF
fuer deinen Quarz und deine MCU so richtig sind.

> Passt das mit dem OpAmp?

Du kannst einfach einen beliebig hochohmigen Spannungsteiler verwenden,
sagen wir mal 2x1Meg. Zum unteren schaltest du dann einen 10nF oder 
100nF
Kondensator parallel. Dieser Kondensator verkleinert den 
Ausgangswiderstand soweit das der AD deiner MCU das brauchbar messen 
kann. Der Nachteil ist natuerlich das du einen sehr langsamen Tiefpass 
gebaut hast. Aber du musst deine Batteriespannung ja sicher nicht sehr 
oft/schnell messen.

Vanye

von Martin K. (dschadu)


Lesenswert?

J. S. schrieb:
> Bei neueren STM32 kann man den Laststrom für den Quarz einstellen

Ja, selbst auf High mag er nicht. Daher das Design nach AppNote.

Vanye R. schrieb:
> Falls die 10pF
> fuer deinen Quarz und deine MCU so richtig sind.

Habe mehrere Kondensatoren in dem Bereich vorrätig und kann dann etwas 
spielen. 10pf sollten rechnerisch passen.

Vanye R. schrieb:
> Du kannst einfach einen beliebig hochohmigen Spannungsteiler verwenden,
> sagen wir mal 2x1Meg. Zum unteren schaltest du dann einen 10nF oder
> 100nF
> Kondensator parallel.

Stimmt, danke! Werde den Op rauswerfen und das so umsetzen. Danke auch 
an Rainer W.!

von Mampf F. (mampf) Benutzerseite


Lesenswert?

DarkTheme - da wird man doch depressiv davon. scnr

von Bauform B. (bauformb)


Lesenswert?

Martin K. schrieb:
> Der 32,768 kHz Schwingt nicht.

Nimm einen fertigen 32kHz-Oszillator. Der OV-7604-C7 braucht weniger als 
1uA und weniger Platz, das Layout ist viel unkritischer und er 
funktioniert.

Im gleichen Gehäuse gibt es auch Temperatur-kompensierte 32kHz: 
RV-3032-C7. Da ist auch gleich eine komplette RTC dabei. Die braucht man 
zwar nicht unbedingt, aber damit könnte man noch mehr Strom sparen.

Den 8MHz-Quarz könnte man ganz weg lassen. Die internen RC-Oszillatoren 
der STM32L4 können per Software und beim L431 auch per Hardware getrimmt 
werden. Als Referenz dienen die 32kHz oder ein 1Hz-Takt von einer RTC.

Wenn beide Quarze entfallen, hast du oben Platz für die NRST-Leiterbahn 
und bekommst eine schönere Massefläche auf der Unterseite.

Bis auf den Regensensor(?) funktioniert alles mit 3.0 bis 3.6V. Man 
könnte einen LiFePO4-Akku in Erwägung ziehen und den Spannungsregler 
sparen...

von Keks F. (keksliebhaber)


Lesenswert?

Bauform B. schrieb:
> Regensensor(?)

Das wird wohl so eine Bastelkiste sein, einfache Widerstandsmessung:
https://www.az-delivery.de/products/regen-sensor-modul

Also das Design ist etwas komisch.
Zunächst einmal, mir ist nicht bekannt, was du an die freien Steckplätze 
anschließen möchtest.
Für so einen Tropfensensor, und einfache Funktionen wie Thermometer und 
Luftfeuchtigkeit oder Luftdruck, ist das Design viel zu kompliziert, 
teuer, und verbraucht auch zu viel.
Den ganzen Solarkram mit dem Akku kann man sich dabei komplett sparen. 
Es braucht auch keinen super tollen STM, es reicht ein einfacher AVR. 
Zwei AAA Batterien und du hast ein paar Jahre Laufzeit.
Der größte Stromverbrauch, anhand der Schaltung, ist einfach, dass du 
den Tropfensensor die ganze Zeit mit dem Pullup versorgst.

Es tut ein AVR und irgendein Funkmodul. nRF24L01 ist günstiger als dein 
433MHz Modul, musst du aber selber mit der höheren Bandbreite und der 
geringeren Reichweite abschätzen.
Für die üblichen Sensoren, da kannst du wählen von günstig (einfacher 
Thermistor und Luftfeuchtigkeitssensor über Aliexpress), oder du packst 
einen Sensirion drauf (die gibt es auch mit Membran und integriertem 
Heizelement).
Sowas läuft eigentlich auch ein paar Jahre mit einer Knopfzelle.
Kein LiPo nötig, kein Solarmodul. Spannungsregelung auch nicht, 
Komponenten laufen über den gesamten Spannungsbereich der Batterien.
Keine externen Quarze, das mit dem OpAmp nur um die Batteriespannung 
auszulesen bzw. auszuwerten, verstehe ich auch nicht.

Vanye R. schrieb:
> Du kannst einfach einen beliebig hochohmigen Spannungsteiler verwenden,
> sagen wir mal 2x1Meg. Zum unteren schaltest du dann einen 10nF oder
> 100nF
> Kondensator parallel. Dieser Kondensator verkleinert den
> Ausgangswiderstand soweit das der AD deiner MCU das brauchbar messen
> kann. Der Nachteil ist natuerlich das du einen sehr langsamen Tiefpass
> gebaut hast. Aber du musst deine Batteriespannung ja sicher nicht sehr
> oft/schnell messen.

Kann man sich sparen. Pin der MCU als Ausgang, daran einen 
Spannungsteiler setzen, füttern in einen ADC Pin rein. Wird einfach bei 
Bedarf bestromt.

: Bearbeitet durch User
von Martin K. (dschadu)


Lesenswert?

Bauform B. schrieb:
> Nimm einen fertigen 32kHz-Oszillator.
Hatte ich so gar nicht auf dem Schirm. Klingt super, werde ich so 
umsetzen! Auch den 8 MHz quarz werfe ich raus - der interne Oszillator 
sollte dicke reichen, da ja auch alle Schnittstellen unkritisch sind, 
was den exakten Takt betrifft.

Bauform B. schrieb:
> Man
> könnte einen LiFePO4-Akku in Erwägung ziehen
Gute Idee, schau ich mir genauer an!

Keks F. schrieb:
> einfache Widerstandsmessung
Ist vielleicht etwas unglücklich beschriftet im Schaltplan. Das ist ein 
Regenmesser mit einer Wippe. Der "Sensor" ist also nur ein Reed 
Schalter.

von Bauform B. (bauformb)


Lesenswert?

Martin K. schrieb:
> Das ist ein Regenmesser mit einer Wippe. Der "Sensor" ist also
> nur ein Reed Schalter.

Sehr gut, dann könnte man den an PA0, PA2 oder PC13 statt an PA12 
anschließen. Über diese WKUP-Pins kann der STM32 aus dem Tiefschlaf 
geweckt werden wenn es regnet.
1
9. The I/Os with wakeup from Standby/Shutdown capability are: PA0, PC13, PE6, PA2, PC5.

Mit einem LiFePO4-Akku ohne Spannungsregler kann der STM32 die 
Akkuspannung selbst messen, ohne externe Bauteile und ohne unnötigen 
Stromverbrauch. Vom VBAT-Pin geht ein abschaltbarer Spannungsteiler zum 
ADC Kanal 18.

Martin K. schrieb:
> Die 0 Ohm Widerstände sind immer dazu gedacht, dass ich dem
> Stromverbrauch einzelner ICs messen kann.

Ich würde 1 Ohm oder 10 Ohm und ein besseres Voltmeter nehmen ;)

von Bauform B. (bauformb)


Lesenswert?

Keks F. schrieb:
wie man ein völlig anderes Gerät baut...
> Es braucht auch keinen super tollen STM, es reicht ein einfacher AVR.

Und, wo wäre der Vorteil? Vielleicht Schieberegister wegen Pin-Mangel? 
Ach so, mehr Abenteuer mit dem Compiler. Ja, andere Leute klettern auf 
Berge, weil die nunmal da sind :(

von J. S. (jojos)


Lesenswert?

auch der 32 kHz Quarz ist doch überflüssig. Wenn die Klimadaten zyklisch 
gefunkt werden, dann gibt es ja noch einen Empfänger. Und der kann den 
Zeitstempel aufdrücken. Ich habe als Empfänger einen Raspberry Pi, das 
RFM69 Modul kann da direkt an das SPI angeschlossen werden. Die Daten 
dann einfach in einen MQTT Broker rein.
In CubeMX kann man den Strombedarf und Batterielaufzeit berechnen 
lassen. Den Aufwand mit Akku, Laderegler und Solar halte ich da auch für 
übertrieben. Ein kleiner kompakter Sensor mit Batterie kann auch in 
dunklen Kellerräumen funken. Mein Sensor sollte einfach und günstig sein 
damit er in vielen Räumen liegen kann.
Ich habe auch Steckverbinder drauf und abgewandelte Versionen arbeiten 
als Klingelmelder oder mit PIR als Bewegungsmelder. Oder als 
Feuchtesensor durch Kapazitätsmessung.
Und kleine Cortex-M brauchen im Deep Sleep auch nur 0,x µA. Das 8 Bitter 
sparsamer sind ist wohl eine nicht totzukriegende Mär.

: Bearbeitet durch User
von Keks F. (keksliebhaber)


Lesenswert?

Bauform B. schrieb:
> wie man ein völlig anderes Gerät baut...

Jo, deutlich günstiger, weniger aufwändig, aber selbe Funktion. Das war 
die Grundaussage.

Bauform B. schrieb:
> Und, wo wäre der Vorteil? Vielleicht Schieberegister wegen Pin-Mangel?
> Ach so, mehr Abenteuer mit dem Compiler. Ja, andere Leute klettern auf
> Berge, weil die nunmal da sind :(

Der Vorteil ist ganz einfach. Du kannst meinen Post so nämlich 
missverstehen, aus dem Kontext herausreißen, und irgendeinen Stuss 
schreiben.
Der AVR ist exemplarisch genommen worden, weil es die Leistung und die 
Fähigkeiten der verwendeten MCU einfach nicht benötigt für den 
Anwendungsfall hier. Mein ganzer Post bezieht sich auf das scheinbare 
Überentwickeln des TEs einer einfachen Wetterstation.
Wie du darauf kommst, dass ein 8 Bitter nicht in größeren Packages mit 
mehr Pins kommen kann, weiß ich nicht. War nicht Teil meines Postings, 
die paar Pins, die hier benutzt werden, sind übrigens auch sehr wenig.
Ich glaube da wolltest du vielleicht einfach mal was geschrieben haben.
In dieser Hinsicht, weil du meinen Post ja scheinbar unqualifiziert 
findest, aber selber nichts auf die Reihe bekommen hast, mach dir doch 
nicht die Mühe, kopiere einfach meinen so stümperhaften Beitrag und 
poste ihn unter deinem Namen nochmal. ;)

J. S. schrieb:
> Das 8 Bitter
> sparsamer sind ist wohl eine nicht totzukriegende Mär.

Falls du dich auf meinen Beitrag beziehen solltest, wo genau sage ich 
das?
Nirgendwo.

von J. S. (jojos)


Lesenswert?

Keks F. schrieb:
> Mein ganzer Post bezieht sich auf das scheinbare
> Überentwickeln des TEs einer einfachen Wetterstation.

Was heißt überentwickeln? Man sollte so ein Projekt eher als Übung 
sehen, und mit der gewählten MCU sind viele Erweiterungen offen: SD Card 
für lokale Datenhaltung, TFT mit ordentlichen Fonts und Grafik (lvgl), 
USB um das Board als Funkempfänger am PC einzusetzen und so weiter. Dazu 
gut zu debuggen, was wichtig ist wenn die SW doch komplexer wird.
Grundvoraussetzung für Batteriebetrieb ist geringe Stromaufnahme, also 
gibt es hier auch keinen Grund einen alten 8 Bitter zu bevorzugen. Die 
Software kann man modular aufbauen ohne auf das letzte Bit gucken zu 
müssen, die Module für die Sensoren und Funk und USB können in anderen 
Projekten weiterverwendet werden.
Dazu kommt das das Design schon nahezu fertig ist, damit ist die Kritik 
an der gewählten MCU noch überflüssiger. Der Chip kostet vielleicht 2€ 
mehr bei massig mehr Resourcen.
Den Takt kann man komplett zur Laufzeit rauf und runterfahren, im low 
Power Run braucht der L432 0,31 mA, und dieser Mode reicht für die 
einfache Funkvariante. Der Stromverbrauch wird da also nur die 
Sendehäufigkeit bestimmt.
'Überentwickelt' ist da nur die Solargeschichte, aber auch das kann man 
ja optional bestücken und z.B. bei Bewässerungsteuerung im Garten 
gebrauchen.
Ich finde den Ansatz jedenfalls sehr gut, besser als die 1001ste Version 
der Funkwetterstation mit ESPxx.

: Bearbeitet durch User
von Martin K. (dschadu)


Lesenswert?

J. S. schrieb:
> Und der kann den
> Zeitstempel aufdrücken
Das passiert auch tatsächlich schon. Ich möchte aber auch die RTC mit 
externem Takt ausprobieren und schauen, wie gut das unter 
Realbedingungen läuft. Wie J. S schrieb:

J. S. schrieb:
> Man sollte so ein Projekt eher als Übung
> sehen
Daher auch die Sache mit der PV-Ladeschaltung. Hier gehts ja nicht darum 
jeden Cent zu sparen, sondern um den Spaß und eine funktionierende 
Schaltung am Ende, die im Idealfall viele Jahre ohne Eingriff läuft. Da 
ich auch die Akku-Spannung logge, kann ich in Zukunft dann etwas besser 
abschätzen wie groß so eine Zelle sein muss, wie groß der Akku sein muss 
usw...

Die Variante mit dem LiFePO4-Akku werde ich mit integrieren auf dem 
nächsten Board, aber mit der Option die Platine auch so zu bestücken, 
dass das mit dem LiIon Akku funktioniert.


J. S. schrieb:
> das führte zu erhöhter Stromaufnahme des RFM
Das werde ich mal testen, danke für den Hinweis!

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.