gauge-lowAutomated Impedance Matching

Miguel Salvacion and William Gao, Carnegie Mellon University

Hardware Specifications

Metric
Value

Cost

$636.65

Approximate Build Time

8 hours

Enclosure Dimensions

195 mm x 185 mm x 80 mm

Maximum Forward Power

100 W

Minimum Operating Pressure

Sustained plasma at 5.40E-3 hPa in argon

Stabilized Performance

~1.2 VSWR

Match Speed From Startup

~5 seconds

VSWR Sensing Noise

±0.001

circle-info

Disclaimer: Note that some real-life images of the build may differ from the finalized BOM and design files because of improvements made after integration.

Preface

This project is an automated impedance-matching network designed specifically for RF sputtering. When generating plasma in a sputtering chamber, the chamber impedance constantly fluctuates. This leads to high reflected power, measured as VSWR, which can reduce efficiency or extinguish the plasma.

Instead of relying on an expensive commercial auto-tuner, this tool dynamically matches the impedance of the sputtering chamber. It intercepts the forward and reflected power signals from an off-the-shelf VSWR meter. A Teensy 4.1 microcontroller processes these signals, calculates the gradient, and drives stepper motors. These motors tune variable capacitors in a T-network to minimize reflected power. The system features a custom PCB, active cooling, and a local GUI with an OLED screen and rotary encoder for monitoring and control.

Box assembly and PCB
Working prototype

Design Decisions and Rationale

RF Components and T-Network

We used air-variable capacitors rated for 500 V. This provides the necessary safety margin for the maximum peak-to-peak voltage of 200 V and helps mitigate arcing. This design also includes one large manually tunable capacitor. It is set during initial setup to bring the T-network tuning range into the correct region for our sputtering chamber.

Finding an off-the-shelf inductor that matched our exact 2 μH specification was difficult, so we fabricated a custom coil using 16-AWG magnet wire wrapped around an acetal copolymer rod. This core keeps the turns even during manufacturing, and the 16-AWG wire is stiff enough to prevent shifting under high power.

T-tuner schematic

Electro-Mechanical Integration

We chose to use 0.9° stepper motors, as they are far more resistant to RF noise and provide much tighter physical resolution than servos. Regular hobby servos also suffer from significant backlash and low resolution. To maximize our motors, the motor drivers on the PCB are configured for 1/64 microstepping, enabling more precise gradient adjustments.

Control Electronics

VSWR Sensing

In order to calculate the gradient and match the impedance of the sputtering chamber, the system must be able to very accurately measure the VSWR of the system, which is a measure of the amount of power being reflected from the chamber, or the power lost. Our design was able to achieve a noise of about 0.001 VSWR.

COTS VSWR meter reverse engineering

A COTS Surecom SW-112 VSWR meter was reverse-engineered to measure VSWR. The important component in analog VSWR meters is the toroidal sensing line, which, after rectifying diodes and filtering, produces forward and reverse power lines. In the SW-112, the lines had a range of 0-10 V at 100 watts.

Buffering and Digitization

In order for the automated matcher to calculate the gradient, it must very accurately digitize the analog forward and reverse voltage outputs of the VSWR. The VSWR lines are extremely sensitive to voltage sag, with about a 1 MΩ output impedance. Therefore, a low current draw buffer like the TLV2462CP was chosen, after which the voltage was divided down for the Teensy 4.1 to read.

Control Algorithm

We used an empirical Coordinate Descent optimization algorithm to optimize the VSWR. We calculate the gradient by having the motor take a step, measure the cost, calculate the finite difference gradient, and use it to scale the next step.

Supersampling and Cost Function

To reduce noise, most of which consists of the 13.56 MHz sputtering power, we average over N = 300 samples for the forward and reverse voltages. We then use the forward and reverse voltages to calculate VSWR, and then use VSWR to calculate a squared loss function.

