To automatically tune a Magnetic Loop Antenna

PowerPoint style Presentation, Building Instructions and Firmware source code available at the bottom of this Webpage discussion group: loopController

A Magnetic Loop Antenna is basically just a resonant circuit using an oversized inductor and an adjustable capacitor.  If the inductor has a circumference of much less than, say, 1/10th of a wavelength, then the efficiency of the antenna will suffer.  If the inductor circumference approaches ¼ of a wavelength or more then the antenna would more accurately be characterized as an electrical loop antenna, with characteristics similar to those of a dipole. 

An efficient Magnetic Loop Antenna has a very high Q.  In other words, the antenna has a very narrow bandwidth, if you move by a few kHz then you need to retune the antenna.  This quickly becomes very frustrating, especially if you, like me, like to tune up and down the bands to see what is going on.

Enter the Magnetic Loop Controller:

Figure 1  (click on image to enlarge)

Figure 2  (click on image to enlarge)

The Magnetic Loop Controller tunes the antenna in real time, tracking every movement of the Transceiver VFO. In other words, unlike other magnetic transmitting loop antenna controllers, there is no need to transmit and re-tune for minimum SWR every time the frequency has been changed.

The controller receives frequency information from the Transceiver and calculates an appropriate Capacitor position accordingly. Initial programming of the Controller is an easy Tune and Store operation, one position per 50 or 100 kHz. 200 memory presets can be stored, but in practice much fewer are needed. The Controller tunes in a linear fashion between the stored presets.

The Controller can communicate with the following Radios:

  • Elecraft K3 / KX3
  • ICOM CI-V (all relatively recent ICOM HF transceivers)
  • Kenwood TS-440, TS-450
  • Kenwood TS-870 (not tested yet)
  • Kenwood TS-480, TS-590, TS-2000
  • Yaesu FT-100, FT-100D
  • Yaesu FT747GX (not tested yet)
  • Yaesu FT-817, FT-847, FT-857, FT-897
  • Yaesu FT-920 (not tested yet)
  • Yaesu FT-990
  • Yaesu FT-1000MP (not tested yet)
  • Yaesu FT-1000MP MkV
  • Yaesu FT-450, FT-950, FTdx1200, FT-2000, FT-2000D, FTdx3000, FTdx5000...
  • TenTec Argo V, Argo VI, Eagle, Omni VII... (these have not been tested yet)
  • Pseudo VFO (used with non-serial enabled radios)

A serial port <==>USB port passthrough mode can be enabled for computer control of the transceiver, passing data through the Controller. 

A typical Stepper Motor gives a resolution of 1.8 degrees per step. Each step can be divided into 8 microsteps, hence a 1.8 deg/step motor will give 1600 distinct positions per each full revolution. In other words, the Controller can keep track of a frequency/position pair with an accuracy of 1600th of a revolution, over a range of hundreds of revolutions. This is more than sufficient resolution to tune a multi turn vacuum variable capacitor. If you are using a butterfly or similar air variable capacitor, then you will probably need at least 5 to 1 gear reduction for to get sufficient resolution of the capacitor positioning.

Prototyping fixture:

Figure 3  (click on image to enlarge) 

The stepper controller circuit used in this project is capable of driving up to 1.5A per phase.  Microstepping is achieved by providing current to both phases at the same time, but in different proportions for each microstep.  In other words, the Stepper Motor controller circuit provides accurate current limitation.  This current limitation feature can also be used to adjust for the minimum torque necessary to reliably turn the capacitor - thus ensuring no damage if we accidentally try to go beyond the end stops.

Stepper Motors:

I have used several types of Nema-17 format two-phase Stepper Motors, here are a couple that work well with the controller:

  • 30 ohms per phase, each phase specified at 0.4A max.  These Stepper Motors cost approximately $20 including shipping if purchased on eBay. Use the search criteria: “Nema 17 Stepper 2800g/cm 0.4A” or similar.  Having built 3 magnetic loop antennas thus far, using three different vacuum variable capacitors, generally I have found that when using this stepper motor, only about 250mA per phase is required to reliably turn the capacitors (see antenna descriptions further down the page).  By limiting the torque of the motor to the bare minimum needed, there is no need for end stop switches.  This stepper motor will not go very fast before losing torque, 100 RPM is probably the highest usable speed.
  • I recently put a new Nema 17 format Stepper Motor through some tests, this one has a specified Holding Torque of 4.2kg/cm, considerably stronger than the first choice above.  Having a much lower phase coil impedance, it is also capable of quite high speeds before losing torque.  This motor does over 300 RPM quite nicely when adjusted for a current of 1.4A.  On eBay, use the search criteria: “Nema 17 1.7A 2 phase 4-wire”

