07-05-2012 02:03 PM
Hi,
I am writing a VI that takes multiple rechargable batteries and puts them through several charge/discharge cycles, while measuring voltages through the process. Can anybody direct me to some resources that can help me? Ive done a lot of searching and am still stuck in some things. In particular, im looking for help in determining when a battery is charged from its voltage measurements, as well as how I can program this without having a seperate copy of the code for every battery.
I am using an NI X-series DAQ device.
Thank you
07-05-2012 06:58 PM
What kind of battery chemistry? Each type of battery has different charge/discharge characteristics. Some do not correlate cell voltage well with state of charge. For many batteries keeping track of charge makes more sense. Many battery manufacturers publish detailed information on the chractersitics of their batteries.
You will probably need some kind of information storage about the battery types you will be testing. If you have a small number of types and few parameters for each, you could store the data as block diagram constants. That generally is not a good method as it has no flexibility. Setting up a file with the data can be as versatile as you want to make it. You could use text files, XML files (which are specially formatted text files of course), LV configuration files (also text files), or some kind of database.
Lynn
07-06-2012 08:11 AM
The batteries I am testing are lithium ion. From what I understand, their voltage readings peak when fully charged and then slowly start to drop when being overcharged. In my VI, I used a peak detector but I dont think its the right solution in this case. I have attached my VI, keep in mind that this is my first Labview project. Right now, its thearetically set up so that it will automatically charge and discharge when it determines the battery is drained or charged. Also, it currently assumes that there is only one battery, I would like it to be able to perform these actions on each battery independantly. Any help would be appreciated.
Thank you.
07-06-2012 06:19 PM
From what I have read both the voltage and current must be monitored and controlled to safely and efficiently charge Li-ion batteries. There are several different chemistries in the lithium battery "family" and each has slightly different requirements.
The first thing I would do with your program is get rid of the dynamic data types. Coming from the signal simulator the dynamic data type contains a waveform with 100 samples (all having the same value). In the false case of the small case structure the signal is compared to a scalar constant. The result is a dynamic data type containing a boolean. In the true case the signal passes through. Now, the selector inputs of the two case structures (you only need one, by the way) are expecting booleans but get dynamic data which MAY contain either a boolean or a waveform. Note the coercion dots. LabVIEW converts that waveform to a boolean --- BUT no one outside NI R&D knows exactly how that conversionis done. Does it take the first sample, the last sample, or some combination and compare to zero to get a boolean? Or does it use the t0? Or something else? As the programmer, you need to know what your program is going to do and this does not allow it.
The peak detector does not work because you give it only one data point. Where is the peak in an array of one element? And remember that if that first case structure used the false case, the data into the time averaging VI contains only a boolean.
Lynn
07-09-2012 09:21 AM
Thanks Lynn,
I have abandoned the peak detector VI. Im going to try a new method where I read the last values written to the file, and then use text based programming to compare them and determine if there is a plateau.
07-09-2012 10:57 AM
The method I described above seems to be working for me. Note that the parameters used are to satisfy the simulated signal.
07-09-2012 12:30 PM
Dmhuisma,
You might want to look over this link;
http://batteryuniversity.com/learn/article/charging_lithium_ion_batteries
We use a chip designed for this kind of work and monitor the status lines from it;
www.ti.com/lit/ds/symlink/bq24005.pdf
07-09-2012 12:46 PM
elrathia wrote:
We use a chip designed for this kind of work and monitor the status lines from it;
www.ti.com/lit/ds/symlink/bq24005.pdf
Yep, though if you're reading the status lines from that chip by a microprocessor/DAQ I'd recommend the BQ24006, since the fault condition is both lines high rather than a "flashing light" from the -5.
(working on a charger/conditioner PCB right now using the BQ24006 IC)