Flying ADC BMS - Vectrix VX1 - integration

Topics concerning OEM and open source BMSes
Post Reply
skr
Posts: 41
Joined: Wed Jun 01, 2022 7:11 pm
Has thanked: 8 times
Been thanked: 14 times

Flying ADC BMS - Vectrix VX1 - integration

Post by skr »

Hello openinverter community,

I would like to share my progress with hopefully providing another alternative for a somewhat useable Vextrix VX1 scooter BMS integration.
Vectrix VX1 is a maxi scooter which is highway capable and very suited for automotive battery integration. It was made for a few years in a few thousand unit run, most frames are almost 20 years old by now. Originally they shipped with nimh batteries, which died not long after on most units.
image.png
Do not undertake this if you have no clue (or will to learn) how to work with high voltages, how to use a multimeter and preferably ability to replace SMD components - please take one of the well established routes out there, for example:
random chinese active balancer, no BMS
2x ant bms splitting pack in 2
PLND (Matteo) BMS or Frans BMS - both of which are nicely engineered and fully integrated in the vehilce. Frans Firmwares for MC and other modules are nice, and as I've read his BMS is also very nice


I have forked Johus Flying ADC BMS firmware, ESP web tool and CAN bootloader to better suit vehicle integration. VX1 runs on 250k baud, so need forks for all of these:
https://github.com/skrubis/VX1-stm32-CANBootloader (250k baud migration)
https://github.com/skrubis/FlyingAdcBms-VX1 (added vx1 integration)
https://github.com/skrubis/VX1-esp32-web-interface (migrated fully to platformio, made friendly with 250k baud)

Current status: shows bootscreen stats, shows errors on odometer from any node, allows custom temperature or udelta warning on telltales and display. Shows various stats on clock display if so desired by the user.
Should be receiving motor controller speed, current and voltage PGNs for plotting/logging and most notably kWh/100km calculation as my brain breaks in Ah calculations used for the scooter throughout.

Todo:
Emulate actual BMS PGNs and Power table reduction. Disable stock OBC if something goes wrong. Need much more testing for this and see how much of it is actually needed. Problem is there's usually 4 bms boards with not sure yet how many cells per unit and I am using 3 bms modules, so populating values is something my brain has not yet figured out, but should be no biggie. Need to still finish implementing configuration message sending and PGNs, but not sure how needed are those. Probably should add a TC charger messaging format from the master.

These 2 params are different from stock FW:

sleeptimeout - sets hours to go to sleep after
idlecurrent - allows for setting sleep/idle current in mA

These params are vehicle specific, most work on master node only, errors on any node:
VX1mode - enables vx1 "mode"
VX1drvCurr - used for config msg sending, not yet implemented
VX1regenCurr - used for config msg sending, not yet implemented
VX1spdLim - used for config msg sending, not yet implemented
VX1rpmLim - used for config msg sending, not yet implemented
VX1regenMaxU - used for config msg sending, not yet implemented
VX1regenMaxI - used for config msg sending, not yet implemented
VX1chrCellNo - used for config msg sending, not yet implemented
VX1chrCellMaxV - used for config msg sending, not yet implemented
VX1chrBattCap - used for config msg sending, not yet implemented
VX1enCanMsg - enable can messages to the vehicle
VX1BootLCDMsg - show "OI FLY / BMS" on odometer at boot
VX1enBootstats - show "utotal, udelta, soc, soh, tempmin, tempmax on odometer at boot
VX1msgInterval - how often to send can messages to vehicle
VX1paramMsgCount - how many times send config messages to vehicle, not yet implemented
VX1LCDClockStats - 0=Off, 1=Always, 2=Idle - shows stats on clock display
VX1LCDClockStatVal -0=soc, 1=uavg, 2=udelta, 3=tempmax, 4=power, 5=idcavg, 6=kWh/100km
VX1ErrWarn - show if any module has any error in shorthand on odometer + turn on telltale
VX1TempWarn - show temperature warning on telltale + current tempmax on odometer
VX1TempWarnPoint - treshold for temp warning
VX1TempWarnTest - allows to test temp warning
VX1uDeltaWarn - warn if udelta exceeds treshold on odometer + telltale
VX1uDeltaWarnTresh - treshold for udelta warning
VX1uDeltaWarnTest - allows to test delta warning
VX1SendConfigMsg - 0=off, 2=regVX1drvCurr, 3=VX1regenMaxU 4=VX1regenMaxI, 5=VX1chrCellNo, 6=VX1chrCellMaxV, 7=VX1chrBattCap / allows to send config msg to vehicle, not yet implemented
VX1EmulateBMSmsg - 0=off, 1=onlyPwrReq, 2=all, not yet implemented
VX1kWhResetDist - distance in km for kWh/100km value to roll over (less = more dynamic dash readout).

