Tuning a loop with nanoVNA

One of the aerials I use is a small transmit loop. These loops have a really narrow bandwidth which is good and bad. Good in that you get much less noise, bad in that you have to keep retuning. If you stick to one frequency such as with some digital modes it is ok as you don’t have to retune too much. Other modes such as SSB and CW are less easy to use with a loop.

You can tune the loop by transmitting into it and tuning the loop until the SWR is good. This is a bit anti-social as you can be transmitting for quite some time as you tweak the tuning. I used to use a noise bridge which works quite well as long as your ears don’t get tired. The nanoVNA offers easier, more visual way of tuning. 

nanoVNA loop tuningThe nanoVNA sweep is quite slow so you need to have a fairly wide sweep span so that you can see the dip in SWR when you are tuning the loop. So you set the centre frequency and then the span and then tune until you see the dip disappearing off one end. Then you fine-tune the loop and end up with the dip at the centre frequency. The loop is now tuned as in the photo above.

This works fine with the nanoVNA GUI, but as I am nearly always running a Mac when I’m on the radio I wrote a Matlab script to do the tuning. The script is run and sets the centre frequency and span for you.

Here’s a sample tuning transcript (user input in green):

>> ajfTuneLoop
connect: Serial-/dev/tty.usbmodem4001
status:  open
press RETURN when loop is connected to ch0
Frequency to tune to (MHz) ? 7.074
tune loop for dip at the marker, press RETURN when tuned ok
close
>> 

The script is ajfTuneLoop.m.

nanoVNA, MATLAB and (short) cable length

There are various methods of determining the length of a cable acting as a transmission line. The one I’ve used up until getting the nanoVNA is to inject a fast impulse into the cable and measure the reflection time on an oscilloscope. As usual, Alan W2AEW has a good video about this: #88 Cheap and simple TDR using an oscilloscope and 74AC14 Schmitt Trigger Inverter.

Alan also shows a good method of using the nanoVNA to measure cable length: #316: Use NanoVNA to measure coax length – BONUS Transmission Lines and Smith Charts, SWR and more

The author of the code I used in my previous post about nanoVNA and MATLAB, Alex, has as part of his code the use of a TDR Step Response. With this you can look at the step response graph and derive a cable’s length by looking at the dips in the response.

TDR Short Cable

It seemed to me that his code could be extended so that the cable length could be worked out in the code with no need to look at the graph other than to check that it was all ok. Here’s the script that does the calculations: ajfCableLength.m. Make sure you read on to the end of the post to understand its limitations.

You connect the cable you’re measuring to the S11 port of the nanoVNA and run the script. Here’s a sample MATLAB session using one of the cables supplied with my nanoVNA:

>> ajfCableLength
connect: Serial-/dev/tty.usbmodem4001
status:  open
freq: 101
s11:  101
s21:  101
Measuring cable connected to ch0 ...
Velocity factor of cable? 0.66
The calculated cable length is 0.19775 metres.
Show TDR Response plot (Y/n)
close
>> 

The script is perhaps worth explaining. The first part is the difficult bit which Alex provided. The S11 scattering parameters are obtained from the nanoVNA. These s-parameters are converted into a MATLAB rationalfit object which is a mathematical representation of the s-parameter curve. This rationalfit object is then used to derive the TDR step response mathematically. The second part, which I added, looks at the step response to find the last dip in the curve. This gives the return trip time just like in a real TDR. Given the return trip time the cable length is calculated using the velocity factor which the script has already asked the user to provide.

This all works well for short lengths of cable, say up to 2m. But beyond that it all goes haywire and the results are not correct. I fried my brain reading books (see below) on TDR step responses to find out why. I haven’t managed to understand it properly yet. So it’s a matter for further study.

Some of the books I looked at are:

  • Electromagnetics by Kraus. An excellent book, Chapter 12 is the pertinent part.
  • Electromagnetism for Electronic Engineers by Carter.
  • Signals and Systems by Hsu.
  • Techniques for Advanced Cable Testing which is on the Keysight web site.

None of these are easy reading and all assume an understanding of vector arithmetic and calculus.

Easier, is:

  • Practical Digital Signal Processing using Microcontrollers by Ibrahim.

