Left: Master-LV, Middle :  slave board LTC6811, Right: Master-HV

I received several requests upon how to use ENNOID-BMS for monitoring lithium-ion battery packs. I will present here the basics and how to use ENNOID master & slave boards when building a custom battery pack.

Lithium ion basics

The purpose of a BMS is quite simple to understand once you know the basics of lithium-ion battery cells, their limitations and the danger of using them inappropriately. Lithium-ion cells are mainly used because they have one major advantage over all the other type of batteries available on the market : they can store more energy for a given space & weight. Despite this main advantage, they have many issues when not properly used. They tend to overheat and loose their capacity when discharged too fast. Their cycle life can get destroyed when their internal temperature gets above 60 degrees Celsius. They have performance issues when discharged with temperature below 0 Celsius and their cycle life get also destroyed if they are recharged while below 20 Celsius.  They can explode if they are overcharged above 4.2V or discharged below 2.7V. They can also explode during the recharge process if they have been used outside of their operating range. On the other hand, they are very good batteries as long as they are used within their operating range. Their life cycle can be dramatically increased as well if they are not pushed above the limits specified in their respective datasheets.

Battery packs are generally built from many battery modules regrouping several cells connected in series & parallel to obtain the desired voltage & capacity. The main role of the BMS is to protect the cells inside of the battery pack from operating outside of their operating range and also to optimize their cycle life by monitoring them accurately (temperatures & voltages) while controlling the balancing, charging & discharging processes according to the predefined user settings. 

BMS role

For most DIY projects like e-bike or e-scooters that require less than 5 kW of peak power, there are several  BMS on the market that are "good enough" most of the time. When an application requires more than 5 kW of power, those "inexpensive" BMS are becoming insufficient at protecting the pack due to the facts that they do not allow their parameters to be adjusted (Fixed voltage, fixed balancing thresholds, no temperature monitoring & fixed current limits) and are using a solid state switch to disconnect the load from the battery pack in case of an emergency. The main problem with solid state switches is related to their nature of failing "closed"  instead of failing "open" like relays or contactors. 
A BMS is not meant to control the flow of charge or discharge in the battery pack. It is responsible of monitoring the cells voltages, monitoring the cell's temperatures and balancing series connected cells. The BMS can also communicate and inform external devices (Charger & motor controller) about the state of the battery pack, so they can react accordingly. The idea is to get all the battery pack data from the BMS so cell temperatures & cells voltage stays within their limits at all time during the charge & discharge processes.  The last task of a BMS is to cut off the battery pack from the rest of the world when the operating conditions are not met.


ENNOID-BMS is oriented toward high power applications where the battery pack long term performance is critical. ENNOID-BMS is integrated with EVC500 main contactors directly bolted onto the main board and is equipped with an heavy duty PCB soldered current sensor good up to 500A continuous. Integrating all components on the same board reduce the amount of cabling required and simplify the installation process.  ENNOID-BMS has a large set of parameters that can be precisely tuned by the user depending of the application. For instance, user can choose to limit the soft discharge and recharge voltages, thus improving cells durability. Other parameters such as MIN/MAX operating temperatures, balancing thresholds value, current limits and more options can be defined by the user through the  ENNOID-BMS-Tool app.

For a functional ENNOID-BMS, a Master board & one or several slaves boards are needed.

ENNOID-BMS currently have two master board versions : Master-HV & Master-LV. Both have more or less the same functionalities but can operate at different voltage levels.
  • Master-HV is oriented toward high voltage applications where isolation between high voltage & control circuit are required. For this, isolation ICs and two main contactors are used in order to isolate high voltage circuits. 
  • Master-LV is oriented toward low voltage applications having nominal voltages of less than 150V. Being less expensive than Master-HV is mostly due to the lower safety requirement when operating at those voltage levels. Master-LV has no isolation ICs & has only one main contactor to disconnect the pack from the load or charger.
Slaves boards are offered in three different versions : LTC6811-12S, LTC6812-15S & LTC6813-18S.  All three slave boards share the same built-in functionalities and have the same physical dimensions with similar pins layout. All versions are supported by the master board firmware and uneven cell numbers connected in series is possible. The choice of  which version to use will depend of the pack physical layout and/or the internal modules arrangement.

