Forum: Mikrocontroller und Digitale Elektronik Batteriespannung messen


von Walter T. (nicolas)


Angehängte Dateien:

Lesenswert?

Hallo zusammen,

ich bastele gerade an einem batteriebetriebenen Gerät (3-AA-Zellen) und 
nutze den ADC von einem ATmega48 hinter einem Spannungsteiler (siehe 
Schaltplan im Anhang).

Nachdem ich heute noch einmal einen Blick in den Schaltplan geworfen 
habe ist mir aufgefallen, daß es keine gute, sondern eher eine schlechte 
Idee war, und ich mich eigentlich wundern muß, daß die Schaltung seit 2 
Wochen läuft und weder der ADC7 noch der PC5 zerstört ist, da der PC5 
immer dann, wenn ich nicht die Batteriespannung messe, hochohmig ist.

Nur: Wie macht man es richtig? Ein Spannungsteiler mit großen 
Widerständen direkt zwischen Batterie und GND kommt eigentlich nicht in 
Frage, da das Gerät auch stärkeren Umwelteinflüssen (Luftfeuchte, 
Schmutz) ausgesetzt sein wird, und ich die Batteriespannung und nicht 
die Mondphase abschätzen will.

Die Wirkung einer Z-Diode über dem R15 als Überspannungsschutz könnte 
ich jetzt nicht abschätzen- dann habe ich ja einen nichtlinearen 
Widerstand parallel dazu eingebaut. Und der "Stromverbrauch" dieses 
Teils würde ja auch nicht verschwinden.

Gibt es für so ein Standardproblem keine Standardlösung?

von Jens (Gast)


Lesenswert?

Steh ich grad auf dem Schlauch?
Wie funktioniert das denn? Du misst einmal VCC (über eine Art Pullup aus 
R15 und R16) und gleichzeitig einen Bruchteil dieser Spannung über R15?

Ich hätte entweder die interne 2,54 V RefSpg verwendet, oder mir extern 
eine Spannung über einer Z-Diode erzeugt, gegen die ich vergleichen 
kann.

von Walter T. (nicolas)


Lesenswert?

Hallo Jens,

ich messe die Batteriespannung über den ADC7 an einem Spannungsteiler 
zwischen Batterie und Masse (PC5 auf "low"). Das Messen ist auch nicht 
das Problem, sondern das Nichtmessen mit PC5 auf hochohmig und damit 
ADC7 und PC5 auf U_Batt .

von rüdiger (Gast)


Lesenswert?

hallo

also warum sollte irgendwas kaputt gehen ??

hab mich vor einem monat auch mal mit dem Problem messen der spannung 
eines akkus befasst um daraus auf den ladezustand zu kommen und bei 
evtl. unterschwelligen spannung das nutzgerät abzuschalten .

da gabs einige seiten im netz, hab ich leider jetzt nicht hier die 
links.. einfach mal suchen google . "verfahren zum ladezustand 
batterie".

hab mir mal theoretisch ein paar gedanken gemacht wie eine recht 
einfache und  doch relativ genaue schaltung designen kann:

wenn es möglich die spannung von einem gerät kurz zu trennen, oder für 
das betriebene  gerät kurz zu puffern : DANN spannung evtl. über MOSFEt 
oder Relais (...)  abschalten => leerlaufspannung messen oder evtl. 
einen anderen C definiert laden lassen .. und dann messen bzw. auch zeit 
der ladung messen ...  hab mir da über die details noch nicht gedanken 
gemacht.

oder halt ohne diese abschalterei...

evtl. feintunning mit trimmer-R  und multimeter richtige schwellenwerte 
einstellen :  das geht ja bei einzelschaltungen.

von Sebastian (Gast)


Lesenswert?

Vielleicht mit einem PNP-Transistor in der Leitung von U-batt, der bei 
Bedarf angesteuert wird? Eventuell kann hochohmiger Spannungsteiler auch 
dauernd versorgt werden (2M2/3M9 statt 2k2/3k9). Meßgenauigkeit leidet 
etwas, dürfte aber gehen.

von Jens (Gast)


Lesenswert?

Du ziehst PC5 auf Low und misst dann die Spannung an PC7?
Was hat denn das für einen Grund?

Der AD Eingang hat einen Widerstand von (lies es besser im Datenblatt 
nach) 1MegOhm (oder irgendwas in der Größe, absoluter Wert ist ja egal).
Damit fliet ein Strom von meinetwegen ein paar µ => nix geht kaputt.
Dasselbe gilt, wenn du den PC5 auf HighZ schaltest; dann fließt (im 
schlimmsten Fall) ein Strom von ein paar µ => nix geht kaputt.

Genaue Werte stehen im Datenblatt, sterben sollte nichts.

Trotzdem ist mir das Messverfahren schleierhaft :)

von rüdiger (Gast)


Lesenswert?

batterien und "verbrat"-spannungsregler ist auch nicht so die richtig 
gute Kombination ..

von Dennis (Gast)


Lesenswert?

Hi Nicolas,

das was Du da machst, funktioniert doch, oder? Also lass es so.
Den ADC kannst Du icht zerstören. Da fließt kein Strom rein, weil der 
Eingang extrem hochohmig ist (Spannungsmessung ... logisch, oder?). Und 
solange die Quelle der Messspannung unter 10k oder so bleibt, 
funktioniert der ADC auch einwandfrei.

Wenn Du es aber richtig (und genauer) machen willst, dann benutze einen 
Operationsverstärker dafür. Das hat allerdings zur Folge, dass Deine 
Schaltung etwas umfangreicher wird.

