mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Batteriespannung messen


Autor: Walter Tarpan (nicolas)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht 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?

Autor: Jens (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Walter Tarpan (nicolas)
Datum:

Bewertung
0 lesenswert
nicht 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 .

Autor: rüdiger (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Sebastian (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Jens (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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 :)

Autor: rüdiger (Gast)
Datum:

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

Autor: Dennis (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: avion23 (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: avion23 (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: yalu (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Walter Tarpan (nicolas)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Hans (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: rüdiger (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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...

Autor: rüdiger (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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 ?

Autor: Deine Mutter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich sitze neben dir und ich sitze neben dir. Ich mag dich und deine 
Mutter und ich mag dich und deine Mutter. Wir werden bestimmt beste 
Freunde.



Deine Mutter braucht das Programm, schnell!
Ich habe Tabasco in meiner Puupe. :D

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.