WSPR amplifier for Raspberry Pi using a VN66AF Mosfet
The Raspberry Pi WSPR Tx is a bit low in power for 80m, so I used a VN66AF V-Mosfet to amplify the signal a bit. Power Mosfets have a very high input resistance but quite a high input capacitance, they have a troublesome nature in that they tend to oscillate as there is also capacitance from the drain to the gate. This construction over a ground plane was OK in that respect - it is lined up with no drive and does not suddenly take off as conduction starts.
I borrowed the MOSFET and bifilar output transformer design from the QRP Labs U3, it worked well driven from the Pi. I set the bias for the MOSFET to be just on zero standing current and then ac coupled the signal in. This gave about 6V p-p into 50 ohms, but the signal is very dirty because it is the square-wave amplified. So it needs a 7th order low-pass filter as described in G3RJV’s sheet from GQRP
Such a simple design will impress any ripple on the power supply onto the transmitted signal. I take the +5V from the Pi header, which is not ideal. The 100nF capacitor to ground helps with some of the RF hash, but I would do better to power the MOSFET off a higher voltage such as 12V, properly smoothed and regulated, and power the Pi via a regulator from that. The MOSFET will give a bit more power off a higher voltage too.
A good local station receiving the signal with a high SNR will be able to decode these ripple sidebands1.
Timestamp | Call | MHz | SNR | Grid | Pwr | Reporter | RGrid |
---|---|---|---|---|---|---|---|
2019-05-09 22:24 | G7LEE | 3.570208 | -14 | IO81 | 0.1 | M6MQB | IO81pd |
2019-05-09 22:24 | G7LEE | 3.570108 | +19 | IO81 | 0.1 | M6MQB | IO81pd |
2019-05-09 22:24 | G7LEE | 3.570008 | -12 | IO81 | 0.1 | M6MQB | IO81pd |
There is some residual 100Hz ripple, though this is not discernible on a scope. It is some -31dBC as decoded by M6MQB
QRP low-pass filter
The QRP filter went together quite well, along the lines of G3RJV’s sheet from GQRP
The signal is about 6V p-p into 50 ohms, an output power of about 100mW. The MOSFET is not particularly pushed running at 5V supply, there could be an argument tu run this at a higher voltage to get more power. A 2A Raspberry Pi 5V PSU is used, else the 5V line can sag.
setting frequency right
There’s confusion around the WSPR 80m frequencies and the new dial frequency is 3.568600 MHz. You have to add 1500 Hz to that to get the TX frequency of 3.5701MHz to put into the pi, the command line is
wspr -r YOURCALL YOURLOCATOR 20 3.5701e6 0 0 0 0
Thanks to G5FM for educating me into the vagaries of this offset. Normally if you use a HF rig and WSJT-X to do your WSPR this is probably automatically corrected. The 80m signal gets Europe-wide results from multiple reporters now.
Sotabeams’ DXplorer shows the change in propagation, the sudden step just before 10pm was when G5FM persuaded me to shift TX frequency up 1500Hz on the IoAARC Thursday net, and I suddenly picked up a lot more reporters. However, the drop in range as the sun comes up is characteristic for the 80m band, in the day I can only really reach G stations.
the problem of a 4 digit locator
wsprrypi doesn’t carry more than the four digit locator, though there is a fork that will do the six-digit locator, but I haven’t tried it. The solution happens to be simpler. Wsprnet will associate a six digit locator with your call if you upload some spots using WSJT-X with a six-digit locator configured. If it finds you spotted for TX with a four digit locator and it matched the first four characters of your upload locator, it will update your u/l locator with the information it already knows. Hat tip to QRP Labs for the solution. As seen here coming on-stream following my first reports.
Timestamp | Call | MHz | SNR | Grid | Pwr | Reporter | RGrid | km |
---|---|---|---|---|---|---|---|---|
2019-05-09 22:32 | G7LEE | 3.570096 | -10 | IO81pd | 0.1 | EI7HZB | IO65fb | 542 |
2019-05-09 22:32 | G7LEE | 3.570105 | -25 | IO81pd | 0.1 | DC5AL-R | JO31lk | 672 |
2019-05-09 22:30 | G7LEE | 3.570102 | -14 | IO81pd | 0.1 | G8NXD | IO70je | 206 |
2019-05-09 22:30 | G7LEE | 3.570084 | -17 | IO81pd | 0.1 | MW0MUT | IO81lq | 65 |
2019-05-09 22:30 | G7LEE | 3.570100 | -14 | IO81 | 0.1 | G0LUJ | IO83ls | 255 |
2019-05-09 22:30 | G7LEE | 3.570104 | -20 | IO81 | 0.1 | MW0CVT | IO81jp | 22 |
2019-05-09 22:30 | G7LEE | 3.570073 | -22 | IO81 | 0.1 | LA3FY/2 | JP40fj | 1219 |
2019-05-09 22:30 | G7LEE | 3.570073 | -21 | IO81pd | 0.1 | LA3FY/2 | JP40fj | 1240 |
2019-05-09 22:30 | G7LEE | 3.570100 | -25 | IO81pd | 0.1 | DK4RW | JO40oe | 846 |
2019-05-09 22:30 | G7LEE | 3.570011 | -20 | IO81 | 0.1 | G5FM | IO81pd | 44 |
2019-05-09 22:30 | G7LEE | 3.570121 | -24 | IO81pd | 0.1 | DL/PA0EHG | JO32sq | 723 |
2019-05-09 22:30 | G7LEE | 3.570105 | -15 | IO81pd | 0.1 | DC5AL-R | JO31lk | 672 |
2019-05-09 22:30 | G7LEE | 3.570103 | -26 | IO81pd | 0.1 | DK6UG | JN49cm | 795 |
2019-05-09 22:30 | G7LEE | 3.570103 | -24 | IO81pd | 0.1 | DL1KAI | JO42vj | 870 |
2019-05-09 22:30 | G7LEE | 3.570100 | -14 | IO81pd | 0.1 | F5VBD | JN25xo | 887 |
2019-05-09 22:30 | G7LEE | 3.570099 | -23 | IO81pd | 0.1 | DF5FH | JO42um | 866 |
2019-05-09 22:30 | G7LEE | 3.570086 | -28 | IO81pd | 0.1 | G5FM | IO81pd | 0 |
2019-05-09 22:30 | G7LEE | 3.570062 | -26 | IO81 | 0.1 | G5FM | IO81pd | 44 |
2019-05-09 22:30 | G7LEE | 3.570113 | -20 | IO81 | 0.1 | F5OIH | JN06ci | 617 |
2019-05-09 22:30 | G7LEE | 3.570100 | -4 | IO81 | 0.1 | G4HDS | IO85ug | 425 |
2019-05-09 22:30 | G7LEE | 3.570112 | -6 | IO81 | 0.1 | G5FM | IO81pd | 44 |
2019-05-09 22:30 | G7LEE | 3.570100 | -25 | IO81pd | 0.1 | DG7FAC | JO40oe | 846 |
2019-05-09 22:28 | G7LEE | 3.570011 | -21 | IO81 | 0.1 | G5FM | IO81pd | 44 |
2019-05-09 22:28 | G7LEE | 3.570086 | -28 | IO81 | 0.1 | G5FM | IO81pd | 44 |
2019-05-09 22:28 | G7LEE | 3.570205 | -27 | IO81 | 0.1 | G5FM | IO81pd | 44 |
2019-05-09 22:28 | G7LEE | 3.570111 | -6 | IO81 | 0.1 | G5FM | IO81pd | 44 |
2019-05-09 22:28 | G7LEE | 3.570062 | -27 | IO81 | 0.1 | G5FM | IO81pd | 44 |
2019-05-09 22:28 | G7LEE | 3.570037 | -25 | IO81 | 0.1 | G5FM | IO81pd | 44 |
2019-05-09 22:26 | G7LEE | 3.570101 | -24 | IO81 | 0.1 | DO1JKF | JN48sa | 981 |
2019-05-09 22:26 | G7LEE | 3.570100 | -12 | IO81 | 0.1 | G4HDS | IO85ug | 425 |
2019-05-09 22:26 | G7LEE | 3.570100 | -21 | IO81 | 0.1 | DK4RW | JO40oe | 871 |
2019-05-09 22:26 | G7LEE | 3.570121 | -21 | IO81 | 0.1 | DL/PA0EHG | JO32sq | 735 |
2019-05-09 22:26 | G7LEE | 3.570073 | -18 | IO81 | 0.1 | LA3FY/2 | JP40fj | 1219 |
2019-05-09 22:26 | G7LEE | 3.570073 | -17 | IO81 | 0.1 | LA3FY/2 | JP40fj | 1219 |
2019-05-09 22:26 | G7LEE | 3.570111 | -6 | IO81 | 0.1 | G5FM | IO81pd | 44 |
Richard G7LEE
-
I was unable to see any ripple with a scope on the power supply and the timebase locked to line. A scope trace is perhaps 1% wide, implying -40dB would be hard to see. Pehraps there is a different explanation - on 80m the system could be using the mains wiring as a counterpoise to the aerial which is commutated via the rectifier diodes in the HV part fo the switch-mode power supply where the mains is rectified. You used to have to put 1n to 100nF caps across the bridge rectifiers of medium-wave radio sets to reduce buzz from that effect. ↩