FlexiBMS Lite - Flexible Configuration BMS w/ CAN-bus

Just connect CANH to CANH and CANL to CANL.

2 Likes

Well then I give up. Gonna contact customer support :sweat_smile:.

Can you provide a picture of your setup?

Tried to get all the parts visible, and I unplugged the charger port for visibility.

1 Like

Parameter values on the Lite?

EDIT: + what are the CAN ID(s) on the Xenith?

What I have set at the moment

$0=12 (Pack cell count; number of series cells in the battery pack, set to 0 to disable cell sensing, Uint)
$1=6500 (Max charging current; mA (milliAmps), maximum current allowed to flow to battery, Uint)
$2=300 (Charging termination current; mA (milliAmps), stop charging when current drops below this, Uint)
$3=2000 (Minimum cell voltage; mV (milliVolts), minimum allowed cell voltage, no charging allowed if cell voltage below this, Uint)
$4=4250 (Maximum cell voltage; mV (milliVolts), maximum allowed cell voltage, no charging allowed if cell voltage above this, Uint)
$5=10000 (Minimum charger voltage; mV (milliVolts), minimum allowed charger voltage, no charging allowed if charger voltage below this, Uint)
$6=55000 (Maximum charger voltage; mV (milliVolts), maximum allowed charger voltage, no charging allowed if charger voltage above this, Uint)
$7=7000 (Minimum pack voltage; mV (milliVolts), minimum allowed pack voltage, no charging allowed if pack voltage below this, Uint)
$8=52000 (Maximum pack voltage; mV (milliVolts), maximum allowed pack voltage, no charging allowed if pack voltage above this, Uint)
$9=4180 (Charging cell termination voltage; mV (milliVolts), don’t allow any cell to go above this voltage when charging, Uint)
$10=50400 (Charging pack termination voltage; mV (milliVolts), don’t allow pack to go above this voltage when charging, Uint)
$11=4150 (Cell balancing voltage; mV (milliVolts), allow balancing once a cell goes above this voltage, Uint)
$12=10 (Allowed difference between cell groups; mV (milliVolts), maximum allowed voltage difference between cell groups, balance if difference bigger, Uint)
$13=0 (Minimum external NTC thermistor temperature; K (Kelvin), set to 0 to disable, if enabled, the minimum temperature above which charging is allowed, Uint)
$14=0 (Maximum external NTC thermistor temperature; K (Kelvin), set to 0 to disable, if enabled, the maximum temperature below which charging is allowed, Uint)
$15=260 (Minimum PCB temperature; K (Kelvin), the minimum temperature above which charging is allowed, Uint)
$16=330 (Maximum PCB temperature; K (Kelvin), the maximum temperature below which charging is allowed, Uint)
$17=0 (0/1, allow cell balancing outside of charging, Boolean)
$18=30 (Fault wait time; s (seconds), How long to wait after fault state before trying to start charging again, Uint)
$19=1.0094 (Gain for Battery voltage ADC conversion, Float)
$20=0.0 (Offset for Battery voltage ADC conversion, Float)
$21=1.0165 (Gain for Charger voltage ADC conversion, Float)
$22=0.0 (Offset for Charger voltage ADC conversion, Float)
$23=1.0091 (Gain for Current sense ADC conversion, Float)
$24=0.0 (Offset for Current sense ADC conversion, Float)
$25=1.0000 (Gain for External NTC temperature probe conversion, Float)
$26=0.0 (Offset for External NTC temperature probe conversion, Float)
$27=1.0000 (Gain for Internal MCU temperature conversion, Float)
$28=0.0 (Offset for Internal MCU temperature conversion, Float)
$29=3380 (External NTC probe Beta-value; external NTC sensor’s beta value, Uint)
$30=16 (ADC’s oversampling setting; allowed values (1, 2, 4, 8, 16), Uint)
$31=100 (h (Hours), how long to stay in active mode, Uint)
$32=0 (0/1, force 5V regulator always on when battery connected, Boolean)
$33=3 (balancing temperature ratio, dynamically adjusts the max allowed balancing resistors based on BMS temperature, set to 0 to use static maximum, Uint)
$34=3800 (Storage discharge voltage; mV (milliVolts), if storage discharge enabled, then pack will be discharged to this voltage, Uint)
$35=0 (h (Hours), how long to wait from last CHARGING event to start discharging the pack to the storage voltage, set to 0 to disable, Uint)
$36=1 (0/1, CAN activity status LED tick, good for testing that the BMS is receiving CAN traffic, Boolean)
$37=10 (CAN ID number for this BMS unit, if using multi-BMS setups, all BMS’ need to have unique CAN ID, uint16_t)
$38=0 (0/1, if set to 1, keeps 5V regulator on if activeTimer is not expired even if USB, charger or Opto not active, Boolean)
$39=0 (h (Hours), up to how many hours a CAN-frame reception can extend activeTimer, set to 0 to disable, uint16_t)

