• take the bins from the display FFT and search in the bins that are in the filter pas
sband
(which is usually quite narrow in CW) for the loudest signal (do averaging over several
FFT loops). Note the number of that bin
• take the signal values of that bin, the bin below and the bin above (do that several
times and average to account for pauses between the dits and dahs) and calculate a
three-bin quadratic interpolation to exactly determine the frequency of that signal (with
the formula shown above)
• calculate the deviation of the received CW signal from Rx fre
- CW sidetone
• show t
his deviation graphically inside the spectrum display or waterfall display
This method is pretty accurate to at least 5Hz in the lowest magnify mode (1x) and
becomes even more accurate with higher magnify modes.
Jacobsen, & Kootsookos (2007): Fast, accurate frequency estimators. - IEEE SIGNAL
PROCESSING MAGAZINE [125] MAY
2007.
https://www.researchgate.net/publication/3321864_Fast_Accurate_Frequency_Esti
mators_DSP_Tips_Tricks
Lyons, R.S. (2011): Understanding Digital Signal Processing, Prentice-Hall, 3rd Ed.
http://www.embedded.com/design/configurable-systems/4007643/DSP-Tricks-Spectral-
peak-location-algorithm
Details for programmers
How do we process for the graphical TUNE HELPER? [2017_09_15]
•
Ui_Spectrum_RedrawSpectrum()
•
apply window function to 256 samples for spectrum/waterfall display
•
do FFT
•
calculate complex magnitude values
•
do scaling
•
do lowpass filtering
•
if(we have a valid pulse recognized by the CW_decoder routine) jump to
UiSpectrum_CalculateDBm
•
calculate bin bandwidth --> bin_BW