The nanoVNA and MATLAB

The nanoVNA is a cheap but usable vector network analyser. It is good value and very useful for all sorts of RF design and radio ham activities. The model I have has a tiny screen which I can read adequately but it isn’t as comfortable as reading a computer screen. The NanoVNA is a touchscreen device so you need to tap on tiny text to do anything. Again, this is possible but far from comfortable for those of us with ageing eyes. There’s also a bit of screen reflection.

nanoVNA

The nanoVNA can be driven from a PC using a program called nanoVNA-saver which is pretty good. Unfortunately it runs on Microsoft Windows and as I don’t have a PC running Microsoft Windows I have to run it in a VirtualBox VM on my Mac Mini. This works but is a bit clunky and to be honest my Mac mini is a bit long in the tooth and struggles to run virtualised Windows 10 at a reasonable speed.

There is a cross-platform solution based on Python which looks promising. It uses Homebrew on MacOS which clashes with MacPorts which I use. I tried to make it work under MacPorts but fell into the usual maze of incompatible library versions causing the make to fail. So I gave up as I want to play with electronics and not software building. [Update: Rudi, DL5FA kindly helped with this and it looks like the Python Virtual Environment will help when I’ve got the time to try again.]

MATLAB to the rescue! — alex_m has created some MATLAB scripts which allow you to interrogate and control the nanoVNA from MATLAB. Thanks Alex! So if you have MATLAB this may be useful. If you don’t you may be able to convert much of this to Octave but it does use the MATLAB RF Toolbox so you may end up doing a lot of work.  Alex’s scripts produce LogMag, Smith Chart and TDR Step Response graphs. 

Here’s a graph showing my 40m LPF characteristics made using Alex’s scripts.

40m LPF LogMag

I’ve written a couple of scripts based on Alex’s work which I think makes using the nanoVNA easier. Both scripts need an edit to configure the serial link to the nanoVNA. You’ll need Alex’s code too.

The first script ajfCalibrate.m calibrates the nanoVNA for a particular sweep on the S11 port. You have to do this before every measurement that changes the sweep values, so you do it a lot. Here’s how it looks in the MATLAB console. The inputs are in italics.

>> ajfCalibrate
connect: Serial-/dev/tty.usbmodem4001
status: open
Sweep start (MHz)? 7
Sweep stop (MHz) ? 7.2
Calibrating...
press RETURN when S11 is open
press RETURN when S11 is shorted
press RETURN when S11 has 50 ohm load
Save [0-4]? 4
close
>>

The second script ajfVSWR.m produces a chart of VSWR against frequency. Most radio hams are happier with this than the LogMag chart preferred by RF designers. 

I used ajfVSWR to measure my small transmitting loop tuned to the 40m FT8 frequency. As expected it shows the narrow bandwidth in low VSWR that is the drawback of small transmitting loops. 

40m FT8 VSWR

The graph can be zoomed in MATLAB and have data cursors added to show more details.

40m FT8 VSWR 2

The VSWR could be lower. I think I left a metal step-ladder in the attic which is affecting the loop.

ajf? My initials.

X-Phase — More theory

The advert is from Practical Wireless February 1987.

In my last blog I tried to explain how a QRM Eliminator works. Here’s some more information.

Suppose the signal you are trying to hear is a sine wave (shown in blue). The signal as received (shown in red) will have some noise added as it travels to you.Original noise

The QRM eliminator allows you to pick up the noise with your noise aerial and phase shift by 180º. As shown in this chart.

Noise

If you add the blue and red signal together you’d get a zero signal. So if you mix the inverted noise with the noisy signal as received you’ll recover the original signal.

Recovered

Of course reality is different and the recovered signal won’t be as clean as that. Also if you don’t match the noise and main signal amplitudes properly, you’d then get something like this.

Recovered loud

These charts were made with MATLAB using this script.

X-Phase QRM Eliminator

I bought an X-Phase QRM eliminator a while back, tried it out with a receiver and was quite impressed with its performance. It’s only recently that I’ve connected it to a transceiver because without care it is easy to damage the unit when transmitting.

QRM eliminators have been around for many years. I was recently looking at an old Practical Wireless from 1989 and S.E.M. were selling one then in the adverts at the back of the magazine. (And, yes, we used dots in abbreviations back then). If you were to be picky you might say it should be called a QRN eliminator, but it isn’t. I quite like the idea of an actual QRM eliminator though I’m not sure how you could implement it. 

Advert for QRM Eliminator

A QRM eliminator works like this: signals from the main aerial are mixed with signals from a noise aerial. The signals from the noise aerial can be shifted in phase. The idea being that you mix the main signal with the noise signal 180º out of phase. If the signals are the same you’ll just get a zero signal. But if the main signal comprises a good signal and some noise signals and the noise signal is predominantly the noise signals, you’ll end up with just the good signal. Of course, to make this work you need to be able to make the noise signals from the main and noise aerials be the same amplitude so the QRM eliminator has controls to adjust the gain of each. As you want the signals to be 180º out of phase there is also a control to adjust the phase.

front of X-Phase

The three blue knobs in the photo are these controls.

There are several QRM eliminators on the market. I got mine from Poland on eBay from the seller urbania2. The unit is solidly built in a neat aluminium box with pleasant to use control knobs and strong connexions on the back. 

The instructions are in a quaint mixture of Polish and English but I found them understandable enough as a circuit diagram is included.

I have done some quick tests on 20m with the unit and it seems to be able to reduce the background noise by about 3 S-points as shown on my TS590S transceiver. I also made some measurements using received FT8 signals. This showed an increase of about 4dB in the signal strength of CQ signals as reported by JTDX over 15 minutes with the QRM eliminator being on each even minute and off each odd minute. None of this testing was particularly scientific though. I was using a 4m length of loudspeaker wire as the noise aerial, just lying on the floor of the shack.

connexions at back of TS590S

I mentioned that it’s easy to damage the unit when transmitting. It has three wires. Red and black are for the DC supply, and the yellow wire is for the PTT. When grounded the eliminator passes the main signal straight through avoiding the damage.

This Is how I connected my TS590S. The EXT-AT connector on the TS590S provides a nominal 13.8V DC. So I used pins 1 and 6 to power the Eliminator. I got the EXT-AT plug from an eBay supplier asia_uk.

TS590S EXT AT Connection

The remote connector on the TS590S isn’t particularly well documented, but connecting the yellow wire from the Eliminator to pin 4 works, but only if menu 53 on the TS590S is set to 2. Pin 2 on the remote connector, the common terminal needs to be grounded so I connected it to pin 3 on the EXT-AT seeing it was spare. I got the required 7-pin DIN plug from RS Components.

TS590S Remote Pinouts

SignaLink Jumpers for FT290R

Here’s how to set the jumpers in a SignaLink USB when connecting a Yaesu FT290R.

FT290R Front

I found the jumper instructions on the Tigertronics website just a little too general, so this may save some time.

Signalink jumpers for FT290R IMG 1043

The SignaLink works fine with PocketPacket on a Mac mini. ‘Use Vox for PTT’ was set in the PocketPacket Audio Modem preferences. The SignaLink delay knob was turned fully anticlockwise.

Using this setup I could receive and decode signals from a local packet test GM7RYR-10. I transmitted to the ISS packet digipeater but didn’t see any of my packets digipeated. However, I received my packets locally on my Yaesu FT60 and decoded them on a Raspberry Pi via Direwolf by WB2OSZ and Xastir.

PTT for FT290R

I bought an FT290R (thanks Bob!) a few months back and have finally got around to trying it with packet. The PTT circuit I used for the FT60 Raspberry Pi 3B+ works fine so all it needed was to connect up a plug for the front socket as shown here.

Scribbled Pinout

I tested it with Direwolf and Xastir and it seems to work fine. Here’s an audio clip FT290R Packet Audio.flac of a packet being sent from the FT290R. I recorded it using Audacity from my Alinco DJ-C6.

I had hoped that the extra power (25W) from the FT290R would allow the ISS to hear my packets but I’ve had no joy in the couple of passes I’ve tried so far. I can hear packets fine, but the ISS doesn’t digipeat the ones I’ve sent. I changed the APRS path to just ‘ARISS’ having read this aprs.fi blog but that didn’t help either. Perhaps the ISS needs to be at a higher elevation. Or perhaps my rather ramshackle Cebik Moxon aerial needs tweaked.

Cebik Moxons in the Attic

I now have both 2m and 70cm Cebik Moxons in the attic separated using a HA8LFK diplexer. After trying out the 70cm aerial it is clear that it needs a preamp to pick up any signals. Partly this is due to the poor coax I’m using and I should replace it with something better. So I’ve added an M-100 preamp powered from a shack PSU through a pair of bias-tees.

I tried bypass the M-100 with a relay but I haven’t been able to source a relay that works well at UHF. Usually the non-connected path is only 20 or 30 dB down on the connected path. This is not safe enough to protect the preamp, so that’s another reason for giving up transmitting for now. I’m pretty sure the aerials will not be good enough for decent transmissions and I would end up being the recipient of pleas from an OM: “I got the Mike, Zero and Yankee, your callsign again again please…”.

The setup looks like this scribble from my lab book:

Scribble form lab book

Unfortunately the M-100 draws 55mA which is 5mA too high for the built-in bias-tee in the SDRplay RSP2. The RSP2 is my receiver of choice at the moment. More on that later.

Cebik Moxons, SDRplay and satellites

There was a pass of the AO-91 satellite over my location today and I listened to the ham radio operators operating through it.

I used my home-built Cebik Moxon aerials which are located in my attic and the nice SDRplay RSP2.

Cebik Moxon in attic

Here’s a screenshot of SDRuno displaying the AO-91 signals for those of you who don’t think the Doppler effect is real.

Doppler on Waterfall

You can easily see the received signal changing frequency as the satellite hurtles past.

This is what it sounds like. 

AO-92-12.09-Wednesday-May-8-2019-20190508-1209.m4a

It was recorded using Audio Hijack Pro from a Microsoft Remote Desktop session of SDRuno on a Dell XP workstation. Apologies for the over-driven audio — I was concentrating on receiving rather than recording.

SDRplay Macs and Linux

The Good News

I bought an SDRplay RSP2 recently and have been enjoying using it a lot. The RSP2 has three antenna connections and covers from 1kHz to 2GHz. It is amazingly good value. SDRplay provide a nice receiver application called SDRuno. The SDRplay website has links to reviews of the RSPs and they must be pleased with them.

RSP2

The Bad News

My shack is full of computers accumulated over the years. However, as far as Microsoft Windows machines are concerned I only have an ageing Dell Precision 380 running Windows XP and a VirtualBox VM on a Mac Mini running Windows 10. My W10 VM isn’t fast enough for SDRuno and the audio stutters. The XP machine is usable as long as the sample rate is kept low and you decimate a lot.

On Macs and Linux computers SDRplay only provide an API/HW Driver, although they do provide a full image to boot a Raspberry Pi from. The software for Mac and Linux is CubicSDR which just about does the job but does not have all the features of SDRuno. I prefer GQRX  and have managed to get it working on macOS but the Hi-Z antenna connexion only works intermittently. It’s all quite unsatisfactory. It’s frustrating to have such good hardware spoilt by the lack of easy-to-install software. You get sucked into handling a morass of libraries with differing versions and it’s time-consuming if not impossible to find out which versions you need to use.

The Raspberry Pi image works well as long as you connect an HDMI display. I prefer to run my Raspberry Pi through Microsoft Remote Desktop so I don’t have multiple monitors, keyboards and mice on my desk. But with Microsoft Remote Desktop CubicSDR does not display well at all.

I only hope that SDRplay comes out with SDRuno on other platforms other than Windows. 

In Other News…

So I’m currently using the Dell XP computer with SDRuno run through Microsoft Remote Desktop as the best solution for me, even though it isn’t supported. Don’t worry, my insecure Dell XP is only connected to my LAN and is not connected to the Internet.

The blue arrow points to the low sample rate and high decimation needed on the Dell XP.

Screen Shot 2019 05 08 at 15 17 58

But it works well enough, it just doesn’t use the capabilities of the RSP2.

Screen Shot 2019 05 08 at 15 18 16