Pack configuration examples:
  • Master-LV monitoring 23S pack :
    •  2 x LTC6811-12S : 12S + 11S ( Optimal)
    •  2 x LTC6812-15S : 12S + 11S (Two slaves partially loaded)
    •  2 x LTC6813-18S : 12S + 11S (Two slaves partially loaded) 
  • Master-LV monitoring 27S pack :
    • 3 x LTC6811-12S: 9S + 9S + 9S (Three slaves partially loaded)
    • 2 x LTC6812-15S: 14S + 13S  (Optimal)
    • 2 x LTC6813-18S: 14S + 13S (Two slaves partially loaded) 
  • Master-LV monitoring 29S pack :
    • 3 x LTC6811-12S: 10S + 10S + 9S (Three slaves partially loaded)
    • 2 x LTC6812-15S: 15S + 14S  ( Optimal)
    • 2 x LTC6813-18S: 15S + 14S (Two slaves partially loaded) 
  • Master-LV monitoring 30S pack :
    • 3 x LTC6811-12S: 10S + 10S + 10S (Three slaves partially loaded)
    • 2 x LTC6812-15S: 15S + 15S  ( Optimal)
    • 2 x LTC6813-18S: 15S + 15S (Two slaves partially loaded)
  • Master-LV monitoring 35S pack :
    • 3 x LTC6811-12S: 12S+12S+11S (Good)
    • 3 x LTC6812-15S: 12S+12S+11S (Three slaves partially loaded)
    • 2 x LTC6813-18S: 18S + 17S (Optimal choice)
*For uneven cell count in series, only the last slave board in the daisy-chained loop should have one cell less connected than the other slaves. Ex: 39S = 10S + 10S + 10S + 9S

Setting-up ENNOID-BMS hardware

Power cables :

BAT+ & LOAD+ must obviously be connected to the main contactor terminals. The BMS needs to be connected as well to those terminals, but only for monitoring battery pack & load voltages. As mentioned earlier, ENNOID-BMS Master board is designed around the main contactor and should normally be bolted directly over the main contactors terminals & over the cable lugs. Main contactor & associated cables lugs with M8 hole are not supplied with PCB orders, but are required.

Warning: Size of the cable lugs must be compatible with contactor terminals & power cables. EVC500, EV200, LEV200 & GV series contactors are compatibles with the PCB mounting pattern.

User can also choose to install the main contactor remotely. In this case, the contactor terminals must be connected to the board with small cables & round terminals connected in their respective mounting holes for enabling the battery pack & load voltage monitoring processes. Keep in mind, the main positive current path does not run through the BMS, but through the main contactor.

On the other hand, the main negative current path must run through BAT- & LOAD-  in order to monitor the current going out of the battery pack. The large current shunt resistor is soldered directly underneath the PCB. M8 cable lugs + M8 bolts are required and must be connected directly to the shunt resistor from below. 

The main contactor discharge coil outputs are labelled and located next to their respective mounting PCB pattern.

Connector for coil output is part # 70543-0001 + 50-57-9402 + 16-02-0103 

Warning: Do not short-circuit the contactor coil outputs. Use contactor with built-in economizer. 

12V power input :

ENNOID-BMS  require at minimum an external 12V power supply connected to the 12V connector input. The power supply must be powerful enough to supply the peak power required to close the main contactor and protected against short circuits.

Connectors is part # 70543-0001 + 50-57-9402 + 16-02-0103 

Upper green right connector output can be used to feed the power supply from the battery pack. Simple wire & ferrules can be used on this connector. Connector is part #: 30.102

Warning: Make sure to respect the 12V power supply polarity on the 12V connector input. Power supply must be protected against short circuits.


USB, serial (UART) & CAN connectors are available and can be used  for communication purposes. At the code level, an abstraction layer provide equal functionalities & messages to be sent and received on each connector. Messages are normally broadcasted on USB, UART  simultaneously & can also be sent over CAN channel. The implementation of message is similar & will  be compatible to  VESC motor controllers in the future.

Connectors for UART & CAN are part # 70543-0004 + 50-57-9405  + 16-02-0103

 See: Communicating with ENNOID-BMS using UART

Power button

Any switch or push button N.O. contact can be used.  Common terminal from the switch should be connected to GND pin & N.O. to NO

Connector is part # 70543-0004 + 50-57-9405+ 16-02-0103 

For ENNOID-BMS, we normally use the following component: Button link


The OLED display output is using I2C protocol and the driver output for SSD1306 display is standard in the firmware.  Pinout on Master board should be connected according to the corresponding pins on the display. Any other I2C compatible display can in theory be used.

Many messages are shown on the display that can be helpful for troubleshooting or during main operation. Here is a list of displayed info:
  • Operation:
    • SOC
    • Pack voltage
    • Current
    • Pack temperature min
    • Pack temperature max
    • Pack temperature average
  • Precharge error
  • Global error/fault
  • Battery empty
  • Battery charged
  • YOLO mode
  • Charging:
    • SOC
  • Balancing:
    • SOC
