In that post, I described about how to receive the position data from the RS92 and plot it in Viking in real time. Since then, a few features such as FEC decoding have been added to the RS decoder software, so I have decided to give this a go again with the newer RS41. This will be a complete walk through, since some people are interested in setting up unattended decoders, perhaps running on a Raspberry Pi.

First we download and compile the decoder as follows.

git clone https://github.com/rs1729/RS cd RS/rs41/ ln -s ../ecc/bch_ecc.c bch_ecc.c gcc rs41ptu.c -O2 -lm -o rs41ptu

Now we set up GPSd to read NMEA data from a pipe, as we did for the RS92:

mkfifo /tmp/gps sudo chmod 666 /tmp/gps sudo gpsd /tmp/gps

Finally, we use SoX to record and filter the FM-demodulated audio and pipe it into the decoder. A Perl script is used to convert the output of the decoder to NMEA, which is piped into GPSd. This Perl script had a bug (it converted incorrectly positions west of Greenwhich and south of the equator), but my bugfix has been already merged into upstream.

rec -t wav -r 48000 - 2>/dev/null | \ sox - -t wav - lowpass 2800 | \ ./rs41ptu --ecc --crc -i | \ ../rs92/pos2nmea.pl > /tmp/gps

You may or may not need to use the `-i`

option with `rs41ecc`

depending on whether your receiver is frequency inverting.

The line above assumes that you use an FM receiver with its audio output connected to the computer's sound card. It can also be used with any SDR software if you use snd-aloop or pulseaudio to send the audio from the SDR software to `rec`

. A popular alternative is to use an RTL-SDR. In this case, one can use rtl_fm as follows:

rtl_fm -f 401e6 -g 20 -s 48e3 - | \ sox -t s16 -r 48000 -c 1 - -t wav - lowpass 2800 | \ ./rs41ptu --ecc --crc -i | \ ../rs92/pos2nmea.pl > /tmp/gps

Then any program that supports GPSd can be used to plot the position of the radiosonde in real time. For instance, we can use Viking. To start the tracking in Viking, we right click in the list of layers, select New Layer > GPS, then go to the Realtime Tracking Mode tab and click OK.

The tracking I have done today is shown below.

Another common activity when tracking radiosondes is to feed the position into the APRS-IS network. To do this, I have made a Perl script that makes APRS packets with the output of the decoder. The packets are then sent to the APRS-IS network using netcat.

The position is reported as an APRS object using the radiosonde callsign as the object's callsign. This is much better than using APRS position packets, which is what sm2aprs does. For instance, you only get one object in the map even if several people are tracking and reporting the radiosonde at the same time.

The APRS reporter can be run as follows:

rec -t wav -r 48000 - 2>/dev/null | \ sox - -t wav - lowpass 2800 | \ ./rs41ptu --ecc --crc --ptu -i | \ ../rs92/pos2aprs.pl CALLSIGN passcode "Radiosonda AEMET LEMD" | \ nc rotate.aprs2.net 14580 > /dev/null

(You can also use `rtl_fm`

instead of `rec`

). Please replace in the command line above `CALLSIGN`

with your own Amateur radio callsign and `passcode`

with your APRS-IS passcode. You can find your passcode here. Also substitute the comment "Radiosonda AEMET LEMD" by a suitable one if you are tracking a radiosonde other than the ones released from Barajas.

This also reports the temperature of the radiosonde in the APRS comment. The rest of the meteorological variables are not supported by the decoder.

You can view the results of my tests of sending the data to the APRS-IS network here.

]]>I tried to mitigate this problem by installing a ground rod besides the tuner. This is 2m a copper tube with 50cm buried in the ground. The top of the tube is connected to the tuner ground with a short cable. After installing the ground rod, approximately half of the RF current flowed into the ground rod and the remaining half kept flowing into the shack via the coax shield.

To measure RF current, I have been using a clamp on meter. My design is similar to the design by Ian GM3SEK, but I measure voltage across the output capacitor with a multimeter instead of using a resistor and ammeter coil.

Now I have built and installed a feedline choke following the design of the mid-bands choke by GM3SEK. I use 4 turns of M&P Airborne 5 coax through 3 Fair Rite 2643167851 material 43 cores, wound as an 85mm coil. The finished choke can be seen below.

I have measured the performance of the choke using my Hermes-Lite2 beta2 in VNA mode, as I already did with my mains choke. The results are shown below.

