Tuesday, August 16, 2022

500 Watt Antenna Tuner Part 8 - Software and Microcontroller

Controller Hardware and Programming Language Selection

I have experience with Arduino and Raspberry Pi.  I used the Arduino for a telemetry board for our ham radio club EME head end.  I programmed it in C++ (a programming language from Hell).  I use the Raspberry Pi to run my Stationmaster software and it is programmed in Go (as programming languages should be).  Python is the natively supported programming language for Raspberry Pi, but for a lot of reasons which one of them was my naiveté, I decided to use Go (I had also switched from Python to Go as my go to programming language for the most part around 2015 or 2016).  It has worked out handsomely, but I have had to come up with some low level workarounds.

This experience has convinced me of two things.  One is that Arduino is a better solution for the tuner (though Raspberry Pi is a fine solution for more general purpose use cases).  The other is not to try to program it in anything other than its natively supported language and libraries, and that would be C/C++ (though as I have gotten more and more into it, my approach has become C where you can, C++ where you must).

But which model?  I only have an Arduino Due on hand that I am saving for the 500 watt power amp that I will build next.  Given that I have to buy something, I need to decide which one.  My starting selection will be I/O count.  I am not a fan of I/O expanders (more board area, more parts, more interconnections, more interference, more code, more things to go wrong).   So, let me start there:

  • 1 pins for the bypass relay
  • 1 pin for the capacitor relay (across load - Region 1 or across source Region 2 see below)
  • 8 pins for the capacitor network
  • 8 pins for the inductor network
  • 15 pins for the touch screen display
  • 2 analog pins for magnitude and phase of the reflection coefficient
  • 1 analog pin for power level input 
  • 1 pin for frequency input
  • 4 additional pins for other user interface functions that I have not thought of yet
  • 4 spare pins
So, I will need something around 45 I/O pins which puts my in the 54 pin and $40+ space in Arduino land.  So, might as well go with the Due that I have on hand.  I will also get the benefit of 12 bit A/D convertors in place of 10 bit ones as well as nine 32 bit timer channels.  Swinging 3.3 volt digital signals will also generate less noise than swinging 5 volt ones.  

This is a 32 bit ARM core micro controller running at 84 MHz.  That should make many things easier.  It has 3.3 volt IO pins, so the interfacing will need some extra care.  It takes in 6-12 volts input and generates +3.3 volts output at 800 mA (it also generates +5 volts at 800 mA but it is not likely that we will need it).  It has an Analog Reference input (AREF) which I might want to drive from the 1.8 volts stable output of the AD8302 for a more accurate A/D conversion.

User Interface 

For user interface, I have decided to use the Adafruit 3.5" TFT touch screen display.  When I first started thinking about the user interface, I was not sure what I wanted to do so a touch screen display seemed to be a natural choice because of its flexibility.  As I worked on ideas about how to use the touch screen display, I decided that it was the best option since it simplified the design and provided flexibility for any future improvements.

Software Design


The structure of the software is a state machine.  The state transition diagram is shown here:

StateEntry CriteriaActionNext State
POWERONPower onMonitor buttonsPRETUNE or PREBP
PRETUNEPress TUNEMeasure powerRFLOW, RFHIGH, MEASURE
RFLOWPower level lowIncrease powerPRETUNE
RFHIGHPower level highDecrease powerPRETUNE
MEASUREPower in rangeMeasure Freq, GammaTUNE
TUNEAutomaticCalc/Apply C and LMONITOR
MONITORSuccess tuningMonitor SWR, PWR, buttonsPRETUNE, PREBP
NOTUNEError detectedCorrect errorPRETUNE, PREBP
PREBPPress BYPASSMeasure powerRFHIGHBP or BYPASS
RFHIGHBPPower highDecrease powerPREBP
BYPASSPower in rangeActivate bypass relaysPRETUNE

The state machine enters the POWERON state upon the application of power and looks for a button push.  If the TUNE button is pushed (BYPASS button discussed below), it enters the PRETUNE state and in this state measures the RF power at the input.  If the power is less than the required threshold (to be determined experimentally) for successful tuning, it enters the RFLOW  state and instructs the user to increase the power and push the DONE button which will move the state machine back to the PRETUNE state.  If the power entering the tuner is too high for safe tuning (minding our on the air manners and following good practice), it enters RFHIGH state and instructs the user to decrease the power and push the DONE button which will move the state machine back to the PRETUNE state and restarts the cycle.  If the power level is in the correct range, the state machine transitions from the PRETUNE state to the MEASRE state where it measures the phase and magnitude of the reflection coefficient (Gamma) and the frequency of the incoming signal.  After the measurement is complete, it transitions to the TUNE state.

In the TUNE state, the controller calculates the required capacitor and inductor values using the equations discussed in the "Tuning Algorithm" page.  Because the Analog Devices phase output has a 180 degree phase ambiguity, and under some conditions it might not be possible to resolve this ambiguity as discussed earlier, two sets of capacitors and inductors may have to be calculated and tested to determine the right match.  After the relays for the desired capacitor and inductor combinations are activated, the reflection coefficient is measured.  If SWR is in the desired range (currently assumed to be 1.2), the controller enters the MONITOR state.  In this state, it measures and displays PWR and SWR data on the touch screen.  It also monitors the TUNE and BYPASS buttons and depending on which button is pushed, it moves to PRETUNE or PREBP state respectively.

Assuming that I can manipulate the Ten Tec ALC circuit, some of the power up and power down cases might be achievable automatically.  But that is a future project.  I just need to make allowance for it.

I should note that I do not plan to operate the relays with the power applied.  I have built and tested a serial link between the tuner and the Stationmaster software.  I plan to ask for key down when I need to make a measurement and then ask for key up before operating the relays.  The reason I have the RFLOW and RFHIGH states is that below a certain power level, it will not be possible to make good measurements and too high of a power level for tuning is in general bad on the air manner and under high SWR conditions, bad practice.

If the SWR measurement is above the desired limit, it enters the NOTUNE state.  This is an error state and I will experimentally determine what to do next.

If in the POWERON state (or any other state where the buttons are monitored) the BYPASS button is pushed, the state machine moves to the PREBP state and in this state measures the input power to the tuner.  If the power is too high for a given SWR, it moves to the RFHIGHBP state and instructs the user to lower the power and push the DONE button which moves the state machine back to the PREBP state and repeats the cycle.  If the power is at a safe limit, it will move to the BYPASS state and operate the bypass relays.  In this state, it monitors and displays the PWR and SWR levels and monitors the TUNE and BYPASS  buttons and depending on which button is pushed, it moves to PRETUNE or PREBP state respectively.

When the state machine is in the MONITOR state, the tune button changes its color from white to green.  When it is in the BYPASS state, the bypass button changes its color from white to green.

User Interface Screenshots

As of now, here are my ideas about the user screens.  I might modify them as I build and test the tuner.  Ignore the 10 and 30 watt limits, they will change.


Basic Tuner Screen


Tuner Instructing the Power to be Lowered


Tuner Instructing the Power to be Increased


Tuner in the Tuned State


Tuner in the Bypass State

Frequency Measurement

It took me a few days of investigation, testing and trial and error to figure out how to measure frequency, but it worked.  In the Arduino Due microcontroller, all signals are sampled by the master clock (84 MHz) before being processed, so the frequency has to be at least 2.5 times less than the master clock frequency.  If I limit myself to HF bands only, I don't need to do anything other than to attenuate the output, put it through a comparator (that I will disable when not measuring frequency, less digital noise that way), and input it to the Arduino Due.  The reason being that 84/30 = 2.8 > 2.5; so I am in good shape.  If I want to go up to the 6 meter band, I will have to put 2:1 divider in the path (54/2 = 27) and I will end up in about the same place (84/27 = 3.1 > 2.5).  I need to think about this (I decided to stick to the HF band - 6 meter will have many more challenges and I don't feel up to them at this time).

Here is how I went about building the proof of concept.
  • The lower numbered timer-counter (TC0) is used for the operating system functions. For example, if call the "delay" function, chances are that the operating system is going to use the timer for it.  If you are going to use any other library, it would be good to check if the library uses any of the timers-counters.
  • The timer-counters have a number of input and output signals.  The signals are multiplexed with most likely one other peripheral signal and then multiplexed with general purpose I/O pins.  Some of these pins do not make it out to the Arduino pins.  Some may be multiplexed with other needed pins.  So I had to make a study of it.  That rules out all three channels of the timer-counter one (TC1).
  • I ended up using timer-counter two (TC2) for my testing.  I used channel 0 to generate the test signal.  The highest frequency that it can generate is 21 MHz because the highest frequency clock available to the timer-counters is master clock divided by two so the highest frequency that the timer can generate is 1 tick low and 1 tick high, hence master clock divided by 4.
  • TC2 Channel 0 toggles the TIOA6 signal (see table 36-4 of the microcontroller data sheet) every time there is match with register A and register B (they are both loaded with 1).  TIOA6 signal is connected to the I/O line PC25 in group B peripherals.  On the Due schematic, it is labeled PWM5 and connected to pin 5 so labeled on the board and the connector.  This is the clock input to channel 2 of the same TC2 (more on this in a few lines).
  • I used channel 1 to generate 1 millisecond timebase by driving it by the highest frequency clock available to the timer (42 MHz) to minimize phase ambiguity as much as possible.
  • The millisecond timebase pulse is output on signal TIOA7 which is routed to controller pin PC28, also in peripheral B.  On the Due schematic, PC28 is labeled PWM3 which appears on pin 3 of the board (and it is so labeled).
  • I verified both the clock frequency of pin 5 and the 1 ms pulse on pin 3 on a scope.
  • I drove channel 2 with the test signal and stored the value of the counter in register A (RA) on the rising edge of the clock and the value of the counter in register B (RB) and generated an interrupt on the falling edge of clock
  • Clock input input to channel 2 of TC2 is signal TCLK8 which appears on the controller pin PD9 and on the Due schematic is labeled PIN30 and it appears on the board pin 30.
  • So, the wiring is a jumper from pin 5 of the Arduino (clock output of channel 0 - the test frequency) to pin 30 (clock input of channel 2 of TC0).  The other jumper is from pin 3 (1 ms timebase) to pin 11 of the Due (signal name PWM11) which is pin PD7 of the controller and from table 36-4, we see that it is signal TIOA8 which loads register A on its rising edge and register B on its falling edge.  The difference is the number of pulses that channel 2 has seen in a millisecond.
  • The interrupt service routine (which cannot have any arguments or return any value) calculates RB-RA which I use to calculate the frequency. 
Some of the resources that one might find useful are:

The SAM3X microcontroller data sheet (actually a book, it is 1,459 pages).  

A tutorial by KO7M that helped start me in the right direction.

The Arduino Due schematic on the Due webpage is needed to trace signals from the source (data sheet) to the useable end point (Due board connector and pin number).

I ended up digging through three software modules and reading code to figure out what it did.  The three were:
  • Power Management Controller (PMC) - it contains some of the clock action
  • Parallel Input/Output Controller (PIO) - that is where all the multiplexing happens
  • Timer Counter (TC) - That is where the 3 TC modules with their 3 channels are located

The old Arduino IDE did not add these libraries automatically, so I had to add them manually.  On my mac, they are stored in (the new one does):

$HOME/Library/Arduino15/packages/arduino/hardware/sam/1.6.12/system/libsam/include

The software is in a preliminary state with stubs and test scaffolding, but the core functionality as described can be found here.

500 Watt Antenna Tuner Part 7 - User Interface

 I will start my user interface analysis as a comparison between what I need to do and the LDG AT-100ProII 100 W Automatic Antenna Tuner.  This is the tuner in everyday use in my station.

It has 6 buttons and each of these buttons have three modes, a short push, a longer 2.5 second push and a longer than 2.5 second push.  The function of each of these buttons is further modified by a function button.  I will not use anything remotely resembling this in my design.  One of the buttons is the tune button, this button will be prominent in my design.

There are two LEDs, one for Antenna 2 and one for Bypass.  I am not planning to have a second antenna.  If I ever need one, I will use an external, wall mounted switch.  The bypass indicator will be incorporated in the bypass button.  There are also two bar graphs, one for power output and the other for SWR.  Both functions remain.  The two bar graphs are also used in all sorts of cryptic ways to convey one condition or another to the user.  That is out.  I will use a text display for information.

There will be no peak vs. average power output option.  I will be using a true RMS power meter from Analog Devices to measure power output and I will display that.

The tuner gives one the option of automatic (triggered by SWR threshold) or semi-automatic, triggered by pushing the tune button.  Handling high power and tuning based on SWR trigger seems to be a bit crazy, so there will be no automatic tuning in the sense of LDG.  The automatic tuning will mean that once triggered by pushing the tune button the rest will be automatic.

The LDG has memory and full cycle tuning, assuming that my algorithms works, no such a thing will be necessary.  Just one button tune.

  • No timing variation in buttons (e.g. less than 2.5 seconds, 2.5 seconds, etc.)
  • No function modifier button
  • Prominent tune button on the touch screen.
  • Prominent bypass button next to the tune button
  • No Antenna 2 button
  • Bypass indication incorporated into the bypass button
  • No cryptic bar graph encodings, use a text display for user feedback.
  • Only automatic tuning triggered by pushing the tune button
  • Pushing the tune button will measure the power output and ask for it to be adjusted if necessary
  • Pushing the antenna bypass will measure the power output and ask for it to be adjusted if necessary
  • Error indicators will be all on the text display
After some thought and investigation, it looks like I do not have well formed opinions about the user interface (UI).  I will attempt to design the full UI using a touch screen display only.  It will give me a chance to play with the user interface ideas and also modify it over time if and when I change my mind.  Next step will be testing different UI ideas.

To experiment with a touch screen user interface, I ordered an Elegoo 2.8" TFT touch screen display.  I spent a few days trying to make it work without success.  I returned it and continued looking for alternatives.  I ordered an Adafruit 3.5" TFT touch screen display and it worked as advertised.  Initial tests show that it will do the job.  The front panel might end up being a touch screen and an on-off switch.

Adjusting Amplifier Power Level

My rig is an old Ten Tec Omni D from the 1980s.  It would be good if I don't have to manually reduce the output power (putting 100 watts into a 10:1 SWR would not be great).  Below is the schematic of the Ten Tec ALC circuit (I have used the same reference designations in the Ten Tec manual).  There are two controls in the radio.  The drive which controls the level of the signal (CW or phone) applied to the low level driver and ALC which controls the threshold at which the forward power signal is used to roll back the gain of the low level driver.  The ALC signal is single to the base of Q8 is the rectified output of a Brune bridge fed through a 10K resistor.  


