Several weeks ago, in an AMSAT EA informal meeting, Eduardo EA3GHS wondered about the possibility of using WSJT-X modes through linear transponder satellites in low Earth orbit . Of course, computer Doppler correction is a must, but even under the best circumstances we cannot assume a perfect Doppler correction. First, there are errors in the Doppler computation because the TLEs used are always measured at an earlier time and do not reflect exactly the current state of the satellite. This was the aspect that Eduardo was studying. Second, there are also errors because the computer clock is not perfect. Even a 10ms error in the computer clock can produce a noticeable error in the Doppler computation. Also, usually there is a delay between the time that the RF signal reaches the antenna and the time that the Doppler correction is computed for and applied to the signal, especially if using SDR hardware, which can have large buffers for the signal. This delay can be measured and compensated in the Doppler calculation, but this is usually not done.

Here we look at errors of the second kind. We denote by

the function describing the Doppler frequency, where is the time when the signal arrives at the antenna. We assume that the correction is not done using , but rather , where is a small constant. Thus, a residual Doppler is still present in the received signal. We will study this residual Doppler and how tolerant to it are several WSJT-X modes, depending on the value of .The dependence of Doppler on the age of the TLEs will be studied in a later post, but it is worthy to note that the largest error made by using old TLEs is in the along-track position of the satellite, and that this effect is well modelled by offsetting the Doppler curve in time. This justifies the study of the residual Doppler

.In this study, we will use the satellite LilacSat-1 , which is a member of the QB50 constellation. It was released from the ISS on May 25 this year, and so it is in a circular orbit with an altitude of around 420km and inclination of 52. The TLE used is

1 42725U 98067ME 17188.90653574 .00007620 00000-0 11662-3 0 99982 42725 51.6409 294.7316 0007224 26.7821 333.3542 15.55427837 6725

This was the latest TLE available from Celestrak for LilacSat-1 at the time when this research was started. The epoch is 2017/07/07 19:45:24. We will be looking at the pass starting at 2017/7/9 03:12:00 UTC, which is the next overhead pass at the time when this research started, as seen from my station's location at 40.6007, -3.7080, 700m ASL. This is how this pass looks like in Gpredict .

LilacSat-1 pass

The Doppler, and especially the rate of change of Doppler near the time of closest approach is higher in a high elevation pass, so this overhead pass was chosen to provide a worst case. We will only look at the effect of the Doppler in the downlink of the satellite. This case is interesting if the residual Doppler in the uplink is much smaller than the residual Doppler in the downlink, or if the signal is transmitted by the satellite as a beacon. In the next post we will look at both the uplink and downlink Doppler, as this case is much more involved, since it depends on the geometry between the two stations and the satellite.

The most popular bands used in linear transponder satellites are the 2m band and the 70cm band. Here we will study the 70cm band, since the Doppler is higher. The 2m band is essentially 3 times "easier". We assume a frequency of 436.5MHz, which is in the middle of the 70cm satellite sub-band (435-438MHz).

We will use PyEphem to perform the Doppler calculations in python, by calculating the range velocity (change of distance to the satellite with respect to time). It was verified that Gpredict and PyEphem give the same values for the range velocity, as there are some worrying reports that PyEphem computes a wrong range velocity. The Doppler profile for this pass can be seen below.

As expected for a low Earth orbit satellite pass on the 70cm band, the Doppler goes down from 10kHz to -10kHz. The most challenging part for Doppler correction is near the time of closest approach, when the Doppler passes through 0Hz, the derivative of the Doppler is largest, and its second derivative changes sign.

Now we turn to the residual Doppler

. Note that this can be approximated by for small delta. Below we can see the residual Doppler computed for different values of .We note that the shape of the residual Doppler is always the shape of the derivative

. Positive residual Dopplers correspond to the case , since . We also note that even for an offset as small as 200ms, the residual Doppler is already around 35Hz at the time of closest approach. This can be devastating for many WSJT-X modes, which have tone spacings much smaller than 35Hz. We remark that several WSJT-X modes are able to compensate some form of linear frequency drift. However, near the time of closest approach this is not very helpful. Perhaps much better performance can be achieved by trying to compensate for a frequency drift given by a second order polynomial, but probably this already makes the search space too large.We see that outside of the interval

we can ignore the residual Doppler for the values of that we are considering here. The residual Doppler is small and more or less linear. This is encouraging: only the 3 central minutes of the pass are challenging. Here we only look at these 3 central minutes, and we decide to start all our WSJT-X signals at , where the residual Doppler is worst (note that all the modes that will be examined here use periods of 60 seconds, except FT8, which uses periods of 15 seconds).The decoding tests with WSJT-X have been made with Python. As stated above, PyEphem is used for the Doppler computations, while NumPy is used for DSP computations. The residual Doppler is computed using PyEphem for

using a step of 1 millisecond. Then the command line tools from WSJT-X are used to generate WAV files with the signals at a given SNR. These WAV files are read with NumPy, shifted in frequency according to the residual Doppler and stored in disk again. Finally, they are passed to the WSJT-X command line decoder and the number of decodes depending on is noted. There is more information about generation of sample signals and decoding using the WSJT-X command line tools inthis post. The version of WSJT-X used is r8021 from SVN.本文开发（python）相关术语:python基础教程 python多线程 web开发工程师 软件开发工程师 软件开发流程

本文标题：WSJT-X and linear satellites: part I

本站链接：http://www.codesec.net/view/561303.html

分享请点击：

1.凡CodeSecTeam转载的文章,均出自其它媒体或其他官网介绍,目的在于传递更多的信息,并不代表本站赞同其观点和其真实性负责；

2.转载的文章仅代表原创作者观点,与本站无关。其原创性以及文中陈述文字和内容未经本站证实,本站对该文以及其中全部或者部分内容、文字的真实性、完整性、及时性，不作出任何保证或承若；

3.如本站转载稿涉及版权等问题,请作者及时联系本站,我们会及时处理。