GPS Satellite Carrier Doppler Shift
In this text I intend to find out how quickly the carrier frequency of GPS satellites changes as a result of the Doppler effect. I also intend to find out in what ranges one should expect the carrier frequency value to vary for GPS satellites and why.
I will solve the problem in a simplified form, numerically in Python. To solve this problem, ordinary school mathematics and physics are enough.
Statement of the problem
Given:
Parameter | Meaning | Variable designation | Units of measurement |
Radius of the Earth | 6378000 | R_e | m |
GPS orbit radius | 26600000 | R_o | m |
Speed of light | 299792458 | c | m/s |
Carrier frequency of the signal | 1575420000 | F_L1 | Hz |
Mass of the Earth | 5.9722e24 | M | kg |
Gravitational constant | 6.6743015e-11 | G | m³ kg⁻¹ s⁻² |
For simplicity, let us assume that the observer is located at point A.
Find:
# | Size | designation |
1 | Dependence of the distance to the satellite on time | D F_L1_Hz=1575420000.0 #L1 carrier Orbit_speed_mps = np.sqrt(G*Mass_of_earth_kg/Ro_m); print(“OnePRNpath {} m”.format(OnePRNpath_m)) print(“SV Orbit_speed {} m/s”.format(Orbit_speed_mps)) Orbit_path_m = 2*math.pi*Ro_m SV_OrbitPeriod_s = Orbit_path_m/ Orbit_speed_mps #Coordinates of receiver t_s = np.arange(0, SV_OrbitPeriod_s, 1.0) SV_x=Ro_m*np.cos(phi_rad) Dist_vector = (SV_x-Rx_x)+ 1j*(SV_y-Rx_y) Dist_m = np.abs(Dist_vector) fig, axes = plt.subplots(2) axes[0].plot(t_s, Dist_m, label=”dist[m]”) axes[1].plot(t_s, h_deg, label=”h [deg]”) axes[0].legend(loc=”best”) plt.xlabel(‘Time,[s]’) plt.show() This is the distance graph we got. As you can see, the distance to the satellite is minimal when its astronomical altitude is 90 degrees. At the zenith. And this is a graph of the satellite's speed relative to the GNSS receiver. Here you can see that the absolute speed of the satellite is minimal at the zenith (0 m/s) and maximal (~930 m/s) when the satellite approaches the horizon. At the same time, let me remind you that the satellite moves along the orbit at a speed of ~3874 m/s. Now the Christian Doppler effect comes into play. As is known, GPS satellites emit a signal on a carrier with a frequency of F_L1 = 1575.42 MHz We see that the maximum absolute frequency shift from the carrier is -4884 Hz….4885 Hz. That is, the entire range is 9771 Hz. By the way, the Doppler shift of a satellite can be used to calculate its speed relative to the observer. By integrating the speed over time, you can estimate the distance (without a constant offset). If you make such measurements in different places on Earth, you can, to some extent, calculate the orbit of a satellite! Determine the orbit of a satellite with some kind of inert antenna… Pretty normal, right? Now let us numerically differentiate the reception frequency f_rx |