Forum: Analoge Elektronik und Schaltungstechnik Schaltung Stromverbrauch minimieren?


von Daniel (Gast)


Angehängte Dateien:

Lesenswert?

Hallo Leute,

ich bin gerade dabei eine kleine Schaltung zu bauen, bei der mit einem 
Wemos D1 mini lite jede Stunde ein Eingang abgefragt werden soll, und 
täglich eine Statusnachricht per SMS gesendet werden soll.
Die restliche Zeit befindet sich der Wemos in DeepSleep.

Betrieben wird das ganze über 4 x 1,5V AA Batterien in Reihe.

Da das Ziel dieser Schaltung ist, so Batterie schonend wie möglich und 
somit so lange wie möglich zu laufen, würde mich interessieren, ob 
jemand von euch noch einen Fehler in der Schaltung findet, oder 
vielleicht einen Verbesserungsvorschlag hat, um wirklich die maximale 
Laufzeit herauszubekommen.

Laut meinen Tests und Messungen würden die Batterien nach ca. 15 - 20 
Tagen aufgebraucht (noch ca. 1,1V pro Batterie) sein.

Kann mir jemand helfen, um noch mehr Laufzeit heraus zu bekommen?

Danke für eure Hilfe

von Daniel (Gast)


Lesenswert?

Noch kurze Infos zur Schaltung:

A0:
Hier wird die aktuelle Batteriespannung gemessen, welche über einen 
FDS4465 Mosfet und BC547C Transistor geschaltet wird, um möglichst wenig 
Energie während dem DeepSleep zu verbrauchen.

D5:
Ausgang, um alle angeschlossenen Bauteile zu aktivieren

D6:
Eingang, der abgefragt wird
Ein Magnetschalter ist an die Schraubklemme 2Pol gehängt.
(Durch D5 aktiviert)

D7:
Eingang, der Durch Taster auf GND geschaltet wird für Debug Funktionen.

D8:
Ausgang zu Einschalten des GSM Moduls (SIM800L) über den LT1529 
Spannungsregler, der die Spannung auf 4V regelt.

TX/RX:
Kommunikation zum GSM-Modul.

D1/D2:
Kommunikation zum RTC-Modul DS3231

von my2ct (Gast)


Lesenswert?

Daniel schrieb:
> ich bin gerade dabei eine kleine Schaltung zu bauen, bei der mit einem
> Wemos D1 mini lite jede Stunde ein Eingang abgefragt werden soll, und
> täglich eine Statusnachricht per SMS gesendet werden soll.

Warum nimmst du ein Modul mit WLAN, wenn du SMS verschicken willst?

von der schreckliche Sven (Gast)


Angehängte Dateien:

Lesenswert?

Hier wird unnötig Energie verbraucht.
Die Widerstände rund um den BC547 könnten um den Faktor 10 oder mehr 
vergrößert werden.
Ein kleinerer MOSFET würde dann immer noch schnell genug schalten.

von Daniel E. (danebn)


Lesenswert?

my2ct schrieb:
> Warum nimmst du ein Modul mit WLAN, wenn du SMS verschicken willst?

Hat sich mehr oder weniger angeboten.
Muss ich das WLan irgendwie extra ausschalten, wenn ich es nicht 
benötige oder ist es von Anfang an aus?

der schreckliche Sven schrieb:
> Hier wird unnötig Energie verbraucht.
> Die Widerstände rund um den BC547 könnten um den Faktor 10 oder mehr
> vergrößert werden.
> Ein kleinerer MOSFET würde dann immer noch schnell genug schalten

Danke, das werde ich sofort versuchen.


Habe leider als ich den Betrag geschrieben habe vergessen mich 
anzumelden.
Also nicht wundern, ich bin auch Daniel(Gast).

: Bearbeitet durch User
von Daniel E. (danebn)


Lesenswert?

der schreckliche Sven schrieb:
> Hier wird unnötig Energie verbraucht.
> Die Widerstände rund um den BC547 könnten um den Faktor 10 oder mehr
> vergrößert werden.
> Ein kleinerer MOSFET würde dann immer noch schnell genug schalten.

Meinst du damit nur R5 und R6, oder auch R7?
Welchen MOSFET würdest du dann empfehlen?

: Bearbeitet durch User
von Bauform B. (bauformb)


Lesenswert?

Du könntest MOSFET und BC547 ganz weglassen und hinter dem LT1529 
messen, der wird ja sowieso abgeschaltet. Damit misst du die wirklich 
wichtige Spannung und weißt, warum die Message nicht gesendet wurde. Das 
GSM-Modul zieht ja 2A und schaltet sich bei 3V aus.

Liefert eine normale Batterie überhaupt soviel Strom? Kurzzeitig muss 
sie übrigens 5 bis 7A liefern, wenn der LT1529 einschaltet und die Elkos 
auflädt.

1.5V Lithium-Primärzellen sind keine Lösung, auch wenn sie mehr Strom 
liefern. Die haben 1.9V Leerlaufspannung, der WEMOS D1 MINI verträgt 
aber nur max. 6.5V. Das ist ja auch mit Alkali-Mangan etwas knapp.

R3 und R4 könnten auch hochohmiger sein. D8 / R3 bleibt ja schon mal 
minutenlang eingeschaltet, bis sich das GSM-Modul eingebucht hat und die 
SM losgeworden ist.

Gute Batteriehalter haben einen mechanischen Verpolungsschutz.

von Daniel E. (danebn)


Lesenswert?

Bauform B. schrieb:
> Du könntest MOSFET und BC547 ganz weglassen und hinter dem LT1529
> messen, der wird ja sowieso abgeschaltet. Damit misst du die wirklich
> wichtige Spannung und weißt, warum die Message nicht gesendet wurde. Das
> GSM-Modul zieht ja 2A und schaltet sich bei 3V aus.

Ich möchte den Batteriestatus in Prozent ausgeben, das funktioniert dann 
nicht.
Wenn ich messe, wenn das Gsm eingeschaltet ist, dann wird wegen dem 
hohen Stromverbrauch das Messergebnis verfälscht (Spannungsrinbruch)

Gibt es vielleicht noch eine andere Möglichkeit?


Bauform B. schrieb:
> Liefert eine normale Batterie überhaupt soviel Strom?

Ja habe ich bereits getestet...funktioniert

Bauform B. schrieb:
> R3 und R4 könnten auch hochohmiger sein. D8 / R3 bleibt ja schon mal
> minutenlang eingeschaltet, bis sich das GSM-Modul eingebucht hat und die
> SM losgeworden ist.

Wie viel Ohm stellst du dir dabei vor?

von Daniel E. (danebn)


Lesenswert?

Bauform B. schrieb:
> Gute Batteriehalter haben einen mechanischen Verpolungsschutz.

Ich habe bis jetzt noch keinen gefunden. Kannst du mir einen empfehlen?

von der schreckliche Sven (Gast)


Angehängte Dateien:

Lesenswert?

Daniel E. schrieb:
> Welchen MOSFET würdest du dann empfehlen?

BSS84 z.B.
Widerstände, siehe Bild.

von Michael B. (laberkopp)


Lesenswert?

Daniel schrieb:
> Kann mir jemand helfen, um noch mehr Laufzeit heraus zu bekommen?

Schmeiss den üblen Stromfresser WEMOS ESP8266 raus
und nimm was ordentliches. Also kein Arduino,
sondern einen nackten AVR oder PIC.
Da deine Zeitabstände vermutlich uhrzeitgenau sein sollen,
lasse den an 32kHz Quartz laufen.
Viel Rechenleistung hat er nicht mehr, brauchst du aber auch nicht,
wenn du kein Arduino-API verwendest.

von Michael U. (amiga)


Lesenswert?

Hallo,

Daniel E. schrieb:
> Wenn ich messe, wenn das Gsm eingeschaltet ist, dann wird wegen dem
> hohen Stromverbrauch das Messergebnis verfälscht (Spannungsrinbruch)

und was nutzt Dir ein Meßergebnis ohne die Last?
Wenn der Kram sich dann beim Versuch einzubuchen komplett wegen 
Spannungseinbruch der Batterien abstürzt?

Daniel E. schrieb:
> Muss ich das WLan irgendwie extra ausschalten, wenn ich es nicht
> benötige oder ist es von Anfang an aus?

Das WLAN ist default an.
Ausschalten geht mit einem Trick:

ESP.deepSleep(WAIT, RF_DISABLED);
delay(100);

Stromverbauch in Betrieb ist dann ca. 15mA.

Wenn man es mal wieder braucht:

ESP.deepSleep(WAIT, RF_CAL);
delay(100);

Gruß aus Berlin
Michael

von Manfred (Gast)


Angehängte Dateien:

Lesenswert?

Daniel E. schrieb:
> Kannst du mir einen empfehlen?

Verpolungsschutz leider nein.

Gute Batteriehalter ja, ich habe nachbestellt: 
https://www.aliexpress.com/item/5Pcs-lot-2-AA-Battery-Holder-SMD-SMT-High-Quality-Battery-Box-With-Bronze-Pins-TBH/32822499807.html

Scheinen gleich denen zu sein, die Reichelt unter dem Namen "Keystone" 
anbietet.

Zur Befestigung habe ich Löcher abgebohrt, die Wandstärke reicht für 
M2,5-Senkkopf. Die roten Markierungen habe ich eingeklebt, weil man die 
Polung schlecht sieht.

von Manfred (Gast)


Lesenswert?

Michael B. schrieb:
> was ordentliches. Also kein Arduino, sondern einen nackten AVR oder PIC.

Na ja ... ich werfe von einem China-A*-ProMini die LED und den 
Spannungsregler runter und komme bei 5V / 16MHz im sleep auf 5..7µA. Ich 
weiß, dass weniger geht, aber mit 60mAh pro Jahr komme ich gut zurecht.

Da fehlt dann aber WLAN, weshalb Daniel wohl den Wemos nehmen will und 
ich brauche externe Hardware für die Programmierung.

von Daniel E. (danebn)


Lesenswert?

Manfred schrieb:
> Na ja ... ich werfe von einem China-A*-ProMini die LED und den
> Spannungsregler runter und komme bei 5V / 16MHz im sleep auf 5..7µA. Ich
> weiß, dass weniger geht, aber mit 60mAh pro Jahr komme ich gut zurecht.
>
> Da fehlt dann aber WLAN, weshalb Daniel wohl den Wemos nehmen will und
> ich brauche externe Hardware für die Programmierung.

Nein wlan benötige ich nicht.

Kannst du mir das näher erklärren, wie du auf den geringen 
Stromverbrauch gekommen bist?

von Daniel E. (danebn)


Lesenswert?

Manfred schrieb:
> Na ja ... ich werfe von einem China-A*-ProMini die LED und den
> Spannungsregler runter und komme bei 5V / 16MHz im sleep auf 5..7µA. Ich
> weiß, dass weniger geht, aber mit 60mAh pro Jahr komme ich gut zurecht.
>
> Da fehlt dann aber WLAN, weshalb Daniel wohl den Wemos nehmen will und
> ich brauche externe Hardware für die Programmierung.

Mit welcher Spannung kann man den dann betreiben?

von Manfred (Gast)


Lesenswert?

Daniel E. schrieb:
> Kannst du mir das näher erklärren, wie du auf den geringen
> Stromverbrauch gekommen bist?

Wenn Du, wie von Michael B. (laberkopp) erwähnt, einen nackten AVR 
einsetzt, bekommst' den im Tiefschlaf auf unter 1µA. Ich habe für mich 
entschieden, dass mir das zu mühsam ist.

Auf allen Arduinos sind Spannungsregler drauf, z.B. der AZ1117-3.3 darf 
5..10 mA Eigenverbrauch haben (Datenblatt: Quiescent current).

Die roten LEDs auf den Dingern mit 1k Vorwiderstand wollen auch Strom, 
der niemandem hilft.

Hast Du noch einen USB-Anschluss drauf, nimmt auch dieser Stein einge 
mA, die man nicht los wird.

Ich habe da abgemalt: 
http://www.home-automation-community.com/arduino-low-power-how-to-run-atmega328p-for-a-year-on-coin-cell-battery/ 
und ProMinis aus China verwendet, unter 2 Euro.

Natürlich nicht mit Messer und Gewalt, man kann die Teile auch 
ordentlich ablöten. Die auf der Seite genannten Ströme kann ich 
bestätigen - wenn alle Aus- und Eingänge definiert sind.

Ich versorge meine Anwendung aus einem 12V-BleiGel mit einem 5V-Regler 
MCP1703, der natürlich auch Strom braucht, real gemessen 5µA.

Kommt drauf an, was Du machst und wie Dein µC geweckt wird. Meiner 
(AT328 5V 16MHz) wacht alle 8s auf, länger schlafen geht nicht. Er 
addiert einen Zähler, prüft dessen Stand und legt sich wieder hin.

Etwa alle 15 Minuten werde ich dann für einige Millsekunden wach, messe 
eine Spannung und gehe wieder schlafen - oder auch nicht. Im Falle von 
"wach bleiben" wird ein Relais geschaltet und mein Kram wird aus dem 
Netz versorgt ... im zeitlichen Durchschnitt bewegt sich die 
Gesamtschaltung bei 20µA.

von Bauform B. (bauformb)


Angehängte Dateien:

Lesenswert?

Ein Bild sagt alles über meine MOSFETs, Batteriehalter und 
Spannungsregler...

von Daniel E. (danebn)


Lesenswert?

Danke für eure Hilfe

Ich habe mir jetzt einen Arduiono Pro mini bestellt und werde es mit 
diesem versuchen.
Werde aber auch alle anderen Infos versuchen umzusetzen.

Ich hoffe ich darf mich bei weiteren Fragen noch einmal melden.

von Manfred (Gast)


Angehängte Dateien:

Lesenswert?

Daniel E. schrieb:
> Ich habe mir jetzt einen Arduiono Pro mini bestellt

Mit welcher Hardware wirst Du den programmieren?

von Daniel E. (danebn)


Lesenswert?

Manfred schrieb:
> Mit welcher Hardware wirst Du den programmieren?

Habe mir diesen bestellt:

https://www.amazon.de/dp/B01N9RZK6I/ref=cm_sw_r_cp_apa_i_PdB3BbSWK1PKG

Heute bekommen und funktioniert soweit alles.

von Manfred (Gast)


Lesenswert?

Daniel E. schrieb:
>> Mit welcher Hardware wirst Du den programmieren?
> Habe mir diesen bestellt:
> .. amazon.de ...
> Heute bekommen und funktioniert soweit alles.

Alles gut! Ich wollte nur vorbeugen, dass Du evtl. übersehen hast, dass 
der ProMini kein USB an Bord hat.

Hoffentlich hast Du die Version mit 8 MHz gekauft, der kann vom 
Spannungsbereich her direkt mit drei NiMh oder Alkalibatterien laufen, 
ohne Regler(verluste). Er käme auch mit einer LiIon gut zurecht.

von Stefan F. (Gast)


Lesenswert?

Man kann auch die 16MHz Version mit 3,3V betreiben, indem man die 
CLKDIV8 Fuse setzt und danach im Programm den Clock Prescaler wie 
gewünscht ändert (zum Beispiel auf 2).

Bei meinen Experimenten liefen sie sogar alle mit 3,0V und 16MHz noch 
stabil, aber ich würde mich doch lieber nach dem Datenblatt richten.

von Manfred (Gast)


Lesenswert?

Stefanus F. schrieb:
> Man kann auch die 16MHz Version mit 3,3V betreiben, indem man die
> CLKDIV8 Fuse setzt und danach im Programm den Clock Prescaler wie
> gewünscht ändert (zum Beispiel auf 2).

So, wie ich es einschätze, wird hier mit Arduino gearbeitet und der µC 
über USB programmiert.

Wie kann man da die Fuses anfassen / setzen - ich denke, garnicht?

von Stefan F. (Gast)


Lesenswert?

Manfred schrieb:
> Wie kann man da die Fuses anfassen / setzen - ich denke, garnicht?

Ja gar nicht, das geht nur mit einem ISP Programmer.

Aber wie gesagt kann man mit etwas Mut zur Lücke die Fuse einfach so 
lassen, wie sie ist und darauf hoffen, dass der µC die ersten paar Takte 
trotz Unterspannung ausführt. In denen kann man dann wie gesagt den 
Prescaler sinnvoll einstellen.

von Daniel E. (danebn)


Lesenswert?

Manfred schrieb:
> Hoffentlich hast Du die Version mit 8 MHz gekauft,

Habe ich ;)

Manfred schrieb:
> Ich habe da abgemalt:
> 
http://www.home-automation-community.com/arduino-low-power-how-to-run-atmega328p-for-a-year-on-coin-cell-battery/
> und ProMinis aus China verwendet, unter 2 Euro.
>
> Natürlich nicht mit Messer und Gewalt, man kann die Teile auch
> ordentlich ablöten. Die auf der Seite genannten Ströme kann ich
> bestätigen - wenn alle Aus- und Eingänge definiert sind

Was meinst du genau mit alle Aus- und Eingänge definiert?

Also alle Pins, die ich nicht brauche auch einfach als INPUT oder OUTPUT 
definieren?

von Manfred (Gast)


Lesenswert?

Daniel E. schrieb:
>> ordentlich ablöten. Die auf der Seite genannten Ströme kann ich
>> bestätigen - wenn alle Aus- und Eingänge definiert sind
> Was meinst du genau mit alle Aus- und Eingänge definiert?
>
> Also alle Pins, die ich nicht brauche auch einfach als INPUT oder OUTPUT 
definieren?

Output.

Wenn als Input, muß der Pullup aktiviert werden oder der Eingang extern 
beschaltet werden, um undefinierte Effekte zu vermeiden.

von Daniel E. (danebn)


Lesenswert?

Manfred schrieb:
> Output.
>
> Wenn als Input, muß der Pullup aktiviert werden oder der Eingang extern
> beschaltet werden, um undefinierte Effekte zu vermeiden.

Danke werde ich machen.

die Analogen wahrscheinlich auch oder?

von Stefan F. (Gast)


Lesenswert?

Manfred schrieb:
> Wenn als Input, muß der Pullup aktiviert werden oder der Eingang extern
> beschaltet werden, um undefinierte Effekte zu vermeiden.

