Forum: Analoge Elektronik und Schaltungstechnik Akku - Zustandsautomat


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von Bernd S. (Firma: Anscheinend Corner-Cases ;-)) (bernd_stein)


Lesenswert?

Hallo zusammen,

dieser Thread soll ähnlich wie " Zeigt her eure Kunstwerke " sein.
Und zwar bezogen auf auf das Testen von einzelnen Akkus
( Akkupacks gehen auch ).

Meine Wunschvorstellung ist ein Automat der folgendes leistet :

- Wie hoch ist die zugeführte Kapazität ?

- Wie hoch ist die entnommene Kapazität ?

- Wie sieht die Ladekurve aus ?

- Wie sieht die Entladekurve aus ?

- Wie ist die Temperaturentwicklung des Akkus ?

- Wie hoch ist der Innenwiderstand des Akkus ?

- Welchen möglichen Höchststrom kann ich dem Akku entnehmen ?

- Entladespannung bis 0,9V bei Konstantem Strom

- Die Visualisierung unter LogView.

Das hier und weitere Sachen habe ich schon nachgebaut, aber alles ist im 
Sande verlaufen.

http://www.mikrocontroller.net/articles/Akku_Tester

Eine manuelle Entladeschaltung habe ich bereits entworfen.

Beitrag "Stromsenke für NiCd / NiMH Einzelzellen bis 5 Ampere"

Und nun los : " Zeigt her Eure Werke " !!!


Bernd_Stein

von Hermann (Gast)


Angehängte Dateien:

Lesenswert?

Hallo Bernd,
die meisten der angesprochenen Themen werden von meinem "Akku-Wächter" 
erfüllt. Alle Eigenschaften gelten für Laden und Entladen:
- Überwachung von Zeit, Kapazität, Spannung, Temperatur, Gradient von 
Spg und Temp
- Logging aller Größen, Übertragung zum PC als Textdatei nach der 
Messung
- Darstellung in Excel oder beliebigem Programm
- umfangreiches Menü zur Wahl der Abschaltkriterien und des Logging
Der Einsatz setzt eine externe Stromquelle oder -senke voraus. Das wäre 
ein getrenntes Thema. Durch den getrennten Aufbau ist der Einsatz 
wesentlich flexibler.
Im Anhang ein Bild und der Schaltplan. Kurze Beschreibung der Schaltung:
- die Endabschaltung habe ich über ein Relais gemacht wegen hoher 
Spannungsfestigkeit
- Strommessung über Verstärker
- Spannungsmessung in mehreren Bereichen, das Programm entscheidet, 
welcher Bereich die beste Auflösung hat
- Temperaturmessung mit KTY81 und OP
- Berechnung von Spg/Zelle zur besseren Beurteilung und für die 
Spg-Überwachung
- Logging im RAM, skaliert auf ein Byte pro Wert (Platz für 8h bei 3 
Größen und 1 Minuten-Takt)
Was würde ich nach der Erfahrung ändern:
- Strombereich bis >=4A (habe gerade den Shunt beim Auto-Akku-Test 
verbrannt)
- Logging im seriellen EEPROM
Vielleicht sind einige Ideen als Anregung eigene Projekte dabei
Gruß Hermann

von Bernd S. (Firma: Anscheinend Corner-Cases ;-)) (bernd_stein)


Lesenswert?

Erstmal Danke, das Du auf mein Anliegen geantwortet hast und Dir die 
Mühe gabst dein Akkuwächter zu zeigen, sowie eine grobe Beschreibung zu 
geben.

Hermann schrieb:
> - Darstellung in Excel oder beliebigem Programm
>
Habe leider keine Ahnung von solchen Sachen.
Meinst Du LogView würde das auch grafisch anzeigen können.

>
> Der Einsatz setzt eine externe Stromquelle oder -senke voraus. Das wäre
> ein getrenntes Thema. Durch den getrennten Aufbau ist der Einsatz
> wesentlich flexibler.
>
Finde ich auch.

>
> - Spannungsmessung in mehreren Bereichen, das Programm entscheidet,
> welcher Bereich die beste Auflösung hat
>
In dem Zusammenhang :
Was macht der 2:1 Spannungsteiler der an "Drain" angeschlssen ist
( ADC2 ) ?

Wozu dient das Konstrukt aus Referenzspannungsdiode und den an diesen 
kathodenseitig angeschlossenen Dioden ?
Etwa Verpolungsschutz ?
Wozu dient dann die BAT41 an ADC2 ?

