FlexiBMS Lite - Flexible Configuration BMS w/ CAN-bus

New test panels came in yesterday


As mentioned before, these are not electrically functional boards, as they’re only 2-layers and the actual working boards are 4-layers, but these are test boards on actual panelizing and break tab design testing. There are slight variations in the break tab designs (hole amount, distance offset) to see which combination leaves the cleanest and least sanding needed after snapping them with edge cutters.

Then I also got the USB-PD testing board and the new audio DSP board, shown also is the old DSP board that suffered from the incurable low buzz.

I believe I’ll get the new TVS diodes in the Digi-key shipment today, so I can get waiting webshop orders sent tomorrow.

8 Likes

Just had a big order come in for the Lite units and they are now out-of-stock as of this moment. Placed order will be fulfilled.

Sorry, you’re gonna have to wait for the next batch, but if you want to talk then PM me.

2 Likes

Maybe I missed something, but

whats this :wink:

I like building and developing all kinds of portable devices and see the USB-C connector and the possibility of using USB Power Delivery as a valuable feature to be able to support. That also synergizes with the simpler and cheaper BMS (3S-6S) meant for integrating into portable devices.

1 Like

Here’s proof.
Video is like 100mb so won’t upload here unfortunately.
https://linksharing.samsungcloud.com/zPYtOaZuO8rl
Valid for 24h

So, are you using a FlexiBMS and you have trouble starting your charging, if you first connect the charger to the battery pack and then to the wall, or was this just a demonstration of the behavior you described in the Noob question thread! 2020_Summer - #14003 by Athrx ??

The behavior on the video looks like the primary side (wall-power) of the charger doesn’t want to power up, as the secondary side is already reporting available voltage.

This though shouldn’t happen with the Lite, as the charger port is not connected to the battery, until voltage is detected on it after which the charging is started and that opens up the connection between the charger and battery side.

3 Likes

Sorry mate, no flexy bms. Was just reporting that some chargers really don’t like higher potential power coming the other way around and it got ported as a question here. I’m using a ltt bms with common charge/discharge wires

2 Likes

For some more anecdotal evidence, I sometimes use a 42V 10S (li-ion) charger to charge 12S LiFePO4 boards (43.8V)

disclaimer: don’t try this at home

and if the LiFePO4 battery is already above 43V when the 42V charger is plugged in, it flashes red and freaks out like that also.

1 Like

So this feature allows to wire the CAN cable without the 5V pin leaving only CANH and CANL?

Yes.

1 Like

Ok.

According to your measurements, how much current does the bms draw and how much will it change with this feature enabled?

I’m asking because I’m running a small battery atm (6S 4Ah).

Is there any info on how to use the can bus features? I have it wired up to my ESC but I’m not seeing any data in my VESC Tool or my DAVEGAX tho I’m not exactly sure what I’m supposed to be looking for.

Try setting $32=1.

Also, the latest (stable) firmware has options for visualizing the CAN communication by LED flashing on the FlexiBMS. That’s a good thing to have to assert that it actually communicates on CAN.

2 Likes

I enabled those config params, but still not seeing any can bus activity. Tried re-flashing the firmware, to ensure it’s the latest, and with/without the opt-enable pin. But nothing seems to work. Is there a esc-bms wiring diagram anywhere?

:grimacing:

1 Like

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