Das habe ich mal ausprobiert. Im Deep-Sleep Modus spielt es keine Rolle, 
ob die unbenutzten Eingänge des ESP8266 offen sind, oder mit 
Widerständen beschaltet werden. Bei allen anderen ICs würde ich 
allerdings für definierte Pegel sorgen, es sei denn du weißt ganz sicher 
dass es dort auch keine Rolle spiel.

von Manfred (Gast)


Lesenswert?

Stefanus F. schrieb:
> Manfred schrieb:
>> Wenn als Input, muß der Pullup aktiviert werden oder der Eingang extern
>> beschaltet werden, um undefinierte Effekte zu vermeiden.
> Das habe ich mal ausprobiert. Im Deep-Sleep Modus spielt es keine Rolle,
> ob die unbenutzten Eingänge des ESP8266 offen sind, oder mit
> Widerständen beschaltet werden.

Wir sind inzwischen beim ProMini. Aber irgendwie klingt es logisch, dass 
im DeepSleep nichts passieren sollte.

Aber irgendwie ist mir so, dass da irgendwas rumwackelte - vielleicht 
die Analogeingänge? Der Wandler ist ja aus, aber die hochohmigen 
Eingänge des Multiplexers?

> Bei allen anderen ICs würde ich
> allerdings für definierte Pegel sorgen, es sei denn du weißt ganz sicher
> dass es dort auch keine Rolle spiel.

Ich habe mir eine Meinung gebildet: Es kostet wenige Minuten Tipperei, 
alle Anschlüsse zu definieren, bis auf zwei (A6 A7) kann man auch die 
analogen per Software definieren. Also Risiko spielen oder machen?

Daniel E. schrieb:
> die Analogen wahrscheinlich auch oder?

Auf jeden Fall. Ich habe mir mal aus dem Forum kopiert:

"Wenn ein analoger Eingang mit pinMode als digitaler Ein/Ausgang
definiert wurde, werden aus A0 bis A5 die Pins 14 bis 19.
A6 und A7 kann man nicht digital nutzen."

A6 und A7 würde ich fest nach Gnd oder Vcc verdrahten oder benutzen.

von Peter D. (peda)


Lesenswert?

Daniel schrieb:
> bei der mit einem
> Wemos D1 mini lite jede Stunde ein Eingang abgefragt werden soll

Dann nimm doch einfach den Alarmausgang der RTC, um die Schaltung jede 
Stunde einzuschalten.
Den Rest der Stunde zieht die RTC ~1µA.

von Daniel E. (danebn)


Lesenswert?

Manfred schrieb:
> Ich habe mir eine Meinung gebildet: Es kostet wenige Minuten Tipperei,
> alle Anschlüsse zu definieren, bis auf zwei (A6 A7) kann man auch die
> analogen per Software definieren. Also Risiko spielen oder machen?

Ok das werde ich auf jeden Fall machen.



Ich hätte noch eine Frage zum Stromsparen:
An meinem µC ist unter anderem auch ein Button angeschlossen.
Um diesen nicht dauerhaft zu bestromen wird er über einen digitalen 
Ausgang nur eingeschaltet, wenn er auch betätigt werden darf.
Am INPUT hängt ein 1k Pulldown Widerstand.

Bringt es etwas den OUTPUT, welcher direkt zum Button verbunden ist, 
auch über einen Widerstand auf GND zu schließen oder ändert das am 
Stromverbrauch nichts?

von Bauform B. (bauformb)


Lesenswert?

Der Stromverbrauch wird höher. Sobald der Ausgang eingeschaltet (= 1, 
high) wird, fließt Strom durch diesen Widerstand.

Solange der Ausgang ausgeschaltet (= 0, low) ist, ändert sich nichts.

Wenn der Pin nicht als Ausgang sondern als Eingang (Analog oder Digital) 
programmiert würde, wäre der Widerstand nützlich. Aber das macht man ja 
freiwillig nicht. Unfreiwillig ist der Zustand unvermeidlich, solange 
der uC im Reset ist oder gerade programmiert wird. In der fertigen 
Anwendung passiert das nur ganz kurz nach dem Einschalten.

Man muss für jeden einzelnen Pin untersuchen, was die Schaltung kurz 
nach dem Reset oder beim Programmieren macht, solange der Pin kein 
Ausgang ist. In der Regel muss man einen Widerstand spendieren. Hier 
haben wir den seltenen Fall, dass es ohne günstiger ist.

von Daniel E. (danebn)


Lesenswert?

Bauform B. schrieb:
> Wenn der Pin nicht als Ausgang sondern als Eingang (Analog oder Digital)
> programmiert würde, wäre der Widerstand nützlich. Aber das macht man ja
> freiwillig nicht. Unfreiwillig ist der Zustand unvermeidlich, solange
> der uC im Reset ist oder gerade programmiert wird. In der fertigen
> Anwendung passiert das nur ganz kurz nach dem Einschalten.


Danke für die Hilfe.

Bedeutet das dann auch, wenn ich über SoftwareSerial mit meinem GSM 
Modul kommuniziere, es besser ist an meinen digitalen Rx-Pin einen 
Pulldown-Widerstand zu schalten oder würde das die Kommunikation stören?

von Daniel E. (danebn)


Lesenswert?

Bauform B. schrieb:
> R3 und R4 könnten auch hochohmiger sein. D8 / R3 bleibt ja schon mal
> minutenlang eingeschaltet, bis sich das GSM-Modul eingebucht hat und die
> SM losgeworden ist.

Wäre das dann nicht bei R3 das selbe?

von Daniel E. (danebn)


Lesenswert?

Ich habe gerade bei einer Messung festgestellt, dass mein DS3231 während 
dem LowPower Mode 0,16mA zieht.
Vcc ist dabei nicht aktiviert.

Weiß jemand an was das liegen könnte?

von Stefan F. (Gast)


Lesenswert?

Daniel E. schrieb:
> Ich habe gerade bei einer Messung festgestellt, dass mein DS3231 während
> dem LowPower Mode 0,16mA zieht.
> Vcc ist dabei nicht aktiviert.
>
> Weiß jemand an was das liegen könnte?

Vielleicht, weil SCL und SDA eine höhere Spannung haben, als die 
Batterie. Guck mal in die Electrical Characteristcs Tabelle, was da als 
Rahmen-Bedingung für die niedrige Stromaufnahme angegeben ist.

von Daniel E. (danebn)


Lesenswert?

Stefanus F. schrieb:
> Vielleicht, weil SCL und SDA eine höhere Spannung haben, als die
> Batterie. Guck mal in die Electrical Characteristcs Tabelle, was da als
> Rahmen-Bedingung für die niedrige Stromaufnahme angegeben ist.

Logic 1 Input SDA, SCL VIH
0.7 x VCC min
VCC +0.3 V max

Logic 0 Input SDA, SCL VIL
-0.3 min
0.3 x VCC max

Das würde meiner Meinung nach genau passen oder verstehe ich etwas 
falsch.

Habe eine Varta Cr2032 mit 3V im DS3231 und der Arduino läuft mit 3,3V

von Stefan F. (Gast)


Angehängte Dateien:

Lesenswert?

Guck mal was ich im Bild markiert habe

von Daniel E. (danebn)


Lesenswert?

Stefanus F. schrieb:
> Guck mal was ich im Bild markiert habe

Das bedeutet also, wenn SCL=SDA=0V zutrifft, dann fließt Strom vom 
Arduino durch diese 2 Pins zum DS3231 oder?

von Stefan F. (Gast)


Lesenswert?

Ich verstehe das so, dass der Chip nur dann wenig Strom verbraucht, wenn 
SDA und SCL beide entweder auf 0V oder auf Vbat liegen.

von Daniel E. (danebn)


Lesenswert?

Wie soll man das hinbekommen?
Die Pins sind ja direkt am µC angeschlossen.

Ich habe probiert die Pins per PullDown an GND zu schließen --> dann 
funktioniert aber die Kommunikation mit dem Modul nicht mehr

von Manfred (Gast)


Lesenswert?

Daniel E. schrieb:
> An meinem µC ist unter anderem auch ein Button angeschlossen.
> Um diesen nicht dauerhaft zu bestromen wird er über einen digitalen
> Ausgang nur eingeschaltet, wenn er auch betätigt werden darf.
> Am INPUT hängt ein 1k Pulldown Widerstand.

Falsche Welt, Problem hausgemacht :-) Allgemein üblich ist andersherum:

Der Controller hat intern Pullup-Widerstände, also gegen Plus. Wenn man 
den einschaltet, ist der Eingang auf High und es fließt kein relevanter 
Strom, Nanoampere.

Der Taster schaltet gegen GND, es fließt also nur Strom, wenn er 
betätigt wird.

Im Programm frage ich dann anstatt "if [Eingang x] high mache irgendwas" 
eben "if [Eingang x] low mache irgendwas" und fertig.

Auch andersherum sehe ich das Problem aber nicht: Am Eingang einen 
externen Widerstand nach GND und den internen Pullup aus , ist der 
Eingang sicher auf low und es fließt kein Strom. Kommt Plus vom Taster, 
geht er auf High und Abfahrt :-)

von Stefan F. (Gast)


Lesenswert?

Daniel E. schrieb:
> Wie soll man das hinbekommen?