Connector is part # 70543-0004 + 50-57-9405 + 16-02-0103 
For ENNOID-BMS, we normally use the following component: OLED link


Many different external charging scheme can be used with ENNOID-BMS depending on your needs. For onboard charger, the "Basic" method described below can be the easiest option to implement. When using an external AC-DC charger that needs to be connected & disconnected on a frequent basis, Standard & Basic+ methods can also be used for increased safety.

Coil output connector is part # 70543-0001 + 50-57-9402 + 16-02-0103

Note: Schematics examples below all assume that the main contactor is used and mounted below the Master-LV board as recommended.

2 wires chargers/power supply that don't have communication channel with the BMS must have an unloaded voltage equal or a bit above the fully charged battery pack voltage. Power of the charger will depend on the pack capacity. It is recommended to use a charger with a current rating in "A" which is approx 1/5 to 1/10 of the pack capacity in "Ah". Example, a 22Ah pack with a 4A charger is a good choice. Higher power charger are possible, but you will need communication between the charger & the BMS to reduce the current at high SOC. You can also use a 2 wires charger at higher current if you keep the SOC below 80% , otherwise the BMS will detect overvoltage before being fully charged due to the cell reverse sagging when charging. Communication with the charger is possible over CAN bus or serial, but is not fully implemented and/or not supporting many high end chargers at the moment. More to come on that topic in the future.The BMS is not yet compatible with public chargers or any associated protocols.

Basic method:

In some instances, when the charger & the controller can be connected together without problem or if using a single port for discharging & charging, the basic connection method is easy to implement and relatively safe. Inrush current when engaging the charger & when the load is connected can be problematic and can make this method unsafe in certain user cases (Depends on the charger & controller model used). Using this circuit will also make the Load/controller powered  ON during the charging process.  An optional simple power diode can be placed between the charger input & the load output to eliminate the presence of voltage on the disconnected charger plug when the load is enabled. Other option is to use single output, but will require the user to disconnect the controller for connecting the charger. The charger will be detected when there is presence of voltage coming from the charger on the Load/Controller output when the BMS is powered OFF. For this to work properly, the option "Allow charging during discharge" in ENNOID-BMS tool must be set to "true" otherwise, the BMS will stop discharging as soon as the load will be enabled. In this configuration, the charger detection signal input should beshorted
Master-LV Basic charger connection

Standard method:

When the user wants the Load/Controller to be powered OFF during the charging process and wants additional protections, an external relay is needed.

The charger detection signal input should be connected to the charger input as shown on the image below.  Simple wire & ferrules can be used on this connector. Connector is part #: 30.102
Master-LV Standard charging scheme with external charger relay connected to battery

Basic+ method:

Basic + charging method is a mix between Basic & Standard method. It will keep the Load/controller powered ON during the charging process & unlike Basic method, Basic + will offer protection against surge inrush current when the load is highly capacitive, but at the expense of requiring more components. Also, this method does not require a separate cable for charger detection. A power resistor sized for your application is required for operating properly and an optional diode can be used as well. As for Basic, the Basic+ method require the option "Allow charging during discharge" in ENNOID-BMS tool to be set "true" otherwise, the BMS will stop discharging as soon as the load will be enabled. In this configuration, the charger detection signal input should be shorted.
Basic + Charging scheme with external charger relay connected to load

Predischarge Load/controller output

ENNOID-BMS has a predischarge resistor mounted on the main PCB. The predischarge process is accomplished at the BMS initialization and the main contactor will be closed once the load terminal voltage has reached the "Minimal predischarge factor" which is pre-adjusted by the user with the ENNOID-BMS Tool. The load/controller should preferably stay connected at all time to prevent unwanted accidental connection when the BMS is powered. Connecting the load after the predischarge process is completed would cause a large inrush current that could potentially harm the load/controller.

Warning: Predischarge "Enabled" option must be chosen in the ENNOID-BMS tool. Do not use "Forced" option unless you have a previous version of Master-HV without built-in predischarge circuit.

Transient voltage protection

Master-LV comes with built-in TVS diodes against surge protections rated each for 1500W MPN: smcjXXXa. The XXX value is chosen according to the planned maximum operating voltage of the BMS plus a minimum of 10%. (30% is recommended with max regen enabled). Customer can specify his preferred value when placing an order.

