Forum: Mikrocontroller und Digitale Elektronik BME280 verbraucht zuviel Strom


von R. B. (Gast)


Lesenswert?

Hallo!

Beim Bau meines Nodes mit Atmega328P, BME280, und diversen andern 
Sensoren macht mir der BME280 Probleme. Irgendwie bin ich zu doof den in 
den Sleepmodus zu setzen. Davon mal abgesehen finde ich den 
Stromverbrauch von 0,05 mA (50µA) etwas hoch. Selbst für nicht Sleep. 
Laut Datasheet:
1
Current consumption
2
1.8μA @ 1Hz humidity and temperature <--- Messe nur Temp und Hum
3
2.8μA @ 1Hz pressure and temperature 
4
3.6μA @ 1Hz humidity, pressure and temperature 
5
0.1 μA in sleep mode <--- schön wäre es!

Ich habe nun schon diverse Libs durch. Adafruit, BlueDot, SparkFun, und 
paar kleinere.
Bei allen habe ich mehr oder weniger den gleichen Wert (50µA).
Bei SparkFun gibt es sogar das "LowPower" Beispiel. Das scheint aber 
auch nicht zu laufen. bzw ändert das nichts. Egal welchen Mode ich 
setze. Der Stromverbrauch bleibt gleich.

Woran könnte das liegen? Weder Forum noch google brachten mich zu einer 
Lösung bisher.

von Timmo H. (masterfx)


Lesenswert?

Wo misst du den Strom? Misst du vielleicht die Quiescent current vom 
Spannungsregler mit?

von Wolfgang (Gast)


Lesenswert?

Robert B. schrieb:
> Woran könnte das liegen? Weder Forum noch google brachten mich zu einer
> Lösung bisher.

Wie sieht dein Schaltplan aus und wie hast du festgestellt, dass der 
BME280 den Strom aufnimmt.

von R. B. (Gast)


Angehängte Dateien:

Lesenswert?

War die Ostertage weg. Daher die verzögerung :-) Danke schon einmal für 
eure Interesse und Hilfsbereitschaft.

Messen tue ich den Strom an der Stelle kurz vor dem BME280 wo das Kabel 
in der Schaltung unterbrochen und markiert ist.

Mein BME280 hat nur 6 Pins. Daher Abbildung ähnlich.

von Karl M. (Gast)


Lesenswert?

An den Rückstrom zum µC Atmega328P hast Du gedacht?

von Stefan F. (Gast)


Lesenswert?

Kann es sein, dass die geringe Ruhestromaufnahme nur bei ganz bestimmten 
Pegeln am I²C Bus erreicht wird?

Ich hatte mal einen Sensor, da musste ich die beiden Leitungen auf Low 
Pegel setzen.

von Helmut -. (dc3yc)


Lesenswert?

Hat dein Board einen Spannungsregler drauf? Wenn ja, wirf den mal 
herunter!

von Wolfgang (Gast)


Lesenswert?

Robert B. schrieb:
> Irgendwie bin ich zu doof den in den Sleepmodus zu setzen.

Da sollte er von ganz alleine landen, wenn du ihn nach dem 
Power-on-Reset einfach in Ruhe lässt (3.3.2 im DS)
https://ae-bst.resource.bosch.com/media/_tech/media/datasheets/BST-BME280-DS002.pdf

Lass in deinem Aufbau den ganzen Arduino einfach mal weg.

von Walter T. (nicolas)


Lesenswert?

Stefanus F. schrieb:
> Ich hatte mal einen Sensor, da musste ich die beiden Leitungen auf Low
> Pegel setzen.

Das klingt für I2C ungewöhnlich. Ich hätte den Bus HIGH als sparsamer 
eingeschätzt.

von Gerd E. (robberknight)


Lesenswert?

Auf welchem Spannungslevel läuft der I2C-Bus des Arduinos?

Kann es sein daß der auf 5V läuft?

von nuJa (Gast)


Lesenswert?

Es ist zu sehen, das der BME280 auf 3,3V liegt!
Schön wäre es zu sehen wie schnell du den abfragst...
Wenn der im 10ms Takt abgefragt wird mit einen Messgeräte Sequenz hat 
2Hz...
Dann könnte das wohl sein.