Die Pull-Up Widerstände von I²C Bus nicht an VCC anschließen, sondern an 
einen I/O Pin. Dann kann der I/O Pin sie im Betrieb hoch ziehen und im 
Standby herunter ziehen.

Habe das Problem mit den Tastern gestern Abend auch nicht nachvollziehen 
können. Ich stimme Manfred zu.

von Daniel E. (danebn)


Lesenswert?

Manfred schrieb:
> Falsche Welt, Problem hausgemacht

Hatte eindeutig einen gewaltigen Denkfehler, Danke.

Stefanus F. schrieb:
> Die Pull-Up Widerstände von I²C Bus nicht an VCC anschließen, sondern an
> einen I/O Pin. Dann kann der I/O Pin sie im Betrieb hoch ziehen und im
> Standby herunter ziehen.
>
> Habe das Problem mit den Tastern gestern Abend auch nicht nachvollziehen
> können. Ich stimme Manfred zu.

Werde ich versuchen, Danke

von Purzel H. (hacky)


Lesenswert?


von Daniel E. (danebn)


Angehängte Dateien:

Lesenswert?

Stefanus F. schrieb:
> Die Pull-Up Widerstände von I²C Bus nicht an VCC anschließen, sondern an
> einen I/O Pin. Dann kann der I/O Pin sie im Betrieb hoch ziehen und im
> Standby herunter ziehen.

Auf meinem DS3231 Modul sind SDA und SCL ja über die PullUps auf Vcc 
geschaltet. Ich schalte den Vcc bereits über einen digitalen Pin ein und 
aus. Müsste das nicht das selbe ergeben, wie wenn ich SDA und SCL 
nochmal auf einen extra Pin lege?

von Stefan F. (Gast)


Lesenswert?

Daniel E. schrieb:
> Müsste das nicht das selbe ergeben, wie wenn ich SDA und SCL
> nochmal auf einen extra Pin lege?

Ich denke ja. Du kannst ja mal nachmessen welche Spannung SDA und SCL in 
diesem Zustand haben. Das sollte ca. 0 Volt sein.

von Daniel E. (danebn)


Lesenswert?

Stefanus F. schrieb:
> Ich denke ja. Du kannst ja mal nachmessen welche Spannung SDA und SCL in
> diesem Zustand haben. Das sollte ca. 0 Volt sein.

Es sind bei beiden Pins 0,38V, obwohl Vcc auf GND ziemlich genau 0V hat.

von Stefan F. (Gast)


Lesenswert?

Daniel E. schrieb:
> Stefanus F. schrieb:
>> Ich denke ja. Du kannst ja mal nachmessen welche Spannung SDA und SCL in
>> diesem Zustand haben. Das sollte ca. 0 Volt sein.
>
> Es sind bei beiden Pins 0,38V, obwohl Vcc auf GND ziemlich genau 0V hat.

Irgendwer zieht die Pins also deutlich hoch. Kann es sein, dass auf 
deinem AVR die internen Pull-Up Widerstände aktiviert sind?

von Daniel E. (danebn)


Lesenswert?

Stefanus F. schrieb:
> Irgendwer zieht die Pins also deutlich hoch. Kann es sein, dass auf
> deinem AVR die internen Pull-Up Widerstände aktiviert sind?

Habe bei meinem Arduino Pro mini einfach den Pin als Output definiert. 
Da sind die Pullups normal nicht aktiv oder?
Zwischen dem Pin und Gnd liegen 0V, nur zwischen SDA,SL und Gnd liegt 
diese plötzlich an.
Weiß nicht ob diese trotzdem vom uC kommen kann.

Die analogen Pins(A4,A5), an die das RTC Modul angschlossen ist, kann 
man nicht noch extra als Ausgang auf Low schreiben oder?

von Stefan F. (Gast)


Lesenswert?

Daniel E. schrieb:
> Habe bei meinem Arduino Pro mini einfach den Pin als Output definiert.
> Da sind die Pullups normal nicht aktiv oder?

Richtig.

> Zwischen dem Pin und Gnd liegen 0V, nur zwischen SDA,SCL und Gnd liegt
> diese plötzlich an.

Reden wir aneinander vorbei? Ich hatte das so gemeint:
1
AVR                        RTC
2
3
   I/O  o-----+----+-----o VCC
4
              |    |
5
              |    |
6
             |~|  |~|
7
             |_|  |_| 2x 4,7k
8
              |    |
9
              |    |
10
    SDA o-----+----)-----o SDA
11
                   |
12
    SCL o----------+-----o SCL

Für den Standby-Betrieb setzt du den I/O Pin auf Low. Bei SDA und SCL 
müssen die internen Pull-Up Widerstände im AVR deaktiviert sein.

Um die Uhr abzufragen, schaltest zu den I/O Pin auf High, danach kannst 
du über I²C kommunizieren.

Hast du deinen RTC Chip als Modul mit Platine gekauft und das ist 
eventuell noch irgendwas mit drauf, was nicht sein soll?

von Daniel E. (danebn)


Angehängte Dateien:

Lesenswert?

Ja genau diese Schaltung ist auf dem Modul fix fertig oben, nur mit 10k 
Widerständen. (siehe Anhang)

Ob sonst noch ein Stromfresser oben ist weiß ich nicht.
Das Modul hat allerdings auch noch einen EEPROM.

Die LED am Schaltplan habe ich bereits entfernt.

von Stefan F. (Gast)


Lesenswert?

Dann habe ich keine weitere Idee mehr.

von Daniel E. (danebn)


Lesenswert?

Ich habe jetzt die Widerstände vom Modul entfernt und die Schaltung mit 
4k7 Widerständen nachgebaut --> leider selbes Ergebnis

Weißt du wie gut man ein DCF77 Empfänger für so etwas einsetzen könnte?
Habe bereits herausgefunden, dass es im Betrieb ca. 90µA verbraucht. 
Leider habe ich aber nicht herausgefunden wie lange es laufen muss, um 
die richtige Zeit zu empfangen und ich weiß nicht wie gut die 
Signalqualität damit ist oder ob das Signal sehr störanfällig ist.

von Stefan F. (Gast)


Lesenswert?

> Weißt du wie gut man ein DCF77 Empfänger für so etwas einsetzen könnte?

Ich weiß nicht was du damit vor hast. Auf jeden Fall ist der Empfang 
dieser Dinger problematisch. Wenn der Empfang mal gut klappt brauchst du 
mindestens 1,5 Minuten, um die Uhrzeit zu erhalten.

von Daniel E. (danebn)


Lesenswert?

Stefanus F. schrieb:
> Ich weiß nicht was du damit vor hast. Auf jeden Fall ist der Empfang
> dieser Dinger problematisch. Wenn der Empfang mal gut klappt brauchst du
> mindestens 1,5 Minuten, um die Uhrzeit zu erhalten.

Hätte damit statt dem RTC einmal in der Woche die Uhrzeit aktualisiert 
aber wenn der Empfang problematisch ist, dann kann ich das vergessen

von Manfred (Gast)


Lesenswert?

Jetzt ist G. schrieb:
> Eine kleine Zusammenfassung :
> https://www.ibrtses.com/embedded/avrpowersave.html

Wirklich hilfreich finde ich die Site nicht, aber sehe gleich mal eine 
Spitzfindigkeit als Überschrift: The powerdown dream

Und weiter unten:
"Creating a low power project involves considerations on many parts,
the controller just being one of them."

Google kann das sogar vernünftig übersetzen: "Um ein Projekt mit 
geringem Stromverbrauch zu erstellen, müssen viele Aspekte 
berücksichtigt werden. Der Controller ist nur einer von ihnen."

von Manfred (Gast)


Lesenswert?

Stefanus F. schrieb:
> Irgendwer zieht die Pins also deutlich hoch. Kann es sein, dass auf
> deinem AVR die internen Pull-Up Widerstände aktiviert sind?

Der Arduino nutzt A4 und A5 für I2C, da sind keine Widerstände dran.

Daniel E. schrieb:
> Die analogen Pins(A4,A5), an die das RTC Modul angschlossen ist, kann
> man nicht noch extra als Ausgang auf Low schreiben oder?

Weiter vorne 05.11.2018 20:33 hatte ich benannt, dass man die Analogpins 
auch als Ausgang steuern kann, das I2C-include tut das ja auch. Die A4 - 
A5 kann man als digital 18 - 19 auch manuell auf low setzen, soweit 
keine andere Aktion dazwischen funkt.

pinMode (18, OUTPUT);
digitalWrite (18, LOW);

Daniel E. schrieb:
> Das Modul hat allerdings auch noch einen EEPROM.

Wenn Du die Versorgung des Uhrenmodules abschaltest und A4 / A5 auf 
low bringst, darf da kein Strom fließen.

Daniel E. schrieb:
> Weißt du wie gut man ein DCF77 Empfänger für so etwas einsetzen könnte?

Unbrauchbar: Im theoretisch günstigsten Fall muß man eine Minute lang 
aktiv empfangen und auswerten, um die Uhrzeit zu bekommen. Im realen 
Leben braucht es eher drei Minuten aktiver µC-Rechnerei, die DCF-Zeit zu 
holen.

von Daniel E. (danebn)


Lesenswert?