Here is a picture of my most recent capacitor fixture.  A Jennings 5 – 465 pF vacuum variable specified at 5kV, mounted on a plexiglas base.  The sprocket gear attached to the capacitor shaft is not used, the capacitor came with it.

Figure 4  (click on image to enlarge)


Figure 5  (click on image to enlarge)

If end stop switches will not be used, then there is no need for D2, D3, R25, R26, C19-C22 and T3.

U1 is a Teensy 3.1 or Teensy 3.2, an Arduino near-clone (32 bit ARM Cortex M4 processor running at 96 MHz) available for instance at or

Figure 6  (click on image to enlarge)

Note: Normally the Teensy 3.1/3.2 is power fed via the USB port.  However in this project it is powered from a LM7805 voltage regulator (U4).  In order to be able to connect the USB port to a Computer we need to disconnect the voltage feed from the USB cable.  This is done by cutting a narrow trace separating V_in from V_usb, see the picture above.

U2 and U3 are the stepper motor controllers, Allegro A4975, available at (Digikey 620-1435-5-ND).

(A more recent version, described in the "BOM and Building Instructions" at the bottom of the webpage, utilizes the DRV8825 or A4988 stepper motor controllers instead of the A4975).

I use a 128 ppr optical encoder (attached to the big black knob on the front plate, see Figure 1), a 64 ppr optical encoder with a builtin pushbutton (Digikey EM14A0D-C24-L064S-ND) for the Menu/Enact switch (SW1) may also be a good choice.

The three common mode chokes are necessary to squash any RF being picked up from the antenna by the stepper motor control cable, potentially locking up the controller.  Conversely they also ensure that the controller is not radiating RFI into the antenna.  The chokes are 2x 51 uH common mode type, surface mount (in the prototype they are mounted on the underside of the printed circuit board).  One could also use FT37-43 ferrite cores, 2x 10 or more turns, bifilar wound.

RV1 is used to adjust the contrast of the LCD. 

RV2 is used to adjust the torque of the Stepper Motor.  Together with RV2, R2 and R3 at 0.22 ohms and R6 at 2200 ohms provide for current adjustment between 0 and 1.4A, enabling use of stepper motors specified at up to 2A per phase.

Backplane connections, Stepper motor connections and Radio connections:

Figure 7  (click on image to enlarge)

The top diagram in Figure 7 above, shows one possible way of wiring the Controller to a Stepper Motor (and end stop switches if used) through a DB9 connector on the Controller back plane.

The middle diagram shows the power connector.  

The bottom diagrams in Figure 7 show the serial connection to the backplane and several serial cable versions for the various types of Radios that the Controller can communicate with.  When wiring for Kenwood or Yaesu RS232, don't forget to connect pins 7 and 8 together on the RS232 connector.  

Note that the Controller does not output proper RS232 levels, however this should not cause any problems unless the serial cable is very long.  If proper RS232 levels are desired, then the simplest way is to use a MAX232 converter circuit. There is no need to build one, these circuits can be purchased for approx three dollars on eBay.

The USB port is used to upload firmware updates.  It is also used as a second serial port providing for functions such as storing and recalling setup data.  The USB port can also be configured for Serial port <==>USB port passthrough mode, enabling computer control of the transceiver.

The original printed circuit board for the Controller, as shown in Figure 2 is a single sided home brew affair.  The red traces on the X-ray view below show wire jumpers. Please refer to the bottom of this webpage to download PDF files fit for using as an etch mask.  Two files, one normal - the other mirrored.

Figure 8  (click on image to enlarge)

Due to demand I finally broke down and designed a proper two sided PCB and had a bunch of those fabricated :)  