Aber wenn es funktioniert, dann lass es einfach so.

von Gast (Gast)


Lesenswert?

Bei manchen neueren AVRs kann man man den ADC auf "Versorgungsspannung 
messen" einstellen:
VCC als Vref und die interne Bandgap-Referenz auf den ADC-Eingang. Dann 
brauchts gar keine externe Beschaltung mehr, um die Batteriespannung zu 
messen, also auch keinen Spannungsteiler mehr.

von avion23 (Gast)


Lesenswert?

> Trotzdem ist mir das Messverfahren schleierhaft :)

Ich denke, er hat einen schaltbaren Spannungsteiler gebaut um Energie zu 
sparen.


@ Nicolas
Dein avr ist nicht defekt weil der Spannungsteiler relativ hochohmig 
ist. Die Eingänge besitzen außerdem clamp-dioden. D.h. die überschüssige 
Spannung wird auf die Versorgungsspannung abgeführt.

Wie man es richtig macht? k.A. :P
Ich würde den 3,3V Spannungsregler rauswerfen. Bis 5,5V verkraftet der 
atmega48, das wären dann 1,83V pro Alkaline Zelle. Soviel haben die 
maximal, wenn sie vollgeladen sind. Das käme deinem Energieverbrauch zu 
Gute. Schau dir mal den Eigenverbrauch des Spannungsreglers an, der 
liegt um Größenordnungen höher als der deiner Schaltung im standby.

Wenn du dann sowieso die Akkuspannung an Vcc hast ist alles ganz 
einfach:
- ADC auf Vcc als Referenz schalten.
- Interne Bandgapreferenz damit meßen.
Und mit etwas Nachdenken kannst du das dann umrechnen. Musst keinen 
einzigen Pin dafür opfern.

von avion23 (Gast)


Lesenswert?

Gerade sind mir noch ein paar Punkte aufgefallen:

- Reset kannst du unbeschaltet lassen, der avr hat einen internen 
pullup. Macht das layout einfacher.
- Aref kannst du ebenfalls unbeschaltet lassen.
- Spannungsteiler für den LM317: Ist das nicht etwas niederohmig?

Was  möchtest du denn schönes basteln?

von yalu (Gast)


Lesenswert?

Wollte gerade schreiben, dass
- der Spannungsteiler am LM317 viel Strom braucht,
- der LM317 auch weggelassen werden kann und
- bei Wegfall des LM317 die Batteriespannung auch ohne ADC-Eingang
  gemessen werden kann.

Dann habe ich gesehen, dass avion23 schon alles geschrieben hat :)

Nur noch eins:

Ohne Spannungsregler fällt nicht nur dessen Eigenstromverbrauch weg, die
Batterie kann wegen des nicht mehr vorhandenen Dropouts weiter entleert
werden (bis 2,7V herunter, beim mega48V sogar bis 1,8V), bevor der
Controller aufhört zu arbeiten.

von Walter T. (nicolas)


Lesenswert?

Hallo zusammen,

danke für die raschen Antworten. Ich mag nicht so gerne unfertige 
Projekte posten, aber wenn es denn so weit ist, mache ist das hier im 
Forum publik.

Der Grund für den Spannungsregler ist die Peripherie, vor der einige nur 
von 2,7V-3,3V spezifiziert ist. Ob sie wirklich von 4,5V zerstört wird, 
werde ich mal später in einem aufopferungsvollen Versuch ausprobieren, 
sobald in den Prototypen nicht mehr brauche. Ob ich dann einen 
Spannungsregler vor den ATmega oder Spannungsteiler vor jede 
Signalleitung lege ist eine andere Frage, ersteres halte ich aber für 
"sauberer".

Der LM317 wird sicherlich noch ersetzt, es ging mir bei dem Schaltplan 
nur ums Prinzip.

von Hans (Gast)


Lesenswert?

Ist der "Aufwand" mit dem Spannungsteiler nicht überflüssig?

Der ADC besitzt einen Eingangswiderstand von mindestens 55 Meg; das 
macht einen Strom von 90 nA @ 5V...

Da leckt doch alles andere mehr.

von rüdiger (Gast)


Lesenswert?

das mit der interenen Referenzspannung is ja  interessant!
das ist mir neu das sowas jetzt an bord einiger AVRs ist.

also wenn man nun mal akku-spannung (12V) messen will, bzw. bei leerem 
Akku abschalten will  dann nimmt man  ein spannungsteiler stellt ihn so 
ein das bei vollem akku 2.56V = int. Ref-Spannung abfällt über ADC  und 
wenn die spannung dann sinkt infolge des entladenen akkus dann def. man 
grenzwert der Messspannung und schlatet ab.


-- oder gibts noch bessere ideen dazu ?


geht mir hier um bleigelakku (vermeidung tiefenentladung) und daran 
betriebene musikanlage...

von rüdiger (Gast)


Lesenswert?

nur ein problem sehe ich noch ... aufgrund der  unterschiedlichen last 
(~1A) wird die Uakku ziehmlich schwanken  ...

dadurch wird das messen im betrieb ziehmlich ungenau , oder ?


 man könnte über eine diode/transistor  ein  kleinen C laden lassen und 
über den messen >>   dann läd der C sich bei momentan kleiner last auf 
Ux und bei großer last kann aber nix zurückfließen ...  ist das ein 
ansatz oder niocht besonders klug ?

Beitrag #2378682 wurde von einem Moderator gelöscht.
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.