Introduction: HF Antenna Analyser With Arduino and DDS Module

Picture of HF Antenna Analyser With Arduino and DDS Module


In this Instructable I'll show you how I built a low-cost antenna analyser which can measure an antenna and display its VSWR over any or all of the HF frequency bands. It will find the minimum VSWR and corresponding frequency for each band but also will display a realtime VSWR for a user-selected frequency to facilitate antenna adjustment. If sweeping a single frequency band, it will display a graph of VSWR versus frequency. It also has a USB port on the back for outputting frequency and VSWR data, to allow more refined graph-plotting on a PC. The USB port can also be used to reflash the firmware if needed.

I recently got into amateur radio (because I liked the idea of peer-to-peer communication over huge distances without infrastructure) and rapidly made the following observations:

1. All of the worldwide communications that interested me take place on the HF bands (3-30 MHz)

2. HF transceivers are very expensive and will break if you don't drive them into a reasonably well-matched antenna

3. You are generally expected to rig up your own HF antenna from bits of wire strung across the garden (unless you want to spend even more money than you spent in 2).

4. Your antenna might be a bad match but you won't know till you try it.

Now a purist would probably say that one should first test the antenna on very low power at the frequency of interest and check the VSWR on the rig's meter to assess the quality of the match. I don't really have the time to muck about with that sort of thing for every frequency I might want to use. What I really wanted was an antenna analyser. These devices can test the quality of the antenna match at any frequency over the HF bands. Unfortunately they are also very expensive, so I set about considering whether I could make my own. I stumbled upon the excellent work carried out by K6BEZ (see, who investigated the use of an Arduino to control a cheap direct digital synthesiser module (DDS). He soon abandoned the Arduino on cost grounds, preferring to use a PIC. Well, in 2017 you can buy an Arduino Nano for about £3.50, so I thought it was time to revisit his work, pick up where he left off and see what I could come up with (note that I'm not the only one who has done this: there are some very nice examples to be found on the internet).

Update - I've been getting into 60 m recently, which the original sketch didn't cover. So now I've uploaded firmware version 7, which adds the 160 m and 60 m bands. These aren't add-ons; they are fully integrated into the operation of the analyser. It was fortunate that I could find an u8glib font that was still legible but allowed me to display ten bands simultaneously on that little screen (although it wasn't monospace, which caused some grief). I have estimated calibration values for the new bands, based on interpolation / extrapolation of the existing calibration values. I then checked these out with fixed resistors and they give pretty good results.

Update - as several people have asked about schematics, the fundamental Arduino / DDS / VSWR bridge circuit is largely unaltered from K6BEZ's original work. Please check out the above URL for his original schematic on which I based this project. I've added an encoder, an OLED screen and fully developed firmware to make for an effortless user experience.

Update - This system uses a very low voltage DDS signal source in conjunction with a resistive bridge containing diode detectors. Thus the diodes are operating in their non-linear regions and my first version of this system tended to under-read VSWR. As an example, a 16 ohm or 160 ohm impedance load should show a VSWR of about 3 in a 50 ohm system; this meter indicated a VSWR closer to 2 in this situation. I therefore carried out a software calibration using known loads which seems to be an effective fix for this problem. This is described in the penultimate step of this instructable and a revised sketch has been uploaded.

Update - on-board graphing facility added to single sweeps as it was too useful to leave out, particularly when tuning antenna lengths for minimum VSWR : a graph gives you an instantly visible trend.

Step 1: Buy Your Stuff

You will need the following items. Most of them can be obtained cheaply from Ebay. The most expensive single item was the box, at close on £10! It might be possible to substitute some items (I used 47 Rs instead of 50 Rs, for example). The diodes were rather unusual (I had to buy 5 off from Italy) and would be worth substituting for more readily available items if you know what you are doing.

  • Arduino Nano
  • DDS module (DDS AD9850 Signal Generator Module HC-SR08 Signal Sine Square Wave 0-40MHz)
  • 1.3" i2c OLED display
  • MCP6002 op-amp (8 pin)
  • 2 off AA143 diode
  • Ceramic capacitors: 2 off 100 nF, 3 off 10 nF
  • 1 uF electrolytic capacitor
  • Resistors: 3 off 50 R, 2 off 10 K, 2 off 100 K, 2 off 5 K, 2 off 648 R
  • 2.54 mm pitch screw terminal blocks: 3 off 2-pin, 2 off 4-pin
  • Single-core hook-up wire
  • 702 or similar hook-up wire
  • Stripboard
  • Square header strip (female) for plugging the Arduino and DDS into - don't buy the round socket stuff by mistake!
  • SO-239 chassis-mount socket
  • Rotary encoder (15 position, 30 detent) with push switch and knob
  • Cheap rotary encoder 'module' (optional)
  • Project box
  • Toggle switch
  • Right-angle micro-usb to USB B bulkhead mount lead (50 cm)
  • PP3 and battery clip / holder
  • Self-adhesive PCB mounting posts / standoffs

You'll also need a soldering iron and electronics tools. A 3D printer and a pillar drill are helpful for the enclosure, although if you wanted you could probably assemble the whole thing on the stripboard and not bother with a box.

Naturally you undertake this work and exploit the results generated at your own risk.

Step 2: Lay Out the Stripboard

Picture of Lay Out the Stripboard

Plan out how you are going to arrange the components on the stripboard. You can either do it yourself, referring to K6BEZ's original schematic (which lacks an encoder or screen - see Page 7 of, or you can save a load of time and copy my layout.

I do these layouts the simple way, using squared paper and a pencil. Every intersection represents a stripboard hole. The copper tracks go horizontally. A cross represents a broken track (use a 6 mm drill or the proper tool if you have one). Lines of circles with a box round them represent headers. Large boxes with screws denote the connector blocks. Note that in my diagram there is an extra line which runs horizontally through the middle of the board. Leave this out when you are putting it together (it's marked 'omit this line').

Some of the components may appear to be laid out strangely. This is because the design evolved once I'd got the basic hardware working (particularly when I realised that the encoder needed hardware interrupts, for example).

When soldering components onto the board, I use Blu-Tak to hold them in firmly in place while I turn the board over to solder the legs.

I tried to minimise the amount of wire I used by aligning the Arduino and the DDS module and just using the stripboard to connect key pins. I didn't realise at the time that the hardware interrupts needed to read the encoder only work on pins D2 and D3, so I had to move DDS RESET from its original D3 connection with a bit of wire:

DDS RESET - Arduino D7

DDS SDAT - Arduino D4

DDS FQ.UD - Arduino D5

DDS SCLK - Arduino D6

Arduino D2 & D3 are used for the encoder inputs A & B. D11 is used for the encoder switch input. D12 isn't used but I thought I'd make a screw terminal for it anyway, for future expansion.

Arduino A4 & A5 provide the SDA & SCL (I2C) signals for the OLED screen.

Arduino A0 & A1 take the inputs from the VSWR bridge (via the OPAMP).

Step 3: Install the Modules, Attach the Peripherals and Flash the Code

Picture of Install the Modules, Attach the Peripherals and Flash the Code

It's worth testing the board before going to the trouble of mounting it into an enclosure. Attach the following components using flexible wire to the board using the screw terminal blocks:

  • 1.3" OLED display (SDA and SCL are connected to Arduino pin A4 and A5 respectively; ground and Vcc go to Arduino GND and +5V, obviously)
  • Rotary encoder (this needs a ground, two signal lines and a switch line - you might need to flip the switch lines round if the encoder works the wrong way - connect these to Arduino ground, D2,D3 & D11 respectively). Note that for my prototyping work I mounted the 15/30 encoder onto a KH-XXX encoder module board, as the pins on the bare encoders are very flimsy. For the final job I soldered wires straight onto the encoder.
  • 9V battery
  • SO-239 socket - solder the centre pin to the antenna signal line and use an M3 ring terminal and screw for the antenna ground

Flash the following sketch onto the Arduino. Also make sure you have included the very good OLED driver library from Oli Kraus, or the complilation will crash and burn :

If your OLED display is slightly different you may need a different configuration setting in u8glib; this is well documented in Oli's example code.

Step 4: Put It All in a Nice Box (optional)

Picture of Put It All in a Nice Box (optional)

I seriously considered leaving the analyser as a bare board, as it was only likely to be used occasionally. On reflection though, I thought that if I was doing a lot of work on a single antenna, it might end up getting damaged. So everything went in a box. There's no point going into details about how this was done, as your box will likely be different, but some key features are worth mentioning:

1. Use self-adhesive PCB standoffs for mounting the stripboard. They make life really easy.

2. Use a short USB adaptor lead to bring out the Arduino USB port to the rear of the enclosure. Then it's easy to access the serial port to obtain frequency vs. VSWR data and also to reflash the Arduino without taking the lid off.

3. I developed a custom 3D-printed part to support the OLED display, as I couldn't find anything on the web. This has a recess to allow one to insert a 2 mm piece of acrylic to protect the fragile screen. It can either be mounted using double-sided tape or self tapping screws (with the tabs on either side). Once the display has been fitted, you can use a hot wire (think paperclip and blowlamp) to melt the PLA pins onto the back of the circuit board to secure everything. Here's the STL file for anyone who's interested:

Step 5: Calibration

Picture of Calibration

Originally I didn't do any calibration but discovered that the VSWR meter was consistently reading low. This meant that although an antenna appeared to be okay, my rig's autotuner wasn't able to match to it. This problem arises because the DDS module gives out a very low amplitude signal (about 0.5 Vpp at 3.5 MHz, rolling off as frequency increases). The detector diodes in the VSWR bridge are therefore operating in their non-linear region.

There are two possible fixes for this. The first is to fit an broadband amplifier to the output of the DDS. Potentially suitable devices are available cheaply from China and they will boost the output to about 2 V pp. I have ordered one of these but have yet to try it. My feeling is that even this amplitude will be a bit marginal and some non-linearity will remain. The second method is to put known loads on the output of the existing meter and to record the displayed VSWR at each frequency band. This allows you to construct correction curves for actual versus reported VSWR, which can then be put into the Arduino sketch to apply correction on the fly.

I adopted the second method as it was easy to do. Just get hold of the following resistors: 50, 100, 150 and 200 ohms. On this 50 ohm instrument these will correspond to VSWRs of 1,2,3 and 4 by definition. In the sketch there is a switch 'use_calibration'. Set this to LOW and upload the sketch (which will display a warning on the splash screen). Then carry out measurements at the centre of each frequency band for each resistor. Use a spreadsheet to plot expected versus displayed VSWR. You can then do a logarithmic curve fit for each frequency band, which gives a multiplier and intercept of the form TrueVSWR=m.ln(MeasuredVSWR)+c. These values should be loaded into the swr_results array in columns 2 and 3. This is an odd place to put them but I was in a hurry and as this array stores floats it seemed like a sensible choice at the time. Then put the use_calibration switch back to HIGH, reflash the Arduino and off you go.

Note that when doing the spot frequency measurements, the calibration is applied for the initial choice of band. This won't be updated if you make gross changes in frequency.

Now the meter reads as expected for the fixed loads and seems to make sense when measuring my antennas! I suspect I may not bother trying that broadband amp out when it arrives...

Step 6: Using the Analyser

Picture of Using the Analyser

Attach an antenna via a PL-259 lead and switch the device on. It will display a splash screen then automatically perform a sweep of all the main HF bands. It doesn't do topband or any of the newer bands, but it's an easy matter to extend the sketch to do this. The display shows the frequency under test, the current VSWR reading, the minimum VSWR reading and the frequency at which it occurred. In order to reduce measurement noise, five measurements are taken of VSWR at every frequency point; the mean value of these five readings is then passed through a nine-point moving average filter with respect to frequency before the final value is displayed.

If you want to stop this sweep, just press the encoder knob firmly. The sweep will stop and a summary of all the band data gathered will be displayed. A second press will bring up the main menu. Choices are made by rotating the encoder and then pressing it at the appropriate point. There are three choices in the main menu:

Sweep all bands will restart the sweep of all the main HF bands. When it finishes, it will display the summary screen described above. Write this down or take a photo if you want to keep it.

Sweep single band will allow you to select a single band with the encoder then sweep it. Both the wavelength and frequency range are displayed while making the selection. When the sweep has finished, a second press of the encoder will display a simple VSWR versus frequency graph of the band just swept, with a numerical indication of minimum VSWR and the frequency that it occurred. This is very handy if you want to know whether to shorten or lengthen your dipole arms, as it shows the VSWR trend with frequency; this is lost with the simple numeric report.

Single frequency allows you to choose a single fixed frequency and then continuously updates a live VSWR measurement, for antenna tuning purposes in real time. First select the relevant frequency band; the display will then show the centre frequency of the chosen band and a live VSWR reading. One of the digits of the frequency will be underlined. This can be moved left and right with the encoder. Pressing the encoder emboldens the line; then rotating the encoder will reduce or increase the digit (0-9 with no wrap or carry). Press the encoder again to fix the digit, then go on to the next one. Note that you can access pretty much any frequency across the entire range using this facility - the band selection at the start just helps to get you close to where you probably want to be. When you have finished with this mode, move the underline all the way to the right until it's under 'exit', then press the encoder to return to the main menu.

If you connect your PC to the USB socket on the rear of the analyser (i.e. into the Arduino), you can use the Arduino serial monitor to collect frequency versus VSWR values during any sweep operation (it's currently set to 9600 but you can change that easily by editing my sketch). The values can then be put into a spreadsheet so you can plot graphs etc. If I get time I might build in a simple graphing facility on the analyser itself, although the OLED drivers aren't ideal for this: every time you make a change to the display (e.g. plot a point), a complete screen refresh is needed, so all the results would need to be stored in memory somewhere.

The screenshot shows the VSWR summary for my 7.6 m fishing pole vertical antenna with 9:1 UNUN. My rig can accommodate a 3:1 max SWR with its internal auto-tuner unit. You can see that I will be able to tune it over all bands except 80 m and 17 m. So now I can relax in the knowledge that I've got a passable multi-band antenna and I'm not going to break anything expensive when transmitting on the majority of bands.

Good luck and I hope you find this useful.


pemazzei (author)2017-08-24


Very nice project!

Usefull in the ham shack to adjust HF antennas.

73 de Paulo, PY2PH

dr_phil (author)pemazzei2017-08-24

Thanks Paulo. Sounds like you made it? If so I hope you find it useful (and worth the effort of building!).

I have just updated the firmware to include 160 m and 60 m (and all the bands still just about fit onto the OLED display). When I've done the calibration I'll upload V7. Watch this space...

pemazzei (author)dr_phil2017-08-25

Hi dr_phil,
No, didn´t make it.
Unfortunatelly some parts are a bit difficult to find here in Brazil.
Arduino is ok to find and resistors, capacitors, etc.
But I will beggin my one.
Please let me know if the schematics diagrams are correct to make a PCB for the analyser.
Paulo, PY2PH

ChristopherK25 made it! (author)2017-07-11

Great little project. Next I need to add a battery supply and get a project box. What project box did you use, it looks perfect. Thanks for the Instructable!

Chris, w0anm

dr_phil (author)ChristopherK252017-07-19

Hi Chris - thanks for letting me know. I hope it proves useful to you. I've bought a phase-sensitive detector module from ebay recently which I'm planning to incorporate into the design instead of the bridge. Watch this space (eventually!).

As far as the box goes, I just picked sometime that looked okay off ebay uk. It's broadly classed as an instrument enclosure (abs body with aluminium ends). I don't think it was branded in any way. Just looking at the layout of your board, you might be better off using a simple acrylic (plexiglass) sandwich with holes for the encoder and the antenna connector. Use PCB standoffs to support the plates. You get screen protection for free if you do this!

Thanks again...

dr_phil (author)2017-06-18

Good work and thanks for letting me know! Did you reverse engineer my stripboard layout or do your own from the K6BEZ layout? I'm guessing that the arduino is hidden underneath the copper groundplane?

PK15 (author)dr_phil2017-06-19

I used your and K6BEZ layout to verify before I started wiring it up. Yes, the Arduino mini is carpet taped to the backside. I am now trying to get it mounded in a "field" ready box for Field Day. (by the way it pulls 130 mA - should run all day on a cheap 5V USB power pack). I thoroughly enjoyed your 'instructable', keep up the good work.

PK15 made it! (author)2017-06-17

A great project, and I got a new tool for Fieldday. The only mod I made is the substitution of the AA142 Germanium diodes with 1N98, they seem to work just fine, calibration might be off, but I will mainly using this "tool" to do basic checks of antenna and coax setup - after all I am just looking for the lowest reading.

slr_65 (author)2017-04-29

Thanks! Though I already have an antenna analyzer (a SARK Mini60 - $100 off eBay fully built with case and rechargeable batteries, works fine!), this looks like an interesting and fun project! (I love Arduino playing!)
As fun as they are, Arduinos can get frustrating as upgrades to the IDE, AVR Dude, libraries, etc. can conspire and things may suddenly stop working, or things that worked back when you were developing the project may not work when you want to make another one in the future. Also, many wanting to do these projects may not be experienced with Arduino and so getting up and going for them may be challenging. XLoader can really help there, it simply takes the guess work out of compiling the firmware (i.e. sort it out once and you're good to go from that point on (until you want to change something)).
XLoader is great for troubleshooting too - it can narrow the issue down between Arduino code just not being compiled correctly or a hardware issue very quickly.
It's great for quickly replicating the project (which in essence is what most visiting this page are wanting to do). When I finish a project I like to archive the Arduino sketch, a copy of the compiled hex file, and a note with all the hardware specs -> it's just much easier to load the hex than deal with making the sketch happy with the most recent development software updates. (always save the sketch though as you may not be able to get the same hardware in the future and may need to adapt the sketch to what is currently available)
For the experimenters/developers out there, learning to deal with the Arduino issues is no doubt the best route, but for those just wanting to build a project a specific parts list and hex file would be the easiest route.
The broadband amp may fix the need for calibration and it's $10 from US vendors and $5 or so from out of the country vendors, small price to pay, but for the thrifty a calibration routine could be built into the code and the values stored in the eeprom - that would avoid the need to edit the sketch for each individual unit built and thus would make simply loading a static hex file doable.
The biggest issue to using a static hex file is probably the display, the hex file is compiled from a sketch that's tailored for specific hardware. OLEDs are cheap these days and very attractive, but aren't standardized and can take some futzing about to find the right library. Developing a version that uses a standard character LCD display could address this though. Though not as attractive, they are still good looking and they are pretty generic and almost all are wired the same (I would avoid I2C - the device address would need to be in the code and the address varies between manufacturers. Standard wiring is cheap and easy to do and avoids code issues). I would suggest a four line, 20 character display as they're cheap and it seems you can never have enough display real estate. Mounting bezels are also available for the character displays, so the need for the 3D printed display mount would be avoided.
I already have a ton of projects backed up, but I'm adding this one to the list and ordering parts today! (I'll go cheap and order out of the country since I have a backlog of projects and won't get to it for a bit anyway)
I'm looking forward to playing with this!
DO give XLoader a try! I think once you use it, you'll see how handy it can be!
Also, as you're Arduino playing don't overlook the Teensy micros - more expensive, but more powerful and can do some interesting things (like interface to a PC through the USB port and emulate a keyboard like an Arduino Leonardo, but doesn't require a driver install like a Leonardo does). The Nanos, etc. are cheap, but pretty limited on capability. The most capable Arduino is the Mega. Many avoid the Mega because of it's size, but there's a mini version on eBay that's very small, so if you're project is outgrowing your Nano but you still want a tiny micro, search eBay for "Meduino Mega2560).
Take care, 73,
Steve, KA0NEB

dr_phil (author)slr_652017-04-30

Hi Steve. You make some excellent points. I like the idea of an in-built cal routine (but I have to remind myself all the time that better is the enemy of good enough!). Anyway I've just found out how to extract the hex file and will email you one if you want (if it's not a breach of protocol and I can figure out how to attach stuff!).

I tend to put my projects together with cheap, compact Nanos and other import modules. Once the firmware is finalised I box it up and do nothing except change the battery occasionally. Your point about the OLED is a good one - in the driver file there is a huge range of options and you almost have to guess which display you have. It's worth it though, as these are crystal-clear, bright displays and even the graphing works well - I'm not sure how a classic 'lined' LCD would work. Much of my stuff ends up using every pin so I'm a bit of an I2C fan. This project has quite a few pins left over at the moment.

I'm keen to update this device to measure the magnitude of reactance, so I can plot minimum SWR and reactance null simultaneously. If it's easy it could happen quite quickly. If not, I'll move on to the next project in my brimming in-tray! Watch this space.

Best regards, dr_phil

slr_65 (author)2017-04-28

Do you have a part number for the broadband amplifier?

dr_phil (author)slr_652017-04-29

Type "30dB low-noise LNA Broadband Receiver Module RF Wideband Amplifier 0.1-2000MHz" into ebay and you should get a few hits. I couldn't find a part number.

I should stress that I make no recommendation as to the suitability of this device (as mine hasn't arrived yet). I think the problem of detector non-linearity will remain at low return signals. In my opinion the software-based calibration described in the instructable is the easiest and cheapest way to go. It is also fully supported in the sketch (version 6).

slr_65 (author)2017-04-28

You should also post the hex file so others could use XLoader to load the already compiled hex and not have to deal with loading libraries, compiling, etc..

dr_phil (author)slr_652017-04-29

I'm not familiar with this method of flashing the Arduino; it sounds very sensible for a production-type environment. In this instance I think the user community is best served by compiling from source, so they can calibrate the measurements, understand the code and customise the device if they wish.

Ambrogio (author)2017-03-21


thanks for the reply on the veru useful analyzer project.

The applicable schematics is the one reported on page 7 of 8 on the follwing link:

Is it correct ?

Where do I have to connect the encoder( 2 pins ) , the encoder push_button (1pin ) and the Oled_display (2 pins ) please ?

Does your program .ino send data to the LCD and to the USB for PC diplaying please ?

Thanks for the assistance.



dr_phil (author)Ambrogio2017-03-21

Hi Ambroigo,

I've put additional information on Steps 2 & 3 which shows where to connect the screen and encoder to the Arduino. D2, D3, A4 & A5 must not be changed (because they provide hardware interrupts & I2C support). The other digital pins to interface with the DDS etc. are optional and can be changed in the sketch.

The sketch (.ino) automatically interfaces with the OLED and encoder. When performing a single or multi-band scan, frequency and VSWR values are sent out of the serial port on the back of the unit. The easiest way to get these is to connect up your USB Arduino Uno-style programming lead and start up a 9600 baud serial monitor via the Arduino IDE. Then copy and paste the results into a spreadsheet.

Ambrogio (author)2017-03-21

sorry there is a correction about the link:


Ambrogio (author)2017-03-19

I will like to build up this good project soon.

Could you please post the schematics diagram ?

My e_mail is:



Could any body help me in sending the schematics diagram please ?

dr_phil (author)Ambrogio2017-03-20

Hi. You can find the schematic for the basic VSWR capability via the link on Step 3. Look on Page 7. This doesn't include the encoder and the screen.

I didn't expect this project to create such interest so I will have a look at creating a comprehensive schematic for the whole system. It will take a little while though...

dr_phil (author)dr_phil2017-03-20

er, sorry - Step 2!

PU1PBE (author)2017-03-18

Very nice job! I've been facing difficulties to compare your job to K6BEZ's. Mainly with respect of I2C and rotary encoder. Can't you show how you have connected them? I'm a beginner with Arduino.

dr_phil (author)PU1PBE2017-03-20

Hi and thanks. I will look at producing a schematic as there is a lot of unexpected interest. Nevertheless all the detail is in the instructable if you look carefully.

tytower (author)2017-03-13

Yes a very nice job . Myself I have always cut a dipole for what I want using standard tables .Then connect it to low power HF rig and sweep the band watching where it takes the most power. Not what you are supposed to do but most of us do. If I want a yagi or quad or something like that I use the cut dipole driven element as the driven element for the bigger ant , after all everything else is grounded . Verticals give me more trouble though so this might be useful there. Interesting post though and I must have a close look . Got a DDS yesterday and have to make a power supply specially for it +5,+12 , GND and -12, so have to start with a 24V supply . Thats a bit of a pain and it uses an ATMEGA chip.

dr_phil (author)tytower2017-03-14

Thank you. Sounds like you have way more experience than me in the field (that's not hard, mind you!). I'm usually really pushed for time and the finer points of antenna design and tuning are beyond me at the moment. I spent out a load on a new rig and didn't want to trash it with my inexperience! Hence the analyser, which gives me peace of mind and saves me time if and when I change the antenna.

Your DDS seems has demanding supply requirements. The one I used cost about £6.30 and uses a 5 V rail. It will go up to about 40 MHz. Good luck with the project though.

tytower (author)dr_phil2017-03-15

For fun I suggest you set your tranceiver at very low power and transmit a CW signal into the antenna while sweeping the VFO if you have one .Watch the power meter and look for where it takes the most power out. I think you will still see a difference in sweet spots from what your device is telling you . You may be surprised at the difference. When the antenna draws its maximum power that is where the energy is getting off it best and you tune the antenna to move that spot to where you want it by lengthening or shortening your antenna.wite On site capacitance and signal reflections change the resonant frequency .

rakrupski (author)tytower2017-03-16

Transmit and sweep at the same time? Don't let the FCC RDF you...

Dannlh (author)rakrupski2017-03-16

The Fcc won't bother you if you are just tweaking the hotspot for your antenna. You won't be on the band long enough. And at low power you won't really be causing much, if any, interference with anyone. Just make sure the band is clear around where you're doing it. Its not like you're sweeping hundreds and hundreds of KHz up or down the whole band. The point is to find the sweet-spot in your tuning. Usually the dip is pretty close to where your analyzer finds it.

dr_phil (author)tytower2017-03-15

Hi again. Thanks for the tip; it certainly sounds very easy (once you know how). In my defence I don't have a key. I'm working on learning CW but haven't got far enough with Koch to justify buying one yet.

Dannlh (author)dr_phil2017-03-16

Um, that actually would be the tune button to the right of your vfo knob in your photo! :-)

dr_phil (author)Dannlh2017-03-16

Thanks for the kind words and the very useful tip! Now where's that 450D manual?...

Dannlh (author)dr_phil2017-03-16

Hey dr phil,

Nice project!

You wont need a key. There should be a mode on your rig called "tune". This will create and transmit a cw (continous wave carrier, not morse) signal the whole time it is turned on. This will let you tune the antenna to the rig and look for that dip. And remember, just tune for minimum smoke.


WH2 (author)2017-03-16

KD0RVY Here - I had done a similar project for VHF/UHF and I think I like this one better, especially since it has a read-out with easy to read info. Could this be easily converted over for VHF/UHF use, and if so, what would need to be done?

dr_phil (author)WH22017-03-16

Yeah, I just love those OLED displays - small but very clear and easy to read.

You could probably convert this if you a) had an appropriate DDS module covering the relevant ranges; b) your resistive bridge (see comments above),and associated circuitry and wiring were appropriate to the higher frequency. If all that's okay (and I've no idea whether it is), you just need to change the contents of the array that stores the HF band information.

If you do it, please publish!

WH2 (author)dr_phil2017-03-16

I'll have to look into that. I do have a DDS module that's appropriate for the relevant ranges since it's currently used for the last analyzer I did. It's actually still on my breadboard all hooked up and everything. The one thing I like about this one vs. my current one, is that this one looks like there's quite a few less connections needed, doesn't require a computer to hook up to in order to use, and it has the OLED. Once I have some time to sit down and look at everything, I'll be sure to share my findings with you. :)

ve6cmm (author)2017-03-16

VE6CMM here. I would like to see a schematic as I can't really follow your breadboard layout. Would it be possible to add one??

It's a nice looking project and I think that you have done an excellent job with it.

dr_phil (author)ve6cmm2017-03-16

Thank you. If you want the schematic, check out K6BEZ's website for his original circuit, which I've borrowed largely unchanged. I have however added the rotary encoder and the screen etc. which hopefully any Arduino fan should be able to follow or adapt to their own specification. If not I'll try to answer specific questions.

For what it's worth, it usually takes me ages to transfer a schematic onto stripboard and I'd love it if someone did that job for me; it's interesting to see so many people wanting it the other way round. :-)

rakrupski (author)2017-03-16

Hi, WA2SKO here... looking at the photos you published, I'm not understanding how you are obtaining VSWR data. Is there some sort of directional coupler that I'm missing? I just started playing around with a few different DDS and PLL breakout boards (ultimately planning to build a universal function generator) but a "scanning antenna analyzer" would be a MUCH more useful thing for me (considering that my one and only antenna is a 66 foot (40 meters) dipole strung across the yard (and not a very straight run). I have no idea if the antenna is any good (it works, but is it working it's best? I bet not). Please fill me in on how that circuit actually works (just the VSWR data - which I assume ends up being a variable voltage DC signal?). Thanks!

dr_phil (author)rakrupski2017-03-16

Hi. See Page 11 refers to a simple resistive bridge. I think the implementation on the board is more complex as Page 11 only shows a single diode. I haven't gone through it in detail, but I'm glad it seems to work!

three_jeeps (author)2017-03-16

A nice arduino project, almost every other arduino project everyone does wiring diagrams and NOT schematics. I guess it is the mindset of the community - we just wire boards together, we don't design circuits...

dr_phil (author)three_jeeps2017-03-16

Thanks. I didn't present the schematic because a) the fundamental VSWR part is K6BEZ's work and is documented extensively on his site; b) the idea is to tell you how to make one of these, not go into the detailed function of the system. Hope that makes sense :-).

KevinJ193 (author)2017-03-14

Hello Kevin here in Las Vegas Can i purchase one from you ? KC7ZOH

dr_phil (author)KevinJ1932017-03-14

Hi & thanks for your interest. I'm really sorry but I couldn't face making another one. It took me several months (off and on), but in fairness most of that was getting the code right (and making the rotary encoder work properly). The good news is that bit has now been done for you. It's really easy to build a bare-bones version (two or three hours work) and you just need to put my sketch onto it.

Alternatively you may wish to consider one of the very cheap Chinese units from Ebay?

TheThinker (author)2017-03-13

Nice! Would you do anything different if you built another one?

dr_phil (author)TheThinker2017-03-14

Thanks. Erm, seriously I would probably buy the cheap Chinese analyser for about £45. Getting my basic system working was pretty easy, but making it work well and look nice took ages. What's your time worth? Like all these things, it's economically usually a bad idea but you learn loads and get lots of satisfaction.

The encoder is really nice but honestly, it would have been much cheaper and quicker to use push-buttons.

For a future build it might be nice to try to incorporate resistance and reactance measurements, but at the time it was all about not blowing up my finals!

About This Instructable




More by dr_phil:HF Antenna Analyser With Arduino and DDS ModuleCoat-hanger hook for hotelsWood pile "book end" supports from pallet
Add instructable to: