Forum: Mikrocontroller und Digitale Elektronik Li Batterie Management BMS


von Manfred L. (bluewater)


Lesenswert?

Hallo an alle Bastler, Elektroniker und und und und.

Einige Worte zu meiner Person:
Vor ewigen Zeiten, als die Augen noch gut waren, lötete ich, konnte mit 
dem Doppelzeitbasis Scope umgehen und hatte echt Spaß an den Anfängen 
der Microcontrollertechnik. Analog war angesagt und einige Projekte 
haben das Licht der Welt erblickt.
Andere Berufsbilder und Interessen führten dann dazu, dass der Staub auf 
der Elektronik nicht mehr entfernt wurde. Gut oder schlecht, wer weiss 
das schon. Nach wie vor habe ich aber Interesse und suche Eure Mithilfe 
zur folgenden Aufgabenstellung.

Li-Batterien aus Akkuzellen benötigen Überwachung. Bitte jetzt nicht an 
Modellbau denken sondern an Blockzellen von 20Ah bis 1000Ah und mehr.
Die Zellüberwachung gibt es als BMS (battery management system) für 
mehrere Zellen fertig für viel Geld zu kaufen. Nicht meine Sache, da ich 
eine Einzelüberwachung auf der Basis "eine Platine für eine Zelle" 
vorziehe.

Kriterien für die Überwachung:
Unterspannung <= 2,6V,
Überspannung  >= 3,6V  beide Spannung variieren je nach Li-Chemie
Balancing über Widerstände, Strom ca. 1A

Beide kriterien sind problemlos mit 4-fach Op plus Ref, z.B. TC1043 zu 
überwachen und zu schalten.
Trotzdem, ich hätte lieber einen kleinen Controller, evtl 8-Pinner, ohne 
Quarz und Schnickschnack, da dann die Schaltschwellen, 
Verzögerungszeiten, etc. leicht anzupassen sind.

Schaltausgänge sollten wie folgt sein:
Unterspannung:  Potentialfrei, im daisy-chain Stil kaskadierbar, 
hochohmig bei Unterspannung, NC
Überspannung:  Potentialfrei, im daisy-chain Stil kaskadierbar, leitend 
bei Überspannung, NO

Zur Erklärung:
Ziel ist, eine Batterie aus 8 Zellen in Serie, macht nom. 24VDC über 
Solarzellen zu laden. Beispiel:  Wohnmobil oder Katamaran mit 10qm 
Dachfläche mit mal eben 1,5kW Peak Leistung, bedeutet ungefähr 50A 
Ladestrom - plus minus. Exakter Wert ist unbedeutend.

Wird der Akkublock geladen, muss bei Überspannung einer oder mehreren 
Zellen der Ladestrom auf den Balancingstrom der Überwachungselektronik 
reduziert werden , z.B. auf 1A
Wird an einer Zelle Unterspannung detektiert, muss die Last abgeworfen 
werden, evtl kaskadiert.

Soweit die Blitzbeschreibung.

Wofür suche ich die Unterstützung.  Wie schon erwähnt, oder hab ich's 
vergessen ;-) habe ich es nicht mit den Controllern. Vielleicht finde 
ich Unterstützung in der Auswahl des Controllers (Betrieb an 2-5V mit 
10bit AD), evtl in BASIC, 8, max. 16 Pins in DIL oder eine Stufe 
kleiner, 8 Bit Verarbeitung reicht aus.
Bitte weder Raspberry noch Aduino, dafür stattdessen eine einfache 
Programmierhardware und freie Software an USB.
Und bitte, verweise auf Dutzende von Websites helfen mir nicht wirklich. 
BGA und Feinstleitertechnik sind auch nicht interessant.

Gibt es den einen oder anderen, den ich in diesem Forum für die 
Entwicklung dafür begeistern kann?
Neben meinem privaten Interesse gibt es auch einen kommerziellen Bedarf. 
Gerade auf Booten und im Wohnmobilbereich, in der Waldhütte und im 
Ferienhäuschen ist 24VDC mit Li-Batterien recht interessant, da über 
einen preisgünstigen Inverter mal eben 2kW in 230V zur Verfügung 
gestellt werden können. Für die Waschmaschine, den Staubsauger, die 
Mikrowelle.
Bleiakkus sind jetzt schon out und Li-Zellen werden immer preiswerter, 
brauchen aber wie erwähnt die Einzelzellenüberwachung.

