AFC (Automatic Frequency Control) FM demo python and GRC scripts

Hi all,

I wrote two gnuradio AFC (Automatic Frequency Control) demos

This AFC technique can come in handy when your tuning is critical and
there is a frequency offset or doppler shift to be expected.
(Like when trying to receive NOAA weather satelites which can have a
substancial doppler shift. I am also working on an updated gr-noaa
receive script which uses this AFC. )

There is a broadcast FM demo and a NOAA weathersatellite narrowband FM
simulation demo.

You can discuss and give feedback on the gnuradio AFC demo’s here:
(But feedback on the gnuradio mailinglist is also OK of course)

You can read about and download the gnuradio AFC demo’s here:

Here follows the README:

Gnuradio AFC demo’s

This directory contains gnuradio GRC and python example scripts for
using AFC in an FM receiver.

There is not (yet) a AFC gnuradio block.
So these examples implement the AFC by lowpass filtering the FM
demodulator output and putting the result in a variable sink.
The variable sink then sets the center frequency of the frequency
translating channel filter.
This compensates any frequency offset or doppler drift.

To limit the performance penalty of calling python code from the
samplestream, the code is only called once a second.

The critical settings of this feedback loop are:
AFC_gain (float)
AFC_IIR_alpha (float)
AFC_update_rate (float value: seconds between updates)

If you want to use this for a different FM signal type also make sure
you set the right channel_bandwidth and max_dev (=Maximum FM frequency
deviation in Hertz)

Have fun

17 Mar 2010
Martin Dudok van Heel


Very, very useful, thanks for sharing Martin.