While the BA6010 can be used interactively with its large LCD and front panel buttons for spot measurements, the unit seems more suited to remote operation as part of a larger automated testing system especially with its higher reading rate modes. In this section, I focus on the provided documentation, interfaces provided by the BA6010 and using the BA6010 with a PC to run a number of experiments.


Documentation and Support

B&K Precision have provided a programming manual for the BA6010 that covers all of the SCPI commands it supports. Through reading the manual, I have found it to be relatively complete, although with a few minor typographical errors which I have reported for rectification.


Aside from this, there seems to be no other support at this time. Drivers for the USB interface are not provided, although a note is provided that clarifies this as the USB-CDC mode does not require any additional drivers and the USB-TMC mode will operate with the general IVI driver provided by most VISA layers.


Unfortunately, B&K Precision has not provided any instrument drivers (e.g. for LabVIEW), so users will have to refer to the programming manual. This isn’t a great issue, as the number of commands available is rather limited, but it will make it a little more effort than if an instrument driver were to have been provided.


While reading throughout the programming manual, it seemed that the functions covered most of the capabilities of the BA6010 with the exception of being able to return the raw measurement readings. On the display, these measurement readings can be toggled, but show up as Vm and Im representing the measured 1Khz AC voltage and current injected. I have enquired with B&K Precision but have not heard anything in regards to this. I also noticed that out-of-range readings which display with hyphens on the screen actually return numeric values not directly related to the actual value, so readings of >3.5kΩ to 12kΩ means “out of range”.


Interfaces  RS-232RS-232 Serial