N=300Vˉfwd=1Ni=1NVfwd,iVˉrev=1Ni=1NVrev,iVSWR(θ)=Vˉfwd+VˉrevVˉfwdVˉrevJ(θ)=(VSWR(θ)1)2\begin{aligned} N &= 300 \\ \bar{V}_{fwd} &= \frac{1}{N} \sum_{i=1}^{N} V_{fwd,i} \\ \bar{V}_{rev} &= \frac{1}{N} \sum_{i=1}^{N} V_{rev,i} \\ \mathrm{VSWR}(\theta) &= \frac{\bar{V}_{fwd} + \bar{V}_{rev}}{\bar{V}_{fwd} - \bar{V}_{rev}} \\ J(\theta) &= (\mathrm{VSWR}(\theta) - 1)^2 \end{aligned}

Finite-Difference Gradient Estimation

Using the loss calculated, we calculate the difference in loss from the current position to the last position to calculate the gradient. Here, we actually calculate the negative gradient for ease of calculation.

ΔJ=J(θinitial)J(θnew)g~=ΔJΔθactualJ\begin{aligned} \Delta J &= J(\theta_{\text{initial}}) - J(\theta_{\text{new}}) \\ \tilde{g} &= \frac{\Delta J}{\Delta \theta_{\text{actual}}} \approx -\nabla J \end{aligned}

Step Size Clamping Safeguards

To ensure that the Finite-Difference approximation holds and the algorithm converges, we place an upper limit on the step size to preserve the small step approximation and provide a lower limit to combat noise.

α=0.025Δθmin=π700Δθmax=π36Δθcmd=αg~Δθclamped=sgn(Δθcmd)max(Δθmin,min(Δθcmd,Δθmax))\begin{aligned} \alpha &= 0.025 \\ \Delta\theta_{\min} &= \frac{\pi}{700} \\ \Delta\theta_{\max} &= \frac{\pi}{36} \\ \Delta\theta_{\text{cmd}} &= \alpha \cdot \tilde{g} \\ \Delta\theta_{\text{clamped}} &= \operatorname{sgn}(\Delta\theta_{\text{cmd}}) \cdot \max \left( \Delta\theta_{\min}, \min \left( |\Delta\theta_{\text{cmd}}|, \Delta\theta_{\max} \right) \right) \end{aligned}

Bill of Materials

circle-exclamation
chevron-rightAssembly Subsystemhashtag
Name
Quantity
Price/Unit
Link
Total Price

Aluminum Enclosure

1

$32.99

$32.99

PETG Filament

1

$20.00

$20.00

SO239 Coax Bulkheads

1

$9.99

$9.99

M3 Bolts, Nuts, and Washers

1

$10.00

$10.00

M3 Heat-Set Inserts

1

$13.00

$13.00

100W Dummy Load

1

$41.20

$41.20

chevron-rightNetwork Subsystemhashtag
Name
Quantity
Price/Unit
Link
Total Price

VSWR Meter

1

$33.00

$33.00

RF Shielded Wire

1

$23.99

$23.99

Acetal Copolymer Rod

1

$8.99

$8.99

Magnet Wire

1

$29.98

$29.98

Adjustable Capacitor 10-250pf

2

$69.00

$138.00

Adjustable Capacitor 20-500pf

1

(Harvested from broken tuner)

Heat Shrink Wire Connectors

1

$9.99

$9.99

Spliced Wire Connectors

1

$9.98

$9.98

chevron-rightElectronics Subsystemhashtag
Name
Quantity
Price/Unit
Link
Total Price

PCB

1

$105.53

JLCPCB

$105.53

NEMA 17 Stepper Motors

2

$25.99

$25.99

Teensy 4.1

1

$23.99

$23.99

92mm Cooling Fan

1

$18.95

$18.95

Panel mount power jack

1

$9.99

$9.99

5V, 3A DC Barrel Jack Supply

1

$8.00

$16.00

OLED screen

1

16.99

16.99

EC11 Rotary Encoder

1

$9.99

$9.99

3.5mm panel mount jack

1

$5.99

$5.99

3.5mm cable

1

$5.24

$5.24