Manfred schrieb:
> Wenn Du die Versorgung des Uhrenmodules abschaltest und A4 / A5 auf low
> bringst, darf da kein Strom fließen

Wenn ich diese Pins als Output 18 und 19 definiere und auf Low setze vor 
dem Sleep, kann dann die Verbindung zum RTC trotzdem noch stattfinden 
nach dem Wakeup?
Ich brauche diese ja dann zum einen für SDA und SCL als Analogpins und 
zum andern als digitale Pins.

von Stefan F. (Gast)


Lesenswert?

Offensichtlich sind die internen Pull-Up Widerstände des 
Mikrocontrollers an SCL und SDA eingeschaltet. Diese haben ca 50k Ohm. 
Sie ziehen die Pins im Standby Modus ein bisschen hoch und das stört 
jetzt.

Das kannst du ganz leicht nachprüfen: Stecke das RTC Modul ab. Wenn dein 
Multimeter dann an diesen Pins eine Spannung misst, dann sind die 
Pull-Up Widerstände aktiviert.

> Wenn ich diese Pins als Output 18 und 19 definiere und auf Low setze vor
> dem Sleep, kann dann die Verbindung zum RTC trotzdem noch stattfinden
> nach dem Wakeup?

Jein.

Manfreds Vorschlag ist sicher richtig. Im Standby Modus dürfen da keine 
Pull-Ups aktiviert sein. Nach dem Aufwachen musst du die I²C 
Schnittstelle neu initialisieren. Dadurch werden die Pins dann wieder so 
konfiguriert, wie benötigt.

Vergiss mal den Begriff "Analogpins". Da ist gar nichts analog. I²C ist 
digital.

von Daniel E. (danebn)


Lesenswert?

Habe ein wenig nachgelesen.

Ich benutze die Wire.h Library und werde heute Abend das versuchen:

pinMode(18,INPUT);
pinMode(19,INPUT);
Wire.Begin();

//RTC Kommunikation

Wire.End();
pinMode(18,OUTPUT);
digitalWrite(18,LOW);
pinMode(19,OUTPUT);
digitalWrite(19,LOW);

//Sleep



Stefanus F. schrieb:
> Das kannst du ganz leicht nachprüfen: Stecke das RTC Modul ab. Wenn dein
> Multimeter dann an diesen Pins eine Spannung misst, dann sind die
> Pull-Up Widerstände aktiviert.

Werde ich nachmessen

von Stefan F. (Gast)


Lesenswert?

Vergess nicht, die Stromversorgung des Moduls auch aus zu schalten.

von Daniel E. (danebn)


Lesenswert?

Stefanus F. schrieb:
> Vergess nicht, die Stromversorgung des Moduls auch aus zu schalten.

Ja werde ich machen

von Daniel E. (danebn)


Lesenswert?

Danke Danke Danke

Es hat funktioniert...0,16mA weniger Stromverbrauch im LowPower

von Manfred (Gast)


Lesenswert?

Stefanus F. schrieb:
> Vergiss mal den Begriff "Analogpins". Da ist gar nichts analog. I²C ist digital.

Vollkommen richtig, I²C ist digital.

Ändert nur nichts daran, dass diese Ports in der Arduino-Welt als 
Analog-Anschluß bezeichnet werden und man schon etwas suchen muss, wie 
diese digital zu nutzen sind.

Daniel E. schrieb:
> Es hat funktioniert...0,16mA weniger Stromverbrauch im LowPower

Passt rechnerisch: 47k an 3,3V ergibt nach Herrn Ohm rund 0,07mA, mal 
zwei wären 0,14mA.

Wo bist Du jetzt angekommen, ich hoffe, Gesamtstrom im Sleep deutlich 
unter 0,1mA?

von Daniel E. (danebn)


Lesenswert?

Manfred schrieb:
> Wo bist Du jetzt angekommen, ich hoffe, Gesamtstrom im Sleep deutlich
> unter 0,1mA?

Zur Zeit noch bei 0,15mA.
Betreibe den Arduino noch über den RAW Pin mit dem originalen 
Spannungsregler. Werde allerdings auf den MCP1703t-3302E umsteigen und 
hoffe, dass ich damit noch einmal einen Sprung nach unten mache.

Zur Zeit braucht der Arduino alleine ca.0,1mA im Sleep ohne Power LED.

von Daniel E. (danebn)


Lesenswert?

Muss ich für den MCP1703 einen Keramik Kondensator verwenden oder würde 
ein Elko auch reichen?

: Bearbeitet durch User
von Stefan F. (Gast)


Lesenswert?

Ich würde erwägen, den AVR direkt an die Batterie zu hängen (notfalls 
durch eine Diode, um von den 6V etwas runter zu kommen) und für den Rest 
einen abschaltbaren Spannungsregler zu verwenden.

Dann musst Du Dir natürlich zusätzlich über Pegelwandler Gedanken 
machen. Eventuell lohnt sich der Aufwand - je nach Batterie-Kosten und 
Platzbedarf.

von Daniel E. (danebn)


Lesenswert?

Stefanus F. schrieb:
> Ich würde erwägen, den AVR direkt an die Batterie zu hängen (notfalls
> durch eine Diode, um von den 6V etwas runter zu kommen) und für den Rest
> einen abschaltbaren Spannungsregler zu verwenden.
>
> Dann musst Du Dir natürlich zusätzlich über Pegelwandler Gedanken
> machen. Eventuell lohnt sich der Aufwand - je nach Batterie-Kosten und
> Platzbedarf.

Ich glaube ich werde es jetzt einmal bei diesem Stand belassen und nur 
noch schauen, was der MCP1703 bringt.
Habe schon fast zu viel Zeit in dieses Projekt gesteckt.

2 mal im Jahr Batterien wechseln ist kein Problem

von Manfred (Gast)


Lesenswert?

Daniel E. schrieb:
> Betreibe den Arduino noch über den RAW Pin mit dem originalen Spannungsregler.
KB33 = MIC52205?

Bei <100µA Last hat der laut Datenblatt um 100µA Querstrom, passt auch 
zu Deinen Werten.

> Werde allerdings auf den MCP1703t-3302E umsteigen und
> hoffe, dass ich damit noch einmal einen Sprung nach unten mache.

Jou, den MCP hatte ich vorgeschlagen, habe einige verbaut. Falls Du 
Beschaffungsprobleme hast, geht auch MCP1702, bei dem ist nur die 
maximal zulässige Eingangsspannung geringer.

> Zur Zeit braucht der Arduino alleine ca.0,1mA im Sleep ohne Power LED.

Die LEDs auf dem ganzen Arduino-Zeugs sind eine wahre Pest, da wird mit 
den 1k-Vorwiderständen unnötig Strom verblasen.

Daniel E. schrieb:
> Muss ich für den MCP1703 einen Keramik Kondensator verwenden oder würde ein Elko 
auch reichen?

Die Dingelchen sind hier als sehr schwingfreudig aufgefallen, nur Elko 
würde ich nicht machen. Ich betreibe die mit guten Folienkondensatoren 
WIMA MKS oder vergleichbar. Erstmal aufbauen, Kondensatoren dicht dran 
platzieren. Wenn die Ausgangsspannung nicht stimmt und sich ändert, wenn 
man mit dem Finger auf die Anschlüsse patscht, schwingt er.

Stefanus F. schrieb:
> Ich würde erwägen, den AVR direkt an die Batterie zu hängen (notfalls
> durch eine Diode, um von den 6V etwas runter zu kommen)

Sehe ich auch so. Mit drei Primär-Batterien kommt man auf etwa 4,8V 
(neu) bis knapp 3 Volt leer. Mit drei NiMH eneloop frisch geladen um 4 
Volt und auch bis etwas unter 3 Volt.

Daniel E. schrieb:
> Habe schon fast zu viel Zeit in dieses Projekt gesteckt.

Vielleicht, oder auch nicht:

Du hast mit wenig geeigneter Hardware begonnen und dann hier gefragt.

Du hast aufmerksam gelesen, was man Dir geschrieben hat und einiges 
davon umgesetzt - sieht man an Deinen weiteren Fragen. Das kommt positiv 
rüber und Du hast sinnvolle Fortschritte.

Du bist jetzt auf dem Wege, zu verstehen, wo es lang geht und wirst beim 
nächsten Projekt davon profitieren.

Harte Realität: Elektronik ist ein Geschäft mit viel Fachwissen, wer das 
nicht akzeptiert, bekommt von mir immer "baue Holzroller" empfohlen. Das 
trifft auf Dich nicht zu, Du willst, also bitte weiter so, das wird!

von Stefan F. (Gast)


Lesenswert?

Manfred schrieb:
> Die LEDs auf dem ganzen Arduino-Zeugs sind eine wahre Pest

Für Anfänger sind sie hilfreich. Niemand hindert dich daran, die LEDs zu 
entfernen. Einmal kurz mit dem heißen Lötkolben antippen, und weg sind 
sie. Oder notfalls einfach mit Gewalt abreißen - geht auch.

> Du hast aufmerksam gelesen, was man Dir geschrieben hat und einiges
> davon umgesetzt - sieht man an Deinen weiteren Fragen.
> Das kommt positiv rüber und Du hast sinnvolle Fortschritte.

Ja auf jeden Fall. Sehe ich auch so.