Those TVS diodes are mounted directly on the PCB on each side of the contactor (1 on battery side & 2 on load side) and are normally sufficient for protecting the internal circuit in case of an emergency stop. For some very high power applications using an highly inductive load, it might be needed to add external transient protection.

Warning : User must specify the appropriate TVS clamping value at the purchase. Wrong TVS clamping values  could lead to permanent damage to the Master and slave boards during voltage spikes.

Warning: The onboard 1500W TVS might not be sufficient in all cases. When the BMS is used with an highly inductive load, an additional external TVS is recommended between LOAD + & LOAD - terminals.  External TVS is also recommended between BAT+ & BAT- terminals when the cables coming from the battery are highly inductive. Sizing of the TVS will depends on the user application. 

Slaves boards power input

Slave boards are self powered by the cells they monitor, no external power is required. Slave boards will fall into sleep mode after a few seconds of inactivity. Master board is responsible to wake-up the slaves boards by automatically sending the appropriate signal over the ISOSPI line.


Master board ISOSPI must be connected with the first slave boards PA-MA terminal. Then, PB-MB from the first slave boards should be connected to the subsequent slave board PA-MA connector in a daisy-chained fashion until reaching the last slave PA-MA connector. The last slave board PB-MB port will stay unconnected. Polarity between terminals is important for allowing the communication in the daisy-chain to be established. Connectors are part # 70543-0001 + 50-57-9402 + 16-02-0103 
LTC6811-12S slave board

Cell voltages

Cells voltages measurements are done between each pins on the cells monitoring connector. The 0 pin should always correspond to the lower voltage reference point in the monitored battery module and subsequent pins should correspond to the next cells voltage levels to be monitored.  If not all measurement channel are required, connect remaining unused pins to the last used pin.

Pin spacing is 2.54mm/100mil for all connectors on Slave boards.

Warning: Make sure to respect the proper cell order otherwise, the slave board will get damaged.


When temperatures measurements are needed, 100k thermistors with 4250k beta factor should be used between each monitoring temp channels & their respective slave board GND connector.

One thermistor is PCB mounted by default on each slave board. User can add external thermistors on the dedicated pins.

Pin spacing is 2.54mm/100mil for all connectors on Slave boards.

Temperature monitoring circuits on LTC6811-12S. Same pattern apply to other slave boards


  1. Can you please supply the dimensions of the Slave and LV Master boards including the hole spacing.

    1. Thanks for the board graphics, just excellent.

    2. Will update the blog with this info, for now you can use the CAD files here:https://drive.google.com/folderview?id=1KAuy9atZglmjDRCIAQg0tqhNt_eAjVLt

    3. Hello, do you have current schema file?

    4. You can find the basic schematics on github.

  2. I want to know if I can use this system to balance my 20s Lifepo4 configuration with 200ah for each cell. The balancing current is enough?

  3. Depends on many factors and use case. Can't take position on that with only this info...

    You can do some tests/some maths on your side and try to estimate the balancing requirement.

    The actual slaves boards design allow to be easily scaled up by paralleleing several 33 ohm discharge resistors, each one handling ~0.127A. This will definetely make the balance board a lot larger than the actual one... the discharge capacity for each discharge channel is only limited by the discharge mosfet max carrying current which can go in theory up to ~4A, see: https://www.mouser.com/datasheet/2/395/TSM2323_E10-254860.pdf

  4. Hi,
    I wanted to compile the code but couldn't find a feasible solution. Can you suggest the IDE and method to be followed to generate the .bin files?

    Thank you.

    1. Hi,

      Open source: stm32cube: https://www.st.com/en/ecosystems/stm32cube.html
      Paid : Keil uVision

      Many other IDE are supporting stm32 MCU

  5. When will the enoid bms hardware setup video be provided?

    1. I agree that a video is long overdue. I wanted to wait until ENNOID ESC & battery packs get available. So a complete setup can be shown.

      Meanwhile the SS BMS lineup has been developped which is easier to setup than the master+slave configuration and fit most users needs. Master+slave board stays relevant for advanced users, so a video becomes less relevant.

  6. Hello,
    I am planning to design a project that contains a 7.8KW system. The configuration of battery pack is 23S18P. I am using two slave boards. I do have some questions related to the BMS
    1: What type of charger is best suited for my system
    2: Can I use a lead acid battery charger with this system?
    3: I have connected the 0 balancing lead of first slave with overall negative of the battery. Should I connect the 0 balancing lead of second slave board with same negative terminal?

    1. Use my email for technical questions.

      Thank you

  7. Hi, may I know where can I find the PCB file for the Slave & Master?


Post a Comment