Batterietester für NiMh und LiIon mit AVR-DOS Datenlogger

    This site uses cookies. By continuing to browse this site, you are agreeing to our Cookie Policy.

    • Batterietester für NiMh und LiIon mit AVR-DOS Datenlogger

      Hier möchte ich euch ein abgeschlossenes Projekt vorstellen, aus der Not geboren und zeitlich getrieben....

      Man hätte das Programm durchaus noch schöner schreiben können. Und auch beim mechanischen/elektrischen Aufbau gäbe es noch Luft nach oben.

      Egal, fertig, läuft. Bleibt so.

      Ich weiß nicht warum aber die ganze Nachbarschaft, Verwandtschaft kommt zu mir und fragt mich: Du, ist der Akku noch gut?
      So häufen sich also Unmengen an Rundzellen in AA, AAA, 18650er und weiß der Geier noch alles bei mir im Keller und warten auf Analyse.

      War mir jetzt zu blöd und hab deshalb einen Datenlogger gebaut der die Entladekennlinie der Zellen mitschreibt und auch die wesentlichen Kenngrößen an einem LCD-Display anzeigt.
      Ja ich weiß. Kann man kaufen. Wollte ich aber nicht, hab den ganzen Kleinkram dazu im Keller und weil Weihnachten ja heuer eh nix los ist mit Skivergnügen, na ja, ist halt so.


      Was soll der Tester können:
      a) LiIon (4,2V) und NiMH (1,2V) automatisch erkennen
      --> Arduino-Nano, Last via FETs schalten
      b) Entladen zur definierten Entlade-Schlußspannung
      --> Verheizen über Widerstände
      c) Echtzeituhr
      --> DS3231 triggert via Interrupt
      d) Erfassen Spannung, Strom
      --> INA 218 liefert diese Werte
      e) Mitschreiben der Daten auf SD-Karte
      -->SD-Cardreader und AVR-DOS
      ---> 1) Zeit Sek
      ---> 2) Spannung V
      ---> 3) Strom mA
      ---> 4) Leistung mW
      ---> 5) Energie mWh
      ---> 6) Kapa mAh
      f) Anzeige der Kerndaten auf LCD-Anzeige
      --> Übliche 2x16er
      g) Einknopfbedienung
      h) und billig.

      Anregungen und Hilfe dazu gabs hier:

      Zum INA219
      bascomforum.de/lexicon/index.p…y/118-ina219-stromsensor/
      elektron-bbs.de/elektronik/projekte/avr/netzteil/index.htm

      zum DS3231:
      Stefans Buch „Uhr_mit_DS1307_mega8“
      @Stefan, habs schon viele Jahre, nehm ich immer noch gerne in die Hand

      Zum AVR-DOS:
      bascomforum.de/index.php?thread/1200-avr-dos-code-beispiel/


      Stellen der RTC ist ja nur sehr selten notwendig, das Menü dazu habe ich mir gespart.

      Stattdessen sucht AVR-DOS beim Programmstart die „Time.txt“.
      Falls vorhanden wird diese ausgelesen, die RTC gestellt und anschließend die Datei gekillt.


      Was ich noch nicht verstanden habe ist die Kompatibilität der SD-Karten am AVR-DOS.
      Manche Karten gehen, manche nicht. Kann man formatieren wie man will.
      Und Karten die schon mal funktioniert haben wollen beim nächsten mal nicht mehr.
      Am PC gehen sie alle.
      Egal, habe 2 Karten die tun und das reicht mir erstmal.
      Auf eine der beiden 512MB Karten bringe ich grob gerechnet 5000 Messungen, hätte ich Jahre zu tun.

      Zum Stellen der Uhr
      Time.txt

      Sourcen komplett (sind > 10000 Zeichen, bringe ich nicht in CodeTags...)
      Akkutester_20201212.bas
      Config_MMCSD_HC_mini_328p.BAS
      CONFIG_AVR-DOS.bas

      So sieht eine Messwert-Datei aus
      EBL_13.TXT

      Uns so das Schaltbild
      Akkutester.pdf
    • Pluto25 wrote:

      Denkbar das Du sie zu schnell ansprichst. Manche reagierten erst bei halber Geschwindigkeit.

      Dann ist da noch ein Sondertyp der nur mit Avr-Dos arbeitet aber nicht unter Windows ?(
      @Pluto25, wo würdest du da ansetzen? Den Takt runter?


      In der Online-Hilfe von mcselec ist das zu finden:
      -------------------------
      It is very important to use a proper level converter when using high clock rates (above 8 MHz). When using a FET/resistor as a level converter make sure there is enough pull up for a proper clock pulse.
      ----------------------
      Ich werd erst mal den Levelshifter untersuchen was da so verbaut ist und den Oszi dranhängen

      Und auch da kann man nochmal ansetzen. Das hab ich noch nicht probiert
      --------------------
      Formatting
      It turns out that using windows to format a memory card can lead to problems. It is strongly advised to use the special format tool from sdcard.org !
      You may download it here : sdcard.org/downloads/formatter_4/
      It is important to set the 'Overwrite Format' option.
      It seems amazing that windows format (quick or full) can give other results but it was extensively tested.
      ---------------------
    • Riedleweg wrote:

      Den Takt runter?
      special format tool
      Ja, Clockrate=8 könnte gehen. Bei mir hatte er nur 8Mhz und dennoch versagten einige bei Spsr.0=1.
      Leider ging "if lesbar = 0 Then Spsr.0 = 0 'Normal Speed falls nicht ansprechbar" nicht. Sie wurde erst nach neu stecken wieder ansprechbar.

      Soweit habe ich nicht gelesen. Ein einfaches Quick Format unter Windows machte keine Probleme.
    • Ich habe mir das PDF aus Post #5 angesehen.

      Die rote Kennlinie ist ja die aufaddierte Akku-Kapazität, die sich aufgrund den aktuellen Stroms und der vergangenen Zeit zur vorherigen Messung ergibt.
      Soweit alles gut und nachvollziehbar.

      Aber wenn zum Ende der Akku-Kapazität die Akkuspannung abfällt, müsste auch der Laststrom abfallen (bei konstantem Last-Widerstand).
      D.h. es müsste die Kurve flacher werden und nicht steiler. (Bei Strom 0A (Akkuspannung 0V) wird nichts mehr aufaddiert)

      Ist da noch ein Fehler?
    • Das wird schwierig denn eine klare Aussage gut/schlecht wird sich schwer treffen lassen.

      Kommt ja immer drauf an was an den Zellen dran hängt.
      Ein Akkusatz der im Modellauto des Buben schlapp macht kann in der Solarlampe im Garten durchaus noch Jahre halten.
      Oder mit einem "weichen" Akku der im Garmin versagt läuft die Wanduhr noch locker eine Weile.
      Mit welcher Minimalspannung kommt das angeschlossene Gerät noch klar?

      Ich seh schon, alleine mit der Erfassung einer Kapa oder Energiemenge ist es nicht getan. Der Teufel steckt in der Auswertung der Daten wenn man wirklich in die Tiefe gehen will.

      Und dass die tatsächlich ermittelten Daten selten mit dem Aufdruck auf einer Zelle übereinstimmen ist eine bekannte Tatsache. Der Hersteller hat Laborbedingungen die in der Realität kaum anzutreffen sind.

      Für die schnelle Selektion gut/schlecht reicht mir erstmal eine grobe Einteilung 75%/50%/25% des aufgedruckten Wertes.
      Bei < 50% wäre das bei mir ein Fall für die Sammelbüchse Wertstoffhof.

      Erst mal muss ich die Bugs beseitigen dann mach ich mir da Gedanken.
    • Ich denke der Innenwiderstand spielt da auch eine entscheidende Rolle.
      Angenommen der Ri ist relativ hoch, dann laufen Geräte, die wenig Strom brauchen, durchaus ohne Probleme.
      Nimmt man den gleichen Akku bei Anwendungen, die deutlich mehr Strom brauchen, bricht die Akkuspannung ein und das Gerät arbeitet vielleicht nicht mehr.

      Und genauso ist es mit dem Lade und Entladestrom. Wenn du verschiedene Lade oder Entladeströme beim gleichen Akku ausprobierst, wirst du unterschiedliche Akku-Kapazitäten messen. Bei großen Entladeströme wird der Entladevorgang früher abgebrochen als mit kleinem Laststrom, da der Spannungsabfall am Ri nicht berücksichtigt ist. Beim Laden mit größerem Ladestrom ist die Ladeschlussspannung eher erreicht als bei kleinem. Der Akku ist u.U. noch gar nicht richtig voll.

      Da kann man auch mal drüber nachdenken.
      Vielleicht ist es eine gute Idee, den Strom zu Messen, dann den Lade- oder Entladestrom kurz zu unterbrechen für eine Spannungsmessung am Akku. So wäre der Ri außen vor und die Kapamessung (Kennlinien) müsste bei verschiedenen Strömen besser zusammen liegen. Wie gesagt, das betrifft Akkus, die schon einen etwas höheren Ri haben.

      Normal sollte der Ri 0,0x Ohm haben. Ältere Akkus können auch schon mal 1-5 Ohm haben. Zumindest hatte ich schon solche Kandidaten bei mir.

      The post was edited 1 time, last by Mitch64 ().

    • So, Nacharbeit erledigt.

      1) Die Formel zum Aufaddieren Q stimmt jetzt

      2) Erkennung SD-Karten.
      Der LevelShifter wars nicht, der Oszi zeigt saubere Flanken.
      Die Taktraten waren es auch nicht. Ich habe auch die originale Config_MMC.bas eingesetzt,keine Änderung

      Aber was ich herausgefunden habe:
      "normale" SD-Karten bis von 128MB-1GByte funktionieren einige.
      "MicroSD-Karten" im Adapter 256MB-1GByte funktioniert keine einzige.

      Ist mir jetzt egal, ich habe einige Karten die verwendbar sind und das reicht mir.

      3) Bestimmung Innenwiderstand der Zelle.
      Ich bin dem Rat von @Mitch64 gefolgt und habe das implementiert.
      Zwei Methoden, das Ergebnis war das gleiche
      a) zyklisch den zweiten FET durchgesteuert und die Zelle damit höher belastet. Berechnung Ri=Delta U / Delta I
      b) zyklisch die Last abgeschaltet und die Zelle entlastet. Bei dieser Methode bleibe ich. Ich denke daß die Gesamtmessung über den gesamten Zeitverlauf nicht so beeinflußt wird.

      Ist jetzt so eingestellt dass alle 30 Sekunden die Messwerte auf Karte geschrieben werden und alle 300 Sekunden der Innenwiderstand bestimmt wird.
      Im Anhang ist ein Vergleich einer "alten" bereits schwachen Zelle mit einer "fabrikneuen"

      Der Unterschied im Ri ist klar erkennbar, etwas nachgearbeitet in ROT und GRÜN sind jeweils die Mittelwerte aller Ri-Messungen über die gesamte Messdauer.
      Da werde ich jetzt Erfahrungen sammeln.

      Vergleich_NoName_EBL.pdf


      Und auch die finalen Sourcen
      Akkutester_20201222_final.bas

      Config_MMC.bas

      CONFIG_AVR-DOS.bas
    • Das sieht doch schon ganz gut aus mit den Kennlinien. Die Beschriftung der Achsen würde die Lesbarkeit verbessern.

      Mir ist da noch was aufgefallen. Eigentlich logisch, aber an den Kennlinien sieht man es schön.
      Der "Gute" Akku bricht am Anfang zunächst ein und hält dann die Spannung recht gut bei ca. 1,2V (Nennspannung).
      Bei dem 2. Akku, der schlechter ist, ist dieser Bereich der Spannung bei knapp 1,1 Volt. Also 0,1V tiefer.
      Der Unterschied liegt wohl im Ri begründet.

      Wenn man jetzt die Kapa des Akkus's in mAh angibt, spielt die 0,1V weniger wohl nicht so die große Rolle.
      Würde man aber die Kapa in mWh angeben wollen, dürfte das Ergebnis deutlicher werden, weil da die Spannung mitgerechnet wird.

      So ein Experiment könnte man ja mal machen, indem man einen Akku 1x misst mit einem zusätzlichen Vorwiderstand (1Ohm) und 1x ohne den Widerstand.
      Die Akku-Spannung wird dann inklusive dem Abfall an dem 1 Ohm Widerstand gemessen. So dürften unterschiedliche Ergebnisse heraus kommen, obwohl der Akku der selbe ist.
      Man könnte jetzt noch unterschiedliche Ladeströme ausprobieren. Wäre mal interessant zu sehen, wie die Abweichungen sind.

      Ansonsten ein schönen Projekt!
    • Mal ein kurzer Erfahrungsbericht nachdem ich etwa 50 Zellen durch habe.

      Die Ermittlung des RI erweist sich mehr und mehr als wichtiges Kriterium eine Zelle auszusondern.

      Ich habe einige Zellen gefunden die reproduzierbar einen extremen Anstieg des RI zum Entladeschluß zeigen.
      Die Kapa in mAh als Vergleichswert wäre nicht so schlecht gelegen aber der RI-Anstieg läßt damit betriebene Geräte abrupt ausfallen.
      Ohne die RI-Bestimmung wäre diese Zelle in der Kiste '"bedingt verwendbar gelandet". Jetzt liegt sie im "Wertstoffhof".

      Bildchen dazu, eine "gute" Zelle zeigt beim RI-Verlauf einen fast linearen Verlauf bis zum Erreichen der Entlade-Schluß-Spannung.

      RI_Eneloop.jpg
    • New

      Das überrascht mich jetzt, dass der Innenwiderstand des Akkus abhängig vom Ladezustand sein soll.
      Ich würde jetzt erwarten, dass der immer gleich ist, und natürlich ermittelt man den nicht bei einem leeren Akku.

      Aber vielleicht irre ich mach ja auch. Aber gehört habe ich nie was, dass dich der Innenwiderstand während eines Entladezyklusses so verändert.

      Viellöeicht weiß ja jemand besser Bescheid.
    • New

      Mitch64 wrote:

      Ich würde jetzt erwarten, dass der immer gleich ist, und natürlich ermittelt man den nicht bei einem leeren Akku.
      Wenn er immer gleich wäre, dann wäre der Ladezustand doch egal?

      Der Innenwiderstand nimmt bei gleicher Belastung natürlich zu, woher sollte denn sonst der Spannungseinbuch beim Entladen herkommen?

      Hier gibt es 2 Beispiele:
      de.wikipedia.org/wiki/Ausgangs…tischen_Innenwiderstandes