ElectricMotorcycleForum.com

Makes And Models => Zero Motorcycles Forum | 2013+ => Topic started by: Keith on November 24, 2017, 11:54:02 PM

Title: Cable to access BMS Diagnostic Port
Post by: Keith on November 24, 2017, 11:54:02 PM
I have successfully connected to the BMS using a modified version of the ODB serial cable described in this thread http://electricmotorcycleforum.com/boards/index.php?topic=4296.0

EDIT: New drawing to clearly show the pinout. PDF version has links.

The BMS connector is tiny. I found this part that mates with it and was able to solder wires to it. http://www.mouser.com/ds/2/276/0791077003_PCB_RECEPTACLES-175725.pdf

I then used a multimeter to find the right pins for a serial connection. I found the ground pin is connected to the B- with 10 ohms. Connecting green TX to the RX pin and white RX to the TX pin got me this:

Code: [Select]
ZERO BMS> help


*************************************************************
*                      BMS Main Menu                        *
*************************************************************

  help            - Display this Help screen
  login           - Show login level, or login with password
  logout          - Log out of BMS
  version         - Display Version Information

  stats           - Display All statistics
  balstats        - Display balance statistics
  capstats        - Display capacity statistics
  set             - Show all settings, or edit a specific setting

  eventlogdump    - Display the contents of the event log
  errorlogdump    - Display the contents of the error log

  status          - Show pack status summary
  balance         - Show pack balance
  config          - Show pack configuration
  inputs          - Show all inputs
  outputs         - Show all outputs
  errors          - List all present warnings and errors

  dumpall         - Dump all data (stats, inputs, settings, and logs



ZERO BMS>

WOW!!! 8) So no more waiting for the app to maybe get bms logs. I will add this to the unofficial manual of course. This is not an easy thing to do, but yes, it can be done. Same serial setup as the OBD, 38400 8 N 1 N, no power connection.
Title: Re: Cable to access BMS Diagnostic Port
Post by: Burton on November 25, 2017, 12:05:51 AM
This looks like the same screen you get with the reaper dongle in the ODBII port :)

I am sure i don't have to tell you to be careful when setting things in there and I would suggest doing a dumpall before changing anything so you can refer back to it if something goes wrong ;)
Title: Re: Cable to access BMS Diagnostic Port
Post by: Keith on November 25, 2017, 12:32:47 AM
Yes, this is very similar to the MBB login prompt but direct to the BMS, all of the same login details. I don't think I want to change anything, but it is nice to ask it how it's doing. I may get the right parts to make a real cable. That would be just 50394-8200 pins in a 51014-0008 housing. The other four pins have 8k pullups to 3.3v, no idea what they are for, some kind of inputs I guess. And yes, caution is important, this gets very expensive fast if you do something dumb.
Title: Re: Cable to access BMS Diagnostic Port
Post by: rayivers on November 25, 2017, 06:12:26 AM
It would be great to know what the BMS 'set' submenu consists of.  If/when a 4.0 single FX brick becomes available I plan to get one if possible (it will need a reprogrammed 2014 BMS) and it'd be nice to have some idea in advance exactly what's going on, especially if someone at Zero tells my dealer it can't be done.

Ray
Title: Re: Cable to access BMS Diagnostic Port
Post by: Keith on November 25, 2017, 08:26:53 AM
I've learned that the menus change with the login level and that there are commands that work but are not on the menus. So only Zero know exactly what's going on.
Title: Re: Cable to access BMS Diagnostic Port
Post by: Keith on November 25, 2017, 07:59:13 PM
Here's what the Quiq charger does when changing from constant current to constant voltage at 100% SOC. Nice data from the BMS serial port although it took some work to filter out all of the DEBUG lines complaining about no CAN traffic.
Title: Re: Cable to access BMS Diagnostic Port
Post by: Shadow on November 25, 2017, 09:45:56 PM
Here's what the Quiq charger does when changing from constant current to constant voltage at 100% SOC. Nice data from the BMS serial port although it took some work to filter out all of the DEBUG lines complaining about no CAN traffic.
Nice! Can we infer a charging profile from this?
Title: Re: Cable to access BMS Diagnostic Port
Post by: Keith on November 25, 2017, 10:31:26 PM
Looks like we can. Interesting how the current is low resolution and noisy while the voltage data is clean. I'll do the same for the on board charger next, if I can figure out how to hook up the cable while the pack is on the bike.
Title: Re: Cable to access BMS Diagnostic Port
Post by: togo on November 27, 2017, 03:08:43 AM
K
K> > > Here's what the Quiq charger does when changing from constant current to constant voltage...