The performance seen in these graphs matches the performance measured by GM3SEK in his document. The choke has a resistance of over 1000 ohms on most of the Amateur HF bands, and up to 5000 ohms in the middle bands.

I have installed the choke directly on the input of the tuner. The RF current flowing on the outside of the coax shield has now decreased to around 2% in several cases and 10% in the worst case. The interference received in the lower bands has also decreased noticeably.

]]>The watefall can be seen below. You can click on the image to view it in full size. A higher resolution version is available here (24MB). The horizontal axis represents frequency and the vertical axis represents time, with the beginning of the pass at the top of the image. The waterfall has been corrected for the downlink Doppler and the DC spike of the FUNcube Dongle Pro+ has been removed.

From left to right, the following signals can be seen: The CW beacon can be seen as a faint vertical signal. Next, there is some interference coming through the transponder in the form of terrestrial FM signals. Then we can see my FT8 signal, being transmitted only on even periods. Finally, around the centre of the image, we have a few SSB and CW signals through the transponder. Note that most of these signals increase in frequency as the pass progresses. This is because many people keep a fixed uplink and only tune the downlink by hand to correct for Doppler. Unfortunately, full computer Doppler correction is not very popular. I also used a fixed uplink frequency for my FT8 signal, but only to simplify the experiment. The best procedure is to correct for the uplink Doppler to keep a constant frequency at the satellite.

We can see that the SSB and CW signals are much stronger than my FT8 signal. Indeed, some of the CW signals are particularly strong at times, perhaps putting too much pressure on the linear transponder.

The waterfalls in this post have been created using this Jupyter notebook.

]]>An FT8 signal was transmitted on every even period during the recording, at a fixed frequency of 145.990MHz, using a Yaesu FT-817ND and the Arrow antenna. The signal was transmitted using lower sideband (i.e., inverted in the frequency domain) to get a correct FT8 signal through the inverting transponder. The transmit power was adjusted often to get a reasonable signal through the transponder and avoid using excessive power. There have been reports and complaints of people using too much power with digital modes through linear satellites. In this post, a study of the power is included to show that it is possible to use digital modes effectively without putting any pressure on the satellite's transponder.

Out of the 33 even periods, a total of 24 can be decoded by WSJT-X using the best TLEs from Space-Track. No measures were taken to correct for the time offset that has been studied in the previous posts, as the TLEs already provided a good Doppler correction. Regarding the choice of TLEs, there are still some remarks to make. First, the epoch of the TLEs used was 2017/10/23 21:39:16 UTC, so these TLEs were actually taken after the pass. The previous TLEs were taken a few hours before the pass, and it is likely that they also provided a good correction, perhaps by using a time offset if necessary. However, I do not know if these previous TLEs were also available from CelesTrak before the start of the pass, as it seems that TLEs take a while to propagate from Space-Track to Celestrack. To explain why the TLEs with no time offset correction are enough, it will be interesting to study the rate of change of TLE parameters for FO-29. This will be done in a future post.

The results of this test look very promising. Even though this wasn't an overhead pass (the maximum elevation was 40º), the maximum rate of change of the Doppler was over 20Hz/s for the self-Doppler seen on the FT8 signal and 35Hz/s for the downlink Doppler seen on the CW beacon. Most of the periods which couldn't be decoded were near the start or end of the pass. This is the only test that I know of that has decoded FT8 signals in the presence of high rates of change of Doppler. The previous tests by other people were made at low elevations, where the rate of change of Doppler is small. This test has shown that it is possible to get many decodes with high rates of change of Doppler, even using no corrections to the TLEs. Here I continue with a detailed analysis of the recording.

The TLE used has been

1 24278U 96046B 17296.90226955 -.00000046 +00000-0 -99197-5 0 9993 2 24278 098.5410 162.9058 0350559 003.9820 356.3983 13.53079989046036

and my station location has been 40.5962ºN, 3.6963ºW, 700m ASL approximately. With this data, we get the following Doppler profiles for the self-Doppler (which is the Doppler when I listen to my signal through the transponder) and the CW beacon Doppler.

Note that since the linear transponder is inverting, the uplink Doppler cancels out a fraction of the downlink Doppler. In comparison, the CW beacon has the full downlink Doppler. This is the reason why most linear transponders in LEO satellites are inverting.