The below picture shows the PCB, front and back:

Figure 9  (click on image to enlarge)

I have these PCBs available for USD $20 each, please contact me by email: lofturj -at- gmail -dot- com
(The most recent version of the PCBs (rev3) utilizes the DRV8825 or A4988 stepper motor drivers instead of the A4975 as the boards depicted above)
I will not be providing kits or sourcing components for the controller, however, at the bottom of this webpage there is a "Building Instructions and Bill of Materials (BOM)" document, to assist with pulling the components together for the project.

Here is a picture of an assembled PCB undergoing test:

Figure 10  (click on image to enlarge)

Option: Automatic tuning for best SWR

Other similar controller projects have focused on SWR based auto tuning. This requires "Transmit to Tune" every time the frequency is changed. This Controller, by reading the frequency information from the Transceiver - and by having the antenna characteristics stored in memory - will retune the antenna automatically without any need to Transmit.
In other words - not really any need for SWR based auto-tuning.

Having said that, the latest version of the Controller can now also do SWR based auto-tuning. This simplifies the initial calibration/store of frequency+position memories and is useful for one-click recalibration. It also facilitates using this controller with Transceivers that cannot provide frequency information. This Option also implements a dual-bargraph Power / SWR meter, similar to the one described here (normally not implementing the AD8307 log amp circuitry, however this option is also supported in the firmware).

Actually it is quite amazing to see the SWR autotune in action, it is blazing fast, takes a couple of seconds or less. Full description of the SWR Autotune function can be found in the file AutomaticMagneticLoopController_presentation_XXXXXX.pdf, at the bottom of this webpage.

Here are a couple of pictures of the Controller, with the Power/SWR meter and SWR Autotune option added:

Figure 11  (click on image to enlarge)

Figure 12  (click on image to enlarge)

Firmware for the Magnetic Loop Controller

The firmware for the Controller is written in more or less straight C using the Arduino Environment, with Teensy Extensions available here:

The firmware is is free software, released under the GNU General Public License.

The complete source code and 3 pre-compiled HEX files are available at the bottom of this webpage, see

Note that certain firmware features can be tailored through modification of parameters in the ML.h file included in the source code for the firmware.

The firmware source code is commented throughout and should hopefully be relatively easy to understand/modify/expand/adapt by those who wish to contribute to this project.

Firmware functionality and features

The controller can be described as a manager of memorized capacitor positions, using frequency information from the Radio Transceiver to calculate an appropriate position between any two memorized frequency/positions.  

Each memory contains a frequency/position pair, the frequency is stored with a resolution of 1Hz, the position is stored with a resolution of 1600 positions per full revolution, within a range of up to thousands of revolutions (just in case you happen to be in possession of a 1000 turn capacitor :-)  200 frequency/position pairs can be memorized, but you won't need to store more than 10 - 15.

The controller uses a serial connection to the Radio (TTL or RS232 levels) to enquire once every second which frequency the Radio is tuned to.

The USB port enumerates as a second, virtual Serial port.  If set up for serial<==>USB passthrough mode, then this port can be used for Computer control of the Radio.  If not in passthrough mode then several USB commands are available.  See list of USB commands further down on the page.

A rotary encoder (acts like a VFO knob) and Up/Down switches can be used to initially tune the capacitor when storing the presets or when doing any after the fact adjustments.  The rotary encoder/push switch combo is also used to navigate a menu of functions, such as storing/managing/deleting memory positions and Setup options; such as the selection of Radio serial protocol and levels, backlash/slop compensation on/off, number of microsteps, etc...

At compile time, End Stop functionality can be set up in three ways, see configuration in file ML.h:

  1. Soft End Stops.  Vacuum variable, no end-stop switches.  In this case one has to take care that the stepper motor is just powerful enough to turn the capacitor but not excessively more so. The Up/Down switches will not work beyond the lowest/highest stored frequency/position and the Radio cannot tune the capacitor beyond the lowest/highest stored position.  To go beyond an already "proven" range, one needs to turn the capacitor by turning the Encoder, and store new frequency/positions to extend the range.  The downside of this method is that it only works if there is Frequency input available from the radio ("smart" mode).
  2. Hard End Stops.  Vacuum variable, end-stop switchces.  All as 1) except no software "intelligence" to inhibit use of Up/Down buttons or tuning beyond an already "proven range".  Can be used in "smart" mode with frequency input from radio, or "dumb" mode with no frequency input.
  3. No End Stops.  Butterfly capacitor.  Otherwise same as 2).

 In all my own loop builds so far, I use method 1, soft end stops.

