Benachrichtigungen
Alles löschen

[Oben angepinnt] Gebrauchte Fahrzeug-Akkus testen: Akkudoktor-EOS/OBDJuicIR

17 Beiträge
7 Benutzer
6 Reactions
633 Ansichten
drbacke
(@drbacke)
Mitglied Admin
Beigetreten: Vor 6 Jahren
Beiträge: 1119
Themenstarter  

Diskussion, Hilfe und Weiterentwicklung zum vorgestellten IR/SOH Tool

https://github.com/Akkudoktor-EOS/OBDJuicIR

Ich selbst kann leider nur sehr eingeschränkt weiterentwickeln und bin daher auf eure Mithilfe angewiesen.

 

Viele Grüße
Andreas


   
mimamel and E-t0m reacted
Zitat
(@fortrieb)
Vorsichtiger Stromfühler
Beigetreten: Vor 2 Monaten
Beiträge: 6
 

Hallo,

ich habe ein paar Änderungen zur installation der Python-Abhängigkeiten ergänzt. Siehe Pull-Request bei Github.

In einem weiteren Beitrag hier im Forum wird auch schon nach Möglichkeiten gefragt, wie man andere Daten in das Skript importiert kann. Sobald dort Daten von Nutzern vorliegen könnte man einen Importer erstellen, der die Daten entsprechen aufbereitet.

Etwas Zeit daran mitzuwirken könnte ich aufbringen.

Diese r Beitrag wurde geändert Vor 2 Monaten von Fortrieb

   
mimamel reacted
AntwortZitat
E-t0m
(@e-t0m)
Autarkiekönig
Beigetreten: Vor 2 Jahren
Beiträge: 829
 

Veröffentlicht von: @drbacke
...bin daher auf eure Mithilfe angewiesen. 
Ich werde in absehbarer Zeit gerne testen und ggf. Fixes / Verbesserungen beitragen.

 

klick: meine flexible high-end cheap-tech Nulleinspeisung mit teuer-Strompreis-Eigenverbrauch klick: Tasmota Timer mit Tibber stellen


   
mimamel reacted
AntwortZitat
drbacke
(@drbacke)
Mitglied Admin
Beigetreten: Vor 6 Jahren
Beiträge: 1119
Themenstarter  

Danke euch und die Ideen klingen sehr gut👍

Richtig geil wäre auch eine Erfahrung/Testdatenbank. Dann könnte man die Ergebnisse besser beurteilen.

Viele Grüße
Andreas


   
mimamel reacted
AntwortZitat
(@mimamel)
Vorsichtiger Stromfühler
Beigetreten: Vor 2 Monaten
Beiträge: 6
 

Ah, hier geht es weiter. HIer bin ich ja im richtigen Faden. Ich kann Euch gerne die Daten vom 82kWh Akku 96S3P der MEB Plattform (ID.3, ID.4, Enyaq) zur Verfügung stellen inklusive einer umfangreichen Testfahrt von 100% auf, ich glaube 6% inkl. einmal kurzes Zwischenladen. Ich hatte vor 2 Wochen nämlich die gleiche Idee mal den Innenwiderstand zu berechen. Meine Aufzeichnung lässt sich in den Python Scripten aber nicht verarbeiten, auch wenn Pandas funktioniert (Die Pre-Requisites von @Fortrieb haben funktioniert). Ich habe dann noch die PIDs im Programm auf die Namen meiner Datei angepasst, aber an irgendetwas scheitert es. Evtl. Sonderzeichen oder so.

Die MEB Plattform hat sicher eine gewisse Bedeutung. Nur kann kann ich hier nichts hochladen.

Diese r Beitrag wurde geändert Vor 2 Monaten von mimamel

   
AntwortZitat
DaDeppa
(@dadeppa)
Vorsichtiger Stromfühler
Beigetreten: Vor 2 Jahren
Beiträge: 118
 

Hallo zusammen, 

habe heute aus meinem Kona die Daten ausgelesen, die sehen leider etwas anders aus. Könnt ihr mir sagen, wie ihr die Daten aufgezeichnet habt und mit was für einem Endgerät und Dongle?