The figure below shows the rate of change Doppler (the derivative of Doppler with respect to time). We see rates of change of over 35Hz/s for the beacon Doppler. In comparison, in parts I and II we studied an overhead pass of LilacSat-1, which has a much lower orbit than FO-29. There we saw rates of change of over 150Hz/s, so the situation in the FO-29 pass used in this test is much easier. It would be interesting to study, for each satellite, the distribution of the maximum Doppler rate of change in the pass, over a large number of passes.

Using a Jupyter notebook, the recording is Doppler corrected and each of the 15 second periods is extracted in a WAV file suitable for processing with WSJT-X. In this case we use the command line tool `jt9`

from WSJT-X 1.8.0, but the WAV files can also be opened with `wsjtx`

(see this post for some information about how to use the WSJT-X command line tools). These are the decodes obtained:

202700 -17 0.0 1406 ~ 202830 -4 0.0 1412 ~ 202900 -24 0.0 1413 ~ 202930 -17 0.0 1416 ~ 203000 -13 0.0 1419 ~ 203030 -4 0.0 1422 ~ 203100 -4 0.0 1422 ~ 203200 -7 0.0 1430 ~ 203230 -8 0.0 1433 ~ 203300 -4 0.0 1437 ~ 203330 -8 0.0 1441 ~ 203400 -12 0.0 1442 ~ 203430 -8 0.0 1450 ~ 203500 -10 0.0 1451 ~ 203530 -7 0.0 1458 ~ 203600 -14 0.0 1459 ~ 203630 -8 0.0 1466 ~ 203700 -4 -0.0 1467 ~ 203730 -12 0.0 1470 ~ 203800 -5 0.0 1476 ~ 203900 -11 0.0 1482 ~ 203930 -17 -0.0 1488 ~ 204030 -13 -0.0 1493 ~ 204100 -5 0.0 1500 ~

In these decodes, we observe several things. First, the message is empty. The reason for this is that I intended to transmit the free text message "TEST EA4GPZ", and I configured WSJT-X to do so during my tests before the pass. However, at some point when setting up the pass, I inadvertently cleared out the free text box in WSJT-X and only noticed it after the pass. This mistake is not a huge problem, since an empty FT8 message is as difficult to decode as one containing "TEST EA4GPZ". The only problem is that you should identify your transmissions with your callsign (which I failed to do here).

The next remark is that the DT (delta time) for all the decodes is zero. This means that there is not a lot of buffering while recording in Linrad. This is important, as a long buffer would introduce a delay that would affect Doppler correction (we would need to use to account for that delay). Note that the round trip time to the satellite is on the order of 10ms or less, so we can ignore it here. Nevertheless, it should be possible to do a coarse study of the round trip time using this recording.

Another thing to note is that the frequency of the decodes keeps increasing with time, increasing roughly 100Hz throughout the pass. This is best seen in the figure below.

This image shows the spectrum of the Doppler corrected FT8 signal. The vertical axis is time and the horizontal axis is frequency. The time spans all the recording. We see that there is a linear frequency drift. The red line has been fitted by eyeball. Its slope is 111mHz/s.

We can process the CW beacon in the same way. We see a similar linear frequency drift, but with a smaller slope: 85mHz/s.

The fact that the linear drift is present in both the FT8 signal and the CW beacon rules out my transmitter as the cause of it. Since the drift is different for both signals, it is not caused by my receiver either. The fact that the CW beacon, which has a larger Doppler, has a smaller drift means that Doppler is not the cause.

I think that the cause for this linear drift is a linear drift in the local oscillator in FO-29. This explains the different slopes rather well. Assume that the linear transponder in FO-29 has an IF at a frequency , and that the IF is below the uplink frequency, which is most likely the case. Then the first local oscillator, which mixes the uplink down to IF, has a frequency . There are two cases for this frequency: it is either or , where is the uplink frequency. The second local oscillator has a frequency of which mixes the IF up to the downlink frequency . Since the transponder is inverting, in the first case we must have and in the second case we must have . In both cases we have a total frequency conversion from input to output of , since the IF frequency cancels out.

On the other hand, the CW beacon is directly generated at a frequency (actually, it is generated 55kHz below , but this is a small difference). Therefore, assuming that all the clocks in FO-29 are generated from the same oscillator (or perhaps from different oscillators that drift in a similar manner), the drift observed through the linear transponder would be proportional to , while the drift of the CW beacon would be proportional to . If we compute the quotient between the drift of the linear transponder and the CW beacon, we would get . In the recording, the quotient between drifts is . This matches the theory up to an error of 2%.