chevron-rightPCB Through-holehashtag
Name
Quantity
Price/Unit
Link
Total Price

100uF Capacitors

10

$0.230

$2.30

395021002 Connector

5

$0.560

$2.80

JST-4-PTH-VERT Connector

5

$0.160

$0.800

TLV2372IP Op-Amp

3

$1.870

$5.610

Male header pins

10

$0.242

$2.420

Female header pins

10

$0.567

$5.670

chevron-rightPCB Surface-mounthashtag
Name
Quantity
Price/Unit
Link
Total Price

22μ\muF Capacitor (0805)

10

$0.0316

$0.32

330nF Capacitor (0805)

20

$0.0129

$0.26

24V Zener Diode

10

$0.0260

$0.26

SS34 Schottky Diode

5

$0.0295

$0.15

22μ\muH Inductor

7

$0.0875

$0.61

PC817 Optocoupler

5

$0.0275

$0.14

470Ω Resistor (0805)

5

$0.0023

$0.01

2.2kΩ Resistor (1206)

15

$0.0038

$0.06

1kΩ Resistor (0805)

5

$0.0025

$0.01

2.2kΩ Resistor (0805)

5

$0.0022

$0.01

62kΩ Resistor (0805)

20

$0.0025

$0.05

10kΩ Resistor (0805)

5

$0.0024

$0.01

3.6kΩ Resistor (1206)

15

$0.0035

$0.05

10kΩ Resistor (1206)

10

$0.0046

$0.05

P-Channel MOSFET

5

$0.3091

$1.55

L7812 Voltage Regulator

5

$0.2565

$1.28

MT3608 Boost Converter

6

$0.0785

$0.47

Total Cost: $636.65

Design Files

Enclosure CAD
Tuner Firmware

Build Instructions

Tools Needed

  • Soldering iron and solder

  • Screwdrivers and hex keys

  • Drill/drill press

  • Wire strippers

  • 3D printer

  • LCR meter

  • Multimeter

VSWR Meter Modification

1

Carefully disassemble the VSWR meter housing.

Disassemble VSWR housing
2

Tap into the internal signal lines before they reach the original display by soldering wires to pads labeled F, G, and R.

Tapping into internal lines
3

Feed cables out of the VSWR meter through a screw hole.

Feeding wires through screw hole
4

Reassemble the VSWR meter.

Final VSWR meter modification

Outer Box Assembly

1

Drill mounting and cooling holes in the aluminum housing.

Front drilling/cooling holes
Back drilling holes
Top drilling/cooling holes
2

3D print the main electronics housing, its associated back mounting plate, and the two motor spacers from any standard filament; we used PLA.

Main electronics housing
Back mounting plate
Motor spacer
3

Attach the back mounting plate and motor spacers using heat-set inserts for easy maintenance.

4

Attach the stepper motors to the box assembly with the motor spacers.

Motor mounting with spacers
5

Install coax connectors onto the back of the case.

6

Install the fan (and optionally the VSWR meter) onto the box lid.

Inductor Fabrication

To achieve the desired inductance of 2 μH, we used the following coil parameters:

Number of turns

6

Length

2”

Spacing

0.15”

1

Drill a 1/16” hole in the acetal copolymer rod, which should be just large enough for your magnet wire to feed through. This will serve as an anchor point for the wire.

2

Feed one end of the wire through the hole and leave a ~3” lead.

3

Insert the acetal copolymer rod into the drill chuck with the wire-inserted end closest to the chuck, as shown in the image below.

4

Run the drill and use your fingers to tightly guide the wire so that it forms a coil around the rod for the desired number of turns with the desired spacing.

Coiling wire with drill
5

Drill a hole just after the last turn, feed the wire through it, and cut it with another 3” lead.

6

Use a saw to cut the acetal copolymer rod just before the first anchor point and after the second.

circle-exclamation
7

Use a razor to strip the enamel insulating coating off each end of the wire.

circle-exclamation
Wire after stripping
8

Use an LCR meter to ensure the coil reaches the expected inductance.