Mein Setup: Hyundai Kona 2021 FL 39.2 kWh, Car Scanner (free, nicht pro), Android 14, OBDLink CX

Ich gehe im Hauptmenü oben rechts auf "Sensoren" und er fängt sofort mit dem Logging an, es wird aber je Datenpunkt eine Zeile geschrieben, ähnlich wie eine plain data db:

(habe die Daten entfernt, das zerschießt meinen Beitrag, hier ein Beispiel, wie meine PIDs heißen:
[BMS] Battery Current
[BMS] CALC Average Battery Module Temperature
[BMS] State of Health)

Ich vermute, ihr geht über die Live Daten oder das Dashboard?

Bereite die jetzt mal schnell händisch auf, damit ich das testen kann. Allerdings habe ich noch Probleme bei der Zellenrecherche ... es gibt seltsamerweise nur sehr spärliche Daten über den Akku...

Melde mich gleich mit aufbereiteten Daten!

Edit: Anbei die aufbereiteten Daten, ich gehe jetzt auf Jagd nach den Akku / Zellen Daten. Da das BMS auch die Einzelzellspannungen ausgibt, gehe ich von 90 Zellen in Reihe aus. Allerdings ergab meine Recherche bisher 88s2p als Konfiguration... sehr seltsam.

 

Diese r Beitrag wurde geändert Vor 2 Monaten 4 mal von DaDeppa

   
AntwortZitat
(@mimamel)
Vorsichtiger Stromfühler
Beigetreten: Vor 2 Monaten
Beiträge: 6
 

Jetzt lade ich hier mal meine Daten hoch. Es hat wirklich geklappt. Ich konnte das Tool nutzen und die Daten von meinem Auto auswerten.

Es handelt sich um einen Enyaq iV 80 aus der VW-MEB Plattform mit 82 kWh Akku von LG. Es ist der Akku mit weniger Leistung, soll heißen die Allradvarianten haben einen anderen Akku (CATL). Der Akku hat eine Bruttoenergie bei 96s3p basierend auf den Zellen von 82.44 kWh. Die Nettoenergie wird vom VW-Konzern mit 77 kWh angegeben. Wobei die Anzeige von 0 bis 100% nur 72 kWh aktiv nutzt. Das kann man sehr deutlich an den SoC Werten vom BMS (interner Wert) und der Anzeige sehen.

Mein km-Stand liegt bei fast 50.000 km nach 13 Monaten. Der SoH liegt bei ausgerechneten 98,8%. Das ist ein so extrem guter Wert, dass ich dies nochmal gesondert überprüfen muss. Das kann eigentlich kaum sein. Sei es drum, die Messfahrt waren 368 km über 4,75h. War eine elende Streckte auf der A1 zum Ferienstart in NRW mit echt viel Stau und auch etwas Standzeit bei Osnabrück. Zwischendrin habe ich kurz 20% nachgeladen. Ich bin mit 100% (Anzeige) und 95,6% (BMS) gestartet und 6% (Anzeige) und 11,2% (BMS) angekommen.

Da die MEB Plattform andere PID ausgiebt habe ich das Script angepasst. Ich habe es zusammen mit meinen Messdaten hier abgelegt. Beides gezippt, wegen Größe und Dateibeschränkung im Forum

 Das Ergebnis ist dann meine "test_data.csv". Hier habe ich die Überschriften noch angepasst, damit das ir.py Skript läuft. Wegen Größe gezippt abgelegt

 Wenn ich das dann durch den ir.py schicke (cell = 96 und shreshhold 1.48) dann kriege ich die netten Diagramme. Alle Innenwiderstände liegen übrigens unter dem Grenzwert.

 

Wenn ich etwas falsch gemacht habe, dann gerne kommentieren. Ansonsten bin ich erstmal zufrieden mit dem Ergebnis und bin extrem positiv von meinem Enyaq überrascht. Ich hatte deutlich schlechteres erwartet.