I haven't been able to find the RF block diagram of FO-29 to validate that my understanding is correct, but a reasoning similar to the one given above can be applied to most frequency conversion schemes. For me, this is enough evidence to conclude that the linear drift in this test has been caused by a drift in the local oscillator in FO-29. Still, it is amazing that the drift is almost perfectly linear. Maybe the cause is thermal: the satellite entered eclipse at 20:25 UTC, just before the pass, and continued in eclipse during all the pass.

After estimating the linear frequency drift in the FT8 signal and in the CW beacon, we can include a correction for it, so that the corrected signals now present little drift. These corrected signals can be used for a study of power. There have been many concerns about people using too much power in digital modes tests, causing interference to other users of the transponder. In this test, the uplink power was carefully adjusted often to prevent a strong downlink signal. This test shows that it is possible to achieve effective communications using digital modes while using little power from the satellite transponder.

The total energy spectral density in the recording can be calculated by computing and summing spectrums. The energy spectral density can also be understood as average power spectral density. The figure below shows the energy spectral density for the FT8 signal and CW beacon computed over all the recording.

If we sum the bins between the dashed vertical lines, we get a total energy of 107.52dB for the FT8 signal and 107.78dB for the CW beacon. In other words: the strength of the FT8 is similar to the strength of the beacon. This follows the rule of thumb of keeping your downlink signal not much stronger than the beacon. Judging by the decodes from WSJT-X, many of them have a rather high SNR, so maybe 5dB less power would have yielded similarly good results.

On the other hand, a look at the stations using SSB and CW through the transponder in this recording will probably reveal that they are using much more power than my FT8 signal, especially those stations using CW. Perhaps I will prepare some high resolution waterfalls to show this in a future post.

A final word about downlink frequencies is in order. The centre frequencies for the uplink and downlink of the FO-29 transponder are 145.950MHz and 435.850MHz respectively. Since the FT8 signal was uplinked at a constant frequency of 145.990MHz, after correcting for self-Doppler it would be expected at a frequency of 435.810MHz. However, it was found around 4.2kHz higher. Similarly, the CW beacon has a nominal frequency of 435.795MHz, but was found 3.6kHz higher. These offsets are probably due to offsets in the local oscillators of FO-29. The remark is that, even if we use a perfect Doppler correction, these offsets make it difficult to set a 3kHz slice of the transponder for WSJT-X use, unless the offsets are relatively stable and can be measured and published.

The computations used in this post have been carried out in this Jupyter notebook. The IQ recording of the pass can be downloaded here (725MB), and the file fo29.tar.bz2 (53MB) contains the processed FT8 signal and CW beacon WAV files.

]]>Here we examine the effect of TLE age on the accuracy of the Doppler computation. The problem is that, when a satellite pass occurs, TLEs have been calculated at an epoch in the past, so there is an error between the actual Doppler curve and the Doppler curve predicted by the TLEs. We show that the actual Doppler curve is very well approximated by applying a time shift to the Doppler curve predicted by the TLEs, justifying the study in part I.

We look at the same pass that we studied in part I: the 2017/7/9 03:12:00 UTC pass of LilacSat-1 over my station (40.6007, -3.7080, 700m ASL). The TLE in Space-Track whose epoch is nearest to the time of the pass is

1 42725U 98067ME 17189.87025697 +.00007644 +00000-0 +11689-3 0 9999 2 42725 051.6407 289.9183 0007265 030.1333 330.0075 15.55443398006852

Note that this TLE is different from the one used in part I. Presumably, this TLE wasn't available yet when I started writing part I. We will assume that this TLE predicts the actual Doppler curve. Actually, this TLE was measured 6 hours and 23 minutes before the pass.

Typically, we don't have access to such a current TLE during the time of the pass, so we have to do our Doppler prediction using an older TLE. For instance, when I started writing part I, the TLE I used was the most current and it had an epoch of 2017/07/07 19:45:24. The pass I selected was the next overhead pass over my station.

Now let us look at the problem of predicting the Doppler with an older TLE. To exaggerate the effects, I have selected the TLE

1 42725U 98067ME 17183.50952476 +.00011042 +00000-0 +16628-3 0 9992 2 42725 051.6406 321.6862 0006959 008.0741 352.0361 15.55338480005862

which was measured 6 days and 9 hours before the TLE I am taking as current. The figure below shows the different downlink Doppler curves. The downlink frequency is taken as 436.5MHz, in the middle of the 70cm Amateur satellite band.

We can see that the actual Doppler curve looks very much like a time shifted version of the predicted Doppler curve. Therefore, applying an adequate time shift to the predicted curve yields a very good approximation of the actual Doppler. A simple way to compute this is as the difference between the times where each Doppler curve is zero (which correspond to the times of closes approach). This difference, called "best delay", is 7.38 seconds in this case. In the figure below we see that the difference between the actual Doppler and the predicted Doppler shifted by 7.38 seconds is only of a few Hz.

A decoder trying to correct the residual Doppler will test different values of until a decode is produced. The thresholds obtained in part I show how precise the search for the correct needs to be depending on the mode.

To study the effect of TLE age in the Doppler prediction, we compute the best delay for all the TLEs in Space-Track taken during the week before the pass. The results are shown in the figures below. The second figure is just a zoomed-in portion of the first figure.

These figures are very interesting. The difference in best delay between two consecutive points is a measure of how much the TLE parameters are changing because the orbit of the satellite deviates from the prediction done by the SGP model. We see that sometimes the satellite deviates much from the SGP model, causing changes of several seconds in the best delay, while other times the changes in the best delay are small. These effects should be studied for several satellites over longer time spans. Perhaps I'll do it in a future post.

The conclusion of these figures is that sometimes the best delay can be on the order of several seconds, perhaps as high as 10 seconds. However, many times, if using the latest TLEs available, the best delay will be on the order of a few hundreds of ms. This means that it is possible for a decoder to try in real time different values of until a decode is found. For instance, if using FT8, a step of 0.25 seconds in the search for can be used.

The figure below shows the residual downlink Doppler when correcting each of the old TLEs with the best delay computed above. The age of the TLEs is encoded using the inferno colormap, with older TLEs in black and newer TLEs in yellow. We see that the residual Doppler is very small in all cases. This means that most of the error produced by using older TLEs happens in the along-orbit component of the position of the satellite.

So far we have only concerned ourselves with the downlink Doppler. A strategy to deal with the residual downlink Doppler is now clear: try different values of until most of the residual Doppler is compensated and a decode is obtained. This still leaves us the question of what to do with the uplink Doppler, since a search for the correct Doppler cannot be conducted while transmitting. Here there are some useful ideas.

First, the transmitting station can estimate the best delay parameter by listening to their own transmissions. The self-Doppler (the Doppler with which the transmitting station hears their own transmissions) is always proportional to the downlink Doppler for the transmitting station. Indeed, it is the same as a downlink Doppler for a signal whose frequency is the difference between the downlink frequency and the uplink frequency, or the sum of the downlink and uplink frequencies, according as to whether the linear transponder is inverting (the usual case) or non-inverting. Therefore, the transmitting station can search for by trying to decode their own transmissions. When a good is found, this value of can be used by the transmitting station to correct the residual uplink Doppler in its transmission. Note that this only compensates the residual uplink Doppler up to some extent, since the value of is obtained just by searching for a correct decode and some modes have a rather high threshold for , as we have seen in part I. Still, this correction can be enough, especially if the uplink is at a lower frequency than the downlink.

The same best delay parameter can be used by stations anywhere in the world and remains valid for a time interval of at least several hours. Therefore, it can be regarded as a correction to the published TLEs and shared over the internet or even in WSJT-X messages through the satellite transponder. Also, some stations can carry out a more precise calculation of the best delay rather than listening to their own transmissions, which are supposed to be weak. The precise downlink Doppler can be analysed by listening to the satellite beacon, when it is available, or by transmitting a strong carrier through the transponder and measuring the self-Doppler.

Residual uplink Doppler correction can also be carried out by a search in the receiving station, similarly to how downlink Doppler is corrected. However, this requires that the receiving station knows the location of the transmitting station and adds another search parameter, so it is not a feasible option in general.

