diff --git a/C_loop.png b/C_loop.png
new file mode 100644
index 0000000..4af4abb
Binary files /dev/null and b/C_loop.png differ
diff --git a/MultiloopCapacitance.png b/MultiloopCapacitance.png
index f7f9667..737b278 100644
Binary files a/MultiloopCapacitance.png and b/MultiloopCapacitance.png differ
diff --git a/magloop.html b/magloop.html
index 4825b3d..75c68a6 100644
--- a/magloop.html
+++ b/magloop.html
@@ -92,7 +92,7 @@
- L : Inductance in microhenries.
- A : Loop area in square meters or square feet.
- - C : Effective capacitance for multi-turn loops in picofarads.
+ - C : Effective capacitance of the loop in picofarads.
- peri : Perimeter of the main loop in meters or feet.
- c : Distance between windings, measured from the conductor centers in mm or inches.
- cond : Total required conductor length in meters or feet.
@@ -108,6 +108,8 @@
Change history:
+ [21-Sep-21]
+ * Added distributed capacitance calculation and display for the single turn loop.
[19-Sep-21]
* Increased supported conductor diameter to 80 mm. (3.15 inches)
[18-Sep-21]
@@ -157,7 +159,8 @@
var inductance = 0.0;
var area = 0.0; // Loop area in square meters.
var perimeter = 0.0; // Perimeter of a single turn of the main loop
- var multiloop_capacitance = 0.0; // Effective capacitance of a multi-turn loop
+ var loop_capacitance = 0.0; // Effective capacitance of a single or multi-turn loop
+ var srf = 0.0; // Self-resonant frequency SRF
var conductor_length = 0.0; // Total conductor length
var frequencies = [];
@@ -167,13 +170,11 @@
0.1365, 0.475, 1.8, 3.5, 5.0, 7.0, 10.1, 14.0, 18.068, 21.0, 24.89, 28.0, 29.7, 35.0, 40.0, 45.0, 50.0, 52.0, 54.0
];
- // Max frequency is for multi-turn loops:
- var max_freq = calculateSRF();
frequencies = [];
hamFrequencies.forEach(freq => {
const wavelength = 3e8 / (freq * 1e6);
const l = (Math.PI * loop_diameter_slider.value) / wavelength;
- if ((l <= 0.30) && ((freq * 1e6) < max_freq)) {
+ if ((l <= 0.30) && ((freq * 1e6) < srf)) {
frequencies.push(freq);
}
});
@@ -183,7 +184,8 @@
inductance = getInductance();
area = getArea();
perimeter = getPerimeter();
- multiloop_capacitance = (loop_turns_slider.value > 1) ? multiloopCapacitance() : 0.0;
+ loop_capacitance = (loop_turns_slider.value > 1) ? multiloopCapacitance() : (2.69e-12 * perimeter);
+ srf = calculateSRF();
conductor_length = ((((perimeter* loop_turns_slider.value) ** 2.0) + ((loop_spacing_slider.value * conductor_diameter_slider.value * 1e-3 * loop_turns_slider.value) ** 2.0)) ** 0.5);
}
@@ -358,18 +360,17 @@
var l_multiloop_capacitance = 1e-12 * shape_factor * (ctdw(ff, ei, ex) / Math.sqrt(1 - h**2 / loop_diameter_slider.value**2) + ciae(ff, ei, ex)) * loop_diameter_slider.value;
return l_multiloop_capacitance; // in Farads
}
-
+ /*
+ function singleloopCapacitance() {
+ var retval = 2.69 * perimeter;
+ return (retval*1e-12); // in Farads
+ }
+ */
+
function tuningCapacitance(frequency) {
// frequency is in Hertz
const reactance = inductiveReactance(frequency);
- /*
- var multiloop_capacitance = 0.0;
- if(loop_turns_slider.value > 1) {
- // Only compensate for multiloop capacitance when we have more than 1 turn:
- multiloop_capacitance = multiloopCapacitance();
- }
- */
- const capacitance = 1e12 * ((1.0 / (2.0 * Math.PI * frequency * reactance)) - multiloop_capacitance);
+ const capacitance = 1e12 * ((1.0 / (2.0 * Math.PI * frequency * reactance)) - loop_capacitance);
return capacitance; // in picofarads
}
@@ -514,10 +515,9 @@
}
function calculateSRF() {
- const capacitance = (loop_turns_slider.value > 1) ? multiloopCapacitance() : 1e-12; // Assume 1 pF for a single loop. Yes it is wrong, but we just don't want a divide-by-zero error below.
// According to Knight (2016), SRF for a single coil is equivalent to the circumference being equivalent to a half-wave dipole.
const inductance = getInductance();
- return (1.0 / (2.0 * Math.PI * ((inductance * capacitance) ** 0.5)));
+ return (1.0 / (2.0 * Math.PI * ((inductance * loop_capacitance) ** 0.5)));
}
metric_radio.oninput = function() {
@@ -1291,14 +1291,11 @@
sctx.font = normal_font;
// Multi-turn loop, so calculate C and SRF:
- if(loop_turns_slider.value > 1) {
- const L = multiloopCapacitance() * 1e+12;
- const srf = calculateSRF();
- sctx.textAlign = "right";
- sctx.fillText("C = " + L.toFixed(0).toString() + " pF", win_width-8, 18);
- sctx.fillText("SRF = ", win_width-8, win_height * 0.1 + 18);
- sctx.fillText((srf*1e-6).toPrecision(3).toString() + " MHz", win_width-8, win_height * 0.1 + 33);
- }
+ const L = loop_capacitance * 1e+12;
+ sctx.textAlign = "right";
+ sctx.fillText("C = " + L.toFixed(0).toString() + " pF", win_width-8, 18);
+ sctx.fillText("SRF = ", win_width-8, win_height * 0.1 + 18);
+ sctx.fillText((srf*1e-6).toPrecision(3).toString() + " MHz", win_width-8, win_height * 0.1 + 33);
sctx.textAlign = "right";
sctx.fillText("cond = " , win_width-8, dim_y + 08);
@@ -1318,9 +1315,10 @@
}
}
+ // Set the global variables, which are all determined by physical dimensions, and are thus frequency-independent:
+ setGlobals();
// Update the frequencies, now that we have the sliders available:
updateFrequencies();
- setGlobals();
drawFrontDesign();
drawSideDesign();
diff --git a/magloop_equations.html b/magloop_equations.html
index 8dd5f0d..0871655 100644
--- a/magloop_equations.html
+++ b/magloop_equations.html
@@ -9,36 +9,45 @@
- For single-turn circular loop inductance:
-
- For multi-turn circular loop inductance:
-
- For octagonal loop antenna inductance:[F W Grover]
-
- For hexagonal loop antenna inductance:[F W Grover]
-
- For square loop antenna inductance:[F W Grover]
-
- Loss resistance:
+ For single-turn circular loop inductance:
+
+ [r_loop - loop radius in meters; r_conductor - conductor radius in meters]
+ For multi-turn circular loop inductance:
+
+ [k_nagaoka - Nagaoka coefficient; l_coil - length of the coil in meters; r_loop - radius of the loop in meters]
+ For octagonal loop antenna inductance:[F W Grover]
+
+ [N - turns; s - section side length m; r - loop radius in m; b - coil length in m]
+ For hexagonal loop antenna inductance:[F W Grover]
+
+ [N - turns; s - section side length m; r - loop radius in m; b - coil length in m]
+ For square loop antenna inductance:[F W Grover]
+
+ [N - turns; s - section side length m; r - loop radius in m; b - coil length in m]
+ Loss resistance:
- Surface resistance:
+ Surface resistance:
- Radiation resistance for circular loop:
+ Radiation resistance for circular loop:
- Radiation resistance for octagon, hexagon and square loop:
+ Radiation resistance for octagon, hexagon and square loop:
- Radiation efficiency:
+ Radiation efficiency:
- Q factor:
+ Q factor:
- Capacitor voltage:
+ Capacitor voltage:
- Loop current:
+ Loop current:
- Bandwidth:
+ Bandwidth:
- Multi-loop capacitance:
-
+ Single-loop capacitance:
+
+ [l_perimeter - conductor perimeter length in meters]
+ Multi-loop capacitance:
+
+ [Based on David W Knight's paper "The self-resonance and self-capacitance of solenoid coils: applicable theory, models and calculation methods"]