HF Signal Propagation and Frequency Accuracy

I decided to measure the impact of propagation on the received frequency accuracy of HF signals. My idea was to record the frequency and amplitude of standard time and frequency stations; since they are transmitted with an accuracy of a few parts in 10-13, and my local frequency references are within a few parts in 10-12, any offset seen in the received frequency has to be the result of propagation.

As you can see from the plots below, there is a very definite frequency shift that occurs each day around sunrise and sunset. During those times, the received frequency may be shifted by half a Hertz or more. This offset is the result of a Doppler shift as the reflecting layer of the ionosphere moves upward or downward. When the ionosphere is rising, it's moving away from the transmitter and receiver. That increasing range causes the frequency of the signal, as received, to decrease. When the ionosphere is moving lower, the opposite occurs and the received frequency increases. Only when the ionosphere is staying still can the receiver "see" the signal as transmitted.

I measured signals from the US time and frequency station WWV, as well as its Canadian counterpart, CHU. I am located in Dayton, Ohio, 1100.61 miles (1771.26 km) from the WWV transmitters in Fort Collins, Colorado. The bearing from Dayton to Fort Collins is 280.21 degrees. I'm 608.79 miles (979.75 km) from the CHU transmitters near Ottawa, Ontario, and the bearing from Dayton to Ottawa is 47.68 degrees.

Because it is closer to my location, and the path is much more north-south, the CHU results aren't as interesting as the ones for WWV.

This chart shows the frequency offset of the three WWV signals over the course of 24 hours, starting at about 3:30AM local time. Don't pay too much attention to the large offset of the 2.5 MHz signal during the middle of the day; its signal strength was so low at midday that the frequency counter can't be relied on. Instead, pay attention to the upward and downward blips that occur in all three signals at around 0900 and 2100 hours. Those are Doppler frequency shifts.

Here are close-up views zooming in on the frequency change at sunrise and sunset that day:

These charts show the frequency offset during that 24 hour span. They superimpose the raw data (each reading taken 2.5 minutes apart) in cyan over the running averages shown in the previous charts.

Again, the mid-day values for 2.5 MHz are pretty much meaningless:

Note that the 5 MHz signal never seems to hit the zero offset point on this day:

These charts show both frequency offset and received signal strength over a bit more than seven days:

Measurement System

I'm using three HP 3586C selective voltmeters, which are basically 50 Hz to 32 MHz receivers with a very accurate "S meter" (showing signal strength with a resoloution of 0.01 dB) and a frequency counter that measures the strongest signal in the passband with 0.1 Hertz resolution. The receivers are controlled via the GPIB bus from a Linux computer running a Perl script.

Each station transmits on multiple frequencies, and I monitored three signals from each -- between each measurement cycle, the three receivers change frequency from one station to the other. The end result is one measurement every five minutes from each of the six frequencies. Each measurement is the average of 20 individual readings taken over about 70 seconds.

My receive antenna is a 100 foot wire "Short Carolina Windom" about 30 feet off the ground. The antenna feeds the three receivers through cascaded low and high pass filters to knock down AM, TV, and FM broadcast signals, and a passive three-way splitter that has a loss of about 5 dB.

Invalid readings result when the signal level drops below the sensitivity of the 3586C. Unfortunately, my graphing tool doesn't deal gracefully with missing data; it can't show gaps as empty points on the plot. To address this, I set the amplitude value for a bad reading to -120 dBm, well below any valid reading. On the frequency side, I clip the frequency offset to a maximum of plus/minus one Hertz, and also interpolate so that one or two anomalous readings don't result in a spike on the plots. I'm still working on the best way to handle this issue.