> Elektronik ist ein Geschäft mit viel Fachwissen, wer das
> nicht akzeptiert, bekommt von mir immer "baue Holzroller" empfohlen.

Habe ich mal versucht - und bin wieder bei der Elektronik gelandet. Ich 
mag Holz, aber mehr als ein simples Regal oder eine Kiste zu 
konstruieren fällt mir definitiv schwerer, als die Elektronik.

von Manfred (Gast)


Lesenswert?

Stefanus F. schrieb:
> Manfred schrieb:
>> Die LEDs auf dem ganzen Arduino-Zeugs sind eine wahre Pest
>
> Für Anfänger sind sie hilfreich. Niemand hindert dich daran, die LEDs zu 
entfernen.

Hast Du meinen Text nicht verstanden oder mit Absicht unvollständig 
zitiert:

Manfred schrieb:
> da wird mit den 1k-Vorwiderständen unnötig Strom verblasen.

Die LEDs können hilfreich sein, aber täten es auch mit deutlich weniger 
Strom!

>> Elektronik ist ein Geschäft mit viel Fachwissen, wer das
>> nicht akzeptiert, bekommt von mir immer "baue Holzroller" empfohlen.
> Habe ich mal versucht - und bin wieder bei der Elektronik gelandet. Ich
> mag Holz, aber mehr als ein simples Regal oder eine Kiste zu
> konstruieren fällt mir definitiv schwerer, als die Elektronik.

Ich hoffe doch, dass es richtig verstanden wurde - im positiven Sinne! 
Geht mir nicht anders, ich komme mit Stahlbau (Hobbyschlosser) besser 
klar als mit Holz. Mit Elektronik sowieso, das ist mein Berufsfeld.

von Daniel E. (danebn)


Lesenswert?

Danke, werde eure letzten Antworten sicherlich in zukünftigen Projekten 
einplanen, aber werde jetzt mal alles so auf eine Platine packen und 
genau testen.
Da auch Freunde bereits gemeint hätten, dass sie auch gerne so etwas 
möchten könnte es auch sein, dass ich noch daran weiterentwickle.

Wenn ich darf werde ich mich bei offenen Fragen sicherlich wieder im 
Forum melden.

von Joachim B. (jar)


Lesenswert?

Daniel E. schrieb:
> Auf meinem DS3231 Modul

ist das wirklich ein Bild von DEINEM Modul?

Die Diode und der R 201 sind zum LADEN eines LiR 2032 Akkus, CR 2032 
kann soll man nicht laden und wenn man LiR laden will wird 5V benötigt, 
bei 3.3V Versorgung kann die Diode weder vernünftig leiten zum Laden 
noch ist es sinnvoll überhaupt die "Ladeschaltung" auf dem Modul zu 
lassen!
Also R201 oder Diode runter.

: Bearbeitet durch User
von Manfred (Gast)


Lesenswert?

Joachim B. schrieb:
> Die Diode und der R 201 sind zum LADEN eines LiR 2032 Akkus, CR 2032
> kann soll man nicht laden

https://arduino-hannover.de/tag/cr2032/

von Daniel E. (danebn)


Lesenswert?

Joachim B. schrieb:
> ist das wirklich ein Bild von DEINEM Modul?
>
> Die Diode und der R 201 sind zum LADEN eines LiR 2032 Akkus, CR 2032
> kann soll man nicht laden und wenn man LiR laden will wird 5V benötigt,
> bei 3.3V Versorgung kann die Diode weder vernünftig leiten zum Laden
> noch ist es sinnvoll überhaupt die "Ladeschaltung" auf dem Modul zu
> lassen!
> Also R201 oder Diode runter.

Nein, ist kein Bild von mir.
R201 ist bereits entfernt.

von Daniel E. (danebn)


Lesenswert?

Bauform B. schrieb:
> Ein Bild sagt alles über meine MOSFETs, Batteriehalter und
> Spannungsregler...

Ich hätte schon wieder eine Frage ;)

Da ich gerne die noch verbleibende Batteriespannung messen möchte, um zu 
wissen wie weit die Batterien schon entladen sind, möchte ich diese über 
einen Spannungsteiler auf z.B. A0 messen.

Leider verstehe ich die Schaltung von Bauform B. nicht wirklich.

Kann mir jemand einen Transistor empfehlen oder die Schaltung von 
Bauform B. erklären?
Ich möchte, wie beim gesamten Projekt, die zu messende Spannung über 
einen digitalen Output so stromsparend wie nur möglich schalten können. 
Und das mit so wenigen Bauteilen wie möglich, um Platz zu sparen.

Danke

von Daniel E. (danebn)


Angehängte Dateien:

Lesenswert?

Das wäre meine aktuelle Schaltung, wie schon beim ersten Thread

von Manfred (Gast)


Lesenswert?

Daniel E. schrieb:
> Das wäre meine aktuelle Schaltung

Die Schaltung legt den Spannungsteiler nur dann auf die Batterie, wenn 
gemessen werden soll - richtiger Ansatz, um den Ruhestrom zu sparen.

Insgesamt würde ich die Widerstände höher wählen, da fließt unnötig 
Strom: R3-R8 auf 10k. R7=100k, R6 entfällt, R5=100k oder mehr. Bitte 
nicht nach der Berechnung fragen, ist über den Daumen geguckt.

Falls es zu Fehlmessungen kommen sollte, parallel zu R8 einen 
100nF-Kondensator setzen, dann aber nach dem Einschalten geschätzt 5ms 
delay bevor gemessen wird - habe ich in einer meiner Anwendungen so 
gemacht.

Wenn ich einen kritischen Wert messe, mache ich eine erneute Messung, in 
der ich aus zehn Werten über 20ms einen Mittelwert bilde. Ich reagiere 
erst dann, wenn auch dieser kritisch ist, um Störeffekte los zu werden.

Das ganze Gebilde wird bei Dir etwas kritisch, weil ich nicht sehe, wie 
stabil die Referenzspannung des ADC vom Tiny sein wird. Ich fürchte, 
dass Du am Ende der Batterien Dummfug misst, weil Deine 3,3V nicht mehr 
zuverlässig sind, der µC aber noch immer läuft.

Vielleicht kann Stefanus dazu mehr sagen, hat der Tiny eine interne 
Referenz?

von Stefan F. (Gast)


Lesenswert?

Manfred schrieb:
> Vielleicht kann Stefanus dazu mehr sagen

R8=10k scheint mir sinnvoll. Ich glaube, dass dann wahrscheinlich kein 
Kondensator nötig ist, da die Ausgangsimpedanz des Spannungsteiler so 
knapp unter 10k ist, was gemäß Datenblatt ausreicht.

Du hast richtig vermutet, dass die interne Referenzspannung bei zu wenig 
VCC nicht mehr funktioniert. Sie sinkt dann etwas ab. Irgendwo im 
Datenblatt steht, wie viel VCC nötig ist, damit der ADC und seine 
Referenz vollständig funktioniert. Ich meine mich zu erinnern, dass es 
war etwa 3V waren.

von Daniel E. (danebn)


Lesenswert?

Manfred schrieb:
> Die Schaltung legt den Spannungsteiler nur dann auf die Batterie, wenn
> gemessen werden soll - richtiger Ansatz, um den Ruhestrom zu sparen.
>
> Insgesamt würde ich die Widerstände höher wählen, da fließt unnötig
> Strom: R3-R8 auf 10k. R7=100k, R6 entfällt, R5=100k oder mehr. Bitte
> nicht nach der Berechnung fragen, ist über den Daumen geguckt.
>
> Falls es zu Fehlmessungen kommen sollte, parallel zu R8 einen
> 100nF-Kondensator setzen, dann aber nach dem Einschalten geschätzt 5ms
> delay bevor gemessen wird - habe ich in einer meiner Anwendungen so
> gemacht.

Danke werde ich so umbauen.
Habe auch schon überlegt die Messung öfter zu machen, um ein genaueres 
Ergebnis zu erhalten.

Ich glaube, bevor ich in den kritischen Bereich komme funktioniert das 
GSM-Modul auch schon nicht mehr... ich werde es einfach versuchen.

Den MOSFET habe ich genommen, da ich ihn bereits zu Hause hatte, gibt es 
eine andere Möglichkeit mit 1 oder 2 bipolaren Transistoren?

von Daniel E. (danebn)


Lesenswert?

Stefanus F. schrieb:
> Du hast richtig vermutet, dass die interne Referenzspannung bei zu wenig
> VCC nicht mehr funktioniert. Sie sinkt dann etwas ab. Irgendwo im
> Datenblatt steht, wie viel VCC nötig ist, damit der ADC und seine
> Referenz vollständig funktioniert. Ich meine mich zu erinnern, dass es
> war etwa 3V waren.

Wenn ich den ProMini über den MCP betreibe vermute ich, dass ich gar 
nicht in diesen Bereich komme, da das GSM Modul eine höhere Spannung 
benötigt als der Arduino und deswegen meine Batterie schon bei einer 
höheren Spannung "leer" sein wird. Oder liege ich da falsch?

von Stefan F. (Gast)


Lesenswert?

Daniel E. schrieb:
> Den MOSFET habe ich genommen, da ich ihn bereits zu Hause hatte, gibt es
> eine andere Möglichkeit mit 1 oder 2 bipolaren Transistoren?

