The adjacent 4-minute video provides a great introduction/overview to the ANT BMS.
The write-up here is not intended to be a step-by-step tutorial. It's really just my observations as a first-time user.
Note that ANT's documentation sometimes uses the phrase “protective board” to refer to their BMS.
Hopefully, it will fill some gaps in the OEM documentation and possibly add a few insights.
Although I presently have no use for an ANT BMS, I know two guys who do. One wants to build a custom battery and another needs to replace a failed BMS. Both are motorcycle applications. I offered to be the guinea pig, and ordered the version that supports 7 to 16 series cells and is rated for 80 amps continuously (200 amps for 10 seconds). It comes with built-in Bluetooth for setup and monitoring. Although it looks great on paper (especially for the price) you don't really know what you'll get until you start working with it.
Prior to ordering from the AliExpress store IC GOGOGO, I downloaded the user manual, Windows software, and Android APK file from ANT's website. The PC software requires a separate USB interface board. I bought this because my old eyes like working with a computer rather than a phone. I never thought I say this, but I actually prefer the Android app to the PC software (more on that later).
To make my evaluation easier, I repurposed a Greenworks battery pack that was configured 20S1P. This meant I did not have to spot-weld any cells. My electronic load is only capable of handling a maximum of 60 volts, so I just tapped the positive end of the 20S pack at the 14th cell. The cells are LG Chem ICR18650-HE4 with a nominal 2.5 Ah capacity. Although the Greenworks pack is rated for 180 Wh, it was decommissioned back in June 2023 when it could only deliver 128 Wh. This evaluation experiment is the perfect final use for it.
Charging test setup. Thermistors are not required to be connected.
Prior to removing the heatsinks for photography, I wanted to ensure the BMS worked. The unit derives power from the battery via the Black and Red cell connection wires. So I just powered it up by connecting a bench supply between those wires. Since it's specified to operate with as few as 7 cells (which may only provide 21 volts, or less) that's the voltage I used.
When the BMS is first connected to power, it's in what I would call “standby mode” where it consumes almost no current. In order to configure the BMS, it can be activated in one of two ways. The simplest method is to momentarily short the “S” and “V” terminals together with a push button.
Alternatively, providing about 4 volts between the “+” and “-” terminals at the communications interface also works. This is the method used by the computer/USB interface.
This minimal configuration allows communications with the Android application. Although the ANT BMS app is available via Google Play, I preferred to sideloaded it.
Credit: ANT, Communications Interface pinout for 7-16S units
The optional USB/Computer Interface accommodates two different cables to mate with different styles of BMSs. The cable in the plastic bag came with the BMS (not with the optional interface) and was initially confusing as I saw nowhere to connect it.
Android terms acceptance message?
I skimmed the User Agreement and Privacy Policy. They are very long (maybe a dozen screens in total) and written in perfect English. It reads more like something you might get from Facebook or Microsoft.
If you don't read Chinese, you have no idea what you are agreeing to each time the Android app runs. The app requires location information. I have no idea why this would be necessary. Fortunately, the Android app will run on a tablet. Call me paranoid, but I really don't care to give it access to a phone. There is also an iOS version.
The Windows software starts in Chinese. Changing to English required a bit of hunting for the correct tab. (It's about the 7th one from the left along the top of the screen). Overall, the English is very good, but not all items are translated.
Interestingly, the Windows app does not seem to require location information.
But as I mentioned earlier, the Android app (version 2.3.5.120) is much nicer.
Windows ANT BMS application State screen
The following observations relate to the two photos below.
Components are covered with a conformal coating. This makes reading part numbers more difficult.
The 48-pin TQFP on the top of the PCB is more than just an analog front end. It is a Sino Wealth SH367309U / 048UR and the Chinese datasheet calls it a BMS. It can run as a standalone BMS or be used with a microcontroller.
The 48-pin LQFP on the bottom of the PCB the microcontroller. It is a Nation N32L406 CBL7. This is a very powerful 32-bit ARM Cortex-M4 with 128 KB of Flash and 24 KB of SRAM.
The separate blue PCB on the bottom is the Bluetooth module.
The copper-colored components are 0.2 mΩ shunt resistors for measuring current.
Balance resistors are 43 ohms in a 6032 package and rated 0.6 watt. An LED is associated with each balance circuit. The LED illuminates when a given cell is being discharged. These LEDs are difficult to observe because the top cover mostly blocks the view.
The black square near the upper righthand edge of the PCB is a piezoelectric buzzer. It sounds when the BMS awakens from sleep, when a command has been accepted, and likely when a fault condition arises.
The heavy black (C-) and blue (B-) connection wires are made from two flexible #10 AWG cables connected in parallel. They are each roughly 10 cm long. I measured the resistance of each parallel pair at 0.18 mΩ.
Thermistors are nominally 14.5 kΩ at 17 °C.
ANT 80-amp BMS, top of PCB
ANT 80-amp BMS, bottom of PCB
A BMS may either switch on the high side (battery positive rail) or the low side (battery negative rail). There are advantages and disadvantages to both methods. Typically, sophisticated systems (automobiles) use high-side switching via an electromechanical contactor (relay). Whereas low-cost systems (bicycles) switch using MOSFETs on the low side. Electric motorcycles fall in the middle, and either system may be used.
N-channel MOSFETs are typically used for switching because they have a lower on-state resistance than comparable P-channel MOSFETs. However, high-side switches utilizing N-channel MOSFETs require a voltage greater than that available from the battery pack to drive their gates. This complication requires the use of a charge pump circuit.
Switching the high side allows an uninterrupted connection to system ground which may be desirable for continuously monitoring the BMS. Alternatively, an isolated communication channel could be provided, but that adds cost to the system.
The 80-amp ANT BMS switches on the low side using SVG104R0NS N-channel MOSFETs. They are manufactured by Hangzhou Silan Microelectronics and rated 120 A, 100 V with a 3.4 mΩ on-state resistance.
Eight such MOSFETs are connected in parallel to form the discharge switch. An additional eight such MOSFETs are connected in parallel to form the charge switch. This provides a combined on-state resistance of 425 μΩ (3.4 mΩ / 8) for each switch. For some context, current is measured using two 0.2 mΩ shunts in parallel (100 μΩ).
The complete charge and discharge MOSFET switches are then connected in series (850 μΩ total) to create the current flow path.
At the rated continuous discharge current of 80 A, the MOSFETs dissipate at total of less than 6 watts. At the rated 10-second current of 200 A, the MOSFETs dissipate 34 watts. Over-temperature protection is provided for the MOSFETs.
Additionally, a single SVG104R0NS MOSFET is used for the pre-charge switch. More on that later, as it does not work as I had assumed.
All MOSFETs are in thermal contact with the aluminum cover plates (heatsinks) by way of a thermal pad (which is unfortunately fairly thick). Thermal resistance is directly proportional to the thickness of the pad.
Credit ANT: 14S connection scheme. Note position 9 is a no-connect and positions 8 and 10 both go to cell #7.
Credit ANT: Overall generalized 16S connection scheme
These observations represent my best understanding at the time of writing, but there may be errors. You should consider the manufacturer's reference material as the definitive source.
The BMS is always connected to the battery, but is only operational after it has been awakened by either of the methods mentioned earlier. The BMS remains awake (active) as long as it is Charging, Discharging, or Communicating (via either Bluetooth or USB). When all those activities cease, the BMS is supposed to go back to sleep within about 30 minutes.
In addition to there being one LED associated with each balance circuit, two other LEDs are present (one on each side at the connector end of the circuit board). When the BMS is asleep, no LEDs are illuminated. When the BMS is active, both LEDs flash. When communications have been established, the LED near the communications interface connector turns to solid-on.
Interestingly, you can communicate via the Bluetooth/phone app and the USB/computer app simultaneously. The Bluetooth works over a fairly substantial distance (several meters at least).
The charger must limit its output current to whatever your battery can safely accept. The BMS's current measurement resolution seems to be 0.1 amp. Towards the end of charging, the displayed value would alternate between 0.1 and 0.0 amps. However, my charger was actually supplying about 0.2 A during that time.
Note that any BMS must completely cut power in response to a protection event (over-current, over-temperature, etc.). This can result in a sudden, complete loss of power. It is unlike a motor controller's protection which can “throttle back” to a lower current/power.
The firmware's default parameters may allow your system to function, but it's likely many settings will need to be optimized. In fact, some default settings may be quite inappropriate for your particular system configuration.
It's important to understand the concept of hysteresis as it relates to the parameters. Take the cell voltage spread as an example. AutoBalancing can commence when the voltage difference between strongest and weakest cell exceeds 20 mv. AutoBalancing stops when the difference drops to 5 mv. If there was just a single number (say 10 mv) the algorithm would oscillate around the setpoint -- which is not desirable.
Also note that AutoBalance cannot be locked in the enabled state. It automatically reverts to being disabled when charging discontinues. This makes sense because you don't want to constantly perform balancing as that needlessly drains the cells.
There are no hardware signal lines for the user to operate the charge and discharge MOSFETs. Initially, I thought this meant they had to be manually controlled each time via the use of an app. But both the Charge and Discharge functions can be simultaneously enabled (and the BMS just figures out what to do based on current flow). The way the app works is to have buttons called ChargeON / ChargeOFF and DischargeON / DischargeOFF. It would be more understandable to me if the states were called something like “allow” and “disallow” for both charging and discharging.
To further complicate things, the nomenclature between the Windows app and the Android app is sometimes inconsistent.
In general, ANT's documentation could be improved. My major complaint is that their User Manual is a picture which makes it impossible to search. Furthermore, text cannot easily be extracted for notes. I'm forced to take a screenshot and then do OCR. The following item is an example.
Quoting ANT, “If the protective board is not charged or discharged after being turned on, it will enter sleep mode after 1800 seconds. Sleep will only turn off Bluetooth, not shut down. When the protective board detects charging or discharging current, it will wake up Bluetooth immediately. (The length of standby time can be modified), standby can reduce the power consumption of the protection board.”
Unfortunately, the slightest drain (even a 10 MΩ multimeter) keeps the discharge current flowing. Perhaps this should not come as a surprise, but it means that a motor controller would be powered-up constantly. The only way I've found to completely shut off the voltage is to disable the discharge MOSFET via the phone app.
It's possible to put the BMS into standby mode by invoking the “Close BMS” software button. The BMS can be restarted in the same manner as the initial activation, or by connecting a charger (which must be at least 2 volts above the present pack voltage).
The following signal and block names are used in the diagram show below.
VC1 through VC17 are inputs from individual cells.
RS1 and RS2 are inputs from the current measuring shunt resistor.
VADC likely stands for Voltage ADC. It is a 13-bit converter with a 20-channel MUX in front. The datasheet says it runs at 10 Hz. This would seem to imply that it takes 2 seconds to sample all 20 channels. However, the datasheet also says the voltage measurement cycle time is 5 ms. This implies a 200 Hz sample rate. The datasheet also says temperature channels are sampled only once per second.
CADC likely stands for Current ADC. It is a 16-bit sigma-delta type ADC running at 4 Hz. I believe this is part of the coulomb counter since the VADC also has a channel to measure current.
OC Module presumably stands for Over Current Module. It likely can act much quicker than either ADC for short-circuit detection.
TWI stands for Two-Wire Interface. It uses the I2C (Inter-Integrated Circuit) protocol to communicate with the microcontroller.
CHG, DSG and PCHG are outputs to gate the Charge, Discharge and Precharge MOSFETs.
CHGD, and DSGD are inputs that stand for Charge Detection and Discharge Detection.
T1, T2, T3 are thermistor inputs. It appears two are for external sensors and one measures a temperature on the circuit board.
LDO stands for Low Drop Out regulator. There are three such regulators: two provide 3.3 volts and the third provides 11 volts for MOSFET gate drive.
Credit: Sino Wealth 367309U datasheet
Much can be learned from Sino Wealth's typical application circuit, and I present a schematic fragment from it below. Although the fragment is crucial to gain an understanding of the BMS, the MOSFETs are drawn in an unconventional manner and their parasitic body diodes are not shown.
Note that the left end of the heavy line connects to battery negative. The right end of the heavy line connects to the charger and load.
R30 and R31 connect to the AFE's RS1 and RS2 inputs which measure the differential voltage across the parallelled current shunt resistors R35, R36, R40, R42. Each resistor is 5 mΩ, and four in parallel create a 1.25 mΩ shunt. The datasheet specifies a measurement range of +/- 200 mV. This implies a maximum current measurement range of +/- 160 amps (200 mV / 1.25 mΩ). Note that the 80 A unit I examined has two 0.2 mΩ resistors in parallel, yielding a current measurement range of +/- 200 A.
R26 connects to the AFE's pin DSDG, which detects when a load is present and battery discharge is requested.
R27 connects to the AFE's pin CHGD, which detects when a charger is connected and battery charging is requested.
Q2 is the Discharge MOSFET. Although drawn as a single MOSFET, several may be connected in parallel in an actual implementation.
Q3 is the Charge MOSFET. Although drawn as a single MOSFET, several may be connected in parallel in an actual implementation.
Q1 is the Precharge MOSFET. It is used in conjunction with current limiting resistor R41 (which the reference design shows as being 100 ohms).
Source to gate resistors keep the gates from floating in the absence of a gate drive signal. Zener diodes clamp the gate to source potential at 15 volts.
Credit: Sino Wealth 367309U datasheet
I charged a 1000 uF capacitor in two ways to see how the ANT BMS behaved.
First I tried connecting the capacitor with the Discharge MOSFETs switched “off”, then switched the MOSFETs “on” using the Android app. This resulted in the waveform shown below on the left. The voltage rises following an exponential charging curve where it plateaus near 56 volts in about 3.6 ms. This is not a brutal precharge curve, but I would prefer something more gentle.
Next I tried connecting the capacitor with the Discharge MOSFETs already switched “on”. This would be equivalent to just plugging the battery into the motor controller. It resulted in the waveform shown below on the right. It has a strange step in the curve. It's possible I introduced some “connection bounce”, but it still only takes about 1.2 ms to get to 46 volts. This is clearly less desirable than the first method.
Switched Discharge MOSFET “on” using Android app.
Connected capacitor with Discharge MOSFET already “on”.
Precharge is a term I'm familiar with from motor control where it's desirable to have a current-limited path that facilitates a gentle charging of the controller's DC-bus capacitors.
However, that's not what the Sino Wealth / ANT precharge does. Precharge from the BMS's point of view is completely different. It took me a long time to figure out what was going on (see photo below). It's really a matter of definitions.
Quoting Texas Instruments' Ap Report Parallel Paths with the BQ76952 Battery Monitor Family, “The pre-charge path is used to limit current into the battery from a fixed voltage charger when the battery is deeply discharged. The pre-discharge path is used to charge high capacitive loads without a high current spike.” [ Emphasis mine. ]
Two requests to ANT for technical support on this topic have gone unanswered for over a week.
The two large (9 × 3.6 mm) SMD resistors form R41 in the Sino Wealth schematic fragment shown above. Immediately to the right is the precharge MOSFET (Q1 in the same drawing).
As can be seen, the color banding is brown, black, gold, gold (1.0 ohm) and green, black, silver, gold (0.5 ohm). These resistors are connected in parallel to give 0.33 ohm.
I tried increasing this resistance to 25 ohms, but it had no effect on charging the motor controller's capacitors. Now I understand why.
Bottom line, the ANT BMS's “precharge” is intended to protect the battery, not make life easier for the motor controller.
The ANT has been a good learning experience.
I have ordered a DALY BMS. In theory, it should solve two vexing issues with the ANT (lack of controller precharge and no way to disable discharge with using the phone app). I will evaluate it and report my findings on a separate webpage.