ARDUINO project

AD9850 DDS based Antenna Tuner Adjustment Aid

If you use a manual antenna tuner to match your transmitter to the antenna, not causing QRM while your making the adjustments can be an issue.. This project eliminates that problem by using a very low level signal and a very sensitive SWR bridge.

An inexpensive Arduino board is use to control a AD9850 DDS module and LCD display, while a handful of discrete parts comprise the SWR bridge. A simple LED is used as the match indicator.


It is very simple.

A preprogrammed frequency for each of the HF bands, 160 to 10 meters is selected by repetitively pushing the [ CHANGE BAND ] switch. I programmed in the various QRP calling frequencies in the CW segment of each band. You can of course change that in the Sketch by changing the frequency (freq) in the band look up table.

The operating frequency can be changed using a rotary encode with Gray code output. If the frequency changes in X2 steps, you have an encoder with quadature output.

The default tuning rate is 10 kHz, which allows for quickly moving the frequency to another part of the band. The tuning rate can be changed by pushing the [ CHANGE RATE] button. 10 Hz, 100 Hz, 1 kHz and 10 kHz rates can be selected. The active decade for tuning is indicated by the cursor underscore of the selected decade.

Note that tuning limits are enabled so you can't tune outside of the selected Ham band.

Once the desired band and frequency is selected, the [ TRANSMIT ] toggle switch is used to turn the DDS signal on and off. .

When the [ TRANSMIT ] switch is closed, the DDS is loaded with the frequency data, a 600 Hz sidetone is generated and Pin 8 is set HIGH, which can be used to control a power amplifier or switch over relay. When the [ TRANSMIT ] switch is open, it loads 0 Hz into the DDS chip, effectively turning it off. You don't want to leave it on or there will be a birdie at that frequency in your receiver.

You will of course need a coax switch ( or relay) to switch the antenna tuner between this device and your rig.

With the tuning aid connected to your tuner, adjust the tuner to make the indicator LED go out or to dim as much as possible.

Theory of operation:

The SWR bridge and indicator:

The SWR bridge is a Whetstone configuration, with the antenna in the unknown leg of the bridge. If the resistance of each leg is equal, there is no voltage difference between the center of the two legs, which indicates a match. I used 51 ohm resistors in the bridge as their close enough to 50 ohms, but if you do want an exact 50 ohm match, use 100 ohm resistors in parallel instead.

The bridge is driven by the square wave output of the AD9850, through a simple L/C low pass filter to remove most of the harmonics. With out this filter, harmonic from the square wave drive will reflect back and keep the LED from going completely out or at least get very dim. The filter starts to roll off at about 2 MHz so there is still enough harmonic energy when operating below 30 meters and the best you can do is make the LED very dim. You can still achive a 1:1 match without using the low pass filter, but the dip is much harder to see.

If the resistance of the unknown leg is not equal to the value of the other three resistors in the bridge, there is a voltage difference between the centers of each leg. This voltage is coupled to a high gain darlington amplifier using a step up transformer. R1 and R2 supply just enough voltage bias to the base of Q1 to improve the sensitivity without actually turning it on. A LED in series with Q2 which provides a visual indication of the amount of current flowing into the amplifier. The greater the imbalance of the bridge, the greater the voltage inputted to the amplifier and the greater the current in the collector path. The is only one potential problem with this method. If you live near a AM broadcast station you might pick up enough signal to keep the LED on all the time as you won't be able to balance the bridge at that frequency.


I intially used a UNO R3 board for develpoment, but used a NANO board for the final assembly. The schematic show wiring for the NANO board. Because the AD9850 and the LED back lighting of the display use a fair amount of current, a seperate 5V regulator is used to power these devices, rather then using the 5V regulator on the NANO board, as it would likely get very hot.

There are two types of AD9850 DDS modules available from China. I used the one with the two rows of 20 header pins and looks like a large DIP IC. If you use the other flavor, just follow the hook up diagram to connect to the required pins. These DDS modules are running about $10 at the time of this writing. Pretty amazing since the AD9850 chip costs $21 if you bought it all by it's self.

The LCD is a common 2 line, 16 character display. The ones with blue back lighting are very common and inexpensive. These run about $3.

All three of these major components can be obtained inexpensively direct for China buying with ebay. It just takes a few weeks to get them. If your in more of a rush, can ship these from a US warehouse for a small price premium.

The rest of the discrete parts needed to build the SWR bridge and indicator can be obtained for the usual sources like Mouser or Jamesco. The MSP5179 transistors have a 1 GHz hft, so they still have decent gain at 28 MHz. You could sub the more common 2N3904's but it won't be as sensitive on the higher bands or may not work at all. If the LED does not light or is very dim at the higher frequencies, you don't have enough gain.

Since most of the componets are modules, I buit the project on a piece of FR4 pref board, using SIP sockets for the modules to plug into. The SIP sockets come in 40 pin strips. To cut them down to size, remove the pin one location past the number of pins you need and cut that slot with an hobby knife of razor saw. I use #28 heat stripable magnet wire to make all the interconnections. That way I don't need to strip insulated wire and makes for a neat looking wiring job.

The SWR bridge and amplifier could have been wired up right on the perf board, but I built it on a small scrap of copper clad board, dead bug style, which is a bit quicker and easier way to build it.

For final packaging, I recycled an old Radio Shack enclosure. Since the front panel of this box already had a number of holes in it (all in the wrong places, except for the display window, which was cut for a smaller display) I had to cover the old holes up somehow. I did this by simply putting down some double sided tape on the panel and then laid down a piece of black contruction paper and trimmed it to fit. This is then covered with a thin piece of clear Polycarbonate, which is easy to work with.

Programming the Arduino and the program "Sketch":

Hopefully your already familiar with the Arduino. If not a simple web search will come up with linksto the official Arduino web site with all the info you need.

The Sketch which you need is located in this zip file:

Once the Sketch has been downloaded into the Arduino board and everything is wired up, you will have to make one adjustment on the DDS module board. With the "unknown" leg of the bridge open, adjust the little trimmer resistor on the 9850 module until the SWR indicator LED comes on brightly. This trimmer sets the duty cycle of the square wave output and you want it more or less centered at 50%, but without a 'Scope just set it in about the middle of the adjustment range which makes the SWR LED stay on.

Parting thoughts:

This is my first Arduino "Sketch" and I'm pretty amazed I was able get it to work. I did take some late nights just to figure out how to do some simple things. I normally program directly in assembly which makes a whole lot more sense to me and is vasty more memory efficient and faster.

Although I designed this for the SWR bridge application, it can also be used as a signal generator, a transmitter VFO or even the VFO for a transceiver, although some modifications to the Sketch will be required for other applications.

For use as a signal generator with full tuning range, comment out the band limit tests in the DDSincerment() and DDSdecerment() routines and enable the max freq and min freq limits instead.

For a transceiver, you can add or subtract an offset to the base frequency before loading the DDS chip.

Anyway, I hope someone finds this project useful.

73, Steve KD1JV

Arduino to LCD/DDS connection table.

Arduino pin LCD pin DDS pin
2 D7
3 D6
4 D5
5 D4
6 E
7 RS
10 FU_UD
13 W_CLK

__Inside front panel showing the old holes which needed to be covererd up.

_-board assembly mounted to the front panel.

....Front and back views of board assembly. I should have spaced the encoder higher off the main board so the knob would have stuck out the front panel a bit farther...