Wieso ist der 1k5 OpAmp-Beschaltungswiderstand von ADC1 extern ?
Die Auflösung vom Schaltplan zeigt leider nicht was für ein Text über 
dem ganz linken KTY81 steht. Und - wo wird dieser angeschlossen ?

Wenn der Sourcecode in Assembler geschrieben ist, würdest Du den auch 
zur Verfügung stellen ?

>
> Was würde ich nach der Erfahrung ändern:
> - Strombereich bis >=4A (habe gerade den Shunt beim Auto-Akku-Test
> verbrannt)
>
Meinst Du jetzt einen automatischen Test mit einem Akku oder einen Test 
mit einem Kfz-Akku ?

>
> - Logging im seriellen EEPROM
>
Wegen mehr Speicher oder warum ?
Und warum EEPROM und nicht FLASH ?
Seriell im Sinne von SPI oder etwa IIC (I²C) ?


Bernd_Stein

von Hermann (Gast)


Angehängte Dateien:

Lesenswert?

Bernd Stein schrieb:
> Meinst Du LogView würde das auch grafisch anzeigen können

Ich habe einfach für jede Zeitscheibe die Werte über die V24 geschickt 
und mit Hyper-Terminal erfasst. Die Formatierung ist dabei speziell für 
Excel gemacht: Trennung durch Tab und Dezimal-Komma. Damit liest Excel 
die .Txt-Datei ohne spezielle Anpassung. Wenn Dein LogView Textdateien 
einlesen kann, kannst Du es genauso machen.

Bernd Stein schrieb:
> Was macht der 2:1 Spannungsteiler der an "Drain"

Ich erfasse zusätzlich den Spannungsabfall an Draht, Schalter und Shunt. 
Damit korrigiere ich die Spg-Messung.

Bernd Stein schrieb:
> Wozu dient das Konstrukt aus Referenzspannungsdiode und den an diesen
> kathodenseitig angeschlossenen Dioden ?

Überspannungsschutz an den AVR-Eingängen. Da ich bis 100V messen will, 
kann am 6V-Teiler eine Spg über 5V entstehen. Das kann man weglassen, 
wenn man den Strom über genügend hohe Widerstände begrenzt. Die internen 
AVR-Schutzdioden können bis 1mA. Begrenzen würde ich deutlich darunter.

Bernd Stein schrieb:
> Wozu dient dann die BAT41 an ADC2 ?

Schützt vor neg. Spg. Wenn der Schalter geöffnet ist, hängt an Drain 
eine neg. Spg.

Bernd Stein schrieb:
> Wieso ist der 1k5 OpAmp-Beschaltungswiderstand von ADC1 extern ?

Ich hatte erst vor, die Differenz zur Umgebung mit einem 2. KTY zu 
messen. Habe ich wieder verworfen und den festen 1k5 eingebaut (nicht 
extern)

Bernd Stein schrieb:
> Wenn der Sourcecode in Assembler geschrieben ist, würdest Du den auch
> zur Verfügung stellen ?

Ist kein Assembler. Könnte ich natürlich bereitstellen. Aber ich 
schreibe in BASCOM. Ist wohl hier verboten.

Bernd Stein schrieb:
>> Was würde ich nach der Erfahrung ändern:
>> - Strombereich bis >=4A (habe gerade den Shunt beim Auto-Akku-Test
>> verbrannt)
>>
> Meinst Du jetzt einen automatischen Test mit einem Akku oder einen Test
> mit einem Kfz-Akku ?

Ich habe den Akku mit 7A entladen. Dass die Strom-Messung nicht 
funktionierte hat mich nicht gestört. Habe aber nicht daran gedacht, 
dass der Shunt drin ist und 4,9W verbrät.

Bernd Stein schrieb:
> Und warum EEPROM und nicht FLASH ?
> Seriell im Sinne von SPI oder etwa IIC (I²C) ?

Habe an die I²C-Teile gedacht. Stelle ich mir viel einfacher vor: 
4-Beiner, 1 seieller Anschluss, beliebig viele kByte. Grund: mehr 
Speicher, keine Skalierung, kein zusätzlicher Quantisierungsfehler.

Habe noch eine Beispielmessung beigefügt. Die Byte-Quantisierung ist 
deutlich zu erkennen. Reicht für die Genauigkeit zwar hin, sieht aber 
nicht gut aus. Unter dem Diagramm ist der Anfang der Tabelle zu sehen, 
die über die V24 gesendet wurde. Hier ist auch der Vorteil von Excel zu 
erkennen: man kann beliebige Berechnungen ergänzen. Hier ist die 
Entladekurve in die Ladekurve hinein kopiert und kann über die 
gerechnete Restkapazität über einer x-Achse dargestellt weden.
Gruß Hermann

von Bernd S. (Firma: Anscheinend Corner-Cases ;-)) (bernd_stein)


Lesenswert?

Hermann schrieb:
> Schützt vor neg. Spg. Wenn der Schalter geöffnet ist, hängt an Drain
> eine neg. Spg.
>
Das kann ich leider nicht erkennen, weder beim Laden noch beim Entladen

>
> Ist kein Assembler. Könnte ich natürlich bereitstellen. Aber ich
> schreibe in BASCOM. Ist wohl hier verboten.
>
Schade, ich übe mich darin und kann leider mit einem Bascom-Sourcecode 
nichts anfangen. Und den von Bascom erzeugten ASM-Code möchte ich mir 
auch nicht antun, da wie bereits geschrieben ich mich darin noch übe und 
somit wahrscheinlich noch weniger verstehen würde wie rein geschriebenen 
ASM-Code.

>
> Habe an die I²C-Teile gedacht. Stelle ich mir viel einfacher vor:
> 4-Beiner, 1 seieller Anschluss, beliebig viele kByte. Grund: mehr
> Speicher, keine Skalierung, kein zusätzlicher Quantisierungsfehler.
>
Das mit der Skalierung und den Quantisierungsfehler ist mir zu hoch,
da steige ich nicht durch.

>
> Habe noch eine Beispielmessung beigefügt.
>
Finde ich astrein. Da hast Du richtig was auf die Kette bekommen.

Danke für die Vorstellung deines " Akku-Wächters ", was der Sache nicht 
gerecht wird, da deine Schaltung viel mehr kann, als nur Akkus zu 
Überwachen.


Bernd_Stein

von Hermann (Gast)


Lesenswert?

Bernd Stein schrieb:
> Wenn der Schalter geöffnet ist, hängt an Drain
>> eine neg. Spg.
>>
> Das kann ich leider nicht erkennen, weder beim Laden noch beim Entladen

Beim Laden hägt die Akku-Spg bei offenem Schalter an der Reihenschaltung 
des 6V- und 2,2V-Teilers. In der Mitte ist Masse, also bleibt für den 
2,2V-Teiler eine neg. Spg übrig.

Bernd Stein schrieb:
> kann leider mit einem Bascom-Sourcecode
> nichts anfangen

Es gibt keine leichter zu lernende Hochsprache als Basic. Assembler geht 
für so etwas vom Aufwand gar nicht. Das nimmt man nur für zeitkritische 
Teile oder wo man jedes Byte sparen muss. Assembler kann man dazu 
überall in Bascom einbetten.
Bascom nehme ich, weil ich viel in VBA (Excel) programmiere, da gibt es 
nur Basic und viel in Visual Studio, da gibt es auch Basic, na und da 
will ich nicht dauernd wechseln. Außerdem geht mit Bascom alles, was ich 
bisher gebraucht habe.

Bernd Stein schrieb:
> Das mit der Skalierung und den Quantisierungsfehler

Wenn man einen Wert in einem Byte speichern will, dann multipliziert man 
ihn mit einem Faktor, so dass der Maximalwert zu 256 wird. Z.B. 
Umax*Faktor=256, also Faktor=256/Umax. So multipliziert man jedes 
gemessene U mit Faktor und packt es in den Byte-Speicher. Damit ist der 
Seicherwert nur auf 1Bit genau. Das ist die Quantisierung, also 
Umax/256.

von Bernd S. (Firma: Anscheinend Corner-Cases ;-)) (bernd_stein)



Lesenswert?

Danke, das Du mir die Sachen erklärst.

Hermann schrieb:
> Beim Laden hägt die Akku-Spg bei offenem Schalter an der Reihenschaltung
> des 6V- und 2,2V-Teilers. In der Mitte ist Masse, also bleibt für den
> 2,2V-Teiler eine neg. Spg übrig.
>
Ich habe hier drauf hin mal eine Skizze für 10V erstellt und erkenne nun 
deutlicher was Du beschreibst. Die Teilspannungen an den Widerständen 
habe ich ohne Bezug auf den Schaltungsteil nach den roten 
Trennungsstrichen berechnet, da es mir sonst zu kompliziert würde.

Beim 2,2V Spannungsteiler ist zu erkennen, das der ADC2-Eingang eine 
negative Spannung von 3,11V erhalten würde, wenn die Schottky-Diode 
nicht da wäre.
Jetzt weiß ich nicht genau wie die Eingangsschutzbeschaltung von einem 
AVR-ADC-Eingang aussieht. Ich dachte bisher immer dieser wäre mit zwei 
Dioden, wo jeweils eine gegen Plus und GND, so verschaltet ist, wie in 
dem Schaltbild ( Dioden habe ich eingezeichnet ). Somit würde die 
Schottky-Diode parallel zur GND-Diode vom ADC-Eingang sein.
Würde nicht evtl. trotzdem der Strom eine von den beiden Dioden 
zerstören können ?

Ein Vorwiderstand würde dies sicher verhindern, doch wonach muß man den 
Dimensonieren ? Sicher ist zu beachten, das die nachfolgende Sample and 
Hold Stufe dadurch auch beeinflußt wird.

>
> Es gibt keine leichter zu lernende Hochsprache als Basic. Assembler geht
> für so etwas vom Aufwand gar nicht. Das nimmt man nur für zeitkritische
> Teile oder wo man jedes Byte sparen muss. Assembler kann man dazu
> überall in Bascom einbetten.
>
So hab ich es auch mal gelernt, daher stammt ja auch irgendwie die 
Abkürzung BASIC her. Einige Leute machen in Assembler ganz schon 
heftige Klamotten, aber im Prinzip hast Du recht.


http://s-huehn.de/elektronik/

Dort das Projekt : Temperatur-Messsystem


>
> Wenn man einen Wert in einem Byte speichern will, dann multipliziert man
> ihn mit einem Faktor, so dass der Maximalwert zu 256 wird. Z.B.
> Umax*Faktor=256, also Faktor=256/Umax. So multipliziert man jedes
> gemessene U mit Faktor und packt es in den Byte-Speicher. Damit ist der
> Seicherwert nur auf 1Bit genau. Das ist die Quantisierung, also
> Umax/256.
>
Ich raffe es leider immer noch nicht.
Den AVR-ADC-Wert kann man ja als 8-Bit oder 10-Bit Wert auswerten.

Stichtwöter :
ADC Multiplexer Selection Register ( ADMUX )
ADC Left Adjust Result             ( ADLAR ) ( Bit im ADMUX-Register )

Warum muss man den dann noch " Quantisieren ", man könnte den ADC dann 
doch sofort so einstellen, das er mit einem 8-Bit Wert arbeitet und 
nicht mit 10-Bit ?


Quelle vom veränderten Bild der ADC-Eigangsbeschaltung :

http://www.avr-modelleisenbahn.de/controller/atmega8/18-4-1-schaltung-analog-eingaenge-atmega8.htm


Bernd_Stein

: Bearbeitet durch User
von Hermann (Gast)


Lesenswert?

Bernd Stein schrieb:
> Somit würde die
> Schottky-Diode parallel zur GND-Diode vom ADC-Eingang sein.
> Würde nicht evtl. trotzdem der Strom eine von den beiden Dioden
> zerstören können ?

Die internen Schutzdioden können maximal 1mA und zusätzlich dürfen sie 
maximal 0,5V haben (Datenblatt: absolut maximum rating). Wenn man aber 
1mA durch die Diode schickt, hat sie mehr als 0,5V (gemessen). Man muss 
also auf beides achten. Ich begrenze deshalb vorsichtshalber auf weit 
unterhalb 1mA oder nehme eine Schottky-Diode.

Bernd Stein schrieb:
> Warum muss man den dann noch " Quantisieren ", man könnte den ADC dann
> doch sofort so einstellen, das er mit einem 8-Bit Wert arbeitet und
> nicht mit 10-Bit ?

Wenn man mit dem Messwert nichts weiter macht, als den Rohwert zu 
speichern, ist das ok. In der Regel muss man aber noch einiges rechnen 
und da sollte man keine Bits verschenken. Ich mache als erstes die 
Umrechnung in den physikalischen Wert (z.B. Spannung) und das als 
Real-Zahl. Dann schicke ich alle Messwerte durch einen Tiefpass-Filter. 
Damit wird sogar noch etwas Genauigkeit gewonnen, da das letzte 
klappernde Bit noch gewichtet wird. Dann kommt die Kapazitätberechnung, 
Gradientenberechnung, Grenzwert-Check usw.
Erst ganz am Schluss kommt die Skalierung zur Speicherung im Byte. Das 
würde man sich sparen, wenn man nicht mit dem Speicherplatz geizen muss. 
Ich hatte genau 1440 Byte dafür übrig. Die Speicheung geschieht in einem 
Ringspeicher, wenn er überläuft sind immer die letzten Zeitscheiben 
gespeichert.

von Bernd S. (Firma: Anscheinend Corner-Cases ;-)) (bernd_stein)


Lesenswert?

PUSH

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.