This version (30 Jul 2021 02:40) was approved by Zuedmar Arceo.The Previously approved version (15 Mar 2021 11:51) is available.Diff

CN0510 User Guide


The CN0510 circuit is an electrochemical impedance spectroscopy (EIS) measurements system for characterizing Lithium Ion and other types of secondary batteries. EIS is a non-destructive perturbation technique used to examine processes occurring inside electrochemical systems. The system measures the impedance of the battery cell over a range of frequencies. The data can determine the state of health (SOH) and State of Charge (SOC) of a battery. This system is designed to excite and measure a battery’s internal impedance with frequencies from hertz to kilo-hertz utilizing an ultralow power analog front end (AFE) system.

Ageing leads to performance degradation and irreversible changes in the battery’s chemistry. Impedance increases linearly with the decline in capacity. Monitoring the increase in impedance of a battery using EIS can determine the SOH and if the battery needs replacing, resulting in reduced system downtime and lower maintenance costs.

Batteries require a current excitation, not voltage, and the impedance values are small, in the milliohm range. This system includes the necessary circuitry to inject a current into the battery and allows for calibration and sensing of the small impedances found in batteries.

Required Equipment

Documents Needed

Software Needed

  • Serial Terminal Software (PuTTY, TeraTerm or similar)
  • Keil (Optional)

Hardware Needed

  • EVAL-ADICUP3029 circuit board.
  • EVAL-AD5941BATZ Battery Measurement Board.
  • PC with a USB port and Windows® 7 (32-bit) or higher.
  • USB type A to USB micro cable.
  • BNC cables.
  • Battery for measurement.


General Setup

Ensure the boards are powered before connecting the battery to avoid a short circuit.


  1. Connect the EVAL-AD5941BATZ to the EVAL-ADICUP3029 via the Arduino headers.
  2. Plug in BNC cables.
  3. Power the boards by connecting the micro USB cable into P10 on the EVAL-ADICUP3029 and the other end of the USB cable to your computer.
  4. Connect the battery as shown in figure above.
    • Connect F+ and S+ leads to the positive terminal of the battery.
    • Connect S- and F- to the negative terminal of the battery.
    • Connect red BNC wires of J1 and J2 to the positive terminal of the battery.


There are two options for running battery impedance measurements on the EVAl-AD5941BATZ. The first is using SensorPal GUI tool. SensorPal provides an intuitive interface that allows the user to configure and update parameters such as frequency range and view measurement results in Nyquist form without needing to downlaod or use an IDE such as Keil. This option is best for rapid prototyping and measurement verification. The second option is to run the example projects in an IDE such as Keil to modify the low level embedded firmware. This options offers more control over the low level operation of the hardware but requires some knowledge of embedded C development


  1. Download and install SensorPal by following instructions here
  2. To run the battery impedance measurement drag and drop the Battery Impedance tab from the Electrochemical Techniques area on the left hand side of the screen to the Work Area which is located towards the top of the screen.
  3. Select desired measurement characteristics such as Start Frequency, Stop Frequency Point etc.
  4. Click Measure to begin the measurement
  5. The measurement may take some time to start as the hardware is initialized.

Embedded Firmware Development

  1. Download one of the supported IDE environments IAR Embedded Workbench or Keil.
  2. Download the AD5940 Source Code from GitHub.
    • Note, there is a shared library for the AD5940 and AD5941 products.
  3. Navigate to the ad5940-examples and open the AD5940_BATImpedance example.
  4. Configure the default measurement parameters to your requirements.
    • Use the AD5940BATStructInit(void) function.
    • The data structure AppBATCfg_Type contains the configurable parameters for the application.
    • Note, the hardware is optimized for frequencies above 1Hz. Measurements below this value are noisier due in part to the 1/f noise of the external amplifiers.
  5. Build and compile the example project into a .BIN or .HEX file that can be used to flash the embedded target.

Serial Terminal Output