This is the Zero Quick Charger version of the Quiq charger, right?  The one sold by Zero? 

S> > Nice! Can we infer a charging profile from this?

I would think this is a good profile, but I'd also compare it to what the onboard does.

K> Looks like we can. Interesting how the current is low resolution and noisy while the voltage data is clean. I'll do the same for the on board charger next, if I can figure out how to hook up the cable while the pack is on the bike.

Yeah.  I'd de-noise the current a bit, maybe a rolling average, if building a charging control circuit. 

Title: Re: Cable to access BMS Diagnostic Port
Post by: Keith on November 27, 2017, 04:08:05 AM
I've ordered a proper connector and if I'm careful, I think I can make it low profile so it can work on the bike. There is very little clearance to the pack diagnostic cover when the packs are on the bike so a small right angle wire routing to the connector may work. Some time next week...
Title: Re: Cable to access BMS Diagnostic Port
Post by: Keith on December 05, 2017, 04:10:10 AM
Made a nice BMS cable with the proper connector. It works great but my plan to use it on the bike did not. Onboard charger will not close the contactor when the BMS is connected. The dash gives the 2-3 flashes CAN error. Can't use the OBD while charging either, more CAN trouble. So I will get the charge current versus time data for the onboard charger, but it will have to be done on the AC side, oh well.
Title: Re: Cable to access BMS Diagnostic Port
Post by: Lenny on March 25, 2018, 02:38:03 AM
I can confirm that Keiths solution works perfectly fine. I have used it a few times and played around with the BMS or pulled logs.
Title: Re: Cable to access BMS Diagnostic Port
Post by: clockfort on May 07, 2018, 01:21:36 PM
It would be great to know what the BMS 'set' submenu consists of.  If/when a 4.0 single FX brick becomes available I plan to get one if possible (it will need a reprogrammed 2014 BMS) and it'd be nice to have some idea in advance exactly what's going on, especially if someone at Zero tells my dealer it can't be done.

Ray

(sorry for replying to an old thread)

It's easy to see all of the possible commands from any login level if you just dump the firmware banks and look at it on your computer  ;) (...and it's also easy to see the passwords for the login levels...)

This is what it the main help command prints out if you're logged in at max login level:
Code: [Select]
*                      BMS Main Menu                        *
*************************************************************
   help            - Display this Help screen
  login           - Show login level, or login with password
  logout          - Log out of BMS
  version         - Display Version Information
  stats           - Display All statistics
  balstats        - Display balance statistics
  capstats        - Display capacity statistics
  statsrst        - Reset All statistics
  settingsrst     - Reset System Settings To Defaults
  eventlogdump    - Display the contents of the event log
  eventlogadd     - Adds an arbitrary string to the Event Log
  eventlogfill b  - Fills Event log with <b> bytes
  errorlogdump    - Display the contents of the error log
  errorlogadd     - Adds an arbitrary string to the Error Log
  status          - Show pack status summary
  balance         - Show pack balance
  config          - Show pack configuration
  inputs          - Show all inputs
  meas            - Show most recent measurements
  outputs         - Show all outputs
  errors          - List all present warnings and errors
  reset           - Reset CPU with SW reset
  eeprom          - Show EEPROM usage
  eeprom set x y  - Set a byte in Eeprom at address x to y
  erase eeprom    - Erase entire EEPROM
      bin         - Dump as a binary stream of eeprom
      hex         - Dump as an ascii file of eeprom
  timing          - Display system timing
  mbb             - Display MBB Interface INfo
  timerrst        - Reset All clocks to zero
  dobal           - Balance Pack to Tolerance
  stopbal         - Stop all menu-related balancing
  wdt reset       - Force Watchdog Timeout
  exit_to_bl      - Exit main app and start bootloader
  test            - Run a specific test, or show the test menu
  can             - Display CANbus statistics
  pl536           - Displays contents of all PL536 registers.