Inner Box Assembly

1

3D print the two different capacitor mounts, two motor couplers, and the inductor mount out of a thermally conductive insulating material.

Capacitor mount 1
Capacitor mount 2
Coupler
Inductor mount
2

Attach the two smaller capacitors to the stepper motors using the motor couplers and heat-set inserts.

Motor to capacitor coupling
3

Mount the two smaller capacitors and the inductor into the box.

Smaller capacitors and inductor mounts
4

Mount the larger tunable capacitor.

circle-info

We obtained this capacitor from a broken tuner, so your mounting method may differ.

Final inner assembly
5

Connect all the capacitors and inductors with RF-shielded wire following the diagram below.

triangle-exclamation
T-Tuner schematic

PCB Assembly and Integration

1

Order the PCB from a manufacturer such as JLCPCB with standard settings.

circle-info

We recommend having your PCB manufacturer assemble the surface-mount components for you, but it is also an option to solder them yourself. If you do solder them yourself, we recommend buying a stencil.

2

Solder the op-amps, screw terminals, and JST connectors to the custom PCB.

3

Solder female header pins for the Teensy 4.1 and motor drivers.

4

Plug in the Teensy 4.1 and motor drivers, ensuring the correct orientation.

5
Final 3D PCB design

Electronics Installation

1

Mount the PCB onto the back mounting plate using standoffs.

PCB mounting
2

Install the OLED screen, rotary encoder, power jack, and 3.5mm jack onto the front panel.

OLED and rotary encoder installation
3

Route the OLED, rotary encoder, power, and aux lines to the screw and JST connectors on the main PCB.

4

Route the I2C, VSWR, motor, and fan cables out of the front panel.

5

Install the front panel onto the back mounting plate.

6

Plug in the fan, VSWR meter, and motor cables.

Final Integration

1

Connect the RF power supply, box assembly, VSWR meter, and sputtering chamber with coaxial cables following the diagram below.

Operations and User Interface

To operate the machine, plug in the power cable and the machine will start matching automatically. You can then control the GUI by rotating and pressing the rotary encoder.

The GUI allows you to enable or disable transmission, switch between automated and manual matching, and view advanced telemetry for debugging.

GUI main screen
triangle-exclamation
triangle-exclamation

Testing Setup

The repo includes two Python scripts that automate data collection during testing. Running live.py displays live graphs of VSWR, motor positions, and match state. It also records the data to a CSV file, which you can visualize with plot.py. That script generates Matplotlib plots, an interactive Plotly chart, and Mermaid xychart code. See the GitHub repository for details.

Validation and Characterization

We brought the chamber down to a vacuum by following the SOP for the sputtering chamber, achieving 2.50E-1 hPa at 90 SCCM argon flow. At this pressure, we struck a plasma, then lowered the argon flow to 15 SCCM, achieving 5.40E-3 hPa pressure. We were able to continuously sputter for 1 hour under these conditions until the plasma extinguished. The cause of the plasma going out could be a brownout of the vacuum pump or a piece of aluminum debris from machining shorting the capacitor plates.

Theoretical VSWR Function

The theoretical VSWR function of the system was calculated to validate the convex shape of the optimization range. It uses assumed values for the impedance of the chamber, as well as the T-tuner values. It plots VSWR as a function of the motor positions.

RF System and Environment Setup

We define variables representing the impedance of the transmission line Z0Z_0, and the operating frequency ff.

Z0=50 OhmsZ_0=50\text{ Ohms}
f=13.56106Hzf=13.56\cdot10^6\text{Hz}
ω=2πf\omega=2\pi f

We also define the working limits of our capacitors, as well as how capacitance changes with motor position.

Cmin=111012 F,Xmin=1ωCminC_{\min} = 11 \cdot 10^{-12} \text{ F}, \quad X_{\min} = -\frac{1}{\omega \cdot C_{\min}}
Cmax=2601012 F,Xmax=1ωCmaxC_{\max} = 260 \cdot 10^{-12} \text{ F}, \quad X_{\max} = -\frac{1}{\omega \cdot C_{\max}}

