-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathCoupledResonators.html
More file actions
187 lines (174 loc) · 11.1 KB
/
Copy pathCoupledResonators.html
File metadata and controls
187 lines (174 loc) · 11.1 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
<!DOCTYPE html>
<html lang="en">
<head>
<script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-4211938844076974"
crossorigin="anonymous"></script>
<script async src="https://www.googletagmanager.com/gtag/js?id=G-6R4JGG0586"></script>
<script>window.dataLayer=window.dataLayer||[];function gtag(){dataLayer.push(arguments);}gtag('js',new Date());gtag('config','G-6R4JGG0586');</script>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Coupled LC Resonators Calculator — Bandwidth & Mode Splitting | RF Toolbox</title>
<meta name="description" content="Calculate frequency splitting, bandwidth, and coupling regime for two magnetically coupled LC resonators. Enter L, C, Q, and coupling coefficient k or mutual inductance M.">
<meta name="robots" content="index, follow">
<link rel="canonical" href="https://rftoolbox.ca/CoupledResonators.html">
<meta property="og:title" content="Coupled Resonators Calculator | RF Toolbox">
<meta property="og:description" content="Frequency splitting, bandwidth, and coupling regime for two magnetically coupled LC tanks.">
<meta property="og:url" content="https://rftoolbox.ca/CoupledResonators.html">
<meta property="og:type" content="website">
<meta property="og:site_name" content="RF Toolbox">
<script src="MathJax.js"></script>
<script id="MathJax-script" async src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-chtml.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/mathjs/12.3.2/math.js" integrity="sha512-L6TOvunyzSyFBxlyKEYgAmofV+iAI+J9t3M9lc4smm/FbV8HlzKD+vflXUGjx8puTKzH7o4PCWsR4jDwlHXAHg==" crossorigin="anonymous" referrerpolicy="no-referrer"></script>
<script src="https://code.jquery.com/jquery-1.11.3.min.js"></script>
<link rel="stylesheet" href="style.css">
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "SoftwareApplication",
"name": "Coupled LC Resonators Calculator",
"description": "Frequency splitting, bandwidth, and coupling regime for two magnetically coupled LC resonators.",
"url": "https://rftoolbox.ca/CoupledResonators.html",
"applicationCategory": "EngineeringApplication",
"operatingSystem": "Web",
"offers": {"@type": "Offer", "price": "0", "priceCurrency": "USD"},
"publisher": {"@type": "Organization", "name": "RF Toolbox", "url": "https://rftoolbox.ca"}
}
</script>
</head>
<body class="no-nav">
<header><h2><a href="index.html" style="color:white;text-decoration:none;">RF Toolbox</a></h2></header>
<section>
<article>
<div class="breadcrumb"><a href="index.html">⌂ Home</a></div>
<h3>Coupled LC Resonators</h3>
<div class="tool-concept">
<p>Two identical LC tanks coupled by mutual inductance M split into two resonant modes: an even mode (lower frequency f₋) and an odd mode (upper frequency f₊). The coupling coefficient k = M/L determines the mode splitting and passband bandwidth. Critical coupling (k = 1/Q) maximises the transfer response with a flat passband.</p>
<details style="margin-top:8px;">
<summary style="cursor:pointer;font-size:11px;color:#AA77FF;font-weight:bold;letter-spacing:0.05em;text-transform:uppercase;user-select:none;">Equations & Parameters ▸</summary>
<div style="background:#f0eeff;border-left:3px solid #AA77FF;padding:8px 12px 6px;border-radius:0 4px 4px 0;margin:6px 0 10px;font-size:12.5px;line-height:2.2;overflow-x:auto;">
\(f_{\pm} = \dfrac{f_0}{\sqrt{1\mp k}} \quad \text{BW} \approx k\cdot f_0 \quad k_{\rm crit} = \dfrac{1}{Q}\)
</div>
<table style="font-size:12px;border-collapse:collapse;margin-top:6px;">
<tr><td style="padding:3px 14px 3px 0;font-weight:bold;color:#5533aa;">k</td><td>Coupling coefficient (dimensionless, 0 < k < 1). Enter directly or derive from M.</td></tr>
<tr><td style="padding:3px 14px 3px 0;font-weight:bold;color:#5533aa;">M</td><td>Mutual inductance between the two coils. k = M/L for identical resonators.</td></tr>
<tr><td style="padding:3px 14px 3px 0;font-weight:bold;color:#5533aa;">Q</td><td>Unloaded quality factor of each resonator; set R = 0 for lossless (Q → ∞).</td></tr>
<tr><td style="padding:3px 14px 3px 0;font-weight:bold;color:#5533aa;">k<sub>crit</sub></td><td>Critical coupling: flat-top passband at k = k_crit = 1/Q.</td></tr>
</table>
<div style="margin-top:8px;padding-top:6px;border-top:1px solid #e0d8ff;font-size:11.5px;color:#666;"><span style="font-weight:bold;color:#AA77FF;">Reference: </span>G. Matthaei et al., <em>Microwave Filters, Impedance-Matching Networks, and Coupling Structures</em> (Artech House, 1980), §8</div>
</details>
</div>
<div class="sec-lbl">Resonator Parameters</div>
<div class="inp-grid">
<div class="inp-row">
<label>Inductance, <span class="var">L</span></label>
<div class="inp-inline">
<input type="text" id="cr-L" placeholder="value" data-tip="Inductance of each resonator (identical tanks assumed).">
<select id="cr-L-unit">
<option value="1e-9">nH</option>
<option value="1e-6" selected>µH</option>
<option value="1e-3">mH</option>
</select>
</div>
</div>
<div class="inp-row">
<label>Capacitance, <span class="var">C</span></label>
<div class="inp-inline">
<input type="text" id="cr-C" placeholder="value" data-tip="Capacitance of each resonator.">
<select id="cr-C-unit">
<option value="1e-12" selected>pF</option>
<option value="1e-9">nF</option>
<option value="1e-6">µF</option>
</select>
</div>
</div>
<div class="inp-row">
<label>Series resistance, <span class="var">R</span> <span style="color:#888;font-size:11px;">(loss, optional)</span></label>
<div class="inp-inline">
<input type="text" id="cr-R" placeholder="0 = lossless" data-tip="Series resistance of each inductor coil. Set to 0 or leave blank for a lossless resonator.">
<span style="padding:0 8px;line-height:32px;color:#888;font-size:13px;">Ω</span>
</div>
</div>
</div>
<div class="sec-lbl">Coupling (enter k <em>or</em> M)</div>
<div class="inp-grid">
<div class="inp-row">
<label>Coupling coefficient, <span class="var">k</span></label>
<div class="inp-inline">
<input type="text" id="cr-k" placeholder="e.g. 0.05" data-tip="Dimensionless coupling coefficient (0 < k < 1). Typical bandpass filter: 0.01–0.1.">
</div>
</div>
<div class="inp-row">
<label>Mutual inductance, <span class="var">M</span> <span style="color:#888;font-size:11px;">(alternative)</span></label>
<div class="inp-inline">
<input type="text" id="cr-M" placeholder="or enter M" data-tip="Mutual inductance between the two coils. Used to compute k = M/L if k is not given.">
<select id="cr-M-unit">
<option value="1e-9">nH</option>
<option value="1e-6" selected>µH</option>
<option value="1e-3">mH</option>
</select>
</div>
</div>
</div>
<div style="display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin:12px 0 6px;">
<button class="calc-btn" id="cr-btn">Calculate</button>
<button class="example-btn" onclick="loadExample({'cr-L':'10','cr-L-unit':'1e-6','cr-C':'25','cr-C-unit':'1e-12','cr-R':'5','cr-k':'0.05'})" title="10 µH, 25 pF, R=5 Ω, k=0.05 — slightly over-coupled">IF transformer (10.7 MHz)</button>
<button class="example-btn" onclick="loadExample({'cr-L':'1','cr-L-unit':'1e-6','cr-C':'1','cr-C-unit':'1e-12','cr-R':'2','cr-k':'0.02'})" title="1 µH, 1 pF, R=2 Ω, k=0.02">UHF resonator pair</button>
<button class="example-btn" onclick="loadExample({'cr-L':'100','cr-L-unit':'1e-6','cr-C':'100','cr-C-unit':'1e-12','cr-R':'0','cr-k':'0.1'})" title="Lossless, k=0.1">Lossless k=0.1</button>
</div>
<div id="cr-error" class="err-msg" style="color:#c0392b;font-size:12px;margin-bottom:6px;min-height:16px;"></div>
<div class="sec-lbl">Results</div>
<div id="cr-results" class="res-grid"></div>
<div class="sec-lbl">Diagram</div>
<div class="schematic-box"><div id="tool-diagram"></div></div>
<script>
function drawDiagram(r) {
var W = 480, H = 160;
var s = '<svg viewBox="0 0 ' + W + ' ' + H + '" width="' + W + '" height="' + H + '" xmlns="http://www.w3.org/2000/svg" style="font-family:monospace;max-width:100%;">';
s += '<rect width="' + W + '" height="' + H + '" fill="#faf9ff" rx="4"/>';
// Draw two tank circuits separated by coupling symbol
// Left tank: L1 + C1 parallel
var lx1 = 90, lx2 = 370, cy = 70;
function drawTank(cx) {
// Inductor coil (left side)
var lx = cx - 22, ltop = cy - 30, lbot = cy + 30;
var arcR = 7;
var arcPath = 'M' + lx + ',' + lbot;
for (var i = 0; i < 3; i++) {
var ay = lbot - i * 2*arcR - arcR;
arcPath += ' A' + arcR + ',' + arcR + ' 0 0,1 ' + lx + ',' + (ay - arcR);
}
arcPath += ' L' + lx + ',' + ltop;
s += '<path d="' + arcPath + '" fill="none" stroke="#5533aa" stroke-width="2" stroke-linecap="round"/>';
// Capacitor (right side)
var rx = cx + 22;
s += '<line x1="' + rx + '" y1="' + ltop + '" x2="' + rx + '" y2="' + (cy-8) + '" stroke="#5533aa" stroke-width="2"/>';
s += '<line x1="' + (rx-12) + '" y1="' + (cy-8) + '" x2="' + (rx+12) + '" y2="' + (cy-8) + '" stroke="#5533aa" stroke-width="2.5"/>';
s += '<line x1="' + (rx-12) + '" y1="' + (cy+8) + '" x2="' + (rx+12) + '" y2="' + (cy+8) + '" stroke="#5533aa" stroke-width="2.5"/>';
s += '<line x1="' + rx + '" y1="' + (cy+8) + '" x2="' + rx + '" y2="' + lbot + '" stroke="#5533aa" stroke-width="2"/>';
// Top/bottom wires connecting L and C
s += '<line x1="' + lx + '" y1="' + ltop + '" x2="' + rx + '" y2="' + ltop + '" stroke="#5533aa" stroke-width="2"/>';
s += '<line x1="' + lx + '" y1="' + lbot + '" x2="' + rx + '" y2="' + lbot + '" stroke="#5533aa" stroke-width="2"/>';
}
drawTank(lx1);
drawTank(lx2);
// Coupling M arrow between the two tanks
var mx = (lx1 + lx2) / 2;
s += '<text x="' + mx + '" y="' + (cy + 5) + '" text-anchor="middle" font-size="13" fill="#AA77FF" font-weight="bold">M</text>';
s += '<line x1="' + (mx-18) + '" y1="' + cy + '" x2="' + (lx1+24) + '" y2="' + cy + '" stroke="#AA77FF" stroke-width="1.5" stroke-dasharray="4,3"/>';
s += '<line x1="' + (mx+18) + '" y1="' + cy + '" x2="' + (lx2-24) + '" y2="' + cy + '" stroke="#AA77FF" stroke-width="1.5" stroke-dasharray="4,3"/>';
// Frequency annotations
s += '<text x="' + lx1 + '" y="140" text-anchor="middle" font-size="10" fill="#5533aa">f₀ = ' + engFmt(r.f0,'Hz') + '</text>';
s += '<text x="' + mx + '" y="' + (H-10) + '" text-anchor="middle" font-size="10" fill="#AA77FF">f₋ = ' + engFmt(r.f_minus,'Hz') + ' f₊ = ' + engFmt(r.f_plus,'Hz') + '</text>';
s += '<text x="' + lx2 + '" y="140" text-anchor="middle" font-size="10" fill="#5533aa">k = ' + r.k.toFixed(4) + '</text>';
s += '</svg>';
document.getElementById('tool-diagram').innerHTML = s;
}
</script>
<script src="CoupledResonators.js"></script>
</article>
</section>
<footer><p><a href="index.html">Home</a> · <a href="wiki.html">📖 Wiki</a> · <a href="privacy.html">Privacy</a> · <a href="disclaimer.html">Disclaimer</a></p></footer>
<script src="tool-enhancements.js"></script>
</body>
</html>