Power/SWR Meter + SWR Autotune can be enabled by setting #define PSWR_AUTOTUNE as 1 in ML.h.  In case you will be implementing this option, you may also need to tailor other #define[s] to the VSWR bridge that you are using.  See #define[s] BRIDGE_COUPLING and VALUE_R15, VALUE_R17. 

Configuration Menus

(ToDo:  Need to Update the Config Menu diagram below.  Several new menu items have been added since Firmware version 2.07, including:
  • ICOM CI-V Address select
  • Serial Port Passthrough mode
  • SWR Tune Threshold level
  • Power/SWR Meter Scales
  • Power/SWR Meter PEP period
  • Debug Serial on LCD
  • New Transceivers - Yaesu FT-747GX, Yaesu FT-990, Yaesu FT-1000MP, Yaesu FT-1000MPmkV

Operation of the Magnetic Loop Controller, including Menu functions:

The below description assumes that the Soft End Stop mode is used.  If not Soft End Stops, then the Up/Down switches will always be active unless End Stop switches have been closed.

Tune using Rotary Encoder or Up/Down switches.  In Soft End Stop mode the Up/Down switches will not  work unless within an already configured range of saved memory positions.

Long push of the Menu/Enact Switch enters a Menu of 12 to 17 choices (depending on options selection), selectable by turning the Rotary Encoder.

  1. Store current frequency/position pair (up to 200 memories available)
  2. Manage stored frequency/position pairs.  Here you can scroll between previously stored memories and overwrite any memory of choice.  The memories are sorted in an ascending order by frequency.
  3. Delete a stored frequency/position pair.  Scroll to the one you want to delete and push the Enact Switch, or back out.
  4. Clear all.  Two sub-menu options: Yes/No.
  5. Stepper settings, 3 submenu choices: Stepper Rate, Variable Rate and Microstep Resolution.
  6. Stepper Backlash Compensation: On or Off.
  7. Transceiver.  Select the appropriate serial communication protocol for your Transceiver.
  8. ICOM CI-V Address.  Only used with ICOM transceivers
  9. Serial Port Mode.  Select TTL mode or RS232 mode.
  10. Serial Data rate, 1200 - 115200 b/s.
  11. Debug Serial.  See the communications between Radio and Controller on the LCD.  Not very useful, better to use the $trxdebug command through the USB serial connection.
  12. Not really a mentionable menu choice - return from menu :)
These additional Menu items are available if the Power Meter and SWR Autotune option is implemented:
  1. SWR Tune threshold.  Select maximum SWR for a successful SWR tune.
  2. Power Meter scale selection.  See Power/SWR meter pages.
  3. Power Meter Calibrate. Transmit a known power level, adjust readout with Encoder and Push.  Now your meter is calibrated.
  4. Select 1, 2.5 or 5 second PEP period for Power Meter readout.
  5. If AD8307 option selected, then there is a menu item for Power Meter Awake Sense.

Memories can be stored in any order, they will be automatically sorted from the lowest to the highest.  Once you have stored a couple or more memories, then you have a working range within which the capacitor will tune automatically according to the frequency data from the Radio.  If you tune the Radio outside of the lowest/highest memory, then the Controller will not attempt to tune.

You can always fine tune a position by turning the encoder (or Up/Down switches).  The fine tune offset (delta) will continue to be valid when the frequency input changes, in other words the new auto-tuned position will maintain the same offset.  If you want to enter the offset permanently against all the stored memories, then short push of the Enact Switch.

For a detailed description of how to calibrate the controller, please refer to one of the PDF documents available at the bottom of this webpage.


Working with the Backlash or Slop Compensation Function:

When adjusting the capacitor with a sub-degree precision, any backlash or slop in the coupling mechanism will cause huge inaccuracies depending on whether the capacitor is being tuned in an upward or a downward direction.  To battle this, a backlash compensation function can be enabled.

