WSPR amplifier for Raspberry Pi using a VN66AF Mosfet

5 minute read

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.

Amplifier schematic

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

The Pi with the MOSFET amplifier and the toroid output transformer

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 output low-pass filter

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.

Signal reports from an overnight run, as shown on APRSinfo

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.

DXplorer DX10 (averaged range metric)

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

  1. 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.