Zusätzlich, aber das ist der nächste Schritt, wird das elektronische 
Lastrelay, die Laststromüberwachung in Hall-Technik und die schaltbare 
Ladestrombegrenzung benötigt.

Ich freue mich über jeden Mitdenker, über Enthusiasten, Löter und 
Programmierer, über jeden Beitrag.

Bluewater

: Verschoben durch Moderator
von Wulf K. (cyberwulf)


Lesenswert?

Ein Lösungsvorschlag:
Ein AtTiny13 könnte dafür in Frage kommen. Es gibt ihn als bedrahteten 8 
Pinner bei R**chelt und er hat 10 bit ADC Eingänge. Zudem läuft er von 
2,7 bis 5,5 Volt und lässt sich über einen 30 Euro USB Programmer mit 
freier Software (AVR Studio) programmieren.
Es gibt wohl auch selbstbau Programmer.

Programmiert werden kann der auch in der Schaltung über einen 6 pol 
Pfostenstecker (SPI, Vcc und Reset Leitung). Sehr bequem.

Soweit ich weiß, gibt es auch "basic" Dialekt Kompiler. (Ich verwende c)

Die Software sollte in jedem Fall in den kleinen 1k Speicher passen.

Zudem hat der Kleine noch eine serielle Schnittstelle zur Kommunikation 
und kann ohne extra Transistor eine LED treiben.
Das ganze dürfte zum Test auch in Fädeltechnik einfach aufzubauen sein.
Einen Quarz benötigt man nicht - auch keinen Reset Schaltkreis.
Es gibt auch eine interne AD Referenzspannung, so dass Batteriebetrieb 
nichts im Wege stünde (Stichwort Eigensicherheit).

Ich hoffe, das hilft bei der Orientierung.

von Manfred L. (Gast)


Lesenswert?

Danke Wulf für deinen Betrag.

Wie Du aus meinem Anfragedatum sehen kannst, habe ich recht lange auf 
ein Feedback gehofft.

Es blieb mir also nicht anderes übrig, als zwischenzeitlich selbst 
Gehirnschmalz zu investieren und bin, wie in deinem Vorschlag, auch bei 
AVR gelandet. Die ganze Familie der AVRtiny hat genau die Eigenschaften, 
die ich beschrieben habe - und damit ist die Wahl eindeutig.

Bleibt die Frage, hast Du Lust und Laune mit zu machen?
Letztlich ist es egal, ob das Ganze in C oder Basic, Forth oder Pascal 
programmiert wird.
Bildungsvorsprung ist von Vorteil und ich brauche nicht das Rad neu zu 
entdecken (und bin auch nicht so scharf drauf)

(Fädeltechnik, das war doch mal vor 40 Jahren. Beißt der verschmorte 
Lack noch immer in der Nase und in den Augen? ;-))
Sollte ich noch was von im Keller haben :-))

von Julian B. (julinho)


Lesenswert?

Ein Argument, was gegen ein Mikrocontroller spricht, ist das dieser sich 
aufhängen kann, was bei einer 1000AH-Zelle nicht ungefährlich sein kann.

Eine gute Reset-Schaltung sollte also auch vorgesehen werden.

Die Kommunikation der Einzelschaltung würde ich über Optokoppler machen, 
damit ist das Unterschiedliche Potential kein Problem mehr.

von Wulf K. (cyberwulf)


Lesenswert?

Ich habe leider schon einen Zeitengpass mit eigenen Projekten.
Aber ich behalte diesen Beitrag mal im Auge und würde auch Code 
kommentieren/ergänzen.

Der AtTiny hat doch auch eine Brown out Detection und einen Watchdog.

Mein Tipp dazu:
In der Main-loop den AD Wandler als Statemachine laufen lassen und ohne 
Interrupt arbeiten. Das spart auf dem kleinen Speicher doch schon Platz.

Pseudocode:
1
state = 0
2
while(1)
3
{
4
switch(state)
5
{
6
case 0
7
 start conversion
8
 state+1
9
case 1
10
 if end of conversino flag -> state +1
11
case 2
12
 value = ADCH
13
 state = 0
14
}
15
16
.. rest programm ..
17
}

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.