I would recommend using the backlash compensation function for improved positioning reliability, without it the positioning accuracy of the capacitor will be rather poor.  The backlash function works in the following manner:

When the controller receives frequency information from the Radio which is lower than the most recent previous frequency information, then it does:

  1. Tune down to the new position
  2. Tune further down by a set angle and then finally tune back up by the same angle.  The angle can be adjusted by the user, between 0 and 400 steps.

A harmless but weird looking side effect of the backlash compensation function is that whenever you tune the VFO down in a slow manner the backlash will be triggered every time new frequency information is received from the Radio.  This looks a bit disturbing, but it actually works very well.

With the backlash compensation function enabled and when using the Down Switch to fine tune for resonance, this is best done with short pulsing of the Switch.


Variable Capacitor Tuning Rate:

To shorten the time it takes to tune, especially when switching between frequency bands, the Controller implements a variable capacitor tuning rate based on the distance of travel.

The maximum rate is set at four times the normal rate, but can be defined differently through the Menu Function "5-Stepper Settings".  More detailed description is given in one of the PDF files available at the bottom of this webpage.

Suggested first test:

The Controller is on and indicating the Radio Transceiver frequency on its LCD.  

  1. Move the Stepper to some specific and visibly recognizable position by turning the Encoder.  
  2. Extended push of the Enact Switch will get into the settings menu, the "New Position"  being the first indicated choice on the LCD Menu (if not, then turn the Encoder to select).  
  3. Short push of the Enact Switch, and the position is stored.  
  4. Now tune the Transceiver to another frequency, say 100 kHz up.  
  5. Turn the Encoder to make the Stepper turn by, say, two revolutions clockwise.  
  6. Store this position. 

Now when you turn the transceiver VFO down by 25 kHz, the Stepper will go counterclockwise by half a turn... etc...


Some notes about the LCD:

The uppermost line, “Radio:”  indicates the frequency information received from the Radio.

The second line “Tuned:”  indicates the calculated frequency of the closest matching stepper motor position.  The resolution you see with the "Tuned frequency"  matches the stepper motor tuning steps.  1600 steps per full revolution.  If you are seeing 250 Hz jumps per step, then a full revolution is 1600 * 250 Hz = 400 kHz.  To put this into perspective, with my 24 foot loop, using a 16 turn 5 - 465pF capacitor;  between 3.5 and 3.6 MHz I am seeing a step resolution of 157 Hz.

The third line shows the calculated position based on the frequency received from the Radio and the actual current position.  These may differ if the Encoder or Up/Down switches have been used to fine tune resonance.

The fourth line shows the active range (between which two stored frequency/position pairs we are) and whether the Stepper Motor is active or powered down.  The stepper motor automatically turns off 5 seconds after every use.


USB Commands:

If the USB port on the Controller is connected to a PC then it enumerates as a serial (COM) port. This serial port has two selectable modes (Menu Item 8, Serial Port Mode):
  • Normal mode makes a number of USB commands available  
  • Passthrough mode can be used for computer control of the radio.
Below is an example of the commands available when not in Passthrough mode (firmware version 4.03).  The list of commands keeps growing with new versions of the firmware.  

The USB commands are case insensitive and can be terminated with <cr> <lf> or ';' - for example:
to get the below list.

Available USB commands:

$frqget            Retrieve running frequency.

$frqset mmkkkhhh   Update running frequency (equivalent to Transceiver serial input).
                   Frequency is entered in Hz, e.g. 14100000 is 14.1 MHz.

$memoryget         Retrieve all memory presets.
                   Format of retrieved values is:
                      A FFFFFFFF PPPPPPP
                      A is memory position
                      F is frequency in Hz
                      P is stepper motor position (relative value)
                      0 14000000 1000000
                      1 14100000 1000100
                      2 14200000 1000200

                   Enter new memory preset.
                   Format is same as in $memoryget, however only one preset
                   is entered at a time.  The Presets MUST be entered with the
                   Frequency memories in an ascending order and the highest
                   preset memory entered MUST not be higher than the maximum
                   number of presets available.

$version           Report version and date of firmware.