However, there appear to be some hidden commands that even the max login level help screen won't tell you about, like: (there are also some other commands that are just aliases / old names for existing commands; I haven't listed them here because who cares)
Code: [Select]
errorlogdumpraw
eventlogdumpraw
override_monolith_charge
cancel_monolith_charge
reset_quick

The full list of 'set' command completions:
Code: [Select]
*                       BMS Settings                        *
*************************************************************
  To change settings, type:
    "set <setting name> <value1> <value2> ..."
 ************
 Psudo Settings
  Variable        Description              Value
   time            Current Time (RTC)    %s
  time utc        Current UTC Time (RTC)          %10lu
  systime         System Clock Time (test only)   %10lu
  dut_mode        DUT mode                                 %u
  soc             Present State Of Charge               %3u %%
  correctsoc      Correct State Of Charge for Voltage   %3u %%
  addfulldis      Add full discharge to history in uAh
  addestdis       Add estimated discharge to history in uAh
  config none     Reset config to uninitialized
  vref_auto_cal   Auto-calibrate ADC VREF
 **************
Title: Re: Cable to access BMS Diagnostic Port
Post by: Keith on May 07, 2018, 05:31:54 PM
Don't be sorry! I'm glad to see others get into this deeper understanding of our machines. I see some commands listed under help that are not in your list, maybe different firmware, or perhaps a different login, for example
Code: [Select]
 
  timerrst        - Reset All clocks to zero
  dobal           - Balance Pack to Tolerance
  dobackgroundbal - Continually Balance Pack In Background Until Balanced
  stopbal         - Stop all menu-related balancing

There are also hardware differences in the BMS versions. I tried and failed to calibrate the dual current sensors in a replacement BMS with these commands
Code: [Select]
cur_sense_offset_0   Current sensor 0 zero-offset                     -27 mV
 cur_sense_offset_1   Current sensor 1 zero-offset                       0 mV
 cur_sense_cal_0      Current sensor 0 slope calibration            0x8000
 cur_sense_cal_1      Current sensor 1 slope calibration            0x8000
 cur_sense_blend      Current sensor blending voltage                    1 mV

The settings would not stick, don't know why and the measurement error was small enough to ignore. Older BMS has only one current sensor. Maybe someday we'll have open source firmware!
Title: Re: Cable to access BMS Diagnostic Port
Post by: clockfort on May 07, 2018, 06:30:40 PM
I see some commands listed under help that are not in your list, maybe different firmware, or perhaps a different login, for example... <snip>

Those are in the list, you just need to scroll the my text box down separately. (code blocks in this forum software kind of suck)
Though, I mistakenly omitted dobackgroundbal (which also goes by 'dbgb' in the code) because I hadn't realized they were a different function from the foreground balance command.

The version of the BMS firmware I happen to be referencing is this one from 2016-10-26, intended for a 2017 S if I recall
Code: [Select]
         "part_name" : "bms",
         "firmware" : "75-08037",
         "firmware-revision" : "21",
         "build_number" : "320"


... agreed, an open source version would be lovely.
Title: Re: Cable to access BMS Diagnostic Port
Post by: Keith on May 07, 2018, 07:11:35 PM
I have four versions

Code: [Select]
*              Firmware Name : FIRMWARE BMS CORTEX M3 15MY IMPL *
*                Firmware PN : 75-07787                         *
*               Firmware Rev : 31                               *
*                      Built : Oct 13 2015 16:53:53             *

*              Firmware Name : FIRMWARE BMS CORTEX M3 15MY IMPL *
*                Firmware PN : 75-07787                         *
*               Firmware Rev : 33                               *
*                      Built : Feb  9 2016 10:25:51             *

*              Firmware Name : FIRMWARE BMS CORTEX M3 15MY IMPL *
*                Firmware PN : 75-07787                         *
*               Firmware Rev : 39                               *
*                      Built : Jun 14 2017 09:45:14             *