I will have to experiment with injecting current into the base of Q8 also from a 10K source (maybe with a diode blocker so It does not interfere with normal operation) to see if I can automate the output power adjustment.  To implement the idea, I will have to build a new enhancement box for the Ten Tec (https://ad2cc.blogspot.com/2022/04/ten-tec-transceiver-enhancements.html).  This will not be the only enhancement that needs to go in.

In the mean time, I will use the combination of power measurement in the tuner and manual adjustment of the radio to set the desired power level for tuning and for driving the power amp.



Tuesday, August 9, 2022

500 Watt Antenna Tuner Part 6 - Matching Algorithm

I am reasonably confident (subject to testing and verification) that I can measure the magnitude and phase of the reflection coefficient to sufficient accuracy and narrow it to just two values.  Knowing these, I can determine the location of the load on the Smith Chart to one of two points and by the frequency shift method discussed in the last section, down to one.  With that information, per the analytical model, I can calculate the required matching impedances.  To convert this impedances to real capacitor and inductor values, I also need to know the frequency.  So, I will have add a frequency counter to the solution.

This page is repeat (summary) of the analytical model, but when I go to write the code, it is good to have all of the formulas in one place without all the proofs.

Measure the magnitude and phase of the reflection coefficient from the AD8302 device.  Depending on the value of the phase use the frequency change method to estimate the true phase (I might have to build a look up table if the algorithm becomes too complicated).

From the magnitude and phase of the reflection coefficient, calculate the real and imaginary parts:

\begin{equation} \Gamma _{r}=\left | \Gamma \right |cos\theta \end{equation}
\begin{equation}  \Gamma _{i}=\left | \Gamma \right |sin\theta\end{equation}

From the reflection coefficient calculate the normalized resistance and reactance:

\begin{equation}r_{0}=\frac{1-\left | \Gamma \right |^{2}}{1+\left | \Gamma \right |^{2}-2\Gamma _{r}}\end{equation} \begin{equation} x_{0}=\frac{2\Gamma _{i}}{1+\left | \Gamma \right |^{2}-2\Gamma _{r}}\end{equation}

Determine the region where the load is located.  If in region 1, then:

\begin{equation}r> 1\ \ or \ \ x>0\ \ and\ \ r< \left | z \right |^{2}\end{equation}

If in region 2 then:

\begin{equation}g> 1\ \ or \ \ b<0\ \ and\ \ g< \left | y \right |^{2}\end{equation}

Build safeguards for the case when the load is on the unit resistance circle in the lower half of the Smith Chart or it is on the unit conductance circle in the upper half of the Smith Chart.  In these cases, the first step of the matching network (parallel capacitor or series inductor respectively) are omitted.

If in region 1, calculate the intersection with the r = 1 circle:

\begin{equation}\Gamma _{r1} = \frac {1-g _{0}}{1+3g _{0}}\end{equation}
\begin{equation}\Gamma _{i1}=- \sqrt{\Gamma _{r1}-\Gamma _{r1} ^{2}}\end{equation}
From these calculate the resistance and reactance of the intersection just like for the load (above) and then:
\begin{equation}Bcomp = \frac {b _{1} - b _{0}}{Z _{0}}=\omega C=2 \pi f C\end{equation}
\begin{equation}Xcomp=x _{1}Z _{0}=\omega L=2 \pi f L\end{equation}
and put the capacitor equivalent to Bcomp in parallel with the load and the inductor equivalent to Xcomp in series with the load.

If in region 2,  calculate the intersection with g = 1 circle:
\begin{equation}\Gamma _{r1} = \frac {r _{0}-1}{3r _{0}+1}\end{equation}
\begin{equation}\Gamma _{i1} =  \sqrt{-\Gamma _{r1} - \Gamma _{r1} ^{2}}\end{equation}
From these calculate the resistance and reactance of the intersection just like for the load (above) and then:
\begin{equation} Xcomp = (x _{1}- x _{0})Z _{0}=\omega L=2 \pi f L\end{equation}
\begin{equation} Bcomp = \frac {b _{1}}{Z _{0}}=\omega C = 2 \pi f C\end{equation}
We add an inductor with the reactance value of Xcomp in series with the load and a capacitor with the susceptance value of Bcomp in parallel with the source.

In the case when the load is on the r = 1 circle, leave out the Bcomp step from region 1 approach and just apply the Xcomp from the same calculation.  In the case when the load is on the g = 1 circle, lave out the Xcomp step from the region 2 approach and just apply the Bcomp step from the same calculation.

I need to measure frequency to convert the reactance and susceptance to actual inductance and capacitance.  For this, I copied the K6JCA circuit except I modified it to work with a 3 volt Arduino.  Note that because we are dealing with RF, the 1 pF capacitor is doing all the hard work (it carries 10 times the resistor current).  There is a detailed discussion of how to measure frequency up to 30 MHz using the Arduino Due counters in the Software and Microcontroller (Part 8) of this blogpost.  When I am done, I will also post the complete code to GitHub.


Monday, August 8, 2022

500 Watt Antenna Tuner - Part 5 - Directional Coupler

As I outlined in section 2, Analytical Model, I will measure the phase and gain of the reflection coefficient and from that, calculate the exact matching solution.

I will use the Analog Devices AD8302 to measure the magnitude and phase of the reflection coefficient.  Its phase comparator is a multiplier so it will produce the same output voltage if the phase of one of the signals (let's assume this is the forward signal) is leading or lagging by the same amount relative to the second signal (which would be the reflected signal).  This can be seen from the following diagram from the data sheet.  

My original intention was to measure the magnitude and the phase of the reflection coefficient and arrive at the answer in one step using this Analog Devices app note (https://ez.analog.com/cfs-file/__key/communityserver-wikis-components-files/00-00-00-01-03/UsetwoAD8302tomeasure360degrees_2D00_RevA.pdf).  After going down many blind allies, I have concluded that I can only directly measure the phase angle to within 180 degrees and not to the full 360 degrees (the same output for negative and positive phase angles in the -180 to +180 degrees range).   The problem that I could not solve was building a broadband 90 degree phase shift circuit.

In conversation with Joe Taylor, K1JT, he suggested varying the frequency and looking at the change in the phase to select between the two results.  A great idea.  It would require me to control the frequency of the rig from the tuner, but that is a problem that is much easier to solve (I am beginning to think that I need to link the Raspberry Pi running my Stationmaster software, and the tuner and the amp under development using the home network - Stationmaster running on a Raspberry Pi is already on the home network.

Here is a little summary of the Smith Chart characteristics.  The reflection coefficient from a (normalized) complex impedance of r + jx is measured on its real (horizontal) and imaginary (vertical) axis.  Values of r and x are plotted on the constant resistance and constant reactance circles and arcs.  Points above the horizontal axis have an inductive component with x > 0 and points below the horizontal axis have a capacitive component with x < 0.  Also, the angle of the reflection coefficient vector (hence phase of the reflection coefficient) is positive and varies between 0 and 180 degrees on the upper half of the Smith Chart and is negative and varies between 0 and -180 degrees on the lower half of the Smith Chart.  

I should also talk through the properties of the AD8302 phase comparator.  When the phase difference is positive, as the phase difference increases from zero to 180 degrees, the output voltage decreases from 1.8 volts to zero volts.  When the phase difference is negative, as the difference decreases from zero to -180 degrees, the output voltage also decreases from 1.8 volts to zero.  So, when the reactance in the upper half decreases (phase of the reflection coefficient moves towards zero), the output voltage increases.  When the reactance in the lower half decreases (phase of the reflection coefficient moves towards -180 degrees), the output voltage also decreases.

By increasing the frequency, reactance on the upper half of the Smith Chart increases and that results in lowering the phase angle (the output voltage goes up).  If this condition is encountered, the positive phase angle value is the right answer.  Increasing the frequency, decreases the reactance on the lower half of the Smith Chart and hence it decreases the phase angle (output voltage goes down).  If this condition is encountered, the negative phase angle value is the right answer.

For points close to the real (horizontal) axis and above it, rotating clockwise could cause the point to cross the x axis and potentially make the phase angle smaller.  Similarly, for points close to the x axis and below it, rotating counter clockwise could do the same.  So, the I will also test the location of the point by decreasing the frequency.  The only time this will become a problem is close to the edge of the band and close to the real axis.  In this case, I will test both solutions and select the smaller SWR.

Which brings up the question how much to move the frequency to get a measurable result.  Looking at the graph below (TPC26), the measurement accuracy is within a few tenths of a degree in the 30 to 150 degree range (or -30 to -150 range), within about one degree in the 15 to 165 range and to within and to within 2 degrees in the 10 to 170 degree range.  It is important to note that from 0 to 180 degrees, the graph is (locally) monotonic.  This is also true from 0 to -180 degrees (though not true from -180 to +180 degrees).  This might come in handy in practice.

The lowest frequency range that the phase transfer function of the AD8302 device is specified is at 100 MHz (see figure below).  This function is specified up to 2,200 MHz and as the frequency goes up, the accuracy deteriorates.   So, I can safely assume that the device performance in the HF band will be as it is at 100 MHz or better.

So, I am going to assume that I need to move the frequency enough to see a 5-6 degree change in the phase angle.

To see how much frequency change I need to see 5-6 degrees of phase change, I started by testing my antennas.  I have four: 10m, 15m, 20m, and 40m ground mounted verticals fed in parallel with lots of ground radials.  The 40m antenna is made of a load coil and a stub on top of the 20m antenna.  So, I ran the tests, saved the NanoVNA data as csv files and used Excel to analyze them.  By inspection, in the 40m band, at the bottom of the band a 36 KHz and at the top of the band a 93 KHz shift gives a 6 degree phase shift.  In the 20m band, the required changes in frequency at the two end of the band are 84 and 49 KHz (interesting to note that at the top of the 20m band, my antenna goes from being inductive to being capacitive, so I will at least have one good test case).  The required frequency changes in the 15m band are 58 KHz and 54 KHz and for the 10 meter band are 340 KHz and 68 KHz.  They all look manageable.

I will have to test some of the antennas at the DVRA shack to see if the results hold.

In doing this analysis, my other observation is that these large errors occur near the Smith Chart x axis where the phase angel is small.  So, I will only need these larger frequency changes at low phase angles.

With the phase measurement algorithm somewhat settled, I will move to the interface between the directional coupler and the AD8302.  
  • The input range of AD8302 is 60 dB from 0 dBm to -60 dBm referenced to 50 ohms
  • The highest power level in my various simulations without triggering the hardware trip circuit is about 550 watts.
  • I will add an extra 100 watts of safety margin and map 650 watts (58 dBm) output power to 0 dBm at the input of the AD8302.  That eats about 1.1 dB into the dynamic range relative to 500 watts.  
  • Hence there needs to be 58 dB of attenuation between the output and AD8302.
  • This puts the voltage at the input of the AD8302 at -14 dBV for 500 watts against a max input specification of -13 dBV.  650 watts at the output maps to -12.9 dBV (800 watts would put the voltage at -12 dBV which is not great but still much less than -3 dBV absolute maximum).
  • I will implement 30 dB of attenuation (32:1 turns ratio) in the transformers and 28 dB in a three stage cascade of attenuators.
  • Forward power is split into two branches, one for measuring reflection coefficient and the other for measuring power output.
  • The attenuation in the leg for measuring the reflection coefficient is composed of Pi (-8 dB), splitter (-6 dB), T (-10 dB), and Pi (-4 dB) for a total of 28 dB.
  • The attenuation in the power measurement leg is composed of Pi (-8 dB), splitter (-6 dB), T (-8 dB), and Pi (-2 dB) for a total of 24 dB.
  • Reflected power is also split into two branches.  The branch for measuring the reflection coefficient is exactly the same as the forward power leg.  The other branch is simply terminated in 50 ohms.
  • Since the minimum input to the AD8302 is -60 dBm, the lowest power level in the output that maps into the AD8302 range is -2 dBm or 0.6 mW which is more than enough dynamic range.
For the design of the attenuator, I used the tools at the RF Cafe (There is a copy of the schematic and simulation results below): https://www.rfcafe.com/references/electrical/attenuators.htm
The values used are from the 1% resistor value table, not the absolute values from the RF Cafe tool.

Now I need to work on the voltage sense inductor.  I have the number of the primary turns (32).  I am looking for an inductance value for the primary that does not put too much of a load on the output line (3% would be around 100 mA rms), maybe around 2-3K which at 3.5 MHz would be in the 90-130 micro Henries.  
\begin{equation}A _{L}=\frac{L}{N ^{2}}\end{equation}
Plugging 90-130 micro Henries and 32 turns gives us:
\begin{equation}A _{L}=\frac{90,000-130,000}{32 ^{2}}=90-130\  nH/turns ^{2}\end{equation}
Let's leave this here as it is and come back to it in a bit.  These Al values and the required frequency range in combination might be hard to come by.

For the purpose of thermal design, Jeff, K6JCA used a 3:1 SWR at 200 watts and I will do the same.  At this SWR, the reflection coefficient is 0.5 which yields a load resistance of 3 times 50 ohms or 150 (or 16.67) ohms.  200 watts into 150 ohms requires 173 volts rms which is what I will use for thermal design.
For the purpose of avoiding saturation, he used the 800 watts peak into the same load which yields 490 volts peak by the same math (he also recommends using peak instead of rms value for calculating the maximum flux density which I will follow).

I will start with the heating requirement by going back to the RF Circuit Design book:
\begin{equation}B _{op} = \frac {E \times 10 ^{8}}{4.44fNA _{e}}\end{equation}
Where E is the maximum rms voltage, f, the frequency, N, number of turns and Ae is the effective cross section area in centimeters squared.  Since f is in the denominator, we will use the smallest f, 3.5 MHz for the largest flux.

I will start with Fair Rite ferrite toroid cores.  I have had good luck with them in past projects, they are available from Mouser where I usually shop and I have been driving by their plant on my way to Troy, NY for the past 50 years which should be reason enough.

Looking through the Fair Rite catalog, there are only 3 inductive (vs. suppression and power) materials that are recommended for HF and higher operations: 61 (<40 MHz), 67 (<150 MHz) and 68 (<500 MHz).  There is nothing in the 68 material that even comes close to the Al that I need.  So, I will start by looking at 68 material since it can get me into 6 meters.  The highest Al in this family is 55, so the highest inductance will be 56 micro Henries and at 3.5 MHz, it will yield an impedance of 1.2K Ohms, not quite what I was targeting, but still ok, we are in the 100-200 mA range (61 material has much higher Al values, but I will only look at it if I have to because of the recommended frequency range).

I will work this backwards.  There are ten 67 material toroids available from Mouser.  There are two that are a bit pricy, so I will drop those for now.  There are also a bunch where Al is 25 or less which would too high of a load on the output.  That leaves three with Al values of 39, 47, and 48.  We want to keep the temperature rise below 35 degrees:
\begin{equation}\Delta T (^{\circ} C) = \left [ \frac {P (mW)}{A (cm ^{2})} \right ] ^{0.833} \end{equation}

This table shows the three cores with acceptable Al values and uses the above equation to calculate total acceptable power dissipation for a 35 degree C temperature rise.  Then it divides it by the effective core volume to determine power density.  The heat dissipating surface area is assumed to be the surface area of the core.

CoreArea (sq. cm)P (mW)Ve(cc)Pl (mW/cc)
19019.77697.620.93750.13
170125.301,805.784.5401.29
120128.432,029.205405.84

The graph below is from the Fair Rite 67 material data sheet.  I have used the higher temperature data since it is a bit more conservative.  To keep the temperature rise to 35 degrees, the flux density has to keep the power density to the limits in the above table.  


Now, looking at the flux densities across the band:

Band3.5 MHz7 MHz14 MHz18 MHz21 MHz24.9 MHz28 MHz50 MHz
1901330165826455464123
170116784423228232112
1201 143 71 36 28 24 20 18 10

Clearly a 330 Gauss flux density exceed the required power density to keep the temperature rise under 35 degrees C.  So, the 1901 core is out.  The 1701 and 1201 cores both meet the requirements since they both have flux densities between 100 and 200 Gauss at 3.5 MHz and that puts the power density at 300 mW/cc, below the 400 mW/cc limit.  This makes sense since these two cores are about the same size made from the same material.  Clearly from the above table, at higher frequencies the flux densities are lower and from the graph, the power density requirement is easily met.

Now we need to test the saturation flux density:
\begin{equation}B _{op} = \frac {490 \times 10 ^{8}}{4.44 \times 3.5 \times 10 ^{6} \times 32 \times 0.69}=142 \ Gauss\end{equation}
Well short of the saturation flux density as you see in this figure from the 67 material data sheet:

Given that the 5967001201 core is a bit less expensive, I will go with that for the voltage sense transformer and for no other reason than to match it, I will use the same for the current sense transformer (calculations for that next).

The drive for the current sense transformer is the power amp feed line.  So by the application of Ampere's law:
\begin{equation}B=\frac {\mu _{r} \mu _{0}NI}{2\pi r}\end{equation}
All units are in the MKS system, so the result will be in Teslas.  Under worst case scenario of 800 watts and 3:1 SWR, the current through the primary will be 7 amps.
\begin{equation}B= \frac {40\times 4\pi 10 ^{-7}\times 1\times 7}{2\pi \times .024}=2.33\times 10 ^{-3}\  Tesla = 23 \ Gauss\end{equation}
The voltage across the secondary is 7 amps divided by 32 (turns ratio) and times 50 ohms (the terminating resistance).  That is 11 volts.  So, if the core can support the voltage sense transformer stress, it can surely support 11 volts.   Hence any 67 material toroid that supports 32 turns of 22 AWG wire will do.   Speaking of 22 AWG wire, I am planning to use it for all current sense transformer secondary and voltage transformer primary.  Resistance per meter is 0.05315 ohms which is more than adequate.

Finally, here is the LT Spice schematic of the directional coupler transformers and attenuators:



The voltage sense primary inductance is the calculated inductance of the winding (32 turns through the 5967001201 core).  The secondary inductance is calculated to feed Spice since it maps turns ratios by the square of the inductance values.  The current sense primary inductance is the calculated inductance of one turn through the same core.  The secondary inductances are similarly calculated to satisfy Spice.  

The load resistor is 150 ohms to simulate a 3:1 SWR.   Also note that the splitter in the reflected path with one of its legs terminated in 50 ohms is there to equalize the two paths and not introduce extra phase shift in the reflected signal.

Both transformers are providing a 30 dB attenuation.  Vfor1 and Vref have equal (58dB) attenuation for measuring the gain and phase of the reflected voltage.   Vfor2 feeds the AD8361 true RMS power meter device.  The internal resistance of the device is the 225 ohm resistor in the HF band which in parallel with the external 63.4 ohm resistor forms the 50 ohm load to the attenuator network.

Input to the AD8361 with a 54 dB attenuation and 50 ohm load is as follows:

Power (Watts)5002001005025
Output voltage (Vrms)158100705035
AD8361 input (mVrms)31519914110071

Reasonably low error range of the AD8361 from the data sheet is in the 30 to 400 mVrms.  So, for the values of interest, the design is in range.  The maximum input to the device is 1 Vrms which translates to 500 Vrms or 5 KW into a 50 ohm load or 1.7 KW into a 150 ohm load.  For loads lower than 50 ohms, the voltages will be lower.

Sunday, August 7, 2022

Transformer Directional Coupler with Multi Winding Secondaries

 For measuring the phase of the reflection coefficient in the 360 degree range using the Analog Devices AD8302, the company application note (https://ez.analog.com/cfs-file/__key/communityserver-wikis-components-files/00-00-00-01-03/UsetwoAD8302tomeasure360degrees_2D00_RevA.pdf) proposes using two such devices and applying the signal to one and its quadrature to the other.  Since I am using the device in a directional coupler, a reliable way of producing the phase shifted signal is with a second set of windings in the directional coupler transformers.  But this change upsets the balance of the two transformers and it requires a more refined approach.  So, let's begin.





This is a basic directional coupler with a second set of windings with exactly the same turns ratio connected in the opposite direction to the first winding.  We start by writing the voltage and current wave equations for a lossless transmission line:
\begin{equation}V(z)=V ^{+} _{0}(e ^{j\beta z}+\Gamma e ^{j\beta z})\end{equation}
\begin{equation}I(z)=\frac {V ^{+} _{0}}{Z _{0}}(e ^{j\beta z}-\Gamma e ^{j\beta z})\end{equation}
Where:
\begin{equation}\Gamma=\frac {Z _{L}-Z _{0}}{Z _{L}+Z _{0}}\end{equation}
\begin{equation}\beta=\omega \sqrt {LC}\end{equation}
L and C are the line inductance and capacitance per unit length and z is the distance of the source from the antenna and usually a negative number.
Transformer T1 (current sense transformer) primary carries the current to the load (antenna) but has a very small voltage drop across it.  So, the secondary can be treated as a high impedance current source where the voltage across it is a function of the resistance in the secondary and the induced current from the primary.  Transformer T2 (voltage sense transformer) primary has the full output voltage across it and it induces a voltage on its secondary.  So, the secondary can be treated as a low impedance voltage source where the current through it is a function of the resistance in the secondary and the induced voltage from the primary.
Since the circuit is linear, by the principal of superposition, we can first replace T1 with an open (since it is a current source) and write down the voltage equations and then replace T2 with a short (since it is a voltage source) and do the same.  The current through the primary of T1 induces a current through each of the secondaries.  It is effectively the same as if the secondary had twice as many turns.  So, the current through each secondary is one half of the current if there was no second secondary. 
Replacing T2 with a short:
\begin{equation}V _{11}=-\frac {R _{m1} R _{n1}}{R _{m1}+R _{n1}} \times \frac {I(z)}{2n}\end{equation}
\begin{equation}V _{12}=\frac {R _{m2} R _{n2}}{R _{m2}+R _{n2}} \times \frac {I(z)}{2n}\end{equation}
\begin{equation}V _{21}=-\frac {R _{m1} R _{n1}}{R _{m1}+R _{n1}} \times \frac {I(z)}{2n}\end{equation}
\begin{equation}V _{22}=\frac {R _{m2} R _{n2}}{R _{m2}+R _{n2}} \times \frac {I(z)}{2n}\end{equation}
Replacing T1 with an ope:
\begin{equation}V _{11}=\frac {R _{n1}}{R _{m1}+R _{n1}} \times \frac {V(z)}{m}\end{equation}
\begin{equation}V _{12}=-\frac {R _{n2}}{R _{m2}+R _{n2}} \times \frac {V(z)}{m}\end{equation}
\begin{equation}V _{21}=-\frac {R _{m1}}{R _{m1}+R _{n1}} \times \frac {V(z)}{m}\end{equation}
\begin{equation}V _{22}=\frac {R _{m2}}{R _{m2}+R _{n2}} \times \frac {V(z)}{m}\end{equation}
Note the distinction that T1 is a current sensor and the total current available to it is the current through the main line as long as it represents a small drain from the line.  But T2 is a voltage source and as long as it does not run out of compliance, its current capability is "unlimited".
By the principal of superposition:
 \begin{equation}V _{11}=-\frac {R _{n1}}{R _{m1}+R _{n1}} \left [\frac {R _{m1}I(z)}{2n}- \frac {V(z)}{m} \right ]\end{equation}
\begin{equation}V _{12}=\frac {R _{n2}}{R _{m2}+R _{n2}} \left [\frac {R _{m2}I(z)}{2n}-  \frac {V(z)}{m} \right ]\end{equation}
\begin{equation}V _{21}=-\frac {R _{m1}}{R _{m1}+R _{n1}} \left [\frac {R _{n1}I(z)}{2n}+  \frac {V(z)}{n}\right ]\end{equation}
\begin{equation}V _{22}=\frac {R _{m2}}{R _{m2}+R _{n2}} \left [\frac {R _{n1}I(z)}{2n}+  \frac {V(z)}{m}\right ]\end{equation}
By substituting the wave equations, we have:
\begin{equation}V _{11}=-\frac {R _{n1}}{R _{m1}+R _{n1}} \left [\frac {R _{m1}}{2n}\frac{V _{0} ^{+}}{Z _{0}}(e ^{j\beta z}-\Gamma e ^{j\beta z})- \frac {1}{m} V ^{+} _{0}(e ^{j\beta z}+\Gamma e ^{j\beta z})\right ]\end{equation}
\begin{equation}V _{12}=\frac {R _{n2}}{R _{m2}+R _{n2}} \left [\frac {R _{m2}}{2n}\frac{V _{0} ^{+}}{Z _{0}}(e ^{j\beta z}-\Gamma e ^{j\beta z})-  \frac {1}{m} V ^{+} _{0}(e ^{j\beta z}+\Gamma e ^{j\beta z})\right ]\end{equation}
\begin{equation}V _{21}=-\frac {R _{m1}}{R _{m1}+R _{n1}} \left [\frac {R _{n1}}{2n}\frac{V _{0} ^{+}}{Z _{0}}(e ^{j\beta z}-\Gamma e ^{j\beta z})+  \frac {1}{m}V ^{+} _{0}(e ^{j\beta z}+\Gamma e ^{j\beta z})\right ]\end{equation}
\begin{equation}V _{22}=\frac {R _{m2}}{R _{m2}+R _{n2}} \left [\frac {R _{n2}}{2n}\frac{V _{0} ^{+}}{Z _{0}}(e ^{j\beta z}-\Gamma e ^{j\beta z})+  \frac {1}{m}V ^{+} _{0}(e ^{j\beta z}+\Gamma e ^{j\beta z})\right ]\end{equation}
By setting:
\begin{equation}k _{1}=\frac{R _{m1}}{2nZ _{0}}=\frac{R _{m2}}{2nZ _{0}}=\frac{1}{m}\end{equation}
\begin{equation}k _{2}=\frac{R _{n1}}{2nZ _{0}}=\frac{R _{n2}}{2nZ _{0}}=\frac{1}{m}\end{equation}
We get:
\begin{equation}V _{11}=-\frac {k _{1}R _{n1}V _{0} ^{+}}{R _{m1}+R _{n1}} \left [e ^{j\beta z}-\Gamma e ^{j\beta z}- e ^{j\beta z}-\Gamma e ^{j\beta z}\right ]\end{equation}
\begin{equation}V _{12}=\frac {k _{1}R _{n2}V _{0} ^{+}}{R _{m2}+R _{n2}} \left [e ^{j\beta z}-\Gamma e ^{j\beta z}-  e ^{j\beta z}-\Gamma e ^{j\beta z}\right ]\end{equation}
\begin{equation}V _{21}=-\frac {k _{2}R _{m1}V _{0} ^{+}}{R _{m1}+R _{n1}} \left [e ^{j\beta z}- \Gamma e ^{j\beta z}+  e ^{j\beta z}+\Gamma e ^{j\beta z}\right ]\end{equation}
\begin{equation}V _{22}=\frac {k _{2}R _{m2}V _{0} ^{+}}{R _{m2}+R _{n2}} \left [e ^{j\beta z}- \Gamma e ^{j\beta z}+ e ^{j\beta z}+\Gamma e ^{j\beta z}\right ]\end{equation}
And after simplification we have:
\begin{equation}V _{11}=\frac {2k _{1}R _{n1}V _{0} ^{+}}{R _{m1}+R _{n1}}\Gamma e ^{j\beta z} \end{equation}
\begin{equation}V _{12}=-\frac {2k _{1}R _{n2}V _{0} ^{+}}{R _{m2}+R _{n2}} \Gamma e ^{j\beta z} \end{equation}
\begin{equation}V _{21}=-\frac {2k _{2}R _{m1}V _{0} ^{+}}{R _{m1}+R _{n1}}  e ^{j\beta z} \end{equation}
\begin{equation}V _{22}=\frac {2k _{2}R _{m2}V _{0} ^{+}}{R _{m2}+R _{n2}}  e ^{j\beta z}\end{equation}
And dividing the respective equations we get:
\begin{equation}\frac {V _{11}}{V _{21}}=-\frac {k _{2}R _{m1}}{k _{1}R _{n1}}\Gamma \end{equation}
\begin{equation}\frac {V _{12}}{V _{22}}=-\frac {k _{2}R _{m2}}{k _{1}R _{n2}}\Gamma \end{equation}
By substituting k1 and k2 in these equations, with minimal math we conclude that:
\begin{equation}\frac {V _{11}}{V _{21}}=-\Gamma \end{equation}
\begin{equation}\frac {V _{12}}{V _{22}}=-\Gamma \end{equation}
But, there are second condition that need to be met which are:
\begin{equation}\frac{R _{m1}}{2nZ _{0}}=\frac{R _{m2}}{2nZ _{0}}=\frac{1}{m}\end{equation}
\begin{equation}\frac{R _{n1}}{2nZ _{0}}=\frac{R _{n2}}{2nZ _{0}}=\frac{1}{m}\end{equation}
We have two obvious choices.  Either:
\begin{equation}R _{m1} = R _{m2} =R _{n1} = R _{n2} = Z _{0} \ \ and\ \  n = \frac {m}{2}\end{equation}
Or:
\begin{equation}R _{m1} = R _{m2} = R _{n1} = R _{n2} = 2Z _{0}\ \ and\ \  n = m\end{equation}
The choice is terminating the transformers in 100 ohms and keeping the turns ratio of the two transformers the same or cutting the turns ratio of T1 in half and terminating the transformers in 50 ohms.  The impact on the primaries is the same, so the decision rests on the impact on the secondary circuits.  Clearly, building a transformer with half as many turns is simpler.  Also, since most systems are 50 ohm systems, any downstream attenuator need to have an input resistance of 100 ohms and output resistance of 50 ohms.  These attenuators are not realizable in general for different values of attenuation with real passive devices (require negative resistance).

The choice is made, 50 ohm termination (a Pi network attenuator with a 50 ohm input and output impedance) and T1 secondary with half the ratio of T2 primary.

An interesting byproduct of the two windings in opposite direction is that in the case of T1, the voltage reflections and in the case of T2, the current reflections into the primary are cancelled.  Hence, there is no impedance reflection into either primary.

One last point, the negative sign in the equation for Gamma is important but since the measurement is made in software, in case of error, it is easily correctable, not that I am planning on a mistake. 

 




Thursday, August 4, 2022

500 Watt Antenna Tuner Part 4 - Capacitors and Inductors

Following K6JCAs design approach, I will be using a low pass L-C network topology.  I will also be using relays to put capacitors in parallel to build the desired capacitor value and inductors in series for the same purpose.  These are the necessary tasks:

  1. Select the value of the capacitors and inductors in the design
  2. Select capacitors that meet the design requirements
  3. Design and test the inductors that meet the design requirements.

Capacitor and Inductor Values

By running the simulator, I got the maximum values of capacitors and inductors for each band to meet the design requirements.   The values of importance to us are the values at the low end of the band (the higher value - and I work a lot of CW).  Since we are not designing for the 160 meter band, we will skip those values and start with 2,728 pF as the maximum capacitance and 6,821 nH as the maximum inductance that needs to be synthesized.

Band C (pF) L (nH)
160m low5,30513,263
160m high4,77511,937
80m low 2,728 6,821
80m high 2,387 5,968
40m low 1,364 3,410
40m high 1,308 3,270
20m low 682 1,705
20m high 665 1,664
17m low 529 1,321
17m high 526 1,314
15m low 455 1,137
15m high 445 1,113
12m low 384 959
12m high 382 955
10m low 341 853
10m high 322 804
6m low 191 477
6m high 177 442

To build a "power of 2" set of values, we will divide the maximum value eight times and then sum the resulting 8 values to see how close we can get to the target value.

C (pf)L (nH)
2,7286,821
1,3643,411
6821,705
341853
171426
85213
43107
2153
11 27
Sum Sum
2,7186,795

The sum of 6,795 is close enough to 6,821 and the sum of 2,718 close enough to 2,728 to be a good starting point.  Since I am not going to design for the 160 meter band, I will drop the data for this band from here on.

Maximum Voltages and Currents

Let's look at the maximum voltages and currents (from the simulator) that the inductors and capacitors must handle: 
200 W500 W800 W
Vpk L475750950
Vrms L336530672
Irms L6.29.912.5
Vpk C442697883
Vrms C313493624
Irms C6.910.813.7

We know that the 800 volts inductor peak voltages occur on voice peaks, but when a relay is open, we have to select relays that don't break down at these levels.  The same is true of relays in the capacitor legs of the circuit.


Capacitor Selection

For capacitor selection, I will follow the outline of this paper https://www.avx.com/docs/techinfo/RFMicrowaveThinFilm/energytf.pdf

For capacitors, we have a number of limitations.  One is the maximum voltage which needs to be at least 1,000 volts.  The other is maximum energy stored.  We can calculate the maximum energy stored as (using the data sheet specified maximum DC voltage for the largest value capacitor):
\begin{equation}E=\frac {1}{2}CV ^{2}=\frac {1}{2}(3411 \times 10 ^{-12})(1000 ^{2})=1.7 \times 10 ^{-3}\end{equation}

The voltage across the capacitor is a modulated sinusoidal function.  For simplicity, I will just look at the carrier.  In each half of the cycle, it stores energy in the capacitor and then removes it.  So, we can calculate the energy stored in the capacitor as:
\begin{equation}E=\int _{0} ^{\pi}v(t)i(t)dt\end{equation}
And we have:
\begin{equation}v(t)=V\sin(\omega t)\end{equation}
\begin{equation}i(t)=C \frac{dv}{dt}=\omega CV \cos(\omega t)\end{equation}
\begin{equation}E=\int _{0} ^{\pi}\omega CV ^{2}\sin(\omega t)\cos(\omega t)dt\end{equation}
With change of variables:
\begin{equation}z=\omega t\ \ \ dz=\omega dt\ \ \ dt=\frac {dz}{\omega}\end{equation}
\begin{equation}E=\frac {\omega CV ^{2} }{\omega} \int _{0} ^{\pi \omega} \sin(z)\cos(z)dz=CV ^{2}\left [ \frac {\sin ^{2}(z)}{2} \right ] _{0} ^{\pi \omega}=\frac {CV ^{2}\sin ^{2}(\pi \omega)}{2}\end{equation}
Maximum power stored will be with the value of the sin function set at its maximum of 1 or:
\begin{equation}E=\frac {1}{2}CV ^{2}\end{equation}
So, the energy criteria becomes the same as voltage criteria, at least in this case.

Finally, we need to concern ourselves with heating effects.  The maximum rating of reasonably priced capacitors is 125 degrees C.  So, I will design for 100 degrees C.  Assuming that the internal temperature of the housing will be around 40 degrees C, the temperature rise that can be permitted is 60 degrees C.  Many high quality surface mount RF type capacitors come in 1111 packages.  The thermal resistance of this package is 67.7 degrees per watt (see the above mentioned paper) so the power dissipation is limited to 0.88 watts.  Since the maximum RMS current through the capacitors is 6.8 amps, the maximum capacitor ESR has to be 19 milli Ohms or less.

Peak Capacitor Current (A)

Cap Voltage (V)3,000 pF1,410 pF682 pF340 pF173 pF86 pF43 pF22 pF12 pF
160m L4279.276.383.301.640.840.420.210.110.06
160m H4429.496.853.751.890.960.480.240.120.07
80m L442-9.026.103.291.680.840.420.210.12
80m H442-9.366.723.741.920.950.480.240.13
40m L441--8.986.083.351.670.830.430.23
40m H441--9.106.273.481.740.870.450.24
20m L441--8.898.966.163.331.670.850.47
20m H441---9.006.273.411.710.880.48
17m L441---9.477.324.232.151.100.60
17m H441---9.537.364.262.171.110.60
15m L441---9.717.954.842.501.280.70
15m H441---9.768.074.942.561.310.71
12m L441---9.538.625.592.961.520.83
12m H441---9.578.655.622.981.520.83
10m L442---8.869.036.123.331.710.93
10m H441----9.106.393.521.810.99
6m L441----9.558.585.613.051.65
6m H439----9.108.815.973.281.79
Max442-9.369.19.769.16.393.521.810.99

Searching through the Mouser catalog for bargain prices, most standard line of capacitors did not meet the requirements.  By accident, I stumbled across the Vishay HiFreq series of capacitors and after I more carefully checked, these were the same capacitors that Jeff, K6JCA had used.  Price and availability were also reasonable.  The only parts that I found on Mouser meeting 1,000 or 1,500 volts DC specification were values up to 160 pF (DigiKey had none).   These capacitors all come in 1111 surface mount package.  Below is the ESR data for this family and package.  ESR decreases with capacitance and frequency for values starting at 10 pF.  But it is not well specified for capacitance values larger than 47 pF and frequencies lower than 100 MHz.   ESR for higher value capacitors at lower frequencies will be lower and for lower value capacitors, the current is much lower (above table).  
The current rating curve is also helpful.  Current rating goes down with frequency but it goes up with capacitance.  Below 30 MHz, it will be a bit of guesswork.   

This is what I found based on availability (first number from the table above, second number or numbers are from the list of available parts with some additional data).  Per the above table for capacitor currents, as capacitance and frequency decrease, so does the current handling of the capacitor.  Fortunately, the current demand on the capacitor also decreases with the same two factors.
  1. 11 pF: 12 pF (max current at 10 meters, 0.7 Arms, goes down to 85 mArms at 80 meter)
  2. 21 pF: 22 pF (max current at 10 meters, 1.3 Arms, goes down to 170 mArms at 80 meter)
  3. 43 pF: 43 pF (2.5 Arms at 10 meters, goes down to 340 mArms at 80 meters)
  4. 85 pF: 2 x 43 pF = 86 pF (2.3 Arms per capacitor at 10 meter, 340 mArms per capacitor at 80 meter)
  5. 171 pF: 180 pF (6.4 A rms)
  6. 341 pF: 180 pF + 150 pF = 330 pF (3.8 Arms to 180 pF & 3.2 Arms to 150 PF)
  7. 682 pF: 3 x 180 pF + 150 pF = 690 pF (safe with four capacitors sharing 6.5 Arms)
  8. 1,364 pF: 7 x 180 pF + 150 pF = 1,410 pF (safe with eight capacitors sharing 6.6 Arms)

Inductor Design and Core Selection

Now on to inductors.  I do my work on Macs and Mini Ring calculator only runs on Windows, so I had to figure something else out.  Chapter One of the RF Circuit Design book by Chris Bowick came to the rescue (this book is available online as a pdf download).  For air core solenoid inductors (to minimize losses), the formula is:
\begin{equation}L= \frac {0.394 r ^{2} N ^{2}}{9r+10l}\end{equation}
Where:
r = the coil radius in cm
l = the coil length in cm
L= the inductance in micro Henries
Subject to the condition that:
\begin{equation}l > 0.67r\end{equation}
Solving the above equation for N we have:
\begin{equation}N=\frac {1}{r}\sqrt {\frac {L(9r+10l)}{0.394}}\end{equation}
Here is the procedure that I used to arrive at the solution using a spreadsheet:
  1. Set l = r and calculate turns from the above formula
  2. Independently calculate coil length that might be different than l (I used a packing factor of 1.2 to allow for a bit of loose winding).
  3. Use goal seek to set the number of turns using K6JCA's design as a rough objective
  4. Replace the value of l with the computed value (rounded) of the coil length
  5. Redo goal seek to recompute r for the same number of turns.
  6. All the time, have a check cell testing for meeting the length - radius relationship stated above
The solution for the lower value inductors was straight forward.  It took some experimentation with different number of turns to arrive at what I think is a reasonable radius, length and number of turns.

Wire diameter has a large impact on inductor geometry and it is driven by skin effect.  This is how I approached it.

Also from the RF Circuit Design book, I have a table of magnet wire diameters coated and bare and resistance per thousand ft.  With a little bit of arithmetic, I calculated the resistivity in Ohms-Meter.
The formula for skin depth in a copper conductor is:
\begin{equation}\delta = \frac {0.066}{\sqrt{f}}\end{equation}
And the resistance of the wire at frequency is:
\begin{equation}R=\frac {l}{\sigma (2\pi a \delta + \pi \delta ^{2})}=\frac {lr}{2\pi a \delta + \pi \delta ^{2}}\end{equation}
where:
l = length of wire in meters
r = resistivity (1/sigma) in Ohms - meter
sigma = conductivity in Siemens/meter
a = radius of the wire in meters
delta = skin depth in meters

Jeff, K6JCA has already done the work and decided that inductors up to 800 nH can be practically wound with air core.  So, I will follow his approach.

Table below is the other half of the simulator output for the inductor voltages.  There is an interplay between voltage and frequency as they impact current and skin effect for calculating power.  So, I ended up building a spreadsheet table for inductors up to 800 nH to find the combinations that yield maximum power dissipation.  It is after the inductor voltage table.

For wire gauge, I ran a number of different scenarios through the spreadsheet and eventually decided on 12 AWG magnet wire.  In some cases, 14 AWG dissipated over 2 watts and I have no analytical way of knowing if that is a reasonable power level.  Another reason is that K6JCA had used 12 AWG and that made it more of a safe decision. 

Peak Inductor Voltage (V)

Ind Current6,400 nH3,200 nH1,600 nH800 nH400 nH200 nH100 nH50 nH25 nH
160m L8.84302911598040201052
160m H8.84473141768944221163
80m L8.8467426285155783919105
80m H8.80447314176894422116
40m L8.8046742628515578391910
40m H8.8044843229416181412010
20m L8.800467426285155783919
20m H8.800460428290158804020
17m L8.80004573411961005025
17m H8.80004603411981015025
15m L8.80004733732251175829
15m H8.80004703762291195930
12m L8.80004734042591386935
12m H8.80004754052601386935
10m L8.80004674252851557839
10m H8.80004454352971648241
6m L8.8000047540526013869
6m H8.8000046842027714975
Max8.8 467 467 467 475 435 297 164 82 41

And as it can be seen in the table below, the maximum power happens at different bands for each inductor.

Air Core Inductor Wire Loss (W)

Band800 nH400 nH200 nH100 nH50 nH 25 nH
80m L1.651.080.660.400.290.18
80m H1.741.150.680.440.290.21
40m L1.971.510.930.600.370.25
40m H1.961.530.940.620.390.24
20m L1.551.811.300.840.560.32
20m H1.511.801.300.860.560.35
17m L1.221.761.410.950.620.38
17m H1.231.751.430.960.620.38
15m L1.041.681.491.030.670.41
15m H1.001.661.491.040.670.43
12m L0.811.531.531.120.730.46
12m H0.811.531.531.110.730.46
10m L0.661.421.551.180.790.48
10m H0.551.361.541.210.790.49
6m L-0.741.311.391.030.63
6m H-0.641.261.411.070.67
Max power1.971.811.551.411.070.67


This is the final air core inductor design with 12 AWG wire and winding factor of 1.2
 
25 nH50 nH100 nH200 nH400 nH800 nH
Coil Diameter (mm)7.38.19.512.412.813.2
Coil Length (mm)5.17.610.212.720.325.4
Turns2345812

...and here they are. 


As you can see, they are a bit different than the above table.  During testing, I had to play with them to get them closer to the desired values.  I will discuss the test data in a separate page.

I also designed the 1,600 nH and 3,200 inductors as air core solenoids.  They ended up being quite large.  The first one came out as 3/4" x 1 5/8" and the second one as 7/8" x 2".  So, like K6JCA, I will try toroids.  As a side note, the reason I have the air core coil dimensions in millimeters is because it is much easier to use calipers using 0.1 mm increments, but to get a sense of how big something is, inches seem to be more useful (at least for an American).

So, I go back to the RF Circuit Design book and also use the Micrometals online inductor designer and analysis tools.  Powdered iron is much more suitable for high power RF applications (see page 13 of the book).   Figure 1-26 shows what material is suitable for what frequency ranges.  These two inductors come into play in the 80 to 20 meter bands (see the inductor voltage table above).  That is in the 3.5 MHz to 14.35 MHz.  From figure 1-26 in the RF Circuit Design book we see that materials 3, 15, and 1 don't cover high enough frequencies and materials 10, 12, and 0 don't cover low enough frequencies.  That leaves 2 and 6 material.  From the graphs in the book, the recommended frequency range for the 6 material is in the 10 - 50 MHz range.  The recommended frequency range for 2 material is 2-30 MHz.  So, 2 material is the material of choice.

The formula for the number of turns from the RF design book is:
\begin{equation}N = 100 \times \sqrt {\frac {L}{A _{L}}}\end{equation}
Where N is the number of turns and L is inductance in micro Henries.
Important to note that Amidon publishes its Al values in micro Henries per 100 turns squared while Micrometals publishes them in nano Henries per turns squared.  So, while using the Micrometals data, drop the 100 in the formula and use nano Henries.

The other limiting factor is the maximum temperature rise.  Mini Ring  calculator has published its formulas online and they are the same as the formulas on the Micrometals iron powder core data sheets.  Micrometals includes the parameters for these formulas on the data sheet, but I did not find what numbers Mini Ring calculator inputs into their formulas.  I ran a set of numbers through the Micrometals online inductor analyzer and also with formulas on a spreadsheet and compared them to the Mini Ring calculator data that Jeff, K6JCA published in his blog.  They are vary different.  I will have to find why at some point, but for now, I will use the Micrometals numbers since they have an Amazon online store and the parts are easy to buy.

I worked my way through various sizes of the 2 material.  T157-2 has total loss of over 7 watts and core temperature rise of 55 degrees.  In a 40 degree environment, that is a bit too much.  So, on to the next bigger and available size.  T200-2 is also available on Amazon at a reasonable price and with acceptable performance.  That is the solution.

L (uH)3.161.63
f (MHz)3.53.5
Irms (A)4.285.73
N (turns)1611.5
Delta T (deg C)4041
Core Loss (W)5.65.1
Wire loss (W)1.62.1
Total loss (W)7.27.2
Wire length (cm)55.819.1

Next step is to build and evaluate the inductors and here they are.  Test data including derived equivalent shunt capacitance in a separate page (this page is already too long).