Commands for managing SWR Tuning over USB:

$swrtune           Request an SWR Tune.
$swrtuneup         Request an SWR Up Tune.
$swrtunedown       Request an SWR Down Tune.
$swrtunestatus     Request result of latest SWR Tune command.
                   Results are:  SWR Tune in progress
                                 SWR Tune unsuccessful
                                 SWR Tune unsuccessful, no power
                                 SWR Tune success

$toggleautotune    Toggle SWR Autotune On or Off
$recalibrate       Position Recalibrate

Power and SWR Meter related commands (if enabled at compile time):

$ppoll             Poll for one single USB serial report, inst power (unformatted).
$pinst             Poll for one single USB serial report, inst power (human readable).
$ppk               Poll for one single USB serial report, 100ms peak power (human readable).
$ppep              Poll for one single USB serial report, pep power (human readable).
$plong             Poll for one single USB serial report, actual power (inst, pep and avg)
                   as well as fwd power, reflected power and SWR (long form).

$pcont             USB serial reporting in a continuous mode, 10 times per second.

                   $ppoll, $pinst, $ppk, $ppep or $plong entered after $pcont will
                   switch back to single shot mode.

$sleeppwrset x     Power above the level defined here will turn the display into meter mode.
                   x = 0.001, 0.01, 0.1, 1 or 10 mW (milliWatts).
$sleeppwrget       Return current value.

$tuneset x         x = 1.1 to 4.0. SWR tune threshold.
$tuneget           Return current value.

$pepperiodget x    x = 1, 2.5 or 5 seconds.  PEP sampling period.
$pepperiodset      Return current value.

$calset cal1 AD1-1 AD2-1 cal2 AD1-2 AD2-2
                   Write new calibration values to the meter.
$calget            Retrieve calibration values.

                   Format of calibration values is:
                   cal1 AD1-1 AD2-1 cal2 AD1-2 AD2-2
                   cal1 and cal2 are calibration setpoints 1 and 2 in 10x dBm
                   ADx-1 and ADx-2 are the corresponding AD values for
                   AD1 (forward direction) and AD2 (reverse direction).
                      normally the AD1 and AD2 values for each setpoint would be the same,
                      however by doing reverse calibration through the Controller Menu functions
                      it is possible to balance any small differences there might be between the
                      two AD8307 outputs.
                      Note that I have not found this to be necessary at all :)

$scaleget          Retrieve user definable scale ranges.
$scaleset          Write new  scale ranges.

                   The scale ranges are user definable, up to 3 ranges per decade,
                   e.g. 6, 12 and 24 gives:
                   ... 6mW, 12mW, 24mW, 60mW ... 1.2W, 2.4W, 6W 12W 24W 60W 120W ...
                   If all three values set as "2", then
                   ... 2W, 20W, 200W ...
                   The third and largest value has to be less than ten times the first value.

All the below debug assist commands are off by default:

$debug             This one may provide unexpected results !!! :-)

$swrdebug          Toggle (On/Off) Print/Debug the last 32 SWR measurements found if SWR Tune success.

$trxdebug          Toggle (On/Off) Debug Radio serial communications, ASCII - send to USB.

$hexdebug          same as above, HEX.

$addebug           read raw AD input - also works with $pcont, same as $ppoll etc...

These two are useful to establish whether serial communicaitons in the direction from the Controller
                     to Transceiver are working:
$settx             Command Transceiver into Transmit Mode.
$setrx             Command Transceiver into Receive Mode.

Select active Transceiver Profile, may be useful for remote operation:
$profileset x      Select active Transceiver Setup Profile, where x is 1 to 4.
$profileget        Retrieve active Transceiver Setup Profile.

$memoryclear       clear all frequency/position memories, same as Menu command (4).
$memorywipe        full EEPROM wipe - clar all frq/pos memories and all settings to default.

$help              Display the above instructions.


At the bottom of this page there is a zip file containing a couple of very simple Windows command line scripts (work under cmd.exe) that can be used to talk to the Controller: 
  • 'readmagloopmemories' is used to back up all frequency/position settings from the Controller.  The settings are backed up in a file with the name 'magloopmemories.txt.
  • 'writemagloopmemories' is to restore the frequency/position settings from file into the Controller.  Make sure to delete all frq/pos data in the Controller before the restore, otherwise you may end up with conflicting frq/pos settings.  
When run, both scripts start by listing all known COM ports.  Enter the COM port that corresponds to the Controller, e.g. 'COM20'
The backup/restore functions will not work if Passthrough mode is selected.

Youtube Video of the Controller:

Here is link to a six and a half minute Youtube video of the Magnetic Loop Controller.

The first 50 seconds show 13.5 MHz and 29.999 MHz being peaked for maximum noise and stored as the outermost positions.  This involves a lot of hand cranking the Encoder.

Minute 0:50 - 1:40 shows 3 positions being SWR Autotuned and stored in the 20m band.

Minute 1:40 - 2:00 shows 18.069 MHz failing an Auto SWR tune (default is hunt mode - tuning around a center point), and then being successfully Autotuned when doing an Up-Tune.

Minute 2:00 - 4:25 shows the rest of the autotune and store process, storing positions in the 17, 15, 12 and 10m bands.

Minute 4:25 - 6:00 shows the core function of the Controller, automatically tracking the Transceiver without any need to tune for minimum SWR.
Here is a demo of switching bands and moving the VFO to various frequencies and transmitting, always with good SWR (ok, the antenna has rather poor SWR on 15m, but this has nothing to do with the Controller though :)

Minute 6:00 - 6:20 shows the antenna tuning from 20m to 15m, and then back.

Minute 6:25 to end shows 2x SWR Autotune.

Yes - I am running 200W into the antenna - not very healthy I'm sure, hanging on a book case only 3 meters away from me.  However the Autotune commands the transceiver to output only approx 3.5W


To build a 24 foot Magnetic Loop:

The Capacitor fixture (see Figure 4, above) was built to fit into a 3 inch PVC tube which also doubles as a mast.  As seen on some of the pictures further below, the PVC tube was spray painted black for aesthetics.
Figure 13  (click on image to enlarge)

The connector fixture.  The loop feed is done with a hairpin/gamma match.  See my Magnetic Loop Antenna Exercises webpage for a picture of the feed :
Figure 14  (click on image to enlarge)

Ready to be assembled:
Figure 15  (click on image to enlarge)

Figure 16  (click on image to enlarge)

A 12 foot loop and the new 24 foot loop side by side.  This is of course a bit too close for comfort, there is considerable interaction between the two antennas.  To be moved apart later :)
Figure 17  (click on image to enlarge)

The new 24 foot loop tunes from below 3.5 MHz and up beyond 14.350 MHz, which was a bit of a surprise - this indicates that the minimum capacitor value actually goes down below 2.5 pF.  Of course at 14 MHz (20m band), the circumference of the loop being 1/3rd of a wavelength, the antenna is more akin to a shortened Quad loop.  

At 3.5 and 7 MHz having the antenna mounted on a Rotator is very efficient to battle QRN.  The noise floor has been observed to go down by up to 3 S units by rotating the loop.

Back to main page