The measurement results are sent to the PC via UART. To establish connection over UART, connect the Micro-USB cable to the PC and to the EVAL-ADICUP3029 board. A serial terminal program is required to display the results. The following is the UART configuration:

  Select COM Port
  Baud rate: 230400
  Data: 8 bit
  Parity: none
  Stop: 1 bit
  Flow Control: none

A serial terminal is an application that runs on a PC or laptop that is used to display data and interact with a connected device (including many of the Circuits from the Lab reference designs). The device's UART peripheral is most often connected to a UART to USB interface IC, which appears as a traditional COM port on the host PC/ laptop. (Traditionally, the device's UART port would have been connected to an RS-232 line driver / receiver and connected to the PC via a 9-pin or 25-pin serial port.) There are many open-source applications, and while there are many choices, typically we use one of the following:

Before continuing, please make sure you download and install one of the above programs.

There are several parameters on all serial terminal programs that must be setup properly in order for the PC and the connected device to communicate. Below are the common settings that must match on both the PC side and the connected UART device.

  1. COM Port - This is the physical connection made to your PC or Laptop, typically made through a USB cable but can be any serial communications cable. You can determine the COM port assigned to your device by visiting the device manager on your computer. Another method for identifying which COM port is associated with a USB-based device is to look at which COM ports are present before plugging in your device, then plug in your device, and look for a new COM port.
  2. Baud Rate - This is the speed at which data is being transferred from the connected device to your PC. These parameters must be the same on both devices or data will be corrupted. The default setting for most of the reference designs in 115200.
  3. Data Bits - The number of data bits per transfer. Typically UART transmits ASCII codes back to the serial port so by default this is almost always set to 8-Bits.
  4. Stop Bits - The number of “stop” conditions per transmission. This usually set to 1, but can be set to 2 for redundancy.
  5. Parity - Is a way to check for errors during the UART transmission. Unless otherwise specified, set parity to “none”.
  6. Flow Control - Is a way to ensure that data lose between fast and slow devices on the same UART bus are not lost during transmission. This is typically not implemented in a simple system, and unless otherwise specified, set to “none”.

In many instances there are other options that each of the different serial terminal applications provide, such as local line echo or local line editing, and features like this can be turned on or off depending on your preferences. This setup guide will not go over all the options of each tool, but just the minor features that will make it easier to read back data from the connected devices.

Example setup using Putty

  1. Plug in your connected device using a USB cable or other serial cable.
  2. Wait for the device driver of the connected device to install on your PC or Laptop.
  3. Open your device manager, and find out which COM port was assigned to your device.
  4. Open up your serial terminal program (Putty for this example)
  5. Click on the serial configuration tab or window, and input the settings to match the requirements of your connected device. The default baud rate for most of the reference designs is 115200. Make sure that you use the correct baud rate for your application.
  6. Ensure you click on the checkboxes for Implicit CR in every LF and Implicit LF in every CF.
  7. Ensure that local echo and line editing are enabled, so that you can see what you type and are able to correct mistakes. (Some devices may echo typed characters - if so, you will see each typed character twice. If this happens, turn off local echo.)
  8. Click on the open button, and as long as your connected device and serial terminal program are setup the same, than you should see data displaying.
Hint: If you see nothing in the serial terminal, try hitting the reset button on the embedded development board.

Battery Test and Results

Below is an example of the Nyquist plot obtained for a Lithium Ion battery measured using the EVAL-AD5941BATZ.

Schematic, PCB Layout, Bill of Materials

EVAL-AD5941BATZ Design & Integration Files

  • Schematics
  • PCB Layout
  • Bill of Materials
  • Allegro project


Receive software update notifications, documentation updates, view the latest videos, and more when you register your hardware. Register to receive all these great benefits and more!

End of Document

resources/eval/user-guides/circuits-from-the-lab/cn0510.txt · Last modified: 30 Jul 2021 02:40 by Zuedmar Arceo