Alright guys, bear with me, as this has a few different facets to it.
What I’m trying to do is design an automated impedance-line tuner using the Arduino platform - it’s the language and design system I learned on, and thus one of the most familiar to me.
Essentially, I’m building a large vacuum-tube-based RF amplifier and I want the input and output impedances to be automatically tuned to their proper values. If you’re not familiar with impedance matching, you can read some of what it entails on the Wikipedia page.
I’ll attempt to run through this as fast and as simple as I can, as I know we aren’t all RF engineers:
The filters consist of a two variable capacitors and either a multi-tapped coil or a roller inductor in what’s known as a capacitor-input pi filter. Envision this as an arrangement where two capacitors bridge to ground, with an inductor in the signal path in between.
The variable components will be driven by stepper motors.
For any frequency f, each one of these components has a characteristic impedance depending on their capacitance or inductance for which by their serial-parallel nature will cause the overall source (input) impedance to be “matched” to the load (output) impedance.
These relationships are well-characterized by the individual equations for capacitor and inductor impedance, but it is a lot of work (very painstaking), and depending on the Q of the filter (essentially, how good the filter is at accepting frequencies in the criterion and rejecting those that aren’t), one tuning ratio and set of values will not be true for another frequency.
I’ll lay out the final part of this question in code blocks to help highlight:
frequency f, capacitance C, inductance L , given Zc = 1 / (2 * pi * f * C) and Zl = 2 * pi * f * L, find C1, C2, and L so that: Zo || Zc2 = (Zi || Zc1) + Zl, provided C1, C2, and L exist within the range of their given component, for example: 10 < C1 < 115 11 < C2 < 90 0 < L < 10.5
Final couple of thoughts:
If I haven’t broken it down well enough, let me know and I’ll work y’all through it. Basically, how do I solve an equation for multiple values provided each value is cross-dependent
I know I could use for loops, but the issue with that is that the first thought coming to mind is brute-forcing it (testing all possibilities) and while I’m not opposed to that if need be, I’d prefer a solution with a bit of finesse.
If you’ve gotten to read this, thank you. I know it isn’t an easy question.