Danke an @drbacke. Andreas, Dein Tool ist echt Spitze. Vor allem die Datenbearbeitung mit Pandas. Hatte ich vorher nie genutzt (ich bin wahrscheinlich zu alt, um das zu kennen). Ich muss mich da mal etwas mehr einlesen.

Diese r Beitrag wurde geändert Vor 2 Monaten von mimamel

   
E-t0m reacted
AntwortZitat
DaDeppa
(@dadeppa)
Vorsichtiger Stromfühler
Beigetreten: Vor 2 Jahren
Beiträge: 118
 

Hallo zusammen, 

ich habe meine Daten nun so aufbereitet, dass es funktioniert. Das ganze habe ich mit Hilfe eines python Skripts gemacht, bei dem ChatGPT tatkräftig unterstützt hat (95% O:) ).

Damit ist es nun möglich, in der Free Version vom Car Scanner oder irgend einem anderen Logger, der die Daten im gleichen Format schreibt, die Daten so aufzubereiten, dass diese in Andreas Tool "passen". 
Dazu bin ich im Car Scanner auf "Sensoren" gegangen und habe dort unter Filter den Haken bei "Nur sichtbare Sensoren aktualisieren" entfernt. Damit hat er bei mir sofort das Logging begonnen. Wichtig ist, dass man beim Beenden des Loggings die Verbindung zum Dongle trennt, dann schreibt er wohl erst die Record-Datei. 
Die CSV habe ich dann über Langdruck auf den Dateinamen in das CSV #1 Format exportiert und lege diese in den Ordner mit meinem python Skript. Beim ersten Mal solltet ihr nur einen Auszug aus dem recording nehmen, denn er scannt jetzt erst einmal nach Unique vorkommenden PIDs:

Jede gefundene PID bekommt anschließend eine Nummer und er fragt euch, welche Nummer die Bezeichner aus Andreas Tabellenkopf sind. Diese muss man leider händisch suchen und verknüpfen - das muss man aber nur einmal machen, dann hatte ich keinen Bock mehr, das jedes Mal einzugeben und Chat GPT hat die Teile in einer JSON gespeichert... Grin Anschließend fragt er euch nach der Log-CSV vom Car Scanner:

Er legt dann zwei neue CSV im Verzeichnis ab: Einmal eine gefilterte Version eures Inputs und einmal die dormatgewandelte CSV, die wir für Andreas Skript brauchen. Feddisch ist Smile

 

Soviel zum Log-Daten Wandeln / Erstellen mit der Freeware der Car Scanner Software. Leider habe ich immer noch keine Ahnung, wie mein Kona Akku aufgebaut ist :-/

Viele Grüße, 

Andreas


   
AntwortZitat
(@mimamel)
Vorsichtiger Stromfühler
Beigetreten: Vor 2 Monaten
Beiträge: 6
 

Irgendwie ist hier ja nicht so richtig etwas los. Das IR/SOH Tool ist wohl doch für viele nicht so interessant oder vielleicht eher zu kompliziert? Schade eigentlich. Hätte gerne weiter dran gearbeitet.


   
AntwortZitat
(@klarglas)
Newbie
Beigetreten: Vor 2 Jahren
Beiträge: 2
 

Hallo zusammen,

ich kann auch ein paar Daten und Auswertungen beitragen. Folgende Eckdaten:

  • Audi E-tron 55 Bj 2020 70tkm
  • Zellen LG Chem E66A (leider konnte ich bisher kein Datenblatt mit IR finden)
  • Verschaltung in Modulen zu 4p3s in Summe 108 Zellen in Reihe

Jetzt zu meinen Arbeitsannahmen, da ich kein passendes Datenblatt gefunden habe, habe ich versucht über "ähnliche" Zellen auf einen Innenwiderstand zu kommen. Was ich gefunden habe sind ca. 1mOhm, in meiner 4p Verschaltung ergibt ergibt sich somit 0,25mOhm auf Zellebene.