The default interface for the instrument as shipped and after a factory reset is the humble RS-232C port on the rear better known as a Serial or COM port connection Unlike some other test equipment and serial devices which act as DCEs the BA6010 is configured with a female port with wiring order that resembles a DTE instead This arrangement is somewhat less common for a device that wouldn’t otherwise be expected to control a DCE(e.g a modem As a result in order to use the  RS-232RS-232 mode you will need a null modem cable (as opposed to a regular straight serial cable) to go between DTE (your PC) to DTE (BA6010).

Null Modem Cable

The BA6010 supports a range of fixed baud rates, defaulting to 9600bps, but also capable of up to 115200bps. The port itself does not support flow control or handshaking lines, according to the manual.


As a pure serial device, there is no need for any configuration – it’s as simple as firing SCPI commands with the correct line termination at the COM port and receiving a reply. However, in modern times, unless you really need a “hardware” serial solution, the same convenience can be had with the USB-CDC mode.


Interfaces: USB-CDC

The USB interface supports two modes of operation – CDC (or Communications Device Class) is used to emulate a USB serial port in a “driverless” fashion under modern operating systems. Operating this is much the same as if you had a serial cable attached between a COM port and the instrument, instead, it operates over USB.


The device installed automatically under Windows 10 with no problems. Trialling this using Hyperterminal, we have to set the correct line-ending characters to ensure commands are recognised.

Hyperterminal Line-Ending Configuration

After that, it’s as easy as sending SCPI commands down the virtual COM port which seems to work as expected.

BA6010 Hyperterminal USB-CDC Commanding


Interfaces: USB-TMC

The final mode that is supported is USB TMC (or Test and Measurement Class). This is a specific mode of operation intended for test and measurement devices as a “replacement” for GPIB. To use a device in TMC mode, users must first install a VISA layer which has IVI drivers bundled with. The most popular VISA layer is National Instruments VISA (NI-VISA) and is the one recommended by B&K Precision.


I downloaded and installed NI-VISA 18.0, the latest release at the time of writing, and the instrument was also detected and installed without a problem. In order to use the instrument, users will have to write a program that uses the VISA layer’s libraries or use some software which automates this (e.g. NI-LabVIEW).


For the following experiments, owing to not being a LabVIEW user and not having access to the software, I chose to automate my testing by using the free open-source pyvisa library and Python 2/3, which can be installed in a single package in Windows using WinPython amongst other distributions. Alternatively, some other test equipment manufacturers do have pyvisa based scripting tools which you might choose to install and use instead. For the scripts which I used, please see the Appendix at the end of this blog.


Experiment: AC Internal Resistance vs DC Internal Resistance

A point of confusion raised by some novices to battery testing is the difference in AC internal resistance versus the results obtained through pulsed-discharge (or DC internal resistance) test methods.

BK8600 Pulsed Discharge

To examine this, I performed a pulsed discharge test using my B&K Precision Model 8600 DC Electronic Load on a Panasonic NCR18650B Li-Ion cell with spot-welded tabs. The discharge load was kept at 1A, cycling to 1.5A for five seconds in every one-minute period. The DC internal resistance was determined as the delta of the voltage between the two load levels, divided by the difference in current load (0.5A). The AC 1kHz internal resistance and voltage were recorded from the BA6010.

BA6010 AC IR vs BK8600 DC IR

As can be seen in the graph, there is quite a difference between the internal resistance readings from the DC method versus the AC method. The trend of the DC method does show some slight discontinuities, likely because of my calculation method which has some time-alignment dependencies and does not account for the natural downward trend of voltage due to the effect of discharge. In general, the AC method produces lower internal resistance readings than the DC method – this is reflected in the datasheets for certain batteries where the internal resistance for both methods are mentioned.


As a result, it’s important to ensure that you choose the right method of testing to obtain comparable data values. However, it’s important to emphasise that the values obtained by both test protocols are valid – just under different conditions. The big advantage is the AC method does not require discharging the battery and can be performed rapidly.


Experiment: AC Internal Resistance over Discharge for Alkaline, Ni-MH, Lead-Acid and Li-Ion

As I have never had access to this type of battery analyser before and literature in regards to how the AC internal resistance behaviour of batteries seems to be scant (except for a few guideline readings), I decided to take the opportunity to characterise a range of batteries of different chemistries.


To understand how the AC internal resistance evolves, batteries were tested with the B&K Precision Model 8600 DC Electronic Load configured to run a standard discharge test while the B&K Precision BA6010 Battery Analyser simultaneously measured the AC internal resistance. The discrepancy in the voltage values in the plots are due to running the B&K Model 8600 in two-wire mode, owing to the limited amount of connection space on the terminals of some of the tested batteries and to simplify set-up. The voltage difference represents the voltage drop along the load-wires.



The first thing to test is the ubiquitous Alkaline battery, something that I am very familiar with. I got out one of my Varta Longlife AA Alkaline cells for a 100mA CC test (for speed).

BA6010 Varta AA

The internal resistance of the cell showed some unusual variation throughout the discharge cycle, initially rising quite sharply. This may have been due to electrolyte diffusion-related resistance, but I’m not sure. The resistance then began to decrease, which might be a side-effect of cell heating due to the discharge process. Eventually, as the cell voltage began to plateau, the resistance began to increase and maintain throughout the rest of the discharge process signifying a sort of “equilibrium”.


I repeated the test with an element14 Proelec AAA Alkaline cell at 25mA CC.

BA6010 Proelec AAA

The trend does show an initial sharp drop followed by a rise, although instead of plateauing, the resistance seems to increase nearly consistently over the discharge with minor variations possible due to changes in room temperature.



This naturally led me to examine what the AC internal resistance behaviour of Ni-MH rechargeable cells would be like, as they are often used interchangeably with Alkaline cells. I tested my Ansmann 2850mAh cells under a C/5 load of 570mA CC.

BA6010 Ansmann 2850mAh Ni-MH

The internal resistance again showed a sharp initial drop, followed by a rise and a nearly-continual decrease towards cell depletion. However, the internal resistance variance is extremely small – only six milli-ohms throughout the full capacity.



The third chemistry that is commonly encountered is lead acid. To test this, I used a number of small gel-cell SLA batteries I had on hand, which are several years old and somewhat worse for wear.

BA6010 Century 7Ah SLA

Testing the first Century 7Ah cell I had on hand with discharge at C/20 (350mA) rate, the internal resistance was already higher than the expected value. Likewise, the cell only achieved around half the expected capacity, so that was interesting to see. The internal resistance seemed quite steady in its trend, increasing as the battery was depleted.

BA6010 Century 18Ah SLA x2

With my two Century 18Ah cells, Microsoft decided my machine needed to reboot to apply updates during one of the tests resulting in the interpolated yellow section. Nonetheless, the internal resistance trends are quite smooth with lead-acid chemistry, and accordingly, the worse battery scores a higher internal resistance – as we would expect, which would confirm the use of AC IR testing to be highly valuable for lead-acid cells.


While testing, I had a strange situation with one SLA gel cell that led to the BA6010 continuously clicking its relays and changing ranges while running the data logging program. By observing the voltage across the battery’s terminals, I saw the voltage was jumping up and down almost continuously. Using a traditional load test, I determined that the battery was not capable of holding any charge, so I suspect it was a combination of the injected test current and the lack of battery capacity that caused an interaction with the BA6010 resulting in wild voltage/current swings that caused the unit to continuously “hunt” through the ranges trying to attain a stable reading.



The next chemistry I had to hand was Li-Ion. My initial test of Li-Ion batteries focused on three Panasonic NCR18650B 3450mAh cells with solder tabs. These provided a good low-resistance point of connection to the cells. Testing was performed at 1A CC discharge rate.

BA6010 NCR18650B Test 1BA6010 NCR18650B Test 2BA6010 NCR18650B Test 3

In order of testing, each sample had slightly higher internal resistance than the previous, although the trends appear to be extremely similar – showing an initial fall, followed by a slow rise, only increasing as the cell becomes completely depleted.

However, it seems that testing a number of other 18650 cells posed a problem since they were salvaged from laptop batteries in the past and I only had some cheap battery holders to use with them. The battery holders had such poor highly-resistive contacts to the batteries that it proved to be hard to get any good results. In fact, some of the change in resistance probably reflects the settling of the battery inside the holder rather than innate changes in AC resistance of the cell itself.

BA6010 Samsung 26CBA6010 Samsung 26F

BA6010 Panasonic NCR18650BA6010 Panasonic CGR18650CG

The easiest way to see the influence of the battery holder is to compare these two results of the same ATL Li-Ion cell – the first one is with it inside a battery holder, the second with soldered (not-recommended) leads to the terminals.

BA6010 ATL INR18650 Battery HolderBA6010 ATL INR18650 Soldered

It seems that for most Li-Ion cells, the internal resistance decreases for a little at the beginning of discharge, increasing throughout the discharge but not varying by a large amount. This means that AC internal resistance testing can be used for Li-Ion cells over most of their state-of-charge range without too much influence on readings.


As a result, for accurate results, it is imperative that users build their own test jigs to ensure consistent contact area, contact geometry and contact pressure to cells/terminals to ensure repeatable comparable results. Low-cost commercially available battery holders are, for the most part, only suitable for low current appliance use, rather than for metrology purposes.


Furthermore, to actually better understand what impedances are acceptable and which represent compromised cells, aside from using generalised “threshold” values, it can be necessary to characterise your cells to understand the impedance behaviour of a representative set of cells throughout their lifetime.


Experiment: Testing New vs Random Old Batteries

Another experiment I ran was a simple screening experiment, testing new AA batteries fresh from the packet and testing AA batteries in a “random batteries” container whose status was unknown. Using the R-V mode and the manual data sampling mode, the cells were placed inside a low-cost battery holder which undoubtedly contributed slightly to the internal resistance reading.

BA6010 Fresh Battery Scatter Plot

With the fresh batteries, the open circuit voltage was consistently good with the internal resistance mostly clustered below 200mΩ which does correspond quite closely with the expected values of anywhere from 150mΩ to 300mΩ.

BA6010 Random Batteries Scatter

With the set of random batteries, we can see how much the internal resistance can increase with different chemistries (zinc chloride vs alkaline) making them unsuitable for use with higher drain devices, as well as a spread in open circuit voltage (representing various levels of battery depletion). There are even some rechargeable cells that had become completely flat measuring practically zero volts, but with an acceptably low internal resistance that suggests the cells may be healthy. In one case not shown here, a shorted cell was also identified.


As a result, the BA6010 shows its advantages in that it can be used to quickly screen batteries to pick out faulty or underperforming batteries within a pack or collection of cells. The use of the 1kHz AC impedance test is an established screening procedure within battery manufacturing plants with datasheets often providing information about the expected value for good cells. This method is rapid, taking less than half-a-second per battery and causes no damage to even primary cells.


Experiment: Testing Recharged Alkaline Batteries

Warning: You should not try this at home – if you choose to attempt recharging primary cells, you do so at your own risk. No responsibility will be accepted for any loss or damages howsoever incurred.

Seeing as I already had some depleted Alkaline batteries from my earlier experiment and I spent quite a bit of time looking at whether recharging Alkaline batteries even worked, I decided to see what the AC internal resistance behaviour of such batteries would be like. In theory, the internal resistance would be expected to rise significantly as the cells started to fail, as the voltage dips quite strongly under load.

BA6010 Varta AA Recharged

It is noticeable that the internal resistance of the cell increased by around 50% each time it was recharged. Despite this, the AC internal resistance change was not quite as large as I had expected, which may be related to how the battery responds to high frequency loads rather than low-frequency loads where DC internal resistance is expected to show even greater change. However, the actual cell performance under the 100mA CC test load was quite poor after recharging, which suggests that the Varta Longlife Alkaline AA cells are not highly amenable to recharging.



The BA6010 is capable of PC-connected remote control through RS-232 (default) supporting a number of fixed baud rates from 9600bps to 115200bps, USB-CDC and USB-TMC modes. B&K Precision provide a programming manual which is comprehensive in covering the commands supported, with only minor typographical errors which I have reported for correction. The downside is that there are no instrument drivers provided (e.g. for LabVIEW) which might make integration easier for some users. That being said, the number of commands supported is fairly limited but complete, so it’s not a big issue to refer to the programming manual. The only exception seems to be support for returning the raw 1khz AC voltage and current measurements (Vm/Im) which are displayed on the screen.


While working with the device, there are some potential pitfalls to be aware of – one of which is that the device does return an extra useless field with FETC? commands (as noted in the manual). Another is that out-of-range readings which display with hyphens on the screen actually return numeric values over SCPI, but these are not directly related to the actual quantity measured – so seeing anywhere from >3.5kΩ to 12kΩ returned over SCPI indicates “out of range”.

With the BA6010 working in combination with the B&K Model 8600, I was able to perform AC internal resistance measurements to characterise the internal resistance behaviour of a sample of Alkaline, Ni-MH, lead-acid and Li-Ion cells over a full discharge. I was also able to perform AC and DC internal resistance measurements with the two units, confirming that the readings often differ but are both of value for different reasons.


The BA6010 was also successfully used on its own as a quick screening tool to identify the status of a box of random cells, as well as to determine the spread in parameters seen on a box of fresh cells. The BA6010’s 1kHz AC impedance test mode shows its strengths in being fast to screen cells, capable of being used simultaneously with a load on the battery, does not deplete the cells under test and the 60V range is highly appropriate for individual cells and small batteries alike.


The experiments also showed that for accurate results, it is imperative that users build their own test jigs to ensure consistent contact area, contact geometry and contact pressure to cells/terminals. Furthermore, to actually better understand what impedances are acceptable and which represent compromised cells, aside from using generalised “threshold” values, it can be necessary to characterise your cells to understand the impedance behaviour of a representative set of cells throughout their lifetime.


In my testing, I was able to able to automate testing and collect data continuously and also manually using pyvisa. The remote interface worked reliably to capture the data, although I did encounter some transient issues with one particular computer and combining other-vendor test equipment into the set-up that would cause “input protocol violations” to be reported. Adding an instrument_query_delay of 0.1s helped improve the situation which would only occur sporadically over the course of hours. Once the other vendor equipment was disconnected, no such errors occurred even with the delay removed while the other vendor equipment worked flawlessly throughout. I suspect this may be specific to the USB controller in my main desktop machine but I thought it was worth mentioning in case someone else encounters this.


I also encountered a situation where during auto-ranging measurements, the BA6010 was nearly continuously clicking its relays and changing ranges. It seems that very “dead” SLA gel cells can have such a high resistance and capacitance that the injected test current causes the battery to change its voltage or impedance so much that the range change (with a change in injected test current) leads to a jump in readings that causes the BA6010 to “hunt” through its ranges with the unstable reading. This doesn’t seem to be a design issue as such – more an interaction between the DUT and the measurement equipment.


Appendix: pyvisa Scripts

Please note, I have supplied my pyvisa code for reference, however you may not be able to run it because it uses absolute instrument references including serial numbers, hard-coded file paths, it may require the availability of other instruments, it may be written for Python 2 and you’re trying to run it on Python 3 (or vice versa), the code may rely on Windows-only libraries. No liability is taken for this code – use it at your own risk.


Continuous Data Logging

# Logging from B&K Precision BA6010

# Gough Lui (goughlui.com) - September 2018


import visa

import time

import datetime


resource_manager = visa.ResourceManager()

ins_ba6010 = resource_manager.open_resource('USB0::0x0471::0x6010::520L17113::INSTR')


# Roll Call

print 'Available:' + '\n' + ins_ba6010.query('*IDN?')


# Open Data Files

print 'Opening a logfile ...'

data_log = 'D:\experimental\logout.csv'

f = open(data_log,'a')


# Set Up BA6010

print 'Setting Up - BA6010'

ins_ba6010.write('TRIG:SOUR BUS')


# Begin Voltage Experiment

print 'Begin Testing'

while True:



  bavolts = ins_ba6010.query_ascii_values('FETC?',separator=',')





# Close Log

  1. f.close()


# Announce Completion

print 'Script Completed!'


Manual Data Logging

# Manual Sample Logging from B&K Precision BA6010

# Gough Lui (goughlui.com) - September 2018


import visa

import time

import datetime

import winsound


resource_manager = visa.ResourceManager()

ins_ba6010 = resource_manager.open_resource('USB0::0x0471::0x6010::520L17113::INSTR')


# Roll Call

print('Available:' + '\n' + ins_ba6010.query('*IDN?'))


# Open Data Files

print('Opening a logfile ...')

data_log = 'D:\experimental\manlog.csv'

f = open(data_log,'a')


# Set Up BA6010

print('Setting Up - BA6010')

ins_ba6010.write('TRIG:SOUR BUS')


# Begin Voltage Experiment

print('Begin Testing')


while True :

  input('Press enter to record')

  for i in range (0,2):






  bavolts = ins_ba6010.query_ascii_values('FETC?',separator=',')




# Close Log

  1. f.close()


# Announce Completion

print ('Script Completed!')



This blog is part of a series of posts for the B&K Precision BA6010 Battery Analyser RoadTest, where you will find all the links to the other parts of the review.