Antenna SWR scanner
Version pa0nhc 20160118

VSWR sweep of my 40m/80m loop antenna.

My experimental SWR sweeper on Vero board.
The software is adapted for exactly those two boards :
a. Arduino Pro Micro 5V
b. DDS with 9851, 30MHz Xtal,
2x 10 pins, 5V.

pa0nhc SWR sweeper schematic diagram (PDF)
PA0NHC version SWRsweeper software for upload to a Arduino Pro MIcro board (TXT)
1. Right-click on the link.
2. Save the "TXT" file..
3.Open it in a word processor with "Alinea end = (CR)".
4. Copy the content.
5. In the Arduino 1.8.0 IDE upload software, paste it into an "Empty sketch".
6. Upload it to the Arduino Pro Micro.

My double sided design main board PCB.
If enough demand, i will supply professional made boards.
Xray view (PNG)

Parts locations (PNG)

Accurate pcb masks with top- and bottom copper (PDF)
If you want to make a single sided PCB :
1. Only use the bottom copper.
2. Instead of the green ("top copper") tracks, make wire jumpers on the underside of the PCB.
(See "Xray view").

tinytronics.nl sells cheap Arduino compatible boards
For the HC-SR08 DDS board, pse. search "DDS"

"Thrifty Antenna analyzer" Windows application

DC2WK Windows application

Arduino IDE upload software.
Arduino SPI software library.
Sparkfun Arduino boards - all info.
Pro Micro hookup guide

K6BEZ info.

Several versions of "Antenna SWR Analyzers" can be found on the Internet, using different combinations of processors and DDS boards. This are NOT analyzers, as they only produce VSWR graphs. But they can be very handy and cheap instruments to easy and fast check the VSWR curve of an antenna.

Below i describe my version of a "Antenna SWR Sweeper". Using a combination of cheap compatible Arduino Pro Micro, and 2x10pin 9851-chip DDS boards. It is connected to a PC and powered using its micro USB connection. With it VSWR tests can be done between 0.8 MHz and 89 MHz.

I was completely new using Arduino boards and software. It needed a lot of thinking to design a correct schematic diagram for my boards. Nobody seemed to use  my 5V boards combination, and nearly all diagrams i found used idiotic different names for Arduino and DDS pins. In my diagram all pins are clearly named.

Tests with 41 Ohms to 390 Ohms 0.25W metal film resistors mounted inside BNC plugs as "antenna impedance", gave at abt. 1MHz good results. However, sometimes rising VSWR values were shown towards higher test frequencies. This is caused by the parasitic self inductances in the little metal film test resistors. Good dummy loads gave a absolute flat VSWR characteristic up to 89 MHz. 

It now was easy to determine the optimal position of the tap on the 80m matching transformer of my 40m-80m loop antenna.

IMPORTANT: when D1,2,3 and 4 have exactly the same electrical properties, the circuit will minimally be influenced by temperature changes.
Do select four electrically equal diodes from a batch of f.i 20 pieces.

Cheap addresses for 1N270 germanium diodes :
AliExpress, Banzai, Amazon, Ebay, op-electronics.com .

During experimentation the circuit changed. My diodes D1,2,3 and 4 therefore were NOT all paired. Tests with severe heating and cooling resulted in less accurate results. Back at room temperature the original good results came back.

        My solution.
The HFoutput from the  9851 DDS board was 400mVpp. A higher output should give better results. Some users therefore generate more output with an extra RF driver amplifier.

In the 9851 data sheet i found the possibility to enhance the DDS output by changing the 9851 DA converters output current from 10mA to 20mA. On the 2x10pin 9851 DDS board, an extra 3k9 resistor has to be soldered in parallel to R6. RFoutput is then enlarged to 800mVpp.

However, the best solution for good results should be the use of "ideal" performing diodes for D1 and D2. Such diodes do not exist.

A test with DC bias to diodes D1 and D2 proved to be unsatisfying.

After a lot of experiments, good results are achieved using buffer stages with  input voltage depending gain : 1.8x gain @ 168mV input, 10x gain @ 0.8mV input.

This is accomplished by inserting 1N270 germanium diodes in the negative feedback circuits of the LM358P buffer stages. With correct values of load resistors R7 and R11, diodes D3 and D4 operate in the same Ud / Id curve-part as D1 and D2. The total result is like D1 and D2 are nearly ideal diodes with a straight Ud / Id characteristic and nearly no voltage threshold.

Pse. use a digital ohm meter, and do select 4 equal diodes for D1,2,3 and 4 from a batch of f.i. 20 pieces.

        Circuit details :
I used a 5Volt 2x10pins 9851 DDS board and a 5Volt Arduino Pro Micro board in connection with a PC/laptop. Uploading software, data transfer from/to the PC, and 5V power supply are accomplished through the Arduino's micro-USB connection. For detection and correction I used 1N270 germanium diodes which are especially designed for low level RF detection.

Possibly useable too are 1N34A, 1N60, 1N100A, AA143.  For those and other types the resistance value of R7 and R11 must probably be changed.

R1,2 and 3 should best be inductance-free 1% tolerance resistors.

WARNING : i used a 9851 DDS board with a 30MHz crystal oscillator, and in the software its 6x multiplier is enabled. Its clock therefore is 6x30MHz = 180MHz, enabling signal generation up to 90MHz. In my software the 6x multiplier is enabled by the fifth byte as "00001", with as last bit "1".

When using a 9850 DDS board with a 125MHz crystal, this last bit should be "0", to prevent damage to the 9850 DDS board.

I adapted a version of DG7EAO software. Some changes result in better readability and no more "level jump" at the start of a sweep

The software also contains two lines with correction possibilities of SWR screen line positions :

    - "REV=REV-1" could be used to compensate for differnces between D1 and D2 (not fully matched diodes).
    - "VSWR=VSWR*1000" enables you to change the postions of VSWR values on the screen.

While sweeping the 160m band, use test resistors between 27Ohms and 390Ohms to check VSWR screen line positions.
VSWR = "test resistor value" /  50 .

If on the PCscreen the distances between the SWR 1:1, SWR 1:2, SWR 1:3 and SWR 1:7.8 lines are not correct :
   If you did use 1N270 diodes, in the Arduino software you could change the figure in " VSWR=VSWR*1000 "
    If you used other type diodes than 1N270,  you should change the values of R7 and R11

I designed a little double sided board for wired components, with mass planes, and optimal short 50Ohms signal tracks.
It contains screening of all signal lines, lowZ ground returns, minimal dimensions and is easily assembled.

With a high enough demand, i will supply professional boards (abt. 7cm x 6cm).

Double sided board 69.342mm x 58.674mm .