I put $32 back to 0 when i stopped messing with it.

edit I’ve tried a few different can IDs 91/92 and 1/2 and 2/3

Huh, interesting that the CAN ports are at one end on the connector instead of in the middle like on ESCs

1 Like

Connections on the CAN-wiring look correct to me

Do you have any other CAN-devices that you could connect to the Xenith, so we can eliminate the possibility of the problem being on the Xenith’s end?

EDIT: @MauveMaverick does this sound close to your situation?

1 Like

So the Arduino breadboard setup retrieves the battery voltage and VESC temperature via the CAN-bus, indicating that it’s working?

Yessir

It’s my inserts shameless plug Balance Buddy ™

4 Likes

Could you unplug everything else from the BMS, except for the battery pack (you can leave the balance connector on) and measure the voltage on all 8 pins of the TJA1051T CAN-transceiver?


On my unit with the parameters shown below I got:

  1. 3.3V
  2. 0V
  3. 5.1V
  4. 3.3V
  5. 3.3V
  6. 2.5V
  7. 2.5V
  8. 0V

$0=10 (Pack cell count; number of series cells in the battery pack, set to 0 to disable cell sensing, Uint)<\r><\n>
$1=5000 (Max charging current; mA (milliAmps), maximum current allowed to flow to battery, Uint)<\r><\n>
$2=600 (Charging termination current; mA (milliAmps), stop charging when current drops below this, Uint)<\r><\n>
$3=2000 (Minimum cell voltage; mV (milliVolts), minimum allowed cell voltage, no charging allowed if cell voltage below this, Uint)<\r><\n>
$4=4250 (Maximum cell voltage; mV (milliVolts), maximum allowed cell voltage, no charging allowed if cell voltage above this, Uint)<\r><\n>
$5=10000 (Minimum charger voltage; mV (milliVolts), minimum allowed charger voltage, no charging allowed if charger voltage below this, Uint)<\r><\n>
$6=45000 (Maximum charger voltage; mV (milliVolts), maximum allowed charger voltage, no charging allowed if charger voltage above this, Uint)<\r><\n>
$7=7000 (Minimum pack voltage; mV (milliVolts), minimum allowed pack voltage, no charging allowed if pack voltage below this, Uint)<\r><\n>
$8=52000 (Maximum pack voltage; mV (milliVolts), maximum allowed pack voltage, no charging allowed if pack voltage above this, Uint)<\r><\n>
$9=4140 (Charging cell termination voltage; mV (milliVolts), don't allow any cell to go above this voltage when charging, Uint)<\r><\n>
<\r><\n>
$10=50400 (Charging pack termination voltage; mV (milliVolts), don't allow pack to go above this voltage when charging, Uint)<\r><\n>
$11=3950 (Cell balancing voltage; mV (milliVolts), allow balancing once a cell goes above this voltage, Uint)<\r><\n>
$12=5 (Allowed difference between cell groups; mV (milliVolts), maximum allowed voltage difference between cell groups, balance if difference bigger, Uint)<\r><\n>
$13=0 (Minimum external NTC thermistor temperature; K (Kelvin), set to 0 to disable, if enabled, the minimum temperature above which charging is allowed, Uint)<\r><\n>
$14=0 (Maximum external NTC thermistor temperature; K (Kelvin), set to 0 to disable, if enabled, the maximum temperature below which charging is allowed, Uint)<\r><\n>
$15=260 (Minimum PCB temperature; K (Kelvin), the minimum temperature above which charging is allowed, Uint)<\r><\n>
$16=345 (Maximum PCB temperature; K (Kelvin), the maximum temperature below which charging is allowed, Uint)<\r><\n>
$17=0 (0/1, allow cell balancing outside of charging, Boolean)<\r><\n>
$18=30 (Fault wait time; s (seconds), How long to wait after fault state before trying to start charging again, Uint)<\r><\n>
$19=1.0000 (Gain for Battery voltage ADC conversion, Float)<\r><\n>
<\r><\n>
$20=0.0 (Offset for Battery voltage ADC conversion, Float)<\r><\n>
$21=1.0000 (Gain for Charger voltage ADC conversion, Float)<\r><\n>
$22=0.0 (Offset for Charger voltage ADC conversion, Float)<\r><\n>
$23=1.0000 (Gain for Current sense ADC conversion, Float)<\r><\n>
$24=0.0 (Offset for Current sense ADC conversion, Float)<\r><\n>
$25=1.0000 (Gain for External NTC temperature probe conversion, Float)<\r><\n>
$26=0.0 (Offset for External NTC temperature probe conversion, Float)<\r><\n>
$27=1.0000 (Gain for Internal MCU temperature conversion, Float)<\r><\n>
$28=0.0 (Offset for Internal MCU temperature conversion, Float)<\r><\n>
$29=3380 (External NTC probe Beta-value; external NTC sensor's beta value, Uint)<\r><\n>
<\r><\n>
$30=16 (ADC's oversampling setting; allowed values (1, 2, 4, 8, 16), Uint)<\r><\n>
$31=1 (h (Hours), how long to stay in active mode, Uint)<\r><\n>
$32=1 (0/1, force 5V regulator always on when battery connected, Boolean)<\r><\n>
$33=3 (balancing temperature ratio, dynamically adjusts the max allowed balancing resistors based on BMS temperature, set to 0 to use static maximum, Uint)<\r><\n>
$34=3800 (Storage discharge voltage; mV (milliVolts), if storage discharge enabled, then pack will be discharged to this voltage, Uint)<\r><\n>
$35=0 (h (Hours), how long to wait from last CHARGING event to start discharging the pack to the storage voltage, set to 0 to disable, Uint)<\r><\n>
$36=1 (0/1, CAN activity status LED tick, good for testing that the BMS is receiving CAN traffic, Boolean)<\r><\n>
$37=10 (CAN ID number for this BMS unit, if using multi-BMS setups, all BMS' need to have unique CAN ID, uint16_t)<\r><\n>
$38=0 (0/1, if set to 1, keeps 5V regulator on if activeTimer is not expired even if USB, charger or Opto not active, Boolean)<\r><\n>
$39=0 (h (Hours), up to how many hours a CAN-frame reception can extend activeTimer, set to 0 to disable, uint16_t)<\r><\n>
<\r><\n>
$40=0 (1 or 0, can be used to allow CAN activity to wake-up the BMS from sleep, increases sleep mode quiescent current slightly, set to 0 to disable, boolean)<\r><\n>

Mine are all 0v except the first being 3.3v

*edit let me test with $32=1 1 sec…

Yea, 5V is required to be available or the CAN IC will be unpowered

Ok those voltages are all accurate now. (my pin 3 is 5.08, but my multimeter is also trash)

Close enough, I think mine showed 5.09, but I just rounded it up.

This would indicate that the CAN IC should be working correctly… Bad cable?

Well i just tried to source a known working cable, but i ripped the wires off both ends trying to get it unplugged from another setup :face_with_symbols_over_mouth:

I have more setups i can ruin, hang on…

4 Likes

Maybe the conductor broke internally during this?

1 Like