A project I am working on currently is to create a heart beat sensor using a finger plethysmograph. It returns a signal to my ucontoller that only includes positive peaks. For example, the ideal signal it will sent to my ucontroller would be
1 1 1 5 1 1 1 5 1 1 1
Where the numbers represent the amplitudes. There ideally will be no negative components to the signal. My goal is to detect these peaks and count the number of milliseconds between the peaks and use that to calculate the bpm accurately. I could use a slope detection method but it would probably only be accurate for an ideal signal with no noise.
For the real implementation and not so ideal case, I was thinking that I could use an FFT. Theoretically the highest bpm of a human heart is approximately 4Hz, my nyquist rate would be 8Hz. With a 16 point FFT, each bin would contain real and imaginary parts in sections of 8/16 Hz. I could calculate the magnitude for each bin. Im guessing the bin with the highest magnitude would be frequency of the peaks??
Is my approach correct?? Can I only detect differences of .5Hz using a 16 point FFT? Also, do I use the FFT in a window shift method or only perform the FFT after 16 points of a signal??
Would you be able to elaborate paul?
– Aug 23 '12 at 20:36