Page last updated:
2020-06-21 Firmware version 4.10. Maintenance update to accomodate changes in HardwareSerial and ADC library.
2019-06-01 Firmware version 4.09. Bugfix for DRV8825 / A4988 stepper motor driver option.  Had glitches when switching between full and fractional step modes.  Also added a new "BOM and Building Instructions" for Rev3 / Rev4 printed circuit boards, which utilize the DRV8825 or A4988 Stepper Drivers.
2017-05-14 Firmware version 4.08. Update to stay compatible with latest version of Arduino/Teensyduino.  Added two new transceivers, Yaesu FT920 and Kenwood TS870 (neither has been tested yet)
2017-01-21 Firmware version 4.05. Bugfix: Some displays showed garble when version 4.04,  Endstop Option 2 had bugged logic around upper endstop.  Added SWR Alarm output on pin/pad 33. Changed Backlash Compensation Select function to Backlash Compensation Adjust with a range of 0 to 400 steps. Minor updates to BOM and Building Instructions file in line with Backlash Comp functionality change.
2016-11-22 Firmware version 4.04. Pushbutton function rewritten, now no false readings. Kenwood TS2000 "TX;" issue addressed.  Improvement for endstop features 2 and 3.  Switch-in/switch-out capacitor feature improvement.
2016-09-03 Firmware version 4.03. USB commands are now case insensitive.  Also, ';' added as a terminator for USB commands.
2016-09-03 Firmware version 4.02. Pushbutton debounce improvement, Added USB commands for remote tune, Screensaver disable feature added and further LCD handling improvements. Some bug fixes.
2016-08-16 Firmware version 4.01. Improved handling of certain OLED displays.
2016-07-30 Firmware version 4.00. Main additions: Triple Antenna change-over feature, Transceiver Profiles and tune power level management, Yaesu FT-1000 Mk-V, Kenwood TS-440/450
2016-06-01 Firmware version 3.07.  Added Yaesu FT-990 functionality.  Added a couple of USB commands.  A number of small bug fixes.
2016-05-06 Firmware version 3.06.  More Kenwood / Flex bug fixes. Now confirmed to work OK with Kenwood TS-480/590/2000 and Flex 5000/6000 series with DDUtil 
2016-05-01 Firmware version 3.05.  Kenwood / Flex bug fixes.
2016-04-23 Updated Operation Instructions and Notes with setup instructions for Flex Radios, and explanation of ICOM and Elecraft Auto vs. Poll modes.
2016-04-09 Updated "BOM and Building Instructions".  A detailed description of the dual antenna changeover feature was added.
2016-04-08 Firmware version 3.04.  ICOM bug fixes.  Updated Operation Instructions and Notes.
2016-03-25 Updated "BOM and Building Instructions" with some minor improvements.
2016-03-19 Firmware version 3.03  Added Yaesu FT-990,Yaesu FT-1000MP, Yaesu FT-1000MPmkV. Pseudo VFO bug fix.
2016-02-07 Firmware version 3.02. ICOM CI-V protocol bug fix.
2016-01-17 Firmware version 3.01. Various bug fixes. Yaesu FT747 added.  Improved Passthru serial mode for Yaesu FT100/FT8x7
2015-06-14 Firmware version 3.00. Open-drain style TXD when connected to ICOM CI-V.  Dual Antenna control capability added.
2015-05-23 Firmware version 2.08. Bug fixes.
2015-04-30 Firmware version 2.07. A couple of bug fixes.
2015-04-26 Firmware version 2.06. A number of new features and a couple of bug fixes.
2015-02-28 Firmware version 2.04. Serial port<=>USB port passthrough mode added to enable Rig control by Computer. 
2015-02-13 Firmware version 2.03. A new Transceiver type has been added: Transceiver type 11, Pseudo-VFO, providing an alternate mode of entering frequency information if Radio is not serial connected (uses new pushbutton SW6)
2015-02-08 Added a link to a Youtube Video showing the Controller in action.
2015-02-06 Firmware update. Version 2.02. Bugfix, Recover position when Radio Information back on line after Off-liine operation.
2015-02-02 Firmware update. Version 2.01, More logical soft endstop behaviour, improved pushbutton scan etc...
2015-01-28 Updates to BOM and Building instructions.
2015-01-24 Firmware update, version 2.00 - Includes a number of improvements and the new SWR Autotune functionality
2015-01-24 Added description of SWR Autotune Option 
2015-01-18 Minor modification of LCD display for more logical indication of Position

First publication of page 2014-04-30

Web Site Hit Counter

To download any of the files below, please click on the down arrow ďat the right hand side of the file.

Loftur Jónasson,
Mar 1, 2015, 11:44 AM
Loftur Jónasson,
Jun 1, 2016, 2:43 PM
Loftur Jónasson,
Jun 1, 2019, 8:43 AM
Loftur Jónasson,
Jun 21, 2020, 2:27 PM
Loftur Jónasson,
Aug 2, 2014, 12:05 PM
Loftur Jónasson,
Jan 28, 2015, 6:30 PM
Loftur Jónasson,
Aug 2, 2014, 12:04 PM
Loftur Jónasson,
May 1, 2014, 8:53 AM
Loftur Jónasson,
May 1, 2014, 8:53 AM
Loftur Jónasson,
May 10, 2014, 7:35 PM