*              Firmware Name : FIRMWARE BMS 17MY IMPL           *
*                Firmware PN : 75-08037                         *
*               Firmware Rev : 29                               *
*                      Build : 2018-01-12_150928 470     banka  *
Title: Re: Cable to access BMS Diagnostic Port
Post by: rayivers on May 07, 2018, 07:27:09 PM
Thanks for all the info!  I see a lot of display / show / reset commands, but nothing regarding pack configuration or parameters... does anyone know how the BMS tells the MBB what capacity / peak current capability / max charge rate etc. the currently-installed battery has?  Or how a new Power Tank identifies itself (with all the PT problems I've seen here, I have a feeling this process is flawed)?  If I ordered a 3.6 brick Zero would have to install a 2014 BMS and configure it to 3.6kWh, I'm just wondering exactly how that's done. It doesn't seem like anything shown would accomplish that, unless 'config' has a submenu w/write commands.

Quote
The settings would not stick, don't know why

Maybe there's a write-protect switch accessible only by a login password not shown?

Ray
Title: Re: Cable to access BMS Diagnostic Port
Post by: Keith on May 07, 2018, 08:26:18 PM
Here's the most detailed settings I've seen, found on the dark web
Code: [Select]
Logged in at level 3

ZERO BMS> set


*************************************************************
*                       BMS Settings                        *
*************************************************************
  To change settings, type:
    "set <setting name> <value1> <value2> ..."
     0x preceding the value may be used to indicate a hex number



 ************
 Psudo Settings
 ************
  Variable        Description              Value
 +---------------+------------------------+--------------------
  time            Current Time (RTC)    02/16/2018 13:51:56
  time utc        Current UTC Time (RTC)          1518807116
  systime         System Clock Time (test only)   1518807116
  dut_mode        DUT mode                                 0
  capacity        Ideal Total Capacity             26000000 uAh
  soc             Present State Of Charge                46 %
  correctsoc      Correct State Of Charge for Voltage    46 %
  addfulldis      Add full discharge to history in uAh
  addestdis       Add estimated discharge to history in uAh
  config none     Reset config to uninitialized
  vref_auto_cal   Auto-calibrate ADC VREF


 **************
 Settings
 **************
 NV writes: 605

 Setting Name         Setting Desc                            Value        Units
+--------------------+---------------------------------------+------------+-----
 serial               BMS Serial Number                     
 pack_serial          Pack Serial Number                         
 build_time           Firmware Build Timestamp       
 packtype             Pack Type                                2016_module
 packtype_index       Pack Type Index                                    7
 numbricks            Number of bricks in pack                           1
 cell_cap             Cell Capacity in mAH                           26000 mAH
 cell_cap_mwh         Cell Capacity in mWH                           95000 mWH
 vref_cal             ADC VREF calibration                          0x3FFA
 cur_sense_offset_0   Current sensor 0 zero-offset                     -27 mV
 cur_sense_offset_1   Current sensor 1 zero-offset                       0 mV
 cur_sense_cal_0      Current sensor 0 slope calibration            0x8000
 cur_sense_cal_1      Current sensor 1 slope calibration            0x8000
 cur_sense_blend      Current sensor blending voltage                    1 mV
 lvc                  Cell Low Voltage Cutoff                         3140 mV
 cev                  Cell Empty Voltage                              2500 mV
 hvc                  Cell High Voltage Cutoff                        4195 mV
 minchg               Cell Minimum Charge Voltage                     2500 mV
 lowvolt              Cell voltage to flag Low Pack                   3450 mV
 lvh                  Cell Low Voltage Holdoff Time                   5000 ms
 hvh                  Cell High Voltage Holdoff Time                  2000 ms
 lowhold              Time pack must be low for flag                  5000 ms
 mintempdiscutback    Minimum Discharge Cutback Temp                    55 C
 maxtempdis           Maximum Discharge Temp                            60 C
 mintempdis           Minimum Discharge Temp                           -25 C
 mintempchg           Minimum Charge Temp                                0 C
 maxtempchg           Maximum Charge Temp                               50 C
 baltol               Balance Tolerance While Charging                   3 mV
 minbal               Min Voltage to balance while charging           3700 mV
 idlebal              Idle Balancing Allowed                             1
 baltolidle           Balance Tolerance While Idle                       3 mV
 minbalidle           Min Voltage to balance while Idle               3900 mV
 maxbalres            Max Balance Resistors On At Once                  10 mV
 balon                Balance Res On Time                             8000 ms
 baloff               Balance Res Off Time                            2000 ms
 logfreqrun           Discharge log frequency when Running           60000 ms
 logfreqchg           Discharge log frequency when Charging         600000 ms
 logfreqidle          Discharge log frequency when Idle          432000000 ms
 lowcap               Approx Capacity When Low                          10 %
 hibwait              Wait time before hibernate                      1800 seconds
 hibtime              Hibernate Time                                 86400 seconds
 timecor              UTC Correction                                    -5 hours
 icres                Cell tap interconnect resistor value           15000 mOhms
 icfuse               Cell tap interconnect fuse res value            1077 mOhms
 icnorm               Cell tap interconnect normal res value           378 mOhms
 icresmask            Cell tap interconnect resistor mask       0x00000000
 icfusemask           Cell tap interconnect fuse mask           0x1FFFFFFF
 icresinst            Cell tap interconnect resistors install            0
 icfuseinst           Cell tap interconnect fuses installed              1
 loadmarg             Balance Load Test Margin                          50 %
 cur_lim_mon_marg     Current Limit Monitor Margin                      25
 cur_lim_mon_cur_coef Current Limit Monitor Current Coefficie       0x0100
 cur_lim_mon_lim_coef Current Limit Monitor Limit Coefficient       0x0020
 test_mode            Test Mode active                                   0
 startup_failed       Startup Failed                                     0
 startup_warning      Startup Warning                                    0
 pl536_ignore         Ignore Invalid Cell Voltages                       1
 pl536_re_init        Re-initialize invalid PL536s                       0
 debug_level          Debug Level                                        1
 rawcellcutstart      Raw cell voltage cutback start                  3400 mV
 rawcellcutend        Raw cell voltage cutback end                    3150 mV
 opencellcutstart     Open circuit cell voltage cutback start         3700 mV
 opencellcutend       Open circuit cell voltage cutback end           3200 mV
 power_soc            Use Power-Based SOC                                0
 abnormhigh           Cell Abnormally High Voltage                    4210 mV
 crithigh             Cell Critically High Voltage                    4250 mV
 cur_sense_off        Dual Current Sensor Allowed Offset Diff            5 %
 cur_sense_slope      Dual Current Sensor Allowed Slope Diff             8 %
 cutback_filt_up_coef Current cutback filter up coefficient         0x0020
 cutback_filt_down_coef Current cutback filter down coefficient       0x00A0
 batt_cur_lim         Battery Current Limit                           1040 A
 board_id             Board ID                                          17
 firmware_rev         Firmware revision                                 29
Title: Re: Cable to access BMS Diagnostic Port
Post by: Burton on May 07, 2018, 08:32:23 PM
I have not installed a power brick yet but on the MY17's the harness has a loop back connection on the power brick connector so the bike knows there is not a power brick in place (last part is conjecture)

I wonder if the number of bricks would simply be updated to 5 ? ... the problem being a dealer would likely flash your firmware when installing a power brick with a version which already has the brick settings configured ... just like they would flash your firmware with 2 or 4 bricks on the older bikes (If i recall they have separate files for these)

Not sure if this applies on the newer bikes though :/ (wish I did)
Title: Re: Cable to access BMS Diagnostic Port
Post by: Doctorbass on May 09, 2018, 02:42:02 AM
I have not installed a power brick yet but on the MY17's the harness has a loop back connection on the power brick connector so the bike knows there is not a power brick in place (last part is conjecture)

I wonder if the number of bricks would simply be updated to 5 ? ... the problem being a dealer would likely flash your firmware when installing a power brick with a version which already has the brick settings configured ... just like they would flash your firmware with 2 or 4 bricks on the older bikes (If i recall they have separate files for these)

Not sure if this applies on the newer bikes though :/ (wish I did)

Burton, I have the powertank on MY17 Sr and the way it manage the 5th brick is that there is BMS0 and BMS1. BMS 0 is the monolith with 4 bricks ( or 2 when you get the long brick) and BMS1 with 1 brick or 0 brick.

So BMS0 can not have 5 brick i think as it only manage the monolith and the powertank has his  own BMS so it is BMS1

Doc
Title: Re: Cable to access BMS Diagnostic Port
Post by: Burton on May 09, 2018, 02:47:32 AM
Good info Doc.
So does this mean when I do a BMS command in the terminal for the MBB and it lists 4 bricks on my MY17 I have a frankenbike like yours?  And if so what are the implications of having 4 vs 2 bricks?
Title: Re: Cable to access BMS Diagnostic Port
Post by: Arlo on January 18, 2021, 01:01:06 PM
Hi All,  I have been trying to talk to the BMS on my 2018 longbrick.   Its a 7.2kwh brick.

I tried this and for the life of me I can't get it to work.  I tried Putty and Realterm.  I tried all kinds of baud rates.
My setup is not the same as normal I don't have a MBB and I don't have the BMS coms wires hooked to anything at this point.   Has anyone else had success with this lately?  Will the BMS talk over Serial if its only plugged into the battery it self? 

Thanks.

-Arlin
Title: Re: Cable to access BMS Diagnostic Port
Post by: Hans2183 on January 18, 2021, 03:45:17 PM
On software side you could also try the arduino IDE which is free and has a serial monitor build in. A bit of a workaround but easier since you just need to pick the right device from a list.
Title: Re: Cable to access BMS Diagnostic Port
Post by: Arlo on January 18, 2021, 11:27:59 PM
On software side you could also try the arduino IDE which is free and has a serial monitor build in. A bit of a workaround but easier since you just need to pick the right device from a list.

Hmm thanks for the response.  Not sure how I would do that.  You think I can just try the arduino IDE with no arduino hooked up?  Or are you thinking to have an arduino intercept the serial data first?
Title: Re: Cable to access BMS Diagnostic Port
Post by: Hans2183 on January 19, 2021, 06:17:24 PM
No Arduino needed but you'll still need an USB to TTL converter which is the part used to program smaller Arduino boards hence the Arduino IDE.

That and an OBDII connector is really all you need. In below video I'm gutting a cheap Bluetooth OBD adapter to put such an USB to TTL converter in place instead and than in the end I read out from console. Video is in a different language but just visually it might help to get an idea.

https://youtu.be/JqUwTeAqi3o?t=159

Title: Re: Cable to access BMS Diagnostic Port
Post by: Arlo on January 19, 2021, 10:49:41 PM
No Arduino needed but you'll still need an USB to TTL converter which is the part used to program smaller Arduino boards hence the Arduino IDE.

That and an OBDII connector is really all you need. In below video I'm gutting a cheap Bluetooth OBD adapter to put such an USB to TTL converter in place instead and than in the end I read out from console. Video is in a different language but just visually it might help to get an idea.

https://youtu.be/JqUwTeAqi3o?t=159

Ok thanks.  So a normal USB-serial adapter won't work?
Watching video now.

-Arlin
Title: Re: Cable to access BMS Diagnostic Port
Post by: Arlo on January 20, 2021, 06:38:23 AM
ok after much messing around I got it working. I will do a how to later.

Arduino IDE was actually the fastest way.
I also got real term working and I bet putty will work
Title: Re: Cable to access BMS Diagnostic Port
Post by: Arlo on February 09, 2021, 02:13:59 AM
I put a video together of what I figured out.

Cheers.

https://youtu.be/TR8amzbhBGI
Title: Re: Cable to access BMS Diagnostic Port
Post by: TomerBA on August 01, 2021, 02:06:24 AM
Thanks for all the info.
It's really helping.
Any idea if there are also CAN lines in this connector?
Title: Re: Cable to access BMS Diagnostic Port
Post by: Arlo on August 08, 2021, 09:50:57 PM
Thanks for all the info.
It's really helping.
Any idea if there are also CAN lines in this connector?

I don't belive there is CAN lines in this connector.  I have the other connector connected for CAN lines.
Title: Re: Cable to access BMS Diagnostic Port
Post by: DerKrawallkeks on February 04, 2022, 12:03:32 PM
Here's what the Quiq charger does when changing from constant current to constant voltage at 100% SOC. Nice data from the BMS serial port although it took some work to filter out all of the DEBUG lines complaining about no CAN traffic.
Nice! Can we infer a charging profile from this?

(https://i.postimg.cc/9MMT1Pn8/chart.png)

Sorry for reviving an old thread, I must clear a common misconception. What you can see there is not something the charger controls. It does not actively follow a charging profile.
This goes for most lithium chargers.

For lithium batteries it is not needed to slow down the charging when they go towards 100%. What is happening (in this diagram as well) is CCCV charging, first doing a constant current and then holding a constant voltage.
The point where this changes from CC to CV is not actively controlled, at some point the battery just reaches full voltage. Since the power supply does not pull it any higher, the current starts dropping while the battery soaks to full voltage.

None of this is actively controlled and the current ramp down is not actively controlled.

(Also someone had wondered why the current is so noisy and the voltage is not. The current is not actually noisy, the behavior is just caused by the fact that the resolution of the current sensor here is 1A, and without any hysteresis it jumps +/-1A, even if it just goes from 0,99 to 1,01A in reality.)
Title: Re: Cable to access BMS Diagnostic Port
Post by: Keith on February 04, 2022, 05:59:34 PM
Clearly this is a charging profile although it may be much simpler to create than it looks. But the charger could decide to turn off current immediately when full voltage is reached. It does not. It let's the battery "soak" for a period of time, surely useful for cell balancing near full charge. Integrating the declining current would represent a significant amount of charge, perhaps 100Wh or so in this case. It is probably a very simple decision by the charger, stop when the current drops below ~2 amps (caused by the gradual increase in the battery voltage), and not a regulated current/time curve. But regardless, a profile is created. Would battery health be reduced if the full voltage soak time interval was not done? I think so. Would a more sophisticated profile be even better? Possibly, only a lot of real battery life cycle testing could determine that. And as a practical matter, the person wants to use the battery, not wait indefinitely while a reluctant cell (maybe, given more time or a different current) reaches its "ideal" voltage. 
Title: Re: Cable to access BMS Diagnostic Port
Post by: DerKrawallkeks on February 04, 2022, 09:26:34 PM
Well yes, in a sense everything is a charging profile of course. But this really is very basic and requires no intelligence. I just wanted to point that out.
In my 2013 Zero, they actually use LED power supplies (for lamps) to charge. Enough for a lithium battery.

Would battery health be reduced if the full voltage soak time interval was not done? I think so.

No, stopping the charge immediately is healthier for the battery (disregarding the balancing need for now). The higher the charge voltage, the more harm is done, with quite a significant difference happening in the last few tenth of a Volt. That's the reason Zero charges the cells only to 4,15V instead of 4,2V, even though it seems like a small difference.
Title: Re: Cable to access BMS Diagnostic Port
Post by: Keith on February 04, 2022, 10:08:23 PM
My impression is that the harm done by higher charge voltage occurs over a long time period, not instantly. Store at 60% SOC, charge full and use immediately. But in any case, the transition point from CC to CV can be at whatever voltage is "good." And of course balancing is complicated and important, and takes time. I have a six year old Zero FX pack with two bad (out of balance but functional) cells. BMS won't let it charge. Ideally, charging for each cell would be separately and independently managed, but that would be quite challenging and costly to design. Anyway, I mostly agree with your points, nice to discuss.
Title: Re: Cable to access BMS Diagnostic Port
Post by: DerKrawallkeks on February 05, 2022, 02:22:37 AM
Yes nice to discuss!
Sucks with your FX pack.. but happens..
I have one more thing to add. You're right with how to use a battery, but there's a point around 55% (called the central graphite peak in the differential voltage spectrum), above which cell aging is significantly higher. 5% seems like nitpicking, but it really makes a difference. It's not too big but since it's only a 5% difference to the end user, I just wanted to say that. Don't store at 60, store below 55 or 50, to be sure.

Also I checked and it makes a difference how high you charge, even if you use it immediately. It's a pretty significant difference, so I strongly recommend only fully charging if needed.
On the other hand, we buy the bikes to use them, and Zero charges them to 4,15V only, instead of the usual 4,2V for exactly that reason.
But yea.. It makes a big difference, avoid if you can.

I didn't come up with all that knowledge:) it's taken from a study of NMC batteries (exact same chemistry that Zero has)
Title: Re: Cable to access BMS Diagnostic Port
Post by: gt13013 on February 08, 2022, 04:28:10 AM
there's a point around 55% (called the central graphite peak in the differential voltage spectrum), above which cell aging is significantly higher. 5% seems like nitpicking, but it really makes a difference. It's not too big but since it's only a 5% difference to the end user, I just wanted to say that. Don't store at 60, store below 55 or 50, to be sure.

Are you referring to Keil's thesis "Aging of Lithium-Ion Batteries in Electric Vehicles", p.52-53, in which I saw this surprising information, or do you have any other references?
Title: Re: Cable to access BMS Diagnostic Port
Post by: DerKrawallkeks on February 09, 2022, 12:29:03 AM
Hey, yes that's my go-to source. You can find it in different studies as well I'm sure:)