• Hallo Zusammen, Aufgrund der aktuellen Situation setzten wir die Möglichkeit aus, sich mit Gmail zu registrieren. Wir bitten um Verständnis Das RCMP Team

Baubericht Projekt LiPo-Kontrolle mit Einzelzellenüberwachung

BAXL

Admin
Mitarbeiter
Lipo Überwachung mit Arduino

Von vielen wird ja das erste Arduino-Projekt erwartet, insbesondere Uwe wartet auf die LiPo-Überwachung mit Einzelzellenkontrolle. Ich lasse dieses Thema absichtlich offen, damit alle ihre Ideen und Lösungsvorschläge beisteuern können. Ich werde das jetz nicht komplett alleine machen, sondern sehe das als Gemeinschaftsprojekt.

Mein Vorschlag wäre es, sich am Anfang auf maximal 3s oder 4s LiPos zu beschränken. Wir haben ja nur 6 analoge Messkanäle zu Verfügung. Bei 3s brauchen wir bereits 4 Kanäle, einen für die Gesamtspannung und jeweils einen Kanal für jede Zelle, bei 3s brauchen wir also 4 Messkanäle.

Für 6s würde es eng, weil ein Kanal fehlt. Man kann das durch eine Zusatzbeschaltung mit z.B. Reedrelais und einer Zellenumschaltung lösen, doch das mach das erste Projekt etwas sperrig und unspruchsvoller. Alternativ könnte man auch ein anderes Arduinoboard nehmen, z.B. den Arduino Mega (der hat 16 analoge Messeingänge), aber wir haben im Monten überwigend den Arduino Uno für den Einstieg. :)

Wir sollte auch nicht sofort ein Interface zu z.B. Graupner Empfänger realisieren, weil das unseren bisherigen Kenntnisrahmen noch komplett sprengt.

Eine Zusatzbeschaltung mit Widerständen (Spannungsteiler, Schutzwiderstände) ist ebenfalls notwendig, wo ich gerne die Hilfe unserer Elektroniker in Anspruch nehmen würde. Ihr seid also alle herzlich eingeladen.
 
Zuletzt bearbeitet:

MT-Nord

Mitglied
Moin,

ich würde den zusätzlichen Kanal wegnehmen und für 6S-Messung freimachen. Die Gesamt-Akkuspannung zu überwachen wäre gegenüber der Einzelzellenüberwachung m.M.n. auch zu ungenau.
Lass den Controller doch einfach die Gesamtspannung anhand der gemessenen Einzelspannungen selbst errechnen. Ist wesentlich genauer und du sparst einen Kanal.
Nachteile sehe ich darin nicht. Im Gegenteil sogar: Der Controller kann Anhand der Einzelzellenüberwachung eher eine Warnung ausgeben. Wenn ich mich nicht täusche, würdest du am Ende zur Schwellwertsetzung eh zusätzlich noch einen Vergleicher einbauen, der zwischen Einzelzellen und Gesamtspannung entscheidet. Dieser sürde programmiertechnisch dann ebenfalls entfallen.

Eine andere Frage: Setzt du überhaupt Spannubgsteiler ein oder leidglich dinen 10K-22K-Widerstand direkt zwischen Zelle und Messeingang am Controller?


LG - MTN
 

BAXL

Admin
Mitarbeiter
Was die Beschaltung angeht ist nichts festgelegt, bei Einzelzellenüberwachung wäre ein Spannungsteiler eigentlich überflüssig, ich würde lediglich Widerstände seriell vor die Eingänge setzen.

Das Projekt sollte sich entwickeln können, also aktives Mitmachen der anderen, es geht auch um den Lerneffekt und nicht darum, aus dem Stand eine perfekte Elektronik fertigzustellen. Wenn jemand sofort alle 6 Kanäle für die Einzelzellen nehmen will ist das gut, wenn nicht, dann ist das auch gut :) ich will da keine Vorgaben machen und kreativen Freiraum lassen.
 

MT-Nord

Mitglied
Ach so - alles klaro ;).
Hab vor ein paar Jahren mal eine Gesamtspannunsüberwachung mit nem AtMega aufgebaut - geht ja auch nur über Spannungsteiler und Referenzspannung. War schlussendlich aber dahingehend ziemlich aufwändig, weil es einen Widerstandbrücke aus recht krummwertigen Widerständen benötigt hätte - waren dann irgendwas um die 10 Widerstände, nur zum Auswerten von einem 3S-Lipo.
Darum fände ich den Weg der Einzelzellenüberwachung und Summierung per Addition und anschließendem Messwertevergleicher wesentlich einfacher und Materialschonender. Wird meines Wissens nach in den Smart-Guards ja auch nicht anders gemacht.

Bin auch am Überlegen, ob ich mir nicht Franzis antue - das Geld ist eigentlich gut investiert. Nur fraglich, mit welcher Sprache programmiert wird.


LG - MTN
 

BAXL

Admin
Mitarbeiter
Die Sprache ist eigentlich C, wobei die Arduino Umgebung schon für Standardaufgaben vorgefertigten Code im Hirn hat. Da spart man etwas Programmieraufwand und es wird übersichtlicher. C Libraries kann man zusätzlich einbinden, erhält man oft schon fertig geschrieben, z.B. Zur Servoansteuerung oder Empfängersignalabfrage.
 

MT-Nord

Mitglied
Da fängt es bei mir dann leider schon an: Ich bin nun keim Dummerle, aber weder C noch Assembler hab ich jemals kapiert - bin mit Basic groß geworden und programmiere daher auch nur mit Bascom. Nicht das Beste, aber ausreichend.


Danke dir, Baxl
 

BAXL

Admin
Mitarbeiter
Basic war auch meine erste Programmiersprache, dann Turbo Pascal, später als OOP Version. Das sah übersichtlicher aus, C ist eben sehr mächtig universell kann aber schnell kryptisch werden wenn man nicht ordentlich formatiert und kommentiert.
 

MT-Nord

Mitglied
Jopp - und da hört es bei mir dann auch schon wieder auf. Ich hab es bei einem AtMega8 mal geschafft, den gesamten 8K-Speicher zu beschreiben - war ein Mega-Programm. Wenn ich daran denke, wie ich mit den winzigen LED-Blinki-Programmchen damals angefangen hatte - da hätte man nicht mal im Traum daran gedacht, irgendwann man quasi den Speicher des Controllers zu sprengen, wo man zuvor mit 5-12% Volumen meist gut auskam...


LG - MTN
 

yoshi

Betreiber
Mitarbeiter
Also ich weiß rein zufällig noch, dass man bei der Analogmessung auch diverse Analogeingänge als Bezugsmasse für die Messung verwenden kann. Zumindest beim ATMEGA32 ist das möglich. Dafür muss man aber genau wissen was man macht und wie das einzustellen ist.

Theoretisch ist es also möglich ohne Zusatzbeschaltung alle Zellen einzeln, nacheinander zu messen. Ich weiß nur nicht mehr die genauen Bezüge der einzelnen Analogeingänge untereinander. Die Frage wäre auch ob die Arduino IDE es überhaupt zuläßt so in die Tiefe des Controllers einzugreifen. Da ich mich bisher mit der IDE nicht anfreunden konnte, bin ich mir da nicht sicher.
 

MT-Nord

Mitglied
Ich kann dazu nur folgendes schreiben:
Würde ich das mit einem ATMega8 lösen wollen, würde ich jede Zelle an einen ADC-Port über einen 47K-Widerstand hängen. Dazu noch GND mit GND verbinden und den Referenzpin auf +5V setzen. Gemessen wird damit dann die Differenz zu 0V.
Programmiertechnisch dann jede Zelle einzeln in der Hauptschleife alle 0,5-1s auslesen - gesteuert über einen Timer (verbraucht weniger Strom). Die Ausgabe dann an ein LC-Display. Das speichert die ausgegebenen Werte eigenständig. In der Zwischenzeit kann der Watchdog den Controller schlafen legen ;). Das Hauptprogramm vergleicht dann lediglich den Messwert mit dem Referenzwert und gibt dementsprechend einen definierten Text mit den entsprechenden Variablen aus. Für Gesamtspannung und "Prozent-Anzeige" werden dann lediglich alle Messwerte summiert.

Würde ich einen ATMega16 verwenden, stehen dem sogar 8 ADC-Eingänge zur Verfügung - damit würde man also auch die Gesamtspannung auslesen können. Wäre aber recht sinnfrei. Stattdessen eher die Option eines Zusatzakkus oder einen mit 8 Zellen offen halten.

