The following Snipits were taken directly from the Orion BMS installation Guide available online from ORIONbms

There are many additional complexities that have to be considered when building a battery pack out of individual cells. Each cell in the battery pack must be protected from over voltage, over current and over temperature. Cells in the pack must be properly balanced and matched for internal resistance in order to maintain the maximum usability of the battery pack. If cells are not properly balanced, or if one cell becomes weak or warmer or colder than others and current is applied to the pack, current can be forced through weaker cells and can damage them. Additionally, if multiple strings of batteries are put into parallel, differing resistances can cause current to take the path of least resistance and cause imbalance.


State of Charge (SOC or SOC%) - How charged the battery is, expressed in percentage

Dept of Discharge (DOD or DOD%) - Most commonly used to express the percentage of the battery that is to be used, but sometimes refers to the percentage of the battery that is discharged.

Open cell voltage - The voltage of the cell with no load or charge applied. This can be an actual measured value or a calculated value for what the cell voltage would be if no load were present.

Internal resistance - The effective series resistance of the battery. More on this below


How the BMS Calculates Internal Resistance

Internal resistance calculation is incredibly important in batteries because it is required for determining how many amps can go in and out of a battery without exceeding itís maximum and minimum voltage limits. It is also required for calculating the Open Cell Voltage (also referred to as the open circuit voltage, 0 current voltage or resting voltage) of a battery. It can also be used to determine the amount of energy that is burned up as heat (cell efficiency).

The internal resistance of the cell can be calculated using the formula delta v=I * Ri

where Delta V is the difference in voltage between the open cell voltage (no load) and the voltage under load, I is the current in amps, and Ri is the internal resistance of the cell expressed in ohms. For our example, we have a battery that measures 3.35 volts with no load applied. We apply a 100 amp load to the battery and the voltage drops to 2.85 volts. To calculate the internal resistance of the battery, the following equation is used:

(3.35-2.85)=100A * Ri

 Solving for Ri, we find that the internal resistance is 0.0045 or 4.5 milliohm (mOhm.)

The internal resistance is an important number for several reasons. First, it allows for monitoring of the cellís health. If one cell in a pack has a significantly higher internal resistance than the other cells in the pack, the cell may be weak, out of balance with the others or at a significantly different temperature. Temperature, state of charge, and age / health of the battery all effect a cellís internal resistance. Since the pack is only as strong as the weakest cell, identifying cells with a high internal resistance is important to preserve the performance of the battery pack Second, knowing the internal resistance of a cell allows for calculating the maximum charge and discharge the pack can take before exceeding the voltage limits or under the maximum and minimum cell voltages respectively. These values are calculated real-time by the BMS using many different parameters and are updated several hundred times per second



State of Charge Calculation

State of charge is primarily calculated using coulomb counting and is dynamically corrected using SOC drift points. Coulomb counting is a method that keeps track of current going into and out of the battery pack. Coulomb counting generally works quite well as long as the capacity of the battery is known and the current sensor is accurate enough. Because no coulomb counting system can be perfectly accurate, errors will eventually build up. To correct those errors, dynamic state-of-charge drift is used to compensate.

Charge and Discharge Current Limits

Charge and discharge limits are the realistic maximum amperage limits (expressed in 1 amp increments) that a battery can output (discharge) or input (charge) at any given moment without exceeding the maximum and minimum cell voltages respectively.


How the BMS Calculates Current Limits

The Orion BMS uses many different factors in calculating limits, all of which are based on settings in the battery profile:

  1. The temperature of the battery pack (some batteries can't handle as much current in warmer / cooler temperatures)
  2. The internal resistance (sometimes referred to as impedance) of the battery pack
  3. Battery pack voltages (including individual cells, both open circuit voltages and voltages under load)
  4. Maximum limits provided by battery profile (BMS will not allow limits to go above maximum limits in profile)

How Balancing Works

The Orion BMS uses passive balancing to remove charge from the highest cells in order to maintain the balance of the pack. The passive shunt resistors dissipate up to approximately 200mA per cell. While that amount may seem small, that current is more than sufficient for maintaining balance in very large battery packs.

Thermal Management and Fan Controller

The Orion BMS has a built in thermal measuring system as well as a fan control system which can turn on and intelligently throttle a fan while measuring the voltage of the fan to insure that it is functioning properly.

System Overview

The Orion BMS is designed to be connected externally to a lithium ion, NiMH or NiCAD battery pack. The BMS relies on many inputs such as cell voltage tap sensors, a total pack voltage sensor, current sensor, thermistors, and data provided by the user to calculate safe limits for the battery pack.


Edited for length, and taken directly from the Orion BMS installation Guide available online from ORIONbms