Spot values for plotting:
VX1speed - vehicle speed from Motor controller
VX1busVoltage - bus voltage from Motor controller
VX1busCurrent - bus current from Motor controller
VX1kWhper100km - approx calculated kWh/100km calculation from the above

How to use:
  • you will need jlink, st link or similar programmer for the boards.
  • You may want an external current sensor, I am using HSTS016L 200A from aliexpress, as I want to monitor external eltek flatpack charger directly on battery bypassing motor controller.
  • either use command line tool (viewtopic.php?t=2907) for config or esp32 board with canbus, i.e. lilygo esp32 can
  • do a bench test for bms assembly with external power supply
  • Install in vehicle, possibly you want a small 3S li-ion battery or 4S lifepo4 battery fed through a schotky diode + about 4 ohm resistor to the battery and same 12V from vehicle through a schottky diode to the master BMS enable pin to allow for the BMS to balance cells while bike is off.
Tap vehicle can and power on the motor controller here, preferably fuse the power feed:
image.png
Obviously a disclaimer:
This project is provided as-is, without any express or implied warranties, including but not limited to warranties of merchantability, fitness for a particular purpose, or non-infringement.
All CAN bus messages and PGNs referenced or used in this project are either:
Defined in the public SAE J1939 standard,
Commonly available through public forums, technical documentation, and community research, or
Independently observed through legal means without bypassing any security mechanisms or protections.
No proprietary firmware, OEM software, or copyrighted code has been copied, reverse-engineered, or distributed.
This project is intended solely for educational, research, and interoperability purposes. It is not certified for use in production vehicles or safety-critical systems.
Use of this project is entirely at your own risk. Interfacing with vehicle systems—especially those involving power electronics or battery management—can result in:
Vehicle malfunction or damage
Battery failure or fire
Injury or death
Voiding of warranties or violation of local laws
By using or modifying this project, you accept full responsibility for any consequences that arise. The authors shall not be held liable for any direct, indirect, incidental, special, or consequential damages resulting from the use, misuse, or inability to use this project or any derivative works.
If you believe that any content herein infringes upon your legal rights or intellectual property, please contact the authors with specific details. We are committed to addressing any valid concerns in a respectful and timely manner.
skr
Posts: 41
Joined: Wed Jun 01, 2022 7:11 pm
Has thanked: 8 times
Been thanked: 14 times

Re: Flying ADC BMS - Vectrix VX1 - integration

Post by skr »

Added rudimentary BMS emulated messaging, now reports cell min/max, various faults, should be able to do at least a part of original "Li+" bike model comms to allow oldest original nimh bikes to have bms feedback. Not yet tested.
image.png
image.png
skr
Posts: 41
Joined: Wed Jun 01, 2022 7:11 pm
Has thanked: 8 times
Been thanked: 14 times

Re: Flying ADC BMS - Vectrix VX1 - integration

Post by skr »

image.png
now seems to be fully working on the bike side - charger sees messages, charges depending on BMS data. A non Lithium bike has been turned to lithium and works as intended from charger point of view. Firmware still needs a lot of fixes and cleanup, but base messaging is there. Bike just passed inspection with 0 advisories, now just have to tackle a 200mV delta in the pack, not sure how many months it will take to balance it out. Imo a very valid alternative for cheapskates like me to turn ancient nimh bikes in to lithium with proper feedback from bms.
image.png
image.png
image.png
image.png
image.png
image.png
Still have to tackle the bike PGN reading, it is broken now, I'd like to log temperatures, speed, current, voltage for motorcontroller from Web interface to SD card.
Post Reply