Es gibt übrigens auch LED-Bargraph-Anzeigen zu kaufen, z.B. in rot oder grün - mit übereinander oder nebeneinander angeordneten LED-Leuchtbalken.
In einem meiner Modellboote ist damit die Spannungsüberwachung realisiert - man sieht also keine Ziffern. Habe das Ganze so berechnet und programmiert, das bei Unterschreiten eines bestimmten Schwellwertes der letzte Balken schnell zu blinken beginnt. Fällt die Akkuspannung sogar noch weiter, blinken dann alle Balken - also das gesamte Display. Funzt.
Musste es allerdings so programmieren, dass es den jeweils tiefsten gemessenen Wert so lange abspeichert und somit die entsprechenden LED-Pins weiter ansteuert, bis ein neuer - noch tieferer Wert - gemessen wird. Das geht dann auch komfortabel über das Vergleichen 2er Messwerte.


Würde ich C beherrschen und einen Arduino mein Eigen nennen, hätte ich euch sofort das entsprechende Programm rüber geschickt. Aber vielleicht dient der obige Text ja als wegweisender Ansatz ;)


LG - MTN
 
D

Deleted member 1492

Gast
Also ich weiß rein zufällig noch, dass man bei der Analogmessung auch diverse Analogeingänge als Bezugsmasse für die Messung verwenden kann. Zumindest beim ATMEGA32 ist das möglich.
Die Boards "Leonardo", "Micro", "Esplora" verwenden den AtMega32U4 mit 8bit

Wenns etwas mehr sein darf:

"Due" verwendet den AT91SAM3X8E mit 32bit

"Genuino 101" den Intel Curie mit 32bit

Es gibt auch Miniboards mit dem ATtiny85

Oder auch mit dem STM32F469 (ARM-Cortex M4)

Und sogar mit ARM-Cortex A8 in 1GHz
 

BAXL

Admin
Mitarbeiter
Der Gedankenanstoß von Yoshi war wichtig, das hatte ich übersehen, ich messe ja nicht potentialfrei jede Zelle. Weil der Arduino Betribsspannung braucht ist die Masse des Akkus der Bezugspunkt, also Pech gehabt und neu überdenken.

Und, wir haben einen Arduino Uno, damit müssen wir erstmal klarkommen :).
 
D

Deleted member 1492

Gast
Dann: 5x4,2/1024 ergibt ca. 20 mV Abweichung für die letzte Zelle eines 5s LiPo's, oder liege ich da falsch?
 

BAXL

Admin
Mitarbeiter
Wenn ich bis 5s gehen will, habe ich maximal 21V zu messen. Das geht natürlich nicht, also brauchts einen Spannungsteiler, um auf max 5V zu kommen.

Die Messauflösung eines Kanals ist 4,9mV
 
D

Deleted member 1492

Gast
Ich sortiere ja noch selbst meine Gedanken :eek::D

Ich meinte jetzt mit gemeinsamer Masse/Ground.

Irgendwie müsste man jede einzelne Zelle sozusagen davon "befreien" können.
Nur die Messung natürlich. Für die Gesamtspannung bleibt alles.

Ich glaub ich geh besser schlafen ........ o_O;)
 

BAXL

Admin
Mitarbeiter
Hermann, kannst Du nicht eine OP Verstärkerschaltung zaubern? Da hätte ich an den OP Ausgängen, bezogen auf die Gesammtmasse imner nur max 5V
 
D

Deleted member 1492

Gast
Pling! Manchmal sieht man den Wald vor lauter Bäumen nicht! :thumbsup:

Ich eruier das mal.
 
D

Deleted member 1492

Gast
Grundsätzliche Gedanken:

Widerstandsmethode >> Kostengünstig, aber mit zunehmender Zellenanzahl schlechter werdende Messauflösung.

OP als Differenzverstärker (Subtrahierer) >> Hohe Genauigkeit, jedoch deutlich höhere Kosten, da für jede zusätzliche Zelle 1 OP benötigt wird.

Dann gibt es noch die Kondensatormethode >> Geringere Bauteilkosten, sehr hohe Auflösung. Nötig sind analoge Multiplexer.


Das war erstmal Lehrbuchwissen. Mit den Bauteilen bin ich aktuell nicht mehr auf dem Laufenden. Keine Ahnung was es gibt.
 
Zuletzt von einem Moderator bearbeitet:
Top Bottom