We also define estimated chamber characteristics during sputtering.

R=3.4(Load Resistance)R = 3.4 \quad \text{(Load Resistance)}
X=5.2(Load Reactance)X = -5.2 \quad \text{(Load Reactance)}
Ls=50(Fixed Series Inductance)L_s = 50 \quad \text{(Fixed Series Inductance)}

Equivalent Impedance Transformation

We combine the T-tuner with the impedance of the series tuning capacitor to find the equivalent impedance of the chamber and series tuning capacitor lumped load.

D(y)=R2+(X+y+Ls)2D(y) = R^2 + (X + y + L_s)^2
Rp(y)=Ls2RD(y)R_p(y) = \frac{L_s^2 R}{D(y)}
Xp(y)=LsR2+Ls(X+y)(X+y+Ls)D(y)X_p(y) = \frac{L_s R^2 + L_s(X + y)(X + y + L_s)}{D(y)}

VSWR and Reflection Coefficient Calculation

The shunt tuning capacitor value is then used to calculate the reflection coefficient, and therefore the VSWR.

G(x,y)=(Rp(y)Z0)2+(Xp(y)+x)2(Rp(y)+Z0)2+(Xp(y)+x)2G(x, y) = \sqrt{\frac{(R_p(y) - Z_0)^2 + (X_p(y) + x)^2}{(R_p(y) + Z_0)^2 + (X_p(y) + x)^2}}
V(x,y)=1+G(x,y)1G(x,y)bounded by{Xminx,yXmax}V(x, y) = \frac{1 + G(x, y)}{1 - G(x, y)} \quad \text{bounded by} \quad \{X_{\min} \leq x, y \leq X_{\max}\}
VSWR over motor position visualized

Future Work

In the future, we will integrate this project with the Automated Pressure Control System, providing useful information such as when we are transmitting.

We also want to fully integrate the VSWR meter into the box assembly to reduce the assembly's footprint and the number of coaxial cables needed.

Appendix

chevron-rightInitial Testinghashtag

We conducted a series of four runs to test how low we could set the gas flow until the plasma went out.

Power (W)
# of samples
Gradient scale
Gas Flow (SCCM)
Pressure (hPa)
VSWR
Time sustained (min)

100

300

0.025

90

2.50E-01

N/A, transitioned too fast

0

100

300

0.025

30

1.40E-02

N/A, transitioned too fast

0

100

300

0.025

15

5.40E-03

N/A, transitioned too fast

0

100

300

0.025

14

4.00E-03

1.1

0

100

300

0.025

30

1.40E-02

1.30

2

100

300

0.025

15

4.60E-03

1.11

8 min, then out

Power (W)
# of samples
Gradient scale
Gas Flow (SCCM)
Pressure (hPa)
VSWR
Time sustained (min)

100

300

0.025

90

2.50E-01

1.15

3

100

300

0.025

15

5.40E-03

1.15

2

100

300

0.025

14

4.60E-03

1.50

Instantly out

Power (W)
# of samples
Gradient scale
Gas Flow (SCCM)
Pressure (hPa)
VSWR
Time sustained (min)

100

300

0.05

90

2.50E-01

1.20

10

100

300

0.05

30

1.40E-02

1.20

4

100

300

0.05

15

5.40E-03

1.15

7

100

300

0.05

14

4.60E-03

1.15

1

100

300

0.05

13

4.00E-03

1.60

Instantly out

Power (W)
# of samples
Gradient scale
Gas Flow (SCCM)
Pressure (hPa)
VSWR
Time sustained (min)

100

300

0.025

15

4.60E-03

1.10

5 min, then out

All CSV files can be visualized using the plot.py file provided in the GitHub repository.

file-download
4MB
First test, manually stopped after 35 minutes
file-download
1MB
Second test, plasma went out after 16 minutes
file-download
7MB
Third test, plasma went out after 59 minutes. Longer runtime due to more stable motor control.

Last updated