Die Fahrstrecke bei mir waren 80km wobei ich auf der Autobahn mehrmals voll beschleunigen konnte und somit hohe Stromwerte erreichen konnte (meine Meinung nach sind vor allen diese aussagekräftig). Werte ich die Plot "händisch" aus, d.h. schaue ich mir den Spannungseinbruch bei hohen Strömen an, errechnet sich ein recht passender Innenwiderstand zu den theoretischen 108*0,25mOhm = 27mOhm. Bei einen Strom von knapp 1000A beträgt der Spannungseinbruch ca. 30V was ca. 30mOhm entspricht.

Anbei die Plots vom Skript.

 


   
AntwortZitat
(@klarglas)
Newbie
Beigetreten: Vor 2 Jahren
Beiträge: 2
 

Veröffentlicht von: @dadeppa

Leider habe ich immer noch keine Ahnung, wie mein Kona Akku aufgebaut ist :-/

Link entfernt

Hilft das vllt weiter?


   
AntwortZitat
(@stan161)
Vorsichtiger Stromfühler
Beigetreten: Vor 2 Jahren
Beiträge: 10
 

Hallo, 

ich würde das Tool auch gerne nutzen, da bei uns auch die Anschaffung eines gebrauchten EV ansteht. Es ist allerdings für mich zu kompliziert, ich brauche eure Hilfe.

Ich hab die neuste Version von Python installiert, bei Windows PowerShell "python -m venv venv" eingegeben, anschließend ".\venv\Scripts\activate.ps1" (Execution_Policies geändert) und nun wenn ich "pip install -r requirements.txt" eingebe, kommt "ERROR: Could not open requirements file: [Errno 2] No such file or directory: 'requirements.txt'".

Also habe ich die requirements alle mit "pip install" installiert. Hat funktioniert. 

Wenn ich nun " python .\ir.py --data_path="test_data.csv" --threshold=0.99 --cells=96" eingebe, kommt "C:\Users\ACDC\AppData\Local\Programs\Python\Python312\python.exe: can't open file 'C:\\Users\\ACDC\\ir.py': [Errno 2] No such file or directory".

 

Ich bin kein Informatiker und habe so etwas noch nie gemacht. Was mache ich falsch? Muss ich die Daten woanders abspeichern, dass das Programm die findet? Muss ich die umwandeln? Ich weiß nicht weiter...

 

Danke jetzt schon für eure Hilfe!!!

 

 


   
AntwortZitat
DaDeppa
(@dadeppa)
Vorsichtiger Stromfühler
Beigetreten: Vor 2 Jahren
Beiträge: 118
 

@stan161 Versuche mal den Pfad der Python Datei direkt anzugeben oder aus dem Ordner heraus starten. Am einfachsten: Im Windows Explorer zu dem Ordner navigieren, in dem die ir.py Datei liegt. Dann gibst du oben in der Adressleiste (wo "C:\Pfad\zum\Ordner" steht) einfach "cmd" ein, das öffnet die Konsole in diesem Ordner. Am besten dann noch deine CSV Datei in den gleichen Ordner kopieren und dann in der CMD folgendes eingeben:

python ir.py --data_path="test_data.csv" --threshold=0.99 --cells=96

Das sagt Python, dass in dem Ordner die ir.py ausgeführt werden soll, erwartet dann aber auch, dass die "test_data.csv" ebenfalls dort liegt.


   
AntwortZitat
(@stan161)
Vorsichtiger Stromfühler
Beigetreten: Vor 2 Jahren
Beiträge: 10
 

@dadeppa Super, vielen Dank! Das hat geklappt!

Ich habe heute von einem bekannten einen e-Up! testgefahren und über OBD Werte gesammelt. Die Werte habe ich dann so wie die test_data von Andreas aufbereitet. Leider hat mir das Programm nur einen Fehler geschmissen. Irgendwann habe ich herausgefunden, dass das Programm mindestens rund 2600 Werte haben möchte. Also habe ich meine ca 800 Werte markiert und mit Excel in die länge gezogen. Jetzt spuckt er mir auch die ersten beiden Diagramme aus, aber leider nicht alle 5.... Das zeigt CMD an (steht unten in kursiv). Könnt ihr mir da weiterhelfen? Muss ich einfach eine längere Testfahrt machen, dass er vernünftige Werte bekommt?

 

Mit den test_data von Andreas hat es problemlos funktioniert, auch mit den aufbereitet_daten von DaDeppa.

 

Meine Daten füge ich mal mit bei.

 

C:\Users\ACDC\Downloads\OBDJuicIR-main\ir.py:127: SettingWithCopyWarning:
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
load_data['Resting voltage'] = np.interp(load_data['Battery State of Charge'], soc_vs_resting_voltage.index, soc_vs_resting_voltage_smoothed)
C:\Users\ACDC\Downloads\OBDJuicIR-main\ir.py:128: SettingWithCopyWarning:
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
load_data['Internal resistance'] = (load_data['Resting voltage'] - load_data['Battery voltage']) / load_data['Battery current']
C:\Users\ACDC\Downloads\OBDJuicIR-main\ir.py:129: SettingWithCopyWarning:
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
load_data['Internal resistance (mOhm)'] = np.abs(load_data['Internal resistance']) / args.cells * 1000 # Umrechnung in mOhm und Normalisierung auf die Zellenzahl
C:\Users\ACDC\Downloads\OBDJuicIR-main\ir.py:130: SettingWithCopyWarning:
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
load_data['Internal resistance (mOhm)'] -=cable_bms_ir
C:\Users\ACDC\Downloads\OBDJuicIR-main\ir.py:134: SettingWithCopyWarning:
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
load_data['Discharge rate'] = np.abs(load_data['Battery current'])
C:\Users\ACDC\Downloads\OBDJuicIR-main\ir.py:136: SettingWithCopyWarning:
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
load_data['Discharge rate bin'] = discharge_rate_bins
C:\Users\ACDC\Downloads\OBDJuicIR-main\ir.py:139: FutureWarning: The default of observed=False is deprecated and will be changed to True in a future version of pandas. Pass observed=False to retain current behavior or observed=True to adopt the future default and silence this warning.
probabilities = load_data.groupby('Discharge rate bin')['Internal resistance (mOhm)'].apply(lambda x: np.sum(x < threshold) / len(x))
C:\Users\ACDC\Downloads\OBDJuicIR-main\ir.py:139: RuntimeWarning: invalid value encountered in scalar divide
probabilities = load_data.groupby('Discharge rate bin')['Internal resistance (mOhm)'].apply(lambda x: np.sum(x < threshold) / len(x))
C:\Users\ACDC\Downloads\OBDJuicIR-main\ir.py:156: FutureWarning: The default of observed=False is deprecated and will be changed to True in a future version of pandas. Pass observed=False to retain current behavior or observed=True to adopt the future default and silence this warning.
for name, group in load_data.groupby('Discharge rate bin'):
Traceback (most recent call last):
File "C:\Users\ACDC\Downloads\OBDJuicIR-main\ir.py", line 159, in <module>
threshold_value = sorted_resistances[threshold_index]
~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^
IndexError: index 0 is out of bounds for axis 0 with size 0   


   
AntwortZitat
(@fortrieb)
Vorsichtiger Stromfühler
Beigetreten: Vor 2 Monaten
Beiträge: 6
 

Veröffentlicht von: @mimamel

Irgendwie ist hier ja nicht so richtig etwas los. Das IR/SOH Tool ist wohl doch für viele nicht so interessant oder vielleicht eher zu kompliziert? Schade eigentlich. Hätte gerne weiter dran gearbeitet.

Ich bin an der Entwicklung weiterhin interessiert, nur stehen mir dafür nur einige Stunden im Monat zur Verfügung. Bin aktuell dabei den Quellcode etwas besser zu strukturieren, so dass die Weiterentwicklung einfacher wird.

 

Diese r Beitrag wurde geändert Vor 3 Wochen von Fortrieb

   
AntwortZitat
Seite 1 / 2
Teilen: