Here is a description of the automatic L-Network auto tuner I built for my uBitx (It can be made to fit other radios).
My uBitx is targeted as PM/field portable operations so space and weight are prime considerations.
ATU Design objective:
1. Fits in the limited space of my Jameco case (Jaycar case here in Oz), on my second level board.
2. Tunes long wire and EFHW (worst case with the help of a 9:1 balun).
4. Works 80m to 10M.
3. Memory tune to save power and time.
4. Negligible power consumption when not tuning.
5. Must integrate with the extra (planned) features like SWR measurements, Finals' current limiting, and power supply monitoring, and more.
Therefore I settled on a second Arduino and an L-Tuner network despite some limitations when compared to T or Z-match networks that seem to require three adjustable elements for 80 to 10M coverage.
The 2nd Arduino has the following advantages: at AU$6 landed in Australia it is much cheaper than extra I2C analogue and digital I/Os, plus it gives me another 30K of programming space and 1K of EEPROM for memory tuning, can be put in slow power mode when not tuning as I use the Mini Pro version (no USB port), and communicates via the I2C bus with the Raduino.
First I needed an SWR meter and the Don Cantrell (ND6T) circuit was a perfect match. I made it as a daughter board that plugs directly into the connector after the LPFs. (http://bitxhacks.blogspot.com.au/2017/03/nd6ts-forward-and-reverse-power-meter.html). Thank you Don for a reliable solution.
Browsing the internet and looking at previous solutions like the SLT+ and the Altoid Long Wire Tuner, I settled on 6 inductance values.
Switching the inductance could be done with relays, but that means 5 bi-stable relays and ten digital outputs. Same issue with the variable capacitors.
I decided to use an RC servo controlling a mylar variable capacitor and another one controlling the rotary switch for the coils.
The first challenge was to have a way of switching the capacitor from the antenna side to the TRx side. One option was a bi-stable relay, or, the solution I settled on, was to use a double wafer rotary switch with 12 positions and dedicated 6 of them to the capacitor on the input and 6 on the output.
Therefore I need two digital ouputs for the PWM generation for the servos and one for cutting the power off to the servos (common positive supply).
My main concern was the possibility of the servos not handling RFI. But in the end they were easy to tame.
The next challenge was to find a servo that could do 360 degree rotation (or at least 345) to cover all 12 contacts on the rotary switch.
There a quite a few servos doing 180 degrees but I could not find one that did 360 degrees. Please note there are many so-called "360 degrees" servos available but they are "continuous rotation" servos and do not move to a position, just rotate at a certain speed, with no position feedback.
The first solution was a 2:1 gearing and a 180 degree servo. It worked but was not very reliable due to the extra backlash even with a larger servo to compensate for the power loss in the gears.
Luckily there are now "Sail Winch Servos" available in 1, 1.5, 2 and more turns, but still with position control. At the end I used the 1 turn version quite successfully a "GWS S125 1Turn 2BB Sail Winch Servo".
The following and probably key challenge I faced was to ensure that the servo would settle pretty much centred on the rotary switch contacts. The angular resolution of the servo is sufficient for this but I needed repeatability. Otherwise I would destroy the contacts through arcing.
Since I control the supply of RF power to the antenna I can cut the power off when I change contacts on the rotary switch and the solution was to use a digital input on the Arduino to measure when the contacts are established or not, and thereby form a map of the location of the contacts relative to the angular position of the servo. Since when the contact is established I get a short to ground through the coils. A pair of 1MOhms resistors to feed the 5V and connect to the Arduino pin, works very well.
I build that contact map once at first tune and use it thereafter until power down. It may be possible to store is in EEPROM but I haven't checked it's stability over time and temperature.
When I move the servo from one contact to the next I can again check at what angle the contact is established or lost to compensate exactly for the backlash. A bit of software and it works quite reliably.
I shielded the ATU with PCB plates to prevent stray RF, but apart from the capacitor servo which occasionally displayed small jitters, the rest did not really need it and worked quite well without.
So the main components are: Arduino mini pro or nano, variable capacitor and micro servo, rotary switch 12 positions with two wafers (it could be one wafer and less positions and a bi-stable relay) and a "one turn sail servo", a P-Channel Mosfet for servo supply, a 5V regulator dedicated to the servos' power, the components for the ND6T SWR and Power bridge.
I use the following I/Os on the 2nd Arduino: 4 digital I/Os of which 2 are PWM, plus two analogue inputs, the I2C (A4/A5) lines.
So I have enough I/Os left for the other functions I want to implement.
Performance: With a 21m (69') long wire and a 10m (33') counterpoise on the ground I can tune all bands (I don't know about 60M, as we still don't have access here in Australia) with an SWR of under 2.
A full tune sequence takes 32 seconds if the matching coil is in position 12, and a memory tune is around 3 seconds. At first tune after power-up, there is an additional delay of 15 seconds for the rotary switch contact mapping.
Total parts cost is around AU$130 (US$100 approx.), but a lot cheaper in the USA and other countries I am sure and quite a few items could be in the junk box.
I will produce a schematic for the ATU and clean my code to publish the source.
Critique of the design now that is is completed:
- the winch servo adds 50g plus coupling of around 30g is a fair amount of weight, but the total built is still under 2Kg at 1.25Kg or 2.8 Pounds.
- a single bi-stable relay instead of the second wafer for switching the capacitor over may be a simpler solution, and leave more steps for the inductance.
Hope this helps,
All the best,
73, John (VK2ETA)
Pictures attached to show the following:
1. A complete view of the unit with the shields in place. Also the Android hands free headset (with modified software for push-on/push-off PTT).
2. Second Board (double sided fibreglass as a ground plane, plus sections of vero board) with the MAX9814 AGC, the SSM2167 mic compressor, the ATU circuit and Arduino.
3. The back of the unit with the ATU toroids, variable capacitor (the angling is to align it with the servo's angular range), the SWR/Power bridge. Note that I use three toroids as I tried to minimise losses and prevent high voltages since I do not short the unused turns (I am not sure if this is critical).
4. A top view of the coupling of the micro servo and mylar variable capacitor.
5. A top view of the rotary switch, toroids and the contact detection circuit.
6. The SWR bridge daughter board's back with it's female header to provide solid ground connection and mechanical rigidity.
7. Tuning completed . P = forward power, R = SWR .... front panel labels due soon