Sicher, es gibt immer andere Möglichkeiten mit anderen Bauteilen. Aber 
das hilft keinem weiter.

von Daniel E. (danebn)


Angehängte Dateien:

Lesenswert?

Was würde sich ändern, wenn ich den Mosfet weglasse und nur mit dem 
BC547C schalte?

von Stefan F. (Gast)


Lesenswert?

Daniel E. schrieb:
> Was würde sich ändern, wenn ich den Mosfet weglasse und nur mit dem
> BC547C schalte?

Ja, es würde so nicht mehr funktionieren.

Bei einem bipolaren Transistor mit Emitter als Ausgang gilt immer: Die 
Ausgangsspannung ist ca. 0,7V
a) bei NPN: geringer
b) bei PNP: höher
als die Spannung an der Basis. Der Strom durch die Basis ergibt sich aus 
dem Last-Strom geteilt durch den Verstärkungsfaktor des Transistors.

Das ist nicht der von Dir gewünschte Effekt. Du musst einen PNP 
Transistor verwenden und von diesem den Kollektor als Ausgang. Dann gilt 
die Regel:

Der Transistor schaltet durch, wenn die Spannung an der Basis um 0,7V
a) bei NPN: höher
b) bei PNP: geringer
ist, als am Emitter. Der Strom durch die Basis-Emitter Diode muss z.B. 
durch einen Widerstand begrenzt werden. Er muss höher sein, als der 
Last-Strom geteilt durch den (min.) Verstärkungsfaktor des Transistors.

Egal of PNP Transistor oder P-Kanal MOSFET, du solltest bei der 
Auslegung der Schaltung bedenken, dass die Ausgangsspannung des I/O Pins 
bei High geringer ist, als VIN. Falls Dir nicht klar ist, welche 
Konsequenzen sich daraus ergeben, dann frage nach. Ich würde es 
allerdings begrüßen, wenn du zuerst mal selbst drüber nachdenkst, wegen 
dem Lern-Effekt.

von Daniel E. (danebn)


Lesenswert?

Stefanus F. schrieb:
> Der Transistor schaltet durch, wenn die Spannung an der Basis um 0,7V
> a) bei NPN: höher
> b) bei PNP: geringer
> ist, als am Emitter. Der Strom durch die Basis-Emitter Diode muss z.B.
> durch einen Widerstand begrenzt werden. Er muss höher sein, als der
> Last-Strom geteilt durch den (min.) Verstärkungsfaktor des Transistors.
>
> Egal of PNP Transistor oder P-Kanal MOSFET, du solltest bei der
> Auslegung der Schaltung bedenken, dass die Ausgangsspannung des I/O Pins
> bei High geringer ist, als VIN. Falls Dir nicht klar ist, welche
> Konsequenzen sich daraus ergeben, dann frage nach. Ich würde es
> allerdings begrüßen, wenn du zuerst mal selbst drüber nachdenkst, wegen
> dem Lern-Effekt.

Ok ich glaube ich verstehe es:

Ich nehme einen PNP Transistor, um meine Spannungsversorgung 
unverfälscht messen zu können. Da die Spannung meines digitalen Output 
des Arduinos aber geringer als die Versorgungsspannung ist würde der 
Transistor dauerhaft durchschalten. Deswegen verwende ich am besten 
einen NPN Transistor über den ich den PNP auf GND schalten kann, wenn 
ich messen will. Somit ist mein OUTPUT nur auf HIGH, wenn ich ihn 
wirklich brauche und ich schalte meine Messung stromsparend ein und aus.
Ist das richtig?

von Stefan F. (Gast)


Lesenswert?

Daniel E. schrieb:
> Ich nehme einen PNP Transistor, um meine Spannungsversorgung
> unverfälscht messen zu können. Da die Spannung meines digitalen Output
> des Arduinos aber geringer als die Versorgungsspannung ist würde der
> Transistor dauerhaft durchschalten.

Genau, das wollte ich hören.

> Deswegen verwende ich am besten
> einen NPN Transistor über den ich den PNP auf GND schalten kann, wenn
> ich messen will. Somit ist mein OUTPUT nur auf HIGH, wenn ich ihn
> wirklich brauche und ich schalte meine Messung stromsparend ein und aus.
> Ist das richtig?

Sehr gut.

Jetzt ist es nur leider so, dass an der Kollektor-Emitter Strecke immer 
ein bisschen Spannung abfällt (ich schätze in diesem Fall ca 100mV), was 
deine Messung verfälscht. Kann man in der Software berücksichtigen. Mit 
einem MOSFET wäre der Spannungsabfall annähernd Null.

von Daniel E. (danebn)


Lesenswert?

Stefanus F. schrieb:
> Jetzt ist es nur leider so, dass an der Kollektor-Emitter Strecke immer
> ein bisschen Spannung abfällt (ich schätze in diesem Fall ca 100mV), was
> deine Messung verfälscht. Kann man in der Software berücksichtigen. Mit
> einem MOSFET wäre der Spannungsabfall annähernd Null.

Ok, also ist meine oben gepostete Schaltung mit dem Mosfest genau das 
richtige für diese Anwendung?
Oder soll ich statt dem BC547 auch einen Mosfet verwenden?

von Stefan F. (Gast)


Lesenswert?

Ich finde die Schaltung mit dem MOSFET gut.

von Manfred (Gast)


Lesenswert?

Stefanus F. schrieb:
> Du hast richtig vermutet, dass die interne Referenzspannung bei zu wenig VCC 
nicht mehr funktioniert.

Entschuldigt, ich war Gedanklich etwas daneben, da kommt ja ein AT328 
zum Einsatz, kein Tiny, den ich nicht kenne :-(

Beim 328 würde ich die Batteriespannung auf max. 1 Volt herunter teilen 
und die interne Referenz nutzen, auf die kann man sich länger verlassen 
als auf die Versorgungsspanung.

Daniel E. schrieb:
> Habe auch schon überlegt die Messung öfter zu machen, um ein genaueres Ergebnis 
zu erhalten.

Im 328 ist genug Speicher, zwei Meßroutinen zu programmieren: Ich messe 
als 15 Minuten ein mal, möglichst kurz und fix wieder schlafen gehen. 
Wenn, und nur wenn, bei dieser ein-mal-Messung der Grenzwert erreicht 
wurde, mache ich eine Mehrfachmessung.

Daniel E. schrieb:
> Oder soll ich statt dem BC547 auch einen Mosfet verwenden?

Wenn Du genug Bauteile herumliegen hast, kann anstatt des BC547 auch ein 
N-FET eingesetzt werden. Würde ich nicht tun, der BC ist billiger und 
erfüllt zweifelsfrei die Funktion.

Oben unbedingt den LowLevel-Logic-FET belassen, hat Stefan erklärt.

Stefanus F. schrieb:
> Ich finde die Schaltung mit dem MOSFET gut.

Zustimmung.

von Anja (Gast)


Lesenswert?

Daniel E. schrieb:
> Ich möchte, wie beim gesamten Projekt, die zu messende Spannung über
> einen digitalen Output so stromsparend wie nur möglich schalten können.
> Und das mit so wenigen Bauteilen wie möglich, um Platz zu sparen.

Hallo,

es reicht ein einziger logic level FET im Spannungsteiler wenn du mit 
ca 1.5 - 2V weniger Meßbereich als Versorgungsspannung leben kannst.

Siehe Batteriewächter  hier T2 = BSS138

https://www.mikrocontroller.net/articles/Batteriew%C3%A4chter#Prozessorteil

https://www.mikrocontroller.net/articles/Datei:BMON_1048_PIC.PNG


Gruß Anja

von Daniel E. (danebn)


Lesenswert?

Manfred schrieb:
> Beim 328 würde ich die Batteriespannung auf max. 1 Volt herunter teilen
> und die interne Referenz nutzen, auf die kann man sich länger verlassen
> als auf die Versorgungsspanung.
>
> Daniel E. schrieb:
>> Habe auch schon überlegt die Messung öfter zu machen, um ein genaueres Ergebnis
> zu erhalten.
>
> Im 328 ist genug Speicher, zwei Meßroutinen zu programmieren: Ich messe
> als 15 Minuten ein mal, möglichst kurz und fix wieder schlafen gehen.
> Wenn, und nur wenn, bei dieser ein-mal-Messung der Grenzwert erreicht
> wurde, mache ich eine Mehrfachmessung.

So genau muss meine Messung nicht sein. Ich möchte nur per SMS mitsenden 
welche Spannung die Batterien noch haben, um grob einschätzen zu können 
wie lange sie noch halten.

Soll nur ein paar mal messen, um keine groben Ausreißer in der Messung 
zu haben

: Bearbeitet durch User
von Daniel E. (danebn)


Lesenswert?

Ich habe leider schon wieder eine Frage.

Ich habe die Schaltung komplett auf einer Lochrasterplatine aufgebaut 
und getestet. (Nur ohne dem MCP1703, da ich ihn noch nicht hatte, 
sondern noch über den RAW Pin mit dem Spannungsregler vom Pro Mini)
Dabei hat alles super funktioniert.

Nun habe ich mir eine Platine geätzt und alles verlötet. In der 
Zwischenzeit ist der MCP1703 gekommen, deswegen habe ich den Regler vom 
Pro Mini entfernt und den MCP mit 1µF Keramikkondensator auf Input und 
1µF Keramikkondensator auf Output verwendet.

Leider bricht mir beim Einschalten des GSM Moduls die Spannung so weit 
zusammen, dass der Arduino einen Reset macht.

Zum Testen habe ich an den Input des MCP noch einen 470µF Elko gelötet.
Damit funktioniert die Schaltung wieder.

Das ist allerdings sehr unschön, da der Elko sehr lange zum Entladen 
braucht, wenn man das Gerät aus- und wieder einschalten möchte.

Manfred schrieb:
> Die Dingelchen sind hier als sehr schwingfreudig aufgefallen, nur Elko
> würde ich nicht machen. Ich betreibe die mit guten Folienkondensatoren
> WIMA MKS oder vergleichbar. Erstmal aufbauen, Kondensatoren dicht dran
> platzieren. Wenn die Ausgangsspannung nicht stimmt und sich ändert, wenn
> man mit dem Finger auf die Anschlüsse patscht, schwingt er.

Würden die Folienkondensatoren statt den Keramik besser funktionieren?

Verstehe nicht, was zwischen Lochrasterplatine und geätzter Platine noch 
für ein Unterschied sein könnte (außer dem MCP).

Könnten die Leiterbahnen zu schmal sein?
Verwende für fast alles 0,4mm Breite, außer bei der Versorgung des 
GSM-Moduls, da haben die Bahnen 1mm auf einer 35µm Platine.

von Manfred (Gast)


Lesenswert?

Daniel E. schrieb:
> Leider bricht mir beim Einschalten des GSM Moduls die Spannung so weit
> zusammen, dass der Arduino einen Reset macht.

Wir gehen davon aus, dass der MCP1703 nur den Controller versorgt, für 
das GSM-Modul kann er den Strom (<250mA) nicht.

> Zum Testen habe ich an den Input des MCP noch einen 470µF Elko gelötet. Damit 
funktioniert die Schaltung wieder.

Das deutet darauf hin, dass Deine Batteriespannung bei dem hohen 
Stromimpuls des GSM-Moduls so weit einbricht, dass der MCP die 3,3V 
nicht mehr halten kann.

Das kann am Verhalten der Batterieen liegen, aber auch durch eine 
ungeschickte Leitungsführung verursacht werden. Dicke Leitung von der 
Batterie zum GSM, und ebenfalls direkt von der Batterie zum MCP, kein 
gemeinsamer Weg.

> Das ist allerdings sehr unschön, da der Elko sehr lange zum Entladen
> braucht, wenn man das Gerät aus- und wieder einschalten möchte.

Damit wirst Du Dich abfinden müssen.

> Würden die Folienkondensatoren statt den Keramik besser funktionieren?

Nein.

von Daniel E. (danebn)


Lesenswert?

Manfred schrieb:
> Wir gehen davon aus, dass der MCP1703 nur den Controller versorgt, für
> das GSM-Modul kann er den Strom (<250mA) nicht.

Das GSM wird über den LT1529 versorgt

Manfred schrieb:
>> Das ist allerdings sehr unschön, da der Elko sehr lange zum Entladen
>> braucht, wenn man das Gerät aus- und wieder einschalten möchte.
>
> Damit wirst Du Dich abfinden müssen.

Kann ich den Kondensator beim Ausschalten irgendwie schneller entladen?

von Stefan F. (Gast)


Lesenswert?

Daniel E. schrieb:
> Leider bricht mir beim Einschalten des GSM Moduls die Spannung so weit
> zusammen, dass der Arduino einen Reset macht.

Also bricht die Versorgungsspannung der Arduino ein.

Der I/O Pin des AVR Mikrocontrollers liefert allerhöchstens 50mA, das 
würde deinen Spannungsregler noch lange nicht überfordern - selbst wenn 
die Transistorschaltung dahinter fehlerhaft wäre.

> Das GSM wird über den LT1529 versorgt

Hängen denn beide Spannungsregler an einem gemeinsamen Netzteil? Dann 
könnte es am Netzteil liegen, oder an den kabeln. Insbesondere 
Steckbretter und Dupont Kabel haben oft überraschen hohe 
Innenwiderstände.

Mit einem Oszilloskop kannst du das schnell herausfinden, indem du auf 
eine fallende Flanke bei ca 2 Volt triggerst.

> Kann ich den Kondensator beim Ausschalten irgendwie schneller entladen?

Dazu hätte ich gerne mal den aktuellen Schaltplan deines Aufbaus. Und 
dann gibst du dort bitte genau an, welchen Kondensator du meinst.

von Daniel E. (danebn)


Lesenswert?

Stefanus F. schrieb:
> Hängen denn beide Spannungsregler an einem gemeinsamen Netzteil? Dann
> könnte es am Netzteil liegen, oder an den kabeln. Insbesondere
> Steckbretter und Dupont Kabel haben oft überraschen hohe
> Innenwiderstände.

Laufen beide über 4xAA Batterien in Reihe

Stefanus F. schrieb:
> Dazu hätte ich gerne mal den aktuellen Schaltplan deines Aufbaus. Und
> dann gibst du dort bitte genau an, welchen Kondensator du meinst.

Bekommst du sofort

von Daniel E. (danebn)


Angehängte Dateien:

Lesenswert?

Das ist die aktuelle Schaltung. Ist leider etwas unaufgeräumt, da ich 
schon sehr oft die verschiedenen Pins getauscht habe, um auf der Platine 
den Platz richtig auszunutzen.

Es handelt sich um den rot markierten C5.

Stefanus F. schrieb:
> Hängen denn beide Spannungsregler an einem gemeinsamen Netzteil? Dann
> könnte es am Netzteil liegen, oder an den kabeln. Insbesondere
> Steckbretter und Dupont Kabel haben oft überraschen hohe
> Innenwiderstände.

Werde heute versuchen die Stromversorgung des GSM noch zusätzlich mit 
Drähten zu verbinden und dann zu testen.
Habe nämlich auch die Befürchtung, dass meine Leiterbahnen zu schmal 
sind und einfach der Innenwiderstand viel zu hoch ist.

Bei der Testplatine ging es nämlich mit Dupont Kabel auch nicht aber mit 
0.3mm^2 Drähten funktionierte dann alles ohne Probleme.

Wenn es mit dickeren Leitern funktioniert kann ich hoffentlich C5 
wierder komplett weglassen

von Stefan F. (Gast)


Lesenswert?

Im Schaltplan sehe ich jedenfalls keinen Fehler.

von Daniel E. (danebn)


Lesenswert?

Stefanus F. schrieb:
>> Kann ich den Kondensator beim Ausschalten irgendwie schneller entladen?
>
> Dazu hätte ich gerne mal den aktuellen Schaltplan deines Aufbaus. Und
> dann gibst du dort bitte genau an, welchen Kondensator du meinst.

Sieht du dafür irgendeine Möglichkeit, falls ich ihn nicht komplett weg 
bekomme?

von Stefan F. (Gast)


Lesenswert?

Daniel E. schrieb:
> Stefanus F. schrieb:
>>> Kann ich den Kondensator beim Ausschalten irgendwie schneller entladen?
>>
>> Dazu hätte ich gerne mal den aktuellen Schaltplan deines Aufbaus. Und
>> dann gibst du dort bitte genau an, welchen Kondensator du meinst.
>
> Sieht du dafür irgendeine Möglichkeit, falls ich ihn nicht komplett weg
> bekomme?

Argh, ich hatte schon das Gefühl irgend etwas vergessen zu haben.

Du willst den Kondensator vermutlich nur beim Ausschaltern entladen, 
weil sonst der Entladewiderstand die Stromaufnahme in die Höhe treiben 
würde. Dazu würde den SW2 umdrehen:
1
                 SW2
2
3
        22 Ohm  "aus"
4
5
GND |---[===]---o
6
 
7
                   o------- Kondensatoren und Spannungsregler
8
                 /
9
Vin 6V   o------o
10
Batterie     
11
               "an"

von Daniel E. (danebn)


Lesenswert?

Stefanus F. schrieb:
> Argh, ich hatte schon das Gefühl irgend etwas vergessen zu haben.
>
> Du willst den Kondensator vermutlich nur beim Ausschaltern entladen,
> weil sonst der Entladewiderstand die Stromaufnahme in die Höhe treiben
> würde. Dazu würde den SW2 umdrehen:

Ok danke werde ich versuchen

von Manfred (Gast)


Lesenswert?

Daniel E. schrieb:
> Bei der Testplatine ging es nämlich mit Dupont Kabel auch nicht aber mit
> 0.3mm^2 Drähten funktionierte dann alles ohne Probleme.

Die typischen "China-DuPont-Kabel" sind scheiße: 
Beitrag "Re: China SUPER Bauteile-Schnäppchen Thread [V3]"

> Wenn es mit dickeren Leitern funktioniert kann ich hoffentlich C5
> wierder komplett weglassen

Ich erinnere nochmal an den udn hebe zwei Dinge hervor:
Manfred schrieb:
> Dicke Leitung von der Batterie zum GSM, und
> ebenfalls direkt von der Batterie zum MCP,
> kein gemeinsamer Weg.

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.