Hi Freaks,
I've been immersing myself into learning FFT and, since finding it a little tedious, I thought I might seek some guidance from the brains-trust on whether its likely to be the right way to go before investing too much time on something that isn't. (Ain't commercial life fun!)
Essentially I'm measuring impedance (or least the real part of it) of a battery insitu. So far I'm doing this by injecting a 1kHz stimulus current (measured across sense resistor) and measuring the resultant voltage across the battery. This involves talking an RMS calculation of both V & I wave forms, a bit of ohms law, and job done.
Problem is this only works properly when there is no charger ripple present across the battery.
At this point I have achieved some reasonable results (within a few mohm) by taking 2 sets of measurements, 1 with and 1 without the stimulus current applied, taking the difference, after correcting for phase shift, and then performing the RMS calc. This has been optimised for a narrow range of freq say ±15Hz.
Unfortunately, the charger ripple frequency can vary between charger models. So far I have measured ~150Hz but have others expected to be anything up to 300Hz.
Also, the sampling freq and window length make the RMS calculation frequency dependent so I'm considering alternative methods such as Standard Deviation, FFT, Goertzel which I believe should also eliminate need for the phase-shift/subtraction.
Ultimately I would like readings for both the rms charger ripple and the rms stimulus current. Are the amplitudes or magnitudes output by an FFT likely to be usable for absolute level measurement? Would the Goertzel algorithm be the go given the known 1kHz stimulus or would that fall out of the FFT while looking for the unknown frequency ripple.
Is it perhaps better/easier to just measure the frequency, say zero crossings and then adjust the sample rate and window length to suit? Sort of auto-tuned to the particular installation if you like?
I will be most grateful for any thoughts, ideas, suggestions or other.
Cheers,
Steve