Battery Emulator based on Arduino

Hi,

I need to build a battery emulator to test a battery management system as part of a project at university. I just need to ensure the BMS can safely operate the batteries and take care of any anamolous situations.

The battery chemistry I need to emulate is an Li ion battery.
I'm aware of the difficulties of emulating the charge cycle (for example, the fact that the emulator has to draw power), but would like to emulate the discharge profile with the circuit. I need to use the Arduino to read values of current and voltage off a data file, communicate it to the circuit and ultimately have these values outputted as they were entered in the data file.

I have a few doubts:

  1. Is Arduino capable of outputting specific values of voltage at specific instances of time?
    Like say, 3.7 V at time 1, 3.6 V at time 50, and so on. From what I understand, it can provide either a 3.3 V or 5 V output. I'm not exactly sure how I can translate this to output the voltage I need. An Li ion battery has a relatively flat discharge curve through most of its operation. However,there are still small changes in its output voltage, and large changes towards the end of the cycle.

As such, during any one run, I guess the current draw will need to be constant.

I'm thinking of using the Uno, or possibly the Due.

I'm not entirely clear on what else I will need to consider to get the circuit functional. This is the first time I've had to work on a micro-controller related project, and as such, any suggestions and guidance would be extremely welcome.

Also, any ideas for circuits (with or without a micro-controller) that could stress the BMS during the charge cycle will also be greatly appreciated. For example, make sure it shuts down if there's an overvoltage.

Thanks in advance :slight_smile:

PS: I found a similar work based on a PIC microcontroller at this link: B# battery emulator project
However, I do not need the recording feature. In addition, a lot of the features implemented in this project will be quite difficult to replicate.

Their project was a discharge emulator. You want to build a charge emulator, right?

I think you would need to build a low impedance programmable voltage regulator feeding a programmable resistor (a good MOSFET would do for the programmable resistor) to emulate the voltages and the internal resistance. You'd also need to monitor the voltage and the current. There are lots of current sensors available. There are also DACs that can be programmed using SPI (like the MAX5721 they use) that could be used to control the regulator and the resistance.

Yes, this sounds like something that would be very do abel with a Arduino Uno.

The Due has 2 DAC channels, so it would be slightly simpler using it.

This is Dynamic Load it have CC &CV for your emulating the charge cycle
http://ko4bb.com/Test_Equipment/DynamicLoad/

An Li ion battery has a relatively flat discharge curve through most of its operation. However,there are still small changes in its output voltage, and large changes towards the end of the cycle.

I would disagree with that conclusion. Li-ion cells have a pretty linear voltage discharge curve of from 4.2v at full charge to 3.0 volt as a recommended value to stop discharging or risk damage. In fact many so called 'fuel gauge' displays are based on just measuring the cell's terminal voltage and estimating remaining charge based on where the voltage is on this curve. Ni-cad and nimh cells on the other hand have quite flat voltage discharge curves up to near end of capacity where they fall like a rock, so estimating remaining charge life of these is much more difficult just based on terminal voltage.

Lefty