P.S. Habe selbst meine 4 BME280 noch nicht gemessen :-(


cu

von nuJa (Gast)


Lesenswert?

Gerade gefunden:
BME280
<zitat>
The BME280 is an integrated environmental sensor developed specifically 
for mobile applications where size and low power consumption are key 
design constraints. The unit combines individual high linearity, high 
accuracy sensors for pressure, humidity and temperature in an 8-pin 
metal-lid 2.5 x 2.5 x 0.93 mm³ LGA package, designed for low current 
consumption (3.6 μA @1Hz), long term stability and high EMC robustness.
</zitat>
Quelle: https://www.bosch-sensortec.com/bst/products/all_products/bme280

von R. B. (Gast)


Lesenswert?

@Karl M.
Sorry ich komm nicht ganz aus dem Elektrotechnik. Bin mir nicht sicher 
was du meinst.

@Helmut
Nein hat es nicht.

@Stefanus F. und @Wolfgang
Ich habe nun mal die beiden Pins SDA und SCL weg gelassen aus der 
schaltung,  Siehe da. Weniger als vorher. Dann nahm ich mal 2 ganz 
frische (vorher nicht genutzte) BME280 und erstaunlicherweise zeigt das 
Multimeter nun 0,16µA beim einen und bei einem weitern frischen 0,18µA 
an. Also genau das, was er haben soll im Sleep.
Also muss ich wohl wie Stefanus F. sagte mit den Datenleitungen werkeln 
und die "ausschalten". Wäre ich nie drauf gekommen von allen. Danke!

Kurios ist nur warum das eine Modul, welches ich bisher immer nutzte, 
einen ständig wachsenen Strom hat. Der startet bei 0,8µA und irgendwann 
schaukelte er sich sogar auf 20µA ... dann brach ich mal ab. Woran 
könnte das liegen? Evtl. an, durch sketch gesetzte registereinträge?

@nuJa
In meiner eigentlichen Schaltung rufe ich den alle 2 bis 5 Minuten ab. 
Und zu deinem zweiten Post hatte ich  ja die Tabelle schon gepostet in 
meinem ersten Beitrag.

@Gerd E.
Nee ist eine 3,3V Version die auch so läuft.

@Alle
Ich kann den ja auch mit SPI verbinden. Ist das besser als I2C?


EDIT: Vielen Dank euch allen für eure tolle Hilfe!

von Timmo H. (masterfx)


Lesenswert?

Also mit  bme.setSampling(Adafruit_BME280::sensor_mode::MODE_FORCED); 
komme ich im Ruhemodus auf 7µA, allerdings hat mein Modul 
(https://www.aliexpress.com/item/1-8-5V-GY-BME280-GY-BME280-3-3-precision-altimeter-atmospheric-pressure-BME280-sensor-module/32862421810.html) 
auch noch einen Spannungsregler und Levelshifter drauf

von Jim M. (turboj)


Lesenswert?

Robert B. schrieb:
> Ich kann den ja auch mit SPI verbinden. Ist das besser als I2C?

Muss bei dem BMExxx der CS nicht auf einem definierten Pegel liegen?

Der offene Eingang wäre eine Möglichkeit für übermäßigen Strombedarf.

von R. B. (Gast)


Lesenswert?

Jim M. schrieb:
> Muss bei dem BMExxx der CS nicht auf einem definierten Pegel liegen?
>
> Der offene Eingang wäre eine Möglichkeit für übermäßigen Strombedarf.

Sorry ich weiß hier nicht ganz was du meinst. Bin wirklich ein Anfänger. 
Ich habe mich nach diversen Hookup Guides gerichtet. Das stand nichts 
von einem Pegel.

Ich glaube aber mein eines Modul ist kaputt. Das mit dem hohen 
Stromverbrauch.
Ich hatte außerdem derweil etwas mit den Modes (input/output) sowie 
"High und "low" etwas rumprobiert. Auf eine gute Lösung kam ich aber 
erst als ich das LowPower Beispiel von SparkFunBME280 etwas umgebaut 
habe. Und zwar nehme ich da das
1
Wire.begin();
2
Wire.setClock(400000);
aus dem Setup raus.

Und packe es an den Anfang vom loop. Zusätzlich habe ich noch eine Zeile
1
Wire.end();
 eingefügt, nachdem der Sensor fertig mit messen ist.
Dann mal zum Test den Delay auf 10 Sekunden gesetzt. Und nun 10 Sekunden 
0,14µA.
Im Moment des Messens geht der Wert hoch bis 20µA. Hier ist wohl mein 
Messgerät zu schlecht um genaue Daten abzugeben, da der Zeitraum sehr 
kurz ist.
Liegt das nun irgendwie an der Wire.h und dieser I2C geschichte?
Ich werde morgen das ganz mal mit SPI probieren und schauen wie es damit 
läuft.

von Wolfgang (Gast)


Lesenswert?

Robert B. schrieb:
> Sorry ich weiß hier nicht ganz was du meinst. Bin wirklich ein Anfänger.
> Ich habe mich nach diversen Hookup Guides gerichtet. Das stand nichts
> von einem Pegel.

Bei solchen Fragen ist immer das Datenblatt der verbindliche 
Ansprechpartner. Wenn du deine Versuche mit SPI machst, wird dir die 
Bedeutung des Pegels am CSB Pin aber ohnehin noch begegnen.

von Stefan F. (Gast)


Lesenswert?

Stefanus F. schrieb:
>> Ich hatte mal einen Sensor, da musste ich die beiden Leitungen auf Low
>> Pegel setzen.

Walter T. schrieb:
> Das klingt für I2C ungewöhnlich. Ich hätte den Bus HIGH als sparsamer
> eingeschätzt.

Das dachte ich auch. Aber lesen ist besser als denken.

Es hatte vermutlich damit zu tun, dass mein Sensor intern mit ca 2V lief 
und seine I/O Pins nur 3,3V tolerant waren. Wenn ich aber wirklich 
3,3V auf den Leitungen hatte, wurde der Leckstrom jedoch größer.

von Timmo H. (masterfx)


Lesenswert?

Habe gerade mal den Spannungsregler (LM6206N3) runter gelötet. Bin jetzt 
bei 0,24 µA im Sleep im I2C Mode.

: Bearbeitet durch User
von Stefan F. (Gast)


Lesenswert?

Timmo H. schrieb:
> Habe gerade mal den Spannungsregler (LM6206N3) runter gelötet. Bin jetzt
> bei 0,24 µA im Sleep im I2C Mode.

Ich dachte du hättest bereits 0,16 µA erreicht!? Von was hast du den 
Spannungsregler entfernt?

von Timmo H. (masterfx)


Lesenswert?

Stefanus F. schrieb:
> Timmo H. schrieb:
>> Habe gerade mal den Spannungsregler (LM6206N3) runter gelötet. Bin jetzt
>> bei 0,24 µA im Sleep im I2C Mode.
>
> Ich dachte du hättest bereits 0,16 µA erreicht!?

Keine Ahnung wo du das her hast. Aber nein

> Von was hast du den Spannungsregler entfernt?
Vom dem
https://de.aliexpress.com/item/BME280-Digital-Sensor-Temperature-Humidity-Barometric-Pressure-Sensor-New/32668077712.html

: Bearbeitet durch User
von Stefan F. (Gast)


Lesenswert?

Timmo H. schrieb:
>> Ich dachte du hättest bereits 0,16 µA erreicht!?
> Keine Ahnung wo du das her hast. Aber nein

Robert B. schrieb:
> Ich habe nun mal die beiden Pins SDA und SCL weg gelassen aus der
> schaltung,  Siehe da. Weniger als vorher. Dann nahm ich mal 2 ganz
> frische (vorher nicht genutzte) BME280 und erstaunlicherweise zeigt das
> Multimeter nun 0,16µA beim einen und bei einem weitern frischen 0,18µA
> an.

Jetzt habe ich's kapiert, ihr seid zwei Personen. Das war mir entgangen.

von Timmo H. (masterfx)


Lesenswert?

immer wieder erschreckend wenn die gemessenen Werte dem Datenblatt 
entsprechen ;-)

von 900ss (900ss)


Lesenswert?

Hat zwar nichts mit dem Stromverbrauch zu tun, aber bei dem Sensor lohnt 
sich die Mühe nicht. Für die Feuchtigkeit ist es ein Schätzeisen.

Siehe hier und dann folgende:
Beitrag "Re: Temperatursensor mit Mikrocontroller in Gehäuse"

von Timmo H. (masterfx)


Lesenswert?

Nicht mehr Schätzeisen als andere, sondern eines der Besten
http://www.kandrsmith.org/RJS/Misc/Hygrometers/calib_many.html

: Bearbeitet durch User
von Thomas S. (selli69)


Lesenswert?

Timmo H. schrieb:

> http://www.kandrsmith.org/RJS/Misc/Hygrometers/calib_many.html

Vielen Dank für den Link. Hervorragender Artikel, welcher mir bei einem 
derzeitigen Projekt sehr hilfreich ist.

von Andreas B. (bitverdreher)


Lesenswert?

Timmo H. schrieb:
> Nicht mehr Schätzeisen als andere, sondern eines der Besten
> http://www.kandrsmith.org/RJS/Misc/Hygrometers/calib_many.html

Wobei wirklich gute, nämlich z.B. ein SHT31 gar nicht dabei ist.

von 900ss (900ss)


Lesenswert?

Meine Erfahrungen mit dem BME280 im Vergleich mit 3 anderen Sensoren 
zeigen bei der Feuchte, dass der BME nichts taugt. Was ich gemessen 
habe, ist weiter oben verlinkt. Ich habe auch gegen SHT75 gemessen.
Der BME kommt mir nicht mehr ins Haus.
Der andere Artikel zeigt nur, dass die anderen dort genutzten Sensoren 
auch nicht besser sind als der BME280.

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.