From 24aa704a4b5907eaa73e36d8f674a87950ef631d Mon Sep 17 00:00:00 2001 From: miguel <31931809+miguelvaca@users.noreply.github.com> Date: Mon, 4 Sep 2023 20:12:12 +1000 Subject: [PATCH] Added 5943001601 as FT122-43 --- .DS_Store | Bin 10244 -> 10244 bytes antenna.html | 177 +++++++++++++++++++++++++++++++++------------------ mom.html | 32 +++++++++- toroid.html | 8 ++- 4 files changed, 152 insertions(+), 65 deletions(-) diff --git a/.DS_Store b/.DS_Store index a0ce064aef915f0a05eb505047698be33ed3689d..33c578865f577de4f84c3155d25a103ac1c076a9 100644 GIT binary patch delta 116 zcmZn(XbISmBoMdS$&7)4frUYjA)O(Up(Hoo#U&{xKM5$tu{E#L`&HXjg}!8o~0NN97G&@52^Rf!<4 delta 120 zcmZn(XbISmBoNn?;={nez`~%%kj{|FP?DSP;*yk;p9B=+=(E)mX=ga { + // + var ww = {}; + // ww.length = ; + // ww.seg_len = ; + ww.radius = 0.0001; + ww.points = []; + for (let index = 0; index < (w.length-1); index++) { + const wire_length = Math.sqrt( + (vs[w[index]][0] - vs[w[index+1]][0])**2 + + (vs[w[index]][1] - vs[w[index+1]][1])**2 + + (vs[w[index]][2] - vs[w[index+1]][2])**2 + ); + // Minimum of 10 segments per half-wavelength => 0.05 + const max_segment_length = 0.05; + const segments = Math.round(wire_length / max_segment_length); + ww.seg_len = wire_length / segments; + for (let ii = 0; ii < segments; ii++) { + var frac = 1.0 * ii / segments; + var x = vs[w[index]][0] * (1.0 - frac) + frac * vs[w[index+1]][0]; + var y = vs[w[index]][1] * (1.0 - frac) + frac * vs[w[index+1]][1]; + var z = vs[w[index]][2] * (1.0 - frac) + frac * vs[w[index+1]][2]; + ww.points.push([x,y,z]); + + frac = 1.0 * (ii + 0.5) / segments; + x = vs[w[index]][0] * (1.0 - frac) + frac * vs[w[index+1]][0]; + y = vs[w[index]][1] * (1.0 - frac) + frac * vs[w[index+1]][1]; + z = vs[w[index]][2] * (1.0 - frac) + frac * vs[w[index+1]][2]; + ww.points.push([x,y,z]); + } + } + // Add the final point: + x = vs[w[w.length-1]][0]; + y = vs[w[w.length-1]][1]; + z = vs[w[w.length-1]][2]; + ww.points.push([x,y,z]); + //retval.push(ww); + this.wires.push(ww); + }); + return this.wires; + } + + // + getThreeObject3D = function () { + const material = new THREE.LineBasicMaterial({ color: 0xffff00, linewidth: 1 }); + const antenna_view = new THREE.Group(); + // + const ww = this.antenna_types['antennas'][this.current_type]['wires']; + const vv = this.antenna_types['antennas'][this.current_type]['vertex']; + ww.forEach(wire => { + //console.log(wire); + var vertices = new Float32Array(wire.length * 3); + var vidx = 0; + const scale_factor = 200.0; // Roughly pixels per wavelength + // Copy the vertex locations across into a Float32Array for the geometry: + wire.forEach((vertex) => { + //console.log(vertex, vv[vertex]); + vertices[vidx++] = (vv[vertex][0] * scale_factor); + vertices[vidx++] = (vv[vertex][1] * scale_factor); + vertices[vidx++] = (vv[vertex][2] * scale_factor); + }); + // + const geometry = new THREE.BufferGeometry(); + geometry.setAttribute('position', new THREE.BufferAttribute(vertices, 3)); + // create a new wire with + const wire_line = new THREE.Line(geometry, material); + antenna_view.add(wire_line); + }); + // Add the antenna into the scene: + return antenna_view; + }; + } + + class WireAntennaModel { + // constructor: + constructor(ws, vs) { + // Object variables: + this.wires = []; + this.Z = []; + this.Y = []; + + } + + // psi(seg_n, seg_m, point_n, point_m) { var retval = 0.0; const k = 2.0 * Math.PI; // Normalised wavelength is equal to 1.0 - otherwise 2*pi/wavelength @@ -340,53 +428,16 @@ return 1.0; } - // Return the wire elements for solving: - getWires() { - this.wires = []; - // - var ws = this.antenna_types['antennas'][this.current_type]['wires']; - var vs = this.antenna_types['antennas'][this.current_type]['vertex']; - - ws.forEach(w => { - // - var ww = {}; - // ww.length = ; - // ww.seg_len = ; - ww.radius = 0.0001; - ww.points = []; - for (let index = 0; index < (w.length-1); index++) { - const wire_length = Math.sqrt( - (vs[w[index]][0] - vs[w[index+1]][0])**2 + - (vs[w[index]][1] - vs[w[index+1]][1])**2 + - (vs[w[index]][2] - vs[w[index+1]][2])**2 - ); - // Minimum of 10 segments per half-wavelength => 0.05 - const max_segment_length = 0.05; - const segments = Math.round(wire_length / max_segment_length); - ww.seg_len = wire_length / segments; - for (let ii = 0; ii < segments; ii++) { - var frac = 1.0 * ii / segments; - var x = vs[w[index]][0] * (1.0 - frac) + frac * vs[w[index+1]][0]; - var y = vs[w[index]][1] * (1.0 - frac) + frac * vs[w[index+1]][1]; - var z = vs[w[index]][2] * (1.0 - frac) + frac * vs[w[index+1]][2]; - ww.points.push([x,y,z]); + } - frac = 1.0 * (ii + 0.5) / segments; - x = vs[w[index]][0] * (1.0 - frac) + frac * vs[w[index+1]][0]; - y = vs[w[index]][1] * (1.0 - frac) + frac * vs[w[index+1]][1]; - z = vs[w[index]][2] * (1.0 - frac) + frac * vs[w[index+1]][2]; - ww.points.push([x,y,z]); - } - } - // Add the final point: - x = vs[w[w.length-1]][0]; - y = vs[w[w.length-1]][1]; - z = vs[w[w.length-1]][2]; - ww.points.push([x,y,z]); - //retval.push(ww); - this.wires.push(ww); - }); - return this.wires; + class WireAntennaView { + // constructor: + constructor() { + // + } + + loadAntenna(wire_segments) { + // } // @@ -656,12 +707,11 @@ const gui = new dat.GUI(); // Add a mode selector. View is to change perspective. Edit allows moving vertices. Solve runs the EM solver. (Maybe should be edit+solve?) + /* gui.add(parameters, 'mode', ['view', 'edit', 'solve']) .setValue('view') .onChange(function(value){ console.log(value); }); - - // Create the Antennas object, which holds all the antenna types and creates the visual model on-request - ant = new Antennas(); + */ // Ground-plane const geometry = new THREE.CircleGeometry( 150, 32 ); @@ -695,6 +745,9 @@ pattern.setVisibility(value); }); + // Create the AntennaTypes object, which holds all the antenna types and creates the visual model on-request + ant = new AntennaTypes(); + gui.add( parameters, 'w', ant.antenna_types['order']) .setValue(ant.current_type) .name('Types') diff --git a/mom.html b/mom.html index d2cdc40..fc1669b 100644 --- a/mom.html +++ b/mom.html @@ -283,11 +283,21 @@ return retval; } + function calculateImpedance() { + var retval = []; + var x_axis = 0.0; + for(var i=0; i -
Miguel VK3CPU - RF Toroid Calculator v1.2
+
Miguel VK3CPU - RF Toroid Calculator v1.3
@@ -61,7 +61,7 @@ RF Toroid Calculator was developed to help users predict the RF characteristics of a ferrite or powdered-iron toroid wound as an inductor or suppressor. It uses the manufacturer's (Fair-Rite & Micrometals) published data including the toroid's dimensions and complex permeability characteristics to predict the component's characteristics.
- The calculator has 4 separate display areas. At the top is the chart display for showing frequency-dependent characteristics. Next is the + The calculator has 3 separate display areas. At the top is the chart display for showing frequency-dependent characteristics. Next is the schematic display, where a scaled image of the toroid and windings is presented to help with intuitive design. Next is the control panel section, where the user can select the application type, toroid material, toroid size, wire size, number of windings and excitation voltage.

Inputs via the select widgets: @@ -155,6 +155,8 @@
Change history:
+ [4-Sep-23] - v1.3
+ * Added 5943001601 which I have called the "FT122-43"
[2-May-23] - v1.2
* Added 2646102002 which I have called the "FT102B-61"
[1-May-23] - v1.1
@@ -504,6 +506,8 @@ 'FT140x2' : { PN:'5943002701', A:35.55, B:23.00, C:25.4, W:66.0, CC:5.60, le:8.90, Ae:1.58, Ve:14.00, Al:1770.0 }, 'FT140' : { PN:'5943002701', A:35.55, B:23.00, C:12.7, W:33.0, CC:11.20, le:8.90, Ae:0.79, Ve:7.00, Al:885.0 }, 'FT125' : { PN:'5943001701', A:31.75, B:19.05, C:9.50, W:23.0, CC:12.90, le:7.60, Ae:0.59, Ve:4.50, Al:775.0 }, + 'FT122x2' : { PN:'5943001601', A:31.10, B:19.05, C:15.80, W:36.0, CC:8.10, le:7.60, Ae:0.94, Ve:7.06, Al:1240.0 }, + 'FT122' : { PN:'5943001601', A:31.10, B:19.05, C:7.90, W:18.0, CC:16.20, le:7.60, Ae:0.47, Ve:3.53, Al:620.0 }, 'FT114x2' : { PN:'5943001001', A:29.00, B:19.00, C:15.0, W:26.0, CC:9.90, le:7.30, Ae:0.74, Ve:5.40, Al:1020.0 }, 'FT114' : { PN:'5943001001', A:29.00, B:19.00, C:7.50, W:13.0, CC:19.80, le:7.30, Ae:0.37, Ve:2.70, Al:510.0 }, 'FT102B' : { PN:'2643102002', A:25.90, B:12.80, C:28.60, W:55.0, CC:3.11, le:5.60, Ae:1.80, Ve:10.07, Al:3296.0 },