I have since christened this project OSBMS for "open source Battery Management System".
Because that name sucks though, I am welcoming suggestions for name changes. (Engineers suck at creating imaginative names - I do at least)
My main motivator for this project so far was designing this to be the first module in a complete ev electronics system designed with flexibility, ease of use, and reliability in mind. (and also bringing costs down) Another motivator and guiding factor was to increase the safety of custom vehicles. This board is made to manage anything from a hobbyking battery to <100ah battery banks and be cost effective/reliable while doing it. There should be almost no excuse not to run a bms with this around. (I hope)
Goals of project
- Open source - it seems that almost all gms systems on the market are closed down these days. we want to be able to add whatever features we please as the EV world gets ever more integrated and complex
- Low cost - The BMS IC was selected to be as low cost as possible with a daisy chain approach used to further attempt to reduce costs through high manufacturing volume. Goal of $2 per cell can be reached. Master board may bump that up for smaller systems.
- Reliable - Even though a goal is to keep costs low, reliability should not be unnecessarily decreased for small cost improvements
- Safe - in going with reliable, I don't want this thing to start any fires or cause any damage. I want it to prevent any possible catastrophes associated with using such a power dense energy source.
- Easy to use - Board is programmed in the commonly known Arduino, but may use an rtos like chibios to facilitate low power-modes and can/usb tasks. Integration with a larger system could possibly be done with ladder logic programming.
- Multi chemistry - Can monitor and balance almost anything with "lithium" in the name. (lipo, lifepo4, etc. Possibly even super-capacitor banks!)
- - A github project has been published and is where I will post most finite progress, but major milestones and discussion will mostly happen here. Link to project: https://github.com/Teslafly/OpenBMS
- - As of right now I have the slave board with the ATA6870N-PLPW finished and ready to send out to the fab house
A pic of the 3d view on this board
and the schematic
(link to a higher rez (.svg) versionhttps://raw.githubusercontent.com/Tesla ... %20BMS.svg as ES doesn't allow .svg files despite their scalability.)
I will be sending out orders for 5-10 boards worth of parts in the coming week or two. If anyone has a teensy3.1 / arduino and wants to help develop, I am willing to send out assembled dev boards for $20 a piece + shipping (probably $2-5 using USPS). Actual price will drop to ~$12 once in production of 100+ boards.
I am not planning of assembling any master boards at this time until rudimentary cell monitoring / balancing is working as all we need until then is spi connectivity to a ribbon cable. Though if enough dev people say otherwise once I finish the design I will consider putting some masters together.
- - The master board with the integrated teensy is almost done and will be committed to github soon. (features below) Either a bootloader will have to be made / gotten for the integrated teensy 3.1, or preprogrammed MINI54TAN bootloader chips will need to be bought from PJRC. (As of right now I am going with the bootloader chip)
Keeping the project goals in mind, here are the specs for the master major system boards. (If there is something you think is too much, or is badly needed, these specs are still quite flexible)
Master Board Features
- Teensy 3.1 Micro-controller (MK20DX256VLH7) (Possibility for alternative simpler/cheaper master with atmega328 where advanced features aren't needed? comments?)
- USB programmable with a possibility of usb otg for android devices / dashboards.
- 2-3 current sensor inputs. one for charging, one for the motor. (one for AUX?)
- Input voltage sensing
- Several (2-4) mosfet controlled outputs with the option for a current sensor on at least one (or one sensor for all of them?). NPN switching (or PNP if people want?) This can be used to control a contactor, precharge circuit, fan, etc.
- Onboard switching regulator to bring pack voltage down to 5-12v when system is on. (Microcontroller will run off ATA6870N supply when unit is off. This should result in a current draw <100ua)
- Connectors for an LCD Display and all extra pins broken out for auxiliary I/O.
- SD card slot for datalogging (and configuration via txt file?)
- Opto isolators for controlling charger or communicating to voltage shifted masters.
- Onboard CAN transceiver for data connection to other modules. (This will probably take me a while if no one else does it. CAN has a very steep learning curve, but I do want to get into it eventually as it is used in almost every high reliability industry)
- Analog and pwm throttle input & output. This can map the throttle to different values, change a analog signal to a pwm one, or/and cut/hold back throttle when the pack is almost empty/dead.
- Onboard buzzer / alarm - If something goes severely wrong, this board will let you know
Slave Board Features
- Measures 4-6 Li-Ion Cells in Series
- Stackable Architecture Enables >400V Systems. (Up to 16 6s modules) - Master modules can be isolated and daisy chained as well for even higher voltages. This will be implemented once the system is rock solid and someone comes along that wants it and is willing to test it.
- 0.25% Maximum Total Measurement Error (12 bit adc) - This will be tested in reality once the first boards are constructed.
- Extremely low power when asleep. (<100ua)
- Two Thermistor Inputs - One connected to an On-Board Temperature Sensor and the other one brought out to a header.
- Cell Balancing:
- Balancing achieved with 10 ohm power resistors. This means ~1.8 watts power of dissipation per cell. Heatsinking is probably needed at this level for full balancing current.
- The onboard thermistor will reduce the duty cycle of the resistors in 25% increments (from 25-100%) to keep the board from overheating / melting. If the system overheats it will shut itself down. (This action is fully programmable)
- Predictive cell balancing? If a cell always needs a certain amount of energy removed while charging the board will preemptively balance the cell. I know of no example of this and will investigate its utility
- Figure out mounting holes - The slave board is so small there is almost no mounting hole room. with the ability to mount this board to a heatsink with a thermal pads probably needed, I'm thinking half moon cutouts on the top and bottom of the board
- Programming - no program exists for this yet, and the first thing on the list is to get cell voltage reading working, then the balance resistors and heat management, then the actual computation and proper monitoring of cells that you would need for a working basic bms. Then we take it from there.
- Finish master board layout
- Create a cheap master board using atmega328 / atmega32u4?
* edit, changed name form "OSBMS - yet another "open source battery management system"" to "OSBMS - A scalable, low cost, and full featured BMS" beacuse I think it is much more descriptive and what I probably should have gone with in the first place.