Finally, there are some things that can help, even if no measures to correct for residual uplink Doppler are taken. If the satellite is mode V/U (uplink on 145MHz and downlink on 435MHz), then the uplink Doppler is around one third of the downlink Doppler, so the correction for the uplink is not so critical. Unfortunately, most of the linear transponders these days are mode U/V (uplink on 435MHz and downlink on 145MHz), which is a more difficult situation. We have also noted that the situation with residual Doppler is only difficult near the closest approach of an overhead pass. At other times in the pass and also for non-overhead passes, the rate of change in Doppler is not so large. At any given time, the number of stations that have the satellite directly overhead represents a small proportion of all the stations that have the satellite in view, so we can expect that most of the transmissions do not have to cope with such a large rate of change in Doppler.

As an example of these ideas, the figure below shows the residual uplink Doppler at my station when the old TLEs are not compensated (). You can get an idea of which residual Doppler curves can still be handled by the WSJT-X decoder by looking at the figures in part I. We see that only the newest TLEs have an acceptable residual Doppler when no compensation is done with . Here it helps the fact that the uplink frequency is taken as 145.9MHz, in the middle of the 2m Amateur satellite band, as would be the case for a V/U transponder.

However, if we now look at a transmitting station in other location, things can change. We now look to the location of M0HXM, in Newcastle upon Tyne, as a transmitting station. This is not an overhead pass for M0HXM, so the residual Doppler is smaller and most old TLEs can be used without compensation.

Now we assume that the transmitting station is able to approximate the best delay to the nearest second by using any of the methods outlined above. Note that approximating to the nearest second is a rather coarse approximation. It is likely that better precision can be obtained just by listening to your own transmissions. The situation now is quite good: all the transmissions by EA4GPZ and M0HXM have an acceptable residual uplink Doppler, even when the oldest TLEs are used.

In conclusion, using the techniques described in this post and part I, WSJT-X modes such as FT8 and QRA64E can be usable under all circumstances with a V/U linear transponder, and probably under many circumstances with a U/V linear transponder. Now it is just a matter of running some on-air tests to validate the techniques. Recently, there have been some people successfully using FT8 through some LEO satellites, but only for low elevations, where the rate of change of Doppler is small. As far as I know, the case of high elevations is still untested, as it requires special residual Doppler correction techniques such as those described here.

The computations used in this post have been done in this Jupyter notebook.

]]>

I am using the measurement method described by G3TXQ and Claudio IN3OTD. The choke is measured in transmission mode ( parameter) using a test fixture to minimize parallel capacitance. The test fixture is made of two coaxial cables with the braids soldered to a copper clad board and crocodile clips soldered to the centre conductor. The coaxial cables are connected to the low power TX and RX ports of the Hermes-Lite 2.0 through 6dB attenuators. Using attenuators makes the Hermes-Lite see a constant 50 Ohm impedance regardless of the DUT's impedance.

I am using the Hermes VNA software, since unfortunately Quisk doesn't support the Hermes-Lite 2 in VNA mode yet. The VNA is calibrated with the crocodile clips shorted and then the choke is connected between the crocodile clips and measured. The complex impedance of the choke can be computed from the complex parameter. I am using the formulas in G3TXQ's spreadsheet and a Jupyter notebook to do so.

Using this, I have been able to optimize the number of turns through the ferrite core. I have finally settled on 8 turns. More turns can be made to fit through the ferrite core, raising the impedance at the resonant peak but making the peak narrower, so we get a lower impedance for higher frequencies.

The impedance, resistance and reactance of the choke can be seen in the plots below. The Jupyter notebook I have used for the calculations is here.

]]>Ayer estuve en la feria IberRadio, en Ávila, dando dos charlas: una sobre gr-satellites y la otra sobre Linrad. Las diapositivas en PDF de las charlas se pueden descargar aquí:

- Decodificación de satélites digitales
- Linrad: qué es, estructura, funcionamiento y ajuste de filtros

He grabado las charlas usando mi cámara. El enfoque y la exposición no son muy buenos, pero he editado el vídeo incluyendo encima las imágenes de las diapositivas, lo que facilita seguir el vídeo de la charla. Por contra, las demostraciones en directo en la charla de Linrad se ven un poco mal.

**Actualización:** David EA1FAQ también hizo grabaciones de las charlas. En sus grabaciones se ve mejor el proyector, por lo que las demostraciones en directo durante la charla de Linrad se siguen mejor. Incluyo links más abajo.

The issue is as follows. In a second order filter there is a damping parameter . The impulse response of the filter is an exponentially decaying sinusoid if (underdamped system), a decaying exponential if (overdamped system) and something of the form if (critically damped system). Critical damping is desirable in many cases because it maximizes the exponential decay rate of the impulse response. However, many engineering texts just go and choose without any justification and even call this critical damping. Here I give some motivation starting with the basics and explain what is special about and why one may want to choose this value in applications.

We start with a linear second order ODE of the form

This system is known as the damped harmonic oscillator and appears in many physical situations. In particular, it models an RLC circuit, which justifies its appearance in analogue loop filters (and also in their digital counterparts, which work in discrete time).

The Laplace transform of is defined as

provided that this integral converges (usually we restrict ourselves to bounded functions and ). The Laplace transform of is defined similarly.

Taking Laplace transforms in (1) and assuming that , we obtain

Thus, the transfer function of the system given by (1) is

In the applications we are interested in, and are positive and is non-negative. By a suitable change of scale we can assume that . We write , so that

The transfer function is the Laplace transform of the impulse response of the system, since if is a Dirac delta at , then , so that .

The denominator of is a second order polynomial. Therefore, the poles of are either real or complex conjugates depending on whether the discriminant is positive or negative. We see that for (overdamped system), the poles are real. This means that the impulse response is a linear combination of and , because the Laplace transform of is . Here denotes the step function. The exponential decay rate of the system is . Note that .

When (underdamped system), the poles are complex conjugate. In this case, the impulse response is again a (real-valued) linear combination of and , so it is an exponentially decaying sinusoid. The exponential decay rate is . Again, note that .

In the limiting case (critically damped system), the pole is double. The impulse response is , and the exponential decay rate is . Note that the critically damped case maximizes the exponential decay rate.

However, in many applications the exponential decay rate is not the most important parameter to optimize. The plot below, which shows the impulse response for several values of the damping parameter can shed some light into why.

From the four impulse responses plotted, the red one is the most desirable. The blue one, which corresponds to an overerdamped system does not decay fast enough, as we already showed. The exponential decay rate of the green curve, which corresponds to the critically damped case, is the best possible, but the underdamped red curve takes less time to get near zero, because it is an exponentially decaying sinusoid and it has some undershoot. The cyan curve is also underdamped, but it has too much undershoot, since the exponential decay rate is not large enough. Therefore, we see that if the damping factor is a bit lower than (but not too low), then the undershoot given by the sinusoid plays in our advantage, since it helps bring the response close to zero faster.

Now the obvious question is how low can we set the damping factor before too much undershoot appears. Another way of looking at this problem from a different point of view is studying resonance. When the input of the system is a sinusoid of frequency , then has poles at . The Laplace transform of the output of the system has poles at and . The poles at give terms which decay exponentially, while the poles at give sinusoids of frequency which are still present in the steady state. Thus, when the input is a sinusoid of amplitude and frequency , the steady state output is a sinusoid of amplitude and frequency , since the residue of at equals the residue of at multiplied by . Therefore, the frequency response of the system is given by .

We now compute

Using the substitutions and , we see that the denominator equals the quadratic function . The minimum of this quadratic function is at . This means that when the frequency response is monotone decreasing in . In fact, this system is a low pass filter, so this is not surprising. When , the frequency response has a maximum at , and . This means that the system has a resonant frequency at , and the gain at the resonant frequency is greater than unity. This is undesirable, so we impose . The limiting case gives a damping factor of . This is the lowest we can set the damping factor before getting resonance.

The figure below shows the frequency response for different values of the damping factor . This shows that the system is a low pass filter and it also shows clearly the resonance when .

The bandwidth of the low pass filter is defined as the frequency at which . In the case when , a simple calculation using shows that the bandwidth is .

]]>I have also been thinking about how to study the polarization of signals in a dual polarization recording (two coherent channels with orthogonal polarizations). My main goal for this is to study the polarization of the signals of Amateur satellites in low Earth orbit. It seems that there are many myths regarding polarization and the rotation of cubesats, and these myths eventually pop up whenever anyone tries to discuss whether linearly polarized or circularly polarized Yagis are any good for receiving cubesats.

Through the Breakthrough Listen paper I've learned of the Stokes parameters. These are a set of parameters to describe polarization which are very popular in optics, since they are easy to measure physically. I have immediately noticed that they are also easy to compute from a dual polarization recording. In comparison with Jones vectors, Stokes parameters disregard all the information about phase, but instead they are computed from the averaged power in different polarizations. This makes their computation less affected by noise and other factors.

As I also wanted to get my hands on the Breakthrough Listen raw recordings, I have been computing the Stokes parameters of the Voyager 1 signal in their recording. Since the Voyager 1 signal is left hand circularly polarized, the results are not particularly interesting. It would be better to use a signal with changing polarization or some form of elliptical polarization.

I have started to use Jupyter notebook. This is something I had been wanting to try since a while ago, and I've realised that a Jupyter notebook serves better to document my experiments in Python than a Python script in a gist, which is what I was doing before. I have started a Github repo for my experiments using Jupyter notebooks. The experiment about polarization in the Voyager 1 signal is the first of them. Incidentally, this experiment has been done near Voyager 1's 40th anniversary.

]]>I was surprised to find that the distribution of reports was skewed. It was more likely for the reference of a reporter to be low in frequency than to be high in frequency. The experiment was done in the 40m band. Now I have repeated the same experiment in the 20m band, obtaining similar results.

The details of the experiment are contained in the previous post. This time I have been transmitting on 14097100Hz, and after measuring against my GPSDO I have determined that my real transmit frequency was 14097098.43Hz. The test has run over the course of 6 days, collecting a total of 3643 reports coming from 146 different reporters. Below you can see the distribution of the frequency error of the reporters.

The distribution is similar to the one obtained on 40m, but it is not quite the same. Nevertheless, both distributions are clearly skewed to the left. Below you can see the histograms showing the reporters per number of reports. We see that most reporters have only given 10 reports or less.

When I tweeted about this bias in frequency, several people presented theories to try to explain the bias. F4DAV suggested that this could be an artefact of the WSPR decoder. However, I have contacted Joe Taylor to check if the software could play any role, and he doesn't think so. He remarks that he has done tests with K9AN using a GPS-locked system and a well calibrated transceiver and they obtain reports which are accurate to 1Hz (note that 1Hz is 0.1ppm in 40m, and here we are seeing much larger biases).

Miguel Ángel EA4EOZ remarked that it is not so easy to derive the frequency error of the reference of a receiver given the frequency error in the WSPR report (which is measured at the audio output by the WSPR software). He said that this depends on the receiver architecture and how many stages it has in the case of a superhet receiver. This left me wondering for a while, as it occurred to me that according as to whether the first LO was below or above the RF frequency you would see the frequency error go in a different direction.

A moment's thought shows that this is not the case: the architecture of the receiver doesn't matter at all. At the audio output you will get an error in frequency which equals the relative error of the frequency reference of the receiver times the RF frequency of the signal. It doesn't matter if the receiver is a superhet having several stages, a direct conversion zero-IF SDR or a direct sampling DDC SDR (in the case where the receiver has frequencies derived from different crystal oscillators you should replace the concept of "frequency reference" by a suitable weighted average of all the crystal oscillators).

My favourite way to see this is that the frequency reference of a receiver is used to measure time. It's the receiver's clock. It doesn't matter how it's used to bring the RF signal down to AF. If the receiver's clock is running slow, the RF will appear higher in frequency and vice versa.

Another way to see it is to think that each stage in a superhet receiver performs a frequency conversion where the RF frequency is transformed into the first IF, , by , with the condition that , so in particular both signs cannot be simultaneously. After several frequency conversions we arrive at the AF, and we can groups all the terms as . Hence, . Now, the fact that the frequency conversion from RF to AF is sideband preserving (i.e., the mode is USB), means that should have the sign . Note that this forces . If the receiver uses only a single crystal, then each of the frequencies is a constant multiple of the frequency of the crystal, so the same is true of . If the receiver uses several crystals, then is a linear combination of the frequencies of all the crystals. Note that the coefficients may have positive and negative signs, which can get interesting. In the usual case the crystal whose frequency error dominates the error in will have a positive coefficient in the linear combination, but there can be pathological cases. The same kind of reasoning done here applies for a direct conversion zero-IF receiver or a DDC.

Miguel Ángel EA4EOZ has also made a key remark: crystals only go down in frequency when they age. This is almost true. As this image shows, there is an increase in frequency due to stress relief and a decrease in frequency due to mass transfer. In the long run, the decreasing effect wins out. This seems a convincing cause that explains the bias I am seeing in the frequency distribution. Amateur transceivers are calibrated on fabrication but eventually their crystals age and go down in frequency, and most hams don't bother to calibrate the transceiver frequently.

]]>