Hallo Elektronikexperten, das Thema Spannungsmessung an Akkus( in meinem Fall Lipos) ist natürlich nicht neu, auch nicht hier im Forum. Ich möchte zum Üben aber selbst eine kleine Meßplatine entwickeln. Der derzeitige Status der Schaltung ist als Bild angehängt. Überlegungen/Komponenten: 1) Die Zellen werden einzeln über den Balancer Stecker abgegriffen (JST-EH für 6S) 2) 8 Kanal analog multiplexer/demultiplexer um jede Zelle separat weiterleiten zu können 3) OP AMP als Impedanzwandler (74HC4051BQ) --> Schaltung soll Spannungsquelle möglichst nicht belasten um 4) Referenzspannung (LM4040) zur Erhöhung der Meßgenauigkeit 5) 10-bit ADC am Mikrocontroller (ATTINY85) zur Spannungsmessung 6) später noch Ausgabe auf Display (Keystudio 2004A) Die Spannungsversorgung ist noch offen, sollte vorerst nicht aus dem Akku kommen, um nicht die Messung zur verfälschen. Die Zellspannungen liegen typischerweise zwischen 3.1 und 4.2 Volt. Nun die Fragen ans Forum: 1) Funktioniert die Schaltung in dieser Form? 2) Reichen 5V VCC für den OP AMP? Oder muss da mind. 1-2V mehr Versorgungsspannung als Eingangsspannung anliegen? 3) Wird es rauchen, hähäh ... Vielen Dank für alle Kommentare im Voraus. Andi
Hallo Andreas E. schrieb: > LM4040 zum LM4040 gibt es auch ein Datenblatt: http://www.ti.com/lit/ds/symlink/lm4040-n.pdf Das im Bild 1 einen einfachen Aufbau des LM4040 zeigt. Wie passt das zu deiner Schaltung. Dann fehlen wie immer Kondensatoren an unterschiedlichen Stellen. Auch wäre es spannend mal die Auflösung solch einer Beschaltung, ohne Spannungsteiler am Eingang, zu bestimmen. Auflösung je Bit = 5000mV /1023 = 4,888mV
Und noch etwas, man muss auch die Bezugspegel der Messung mit umschalten, sonst misst man nicht 6x 4,3V = 25,6V, sondern jeweils die Reihenspannungen am Stecker. Das kann so ein Attiny / Atmega nicht mit dieser Beschaltung, denn Vcc muss kleiner gleich des Messspannung sein. Mehr steht im Datenblatt des Attiny85.
Die Pins werden ja auch knapp, denn du möchtest den Demultiplexer ja auch umschalten, wodurch nochmal 3 Pins des ATTiny fällig werden. Dann bleibt dir am Tiny praktisch kein Pin mehr, um das Ergebnis der Messung der Aussenwelt mitzuteilen. (Reset zähle ich mal nicht mit, weil man sich da schnell aussperrt, wenn was schiefgeht).
:
Bearbeitet durch User
Andreas E. schrieb: > 1) Funktioniert die Schaltung in dieser Form? Nein. Es kommen ja bis 25.2 V rein an Y5. Sie könnte funktionieren, wenn sie eine 5V Versorgung hat die galvanisch unabhängig von der Akkuspannung ist und nicht nur der Messeingang mit einem 4051 umgeschaltet wird, sondern auch die GND Verbindung an den Minuspol der entsprechenden Zelle umgeschaltet wird. Aber VEE und VDD des 4051 müssen an minus und plus des Akkus und der 4051 hält keine 25.2V aus. Es müsste ein DG409 oder so sein, mit GND und VCC an die 5V des uC. > 2) Reichen 5V VCC für den OP AMP? Bei einem R2R rail-to-rail OpAmp ja.
Danke für die schnellen Antworten. Ich wusste es raucht ... Denkfehler Nummer 1 war dass der Balancer je Pin die Einzelzellenspannung abgreift. Also muss ich jeweils die Differenzspannung zwischen 2 Zellen messen oder die Schaltung anderwertig anpassen. OK? Kondensatoren habe ich vergessen stimmt. 100nF zwischen VCC und GND möglichst nah am AVR. Und dann zur Unterdrückung kleiner Schwankungen am Spannungssignal. Richtig? Spannungsteiler für höhere Auflösung auch verstanden. Kalibrieren (wegen Toleranz der Widerstände) muss man dann ja entsprechend in der Software. Zu wenig Pins. OK. Dann nehme ich den ATTINY84A. Zur Info: ich hab eh etliche dieser MCs von ATTINY13 bis ATMEGA328 bzw. auch Rasperrys und Arduinos zur Verfügung. Hier geht es nur ums Üben und wie man sieht hab ich das nötig :) Den LM4040 habe ich mir als externe Referenzspannung (weil genauer) statt der internen Spannungsreferenz gedacht. Die muss halt höher als das zu messende Signal sein. Falsch? Gruß und Danke für die Hilfe!
MaWin schrieb: > Bei einem R2R rail-to-rail OpAmp ja. Warum Sollte ein Rail2Rail verwendet werden? Die Eingangs- und Ausgangsspannung geht weder an die 0V noch an die 5V ran. Man könnte aber mit einem R2R OpAmp die Auflösung erhöhen wenn man man bei von 3,0V -> 0V ausgibt und bei 4,2V -> 5V ausgibt.
Ralf schrieb: > Warum Sollte ein Rail2Rail verwendet werden? Die Eingangs- und > Ausgangsspannung geht weder an die 0V noch an die 5V ran. Er will/muss 4.2V messen bei 5V Versorgung, das schafft ein single supply OpAmp wie LM358/LT1013 nicht.
Wenn du eh einen Zweikanal-Analogschalter verwendest könntest du genausogut gleich eine diferentielle Messung über einen Kondensator machen. Einfach einen "genügend großen" Kondensator zwischen die beiden Ausgänge (X,Y) des Multiplexers, und an die Eingangspaare schaltest du deine Zellen (X1,Y1; X2;Y2;...) und den ADC (Xn,Yn). Um die Spannung einer Zelle zu messen, schaltest du den Schalter erst auf die Zelle, dadurch wird der Kondensator parallel zur Zelle geschaltet und lädt sich auf die Spannung der Zelle auf. Dann schaltest du den Schalter auf die ADC-Pins, dadurch wird der Kondensator dessen Spannung die Batteriespannugn ist an den ADC angeschlossen und du kannst offsetfrei und spannungsteilerfrei deine Zellspannung messen. Braucht halt a) einen Analogschalter der die Eingangsspannung ab kann. Der Kondensator muss groß genug sein damit Charge Injection und ADC-Ladungsenthnahmen vernachlässigbar sind und genügend gering eLeckströme haben dass die Spannung weniger als die geforderte Genauigkeit absinkt während der ADC misst. Die Schaltung muss langsam genug schalten dass sich der Kondensator über die Analogschalterwiderstände genau genug auflädt.
Gibt es einen Grund weshalb du einen ATTiny und Multiplexer für 6S einem normalen ATMega8 mit 6(8) Analogeingänge vorziehst? Bedenke das du am Eingang bei 6S bis zu 25,2 Volt hast, welche dir alle Bauteile grillen werden. Du musst also von Zelle zu Zelle durchschalten und dabei den jeweils vorletzten Pin als Masse verwenden um die 3,7/4,2V nicht zu überschreiten.
Andreas E. schrieb: > Die Spannungsversorgung ist noch offen, sollte vorerst nicht aus dem > Akku kommen, um nicht die Messung zur verfälschen. Hast du dafür auch eine Begründung? Das Wichtigste ist die Ref-Spannung und die kommt vom LM4040.
MaWin schrieb: > Er will/muss 4.2V messen bei 5V Versorgung, das schafft ein single > supply OpAmp wie LM358/LT1013 nicht. Der OPA ist hier eh sinnlos: Der AVR hat hochohmige Eingänge, die können direkt über einen Spannungsteiler am Akku hängen. Ach, da war ja noch was: Der AVR möchte für den Sample&Hold einen Eingangswiderstand von 10kohm sehen, um den Sample-Kondensator laden zu können. Dafür packt man einfach einen Kondensator 10-100nF an den Eingang, aus dem sich der Sample&Hold bedienen kann. Der Multiplexer ist auch sinnlos: Jeder AVR hat einen Analogschalter drin. Und ein ATtiny84 nimmt nicht mehr Platz weg wie ein ATtiny85 plus ein Multiplexer. 6 Analogeingänge, an jeden Eingang ein Spannungsteiler plus Pufferkondensator. Bei Runterteilen der Spannung 1:20 und 10bit ADC erreicht man eine Auflösung von etwa 20mV. Die Frage ist schlichtweg: Reicht das?
Karl schrieb: > Bei Runterteilen der Spannung 1:20 und 10bit ADC > erreicht man eine Auflösung von etwa 20mV. Die Frage ist schlichtweg: > Reicht das? Man müsste mindestens 0.1% Widerstände verwenden, und die Belastung durch den Analogeingang (Fehlerstrom 1uA) bei 1/1000 des Spannungsteilerstroms halten, also 1mA ziehen. Als Dauerbelastung zu hoch.
Michael B. schrieb: > Man müsste mindestens 0.1% Widerstände verwenden, und die Belastung > durch den Analogeingang (Fehlerstrom 1uA) bei 1/1000 des > Spannungsteilerstroms halten, also 1mA ziehen. Als Dauerbelastung zu > hoch. Ach, der Laberkopp mal wieder: Nein, müsste man nicht. Man kann stinknormale 1% Widerstände nehmen und klemmt alle Eingänge einmal an die Referenzspannung, dann kann man die Eingänge kalibrieren. Abgesehen davon sind 0.1% Widerstände in SMD 0805 inzwischen so spottbillig, dass das auch egal wäre. Datenblätter lesen ist out? Der ADC hat einen Rin von 100Mohm. Da kann man locker mit einem Spannungsteiler 2,2 Mohm / 100kohm bei einer Vref von 1,1 V rangehen, selbst 10 Mohm / 1 Mohm bei einer Vref von 2,56 V wären kein Problem. Das sind dann 2 µA bei 22V Akkuspannung.
Hallo, Karl schrieb: > Datenblätter lesen ist out? Der ADC hat einen Rin von 100Mohm. Da kann > man locker mit einem Spannungsteiler 2,2 Mohm / 100kohm bei einer Vref > von 1,1 V rangehen, selbst 10 Mohm / 1 Mohm bei einer Vref von 2,56 V > wären kein Problem. Das sind dann 2 µA bei 22V Akkuspannung. Es geht nicht direkt um das Rin, sondern um dem Strom für Sample and Hold Kondensator. So dass ich immer eine Spanungsquelle verwende, die <= 10kOhm hat. Sonst ergeben sich Messfehler mit mehr als 5%. Auch diese !10kOhm) findet man im Datenblatt unter "ADC Wandler". Wenn dass nicht geht, kommt ein OPV OPA334 zum Einsatz, der als Spannungsfolger geschaltet wurde. http://www.ti.com/product/OPA334
Karl schrieb: > Ach, der Laberkopp mal wieder: Nein, müsste man nicht. Ach der Karl, dumm wie immer. > Man kann stinknormale 1% Widerstände nehmen Wenn die denn eine Stabilität über Lebensdauer und Temperatur wie 0.1% Widerstände hätten. Haben sie üblicherweise aber nicht. Karl schrieb: > Datenblätter lesen ist out? Der ADC hat einen Rin von 100Mohm. Im Gegenteil, bei dir reicht aber offenbar dein Aufmerksamkeitsdefizit auch nur für die erste Seite. Ich habe schon 1uA erwähnt, da hättest du merken können daß du noch was übersiehst, aber Karl ist dumm wie immer. Um es mal mit Worten von jemand anderen zu sagen, mir glaubst du ja eh nicht: The ADC is specified as having a 100 MΩ (that is MegaOhm) input impedance. However, this seems somewhat suspicious to me. Together with the fact that there is no analog input leakage specified, I would guess that this is the electrical characteristics of just the ADC, rather then the ADC together with the entire IO pin structure. I would guess that the ADC IO lines that are shared with digital IO have much more leakage current (1 uA from the docs).
Karl M. schrieb: > sondern um dem Strom für Sample and > Hold Kondensator. Der Sample&Hold Kondensator ist in der Größenordnung 10pF (Pico!). Der ist aus dem 10nF Pufferkondensator am Eingang lässig bedient. Das schlägt Atmel selbst in einer App-Note zum ADC so vor. Aber Atmel ist ja nur der Hersteller, was weiß der schon...
Michael B. schrieb: > However, this seems somewhat suspicious to me. Together with the fact > that there is no analog input leakage specified, I would guess that this > is the electrical characteristics of just the ADC, rather then the ADC > together with the entire IO pin structure. I would guess that the ADC IO > lines that are shared with digital IO have much more leakage current (1 > uA from the docs). https://dict.leo.org/englisch-deutsch/guess guess => raten, meinen, vermuten, annehmen, schätzen, ahnen Dann guess mal schön weiter.
Habe den Schaltplan aktualisiert (siehe Anhang). Korrektur der Schaltung für die Spannungsreferenz. Datenblatt gelesen. Kein OPAMP. Spannungsteiler für jede Zelle einzeln. Dabei ca. 10k Impedanz eingestellt. Datenblatt: "The ADC is optimized for analog signals with an output impedance of approximately 10kΩ or less." Vielleicht reichen jetzt die Ströme nicht bzw. ich muss entsprechend lange warten. Bitte wieder um Kommentare. Freu mich schon :) Lg, Andi Ps.: ich lese immer die Datenblätter; ich verstehe halt bei weitem nicht alles bzw. bei den Mengen merke ich mir auch nicht was ich schon gelesen habe bzw. weiß ich nicht was jeweils für meinen Anwendungsfall relevant ist. Daher übe ich eben um mehr Sicherheit zu bekommen. Und frage im Forum ...
Hallo Andreas, zur Pufferung und als RC Tiefpassfilter, schalte bitte jeweils noch ein 10nF Kondensator über R2 (Stellvertreter) und allen anderen auch noch.
Habe nun die RCs eingebaut. Hoffentlich richtig geschaltet. Die Widerstände und Kapazitäten werde ich nochmals nachrechnen sodass ich möglichst viele gleiche Widerstände habe und je Zelle ähnliche Tiefpass-Grenzfrequenzen.
Die angegebenen Schaltungen belasten den 6S-Akku solange er angesteckt ist. Eine (nahezu) belastungsfreie und dabei genau messende Schaltung verwendet zwei billige CD4052-Analogmultiplexer (keine 74HC4052), die an verschiedenen Spannungspegeln angeschlossen werden, und einen Mikrocontroller an der 4. Zelle, also etwa in der Mitte. Die beiden Multiplexer, die jeweils max. 20 V vertragen, laden einen Kondensator auf und schalten diesen danach an den Spannungsteiler vor dem ADC-Eingang. So genügt für die ganze Spielerei ein ATtiny13. Die Stromaufnahme wird nach unten allenfalls durch den Watchdog des Mikrocontrollers begrenzt; ein Software-Timeout kann diesen wegschalten (dann << 1 µA), und der Controller braucht ein externes Reset. Schaltplan später. Die gängige Lösung mit Hochvolt-Multiplexern, etwa TMUXxxxx, erscheint mir schlichtweg zu teuer. Und geschaltete Widerstände zu umständlich und zu ungenau. Für mehr als 6S muss man das Ganze allerdings anders lösen.
Zunächst der Vorschlag für 3 LiPo-Zellen in Reihe. Man sieht den 4052 „unten“ und den Mikrocontroller „oben“. (Pardon, 2× hochgeladen bekomme ich den nicht wieder weg.) Bei der Schaltung für 6 Zellen wird „oben“ noch ein 4052 draufgesetzt, für den es allerdings externe Digital-Pegelwandler braucht. Es arbeiten nun zwei A/D-Wandler des ATtiny13A. Das Schaltregime ist Sache der Firmware. Der Reset-Anschluss ist frei zum ISP-Programmieren und zum Rücksetzen. Die gestürzte Zuordnung der Kanäle „oben“ und „unten“ liegt an der Invertierung des Levelshifters: Der Standardfall „Transistoren gesperrt“ (R3 und R4 fressen keinen Strom) soll am längsten wirksam sein: Dann kann der Ladungsaustausch stattfinden und der A/D-Wandler arbeiten. Statt Abschalten ist auch jede andere Reaktion an IC2:PB2 möglich. Cleverer: Bei Verwendung besserer Kondensatoren (geringer Spannungsabhängigkeit der Kapazität) kann statt dem Widerstandsteiler ein kapazitiver Teiler zum Einsatz kommen: C2 wird 3× so groß wie C1 dimensioniert, und die Spannung teilt sich durch 4. Vorher wird C2 entladen, indem PB4 zum Lo-Ausgang wird. Vorteil: Kein Entladevorgang durch Widerstände lassen dem A/D-Wandler viel Zeit. Nebeneffekt: Permanentes Umschalten von C1 zwischen den Zellen führt zum Balancing. Das wäre aber eher etwas für niederohmigere Multiplexer und Elkos.
:
Bearbeitet durch User
Vielen Dank für eine alternative Schaltung und die extra Mühe! LG/Andreas
Ich habe in den letzten Tagen etwas ähnliches gebaut. Allerdings für 8S LiFePo4. Hier gibt es ebenfalls das Problem:CD4052 etc vertragen max 20V. Für flying cap Messung könnte man anti-serielle p-ch mosfets nehmen und das händisch nachbauen. Aber braucht viel Platz auf der Platine. Vorerst habe ich jetzt mal einen 100k/15k (1:7.67) Spannungsteiler mit 10n genommen. Den Cap kann man sich ev sogar sparen. Ich bin einfach mit den ADC timings hoch gegangen. Dann bekommt man sogar damit brauchbare Werte. Ich verwende dazu einen ATtiny1626. Das sind die neueren 2-series. Die haben einen 12 bit ADC, und eine Vref von uA 4.096mV (real pendelt er je nach chip zw 4V und 4.180V, aber dann ausreichend stabil). Also 1 step==1mV. Was mir noch aufgefallen ist: die unteren 10mV sind komplett tot, dann noch weitere 5mV non-linear. Ab dann geht es. Sprich man muß einen ordentlichen offset dazu rechnen. Hab 3 1626er (2x TSSOP und 1x SOIC) ausprobiert, und der Fehler scheint systematisch zu sein. Ich nehme an das kommt davon, weil die neuen 2-series auch diff ADC können (MUXPOS und MUXNEG auf jeden der Ain schaltbar, und ganz runter dürfte das Teil nicht kommen. Zur Kalibrierung wollte ich ursprünglich eine 3.000V Referenzspannungsquelle die ich hier habe verwenden. Aber das gab wenig zufriedenstellende Ergebnisse aufgrund der 1:7.67. Deshalb habe ich schnell mit einem TL431 eine 10V ref gebastelt die ich mit meinem Fluke einstelle. Der tiny1626 macht beim Einschalten eine Messung. Und wenn er auf allen 8 inputs eine ähnliche Spannung im Bereich 10.00V +-200mV sieht, schaltet er sich in den Kalibriermodus und macht einen Abgleich auf die 10.00V. Somit kann ich Toleranzen in den Spannungsteilern in der SW ausgleichen. Soweit sieht es schon mal ganz ok aus. Die Spannungen stimmen bis auf ca 20mV. Bei 26V Uin sind das immerhin ca 0.1%. Was noch auf meiner Weihnachtsferien-TODO Liste steht: der Attiny1626 kann auch differential input ADC und hat einen PGA (programmable gain amplifier). Man könnte also die heruntergesetzten Differenzspannungen mit dem PGA x8 verstärken und dann messen. Beim Kalibrieren liegen ja überall 10V an. Und auch hier kann man bereits die Differenz (pos und neg) messen und als Korrekturfaktor wegspeichern. Natürlich dann angepasst an die Spannungshöhe. Bei 20V -> doppelter Korrekturwert. Achtung: bei differential input gibt es effektiv 'nur' 11bit Auflösung weil es ja signed ist So in der Richtung könnte es funktionieren, aber wie immer gilt: in der Praxis schlummern sicher noch etliche Stolperfallen. LieGrue, strub
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.