Update transformer.html

pull/2/head
miguel 2023-05-22 22:19:36 +10:00
rodzic 7c13578ac3
commit 73620bab94
1 zmienionych plików z 36 dodań i 36 usunięć

Wyświetl plik

@ -725,7 +725,7 @@
// vars: // vars:
const R0 = 50.0; const R0 = 50.0;
const Rc = 0.1; // Core losses const Rc = 0.2; // Conductor losses
const Ll1 = 1e-6; // Primary leakage inductance const Ll1 = 1e-6; // Primary leakage inductance
//const Ls = mu[0] * 4.0 * Math.PI * this.Np**2 / this.core.CC; //const Ls = mu[0] * 4.0 * Math.PI * this.Np**2 / this.core.CC;
const Xp = (Rs**2 + Xs**2) / Xs; // Get parallel equivalent reactance const Xp = (Rs**2 + Xs**2) / Xs; // Get parallel equivalent reactance
@ -745,6 +745,8 @@
let V1 = math.complex(this.Vrms, 0); let V1 = math.complex(this.Vrms, 0);
let V2 = math.multiply(V1, math.divide(Zp, math.add(Zp, Zs))); let V2 = math.multiply(V1, math.divide(Zp, math.add(Zp, Zs)));
return [this.Vrms, V1.toPolar().r, V2.toPolar().r]; return [this.Vrms, V1.toPolar().r, V2.toPolar().r];
/* /*
let Z11 = math.add(1, math.divide(Z0,Zs)); let Z11 = math.add(1, math.divide(Z0,Zs));
let Z21 = math.inv(Zs); let Z21 = math.inv(Zs);
@ -756,15 +758,16 @@
let VVV = math.multiply(inv_ZZZ, vvv); let VVV = math.multiply(inv_ZZZ, vvv);
return [this.Vrms, VVV.get([0,0]).toPolar().r, VVV.get([1,0]).toPolar().r]; return [this.Vrms, VVV.get([0,0]).toPolar().r, VVV.get([1,0]).toPolar().r];
*/ */
/* /*
const Z0 = 50.0; // Source impedance in ohms const Z0 = 50.0; // Source impedance in ohms
const Cp = 1e-12; //(0.9 + (78.1/this.Np**2))*1e-12; // Primary winding parasitic capacitance in F const Cp = 1e-12; //(0.9 + (78.1/this.Np**2))*1e-12; // Primary winding parasitic capacitance in F
const R1 = 0.005; // Resistance of primary winding in ohms const R1 = 0.1; // Resistance of primary winding in ohms
const L1 = 1e-9; // Primary leakage inductance in H const L1 = 1e-8; // Primary leakage inductance in H
const Lp = mu[0] * 4.0 * Math.PI * this.Np**2 / this.core.CC; // Open-circuit inductance of primary winding in H const Xp = (Rs**2 + Xs**2) / Xs; // Get parallel equivalent reactance
const Rp = 1000.0; // Shunt resistance that represents core losses in ohms const Rp = (Rs**2 + Xs**2) / Rs; // Get parallel equivalent resistance
const L2 = 1e-9; // Secondary leakage inductance, reflected into primary side, in H const L2 = 1e-8; // Secondary leakage inductance, reflected into primary side, in H
const R2 = 0.005; // Secondary winding resistance in ohms, reflected at primary side const R2 = 0.1; // Secondary winding resistance in ohms, reflected at primary side
const Cs = 1e-12; //(0.9 + (78.1/this.Ns**2))*1e-12 *(this.Ns/this.Np)**2; // Secondary winding parasitic capacitance in F, reflected at primary side const Cs = 1e-12; //(0.9 + (78.1/this.Ns**2))*1e-12 *(this.Ns/this.Np)**2; // Secondary winding parasitic capacitance in F, reflected at primary side
const Zl = this.Zl*(this.Np/this.Ns)**2; // Load impedance reflected to primary side in ohms const Zl = this.Zl*(this.Np/this.Ns)**2; // Load impedance reflected to primary side in ohms
@ -772,9 +775,9 @@
let Z1 = math.complex(R1, w*L1); let Z1 = math.complex(R1, w*L1);
let Z2 = math.complex(R2, w*L2); let Z2 = math.complex(R2, w*L2);
let ZCp = math.complex(0.0, -1.0/(w*Cp)); let ZCp = math.complex(0.0, -1.0/(w*Cp));
let ZRp = math.complex(Rp, 0.0); //let ZRp = math.complex(Rp, 0.0);
let ZLp = math.complex(0.0, w*Lp); //let ZLp = math.complex(0.0, Xp);
let Zp = math.divide(math.multiply(ZRp, ZLp), math.add(ZRp, ZLp)); let Zp = math.complex(Rp, Xp); //math.divide(math.multiply(ZRp, ZLp), math.add(ZRp, ZLp));
let ZCs = math.complex(0.0, -1.0/(w*Cs)); let ZCs = math.complex(0.0, -1.0/(w*Cs));
let Zlc = math.divide(math.multiply(ZCs,math.complex(Zl,0.0)), math.add(ZCs,math.complex(Zl,0.0))); let Zlc = math.divide(math.multiply(ZCs,math.complex(Zl,0.0)), math.add(ZCs,math.complex(Zl,0.0)));
@ -788,16 +791,15 @@
let Z22 = math.add(math.unaryMinus(math.inv(Z1)), math.unaryMinus(math.inv(Zp)), math.unaryMinus(math.inv(Z2))); let Z22 = math.add(math.unaryMinus(math.inv(Z1)), math.unaryMinus(math.inv(Zp)), math.unaryMinus(math.inv(Z2)));
let Z32 = math.inv(Z2); let Z32 = math.inv(Z2);
let Z13 = zero; let Z13 = zero;
let Z23 = math.inv(Z0); let Z23 = math.inv(Z2);
let Z33 = math.add(math.unaryMinus(math.inv(Z2)), math.unaryMinus(math.inv(Zlc))); let Z33 = math.add(math.unaryMinus(math.inv(Z2)), math.unaryMinus(math.inv(Zlc)));
let ZZZ = math.matrix([[Z11, Z12, Z13], [Z21, Z22, Z23], [Z31, Z32, Z33]]); let ZZZ = math.matrix([[Z11, Z12, Z13], [Z21, Z22, Z23], [Z31, Z32, Z33]]);
let vvv = math.matrix([[math.unaryMinus(math.divide(math.complex(this.Vrms, 0.0), math.complex(Z0,0.0)))], [zero], [zero]]); let vvv = math.matrix([[this.Vrms/Z0], [zero], [zero]]);
let VVV = math.multiply(math.inv(ZZZ), vvv); let VVV = math.multiply(math.inv(ZZZ), vvv);
return [this.Vrms, VVV.get([0,0]).toPolar().r, VVV.get([1,0]).toPolar().r, VVV.get([2,0]).toPolar().r]; return [this.Vrms, this.Vrms, VVV.get([2,0]).toPolar().r];
//return VVV;
*/ */
//return VVV;
}; };
this.recalculate = function (frequencies) { this.recalculate = function (frequencies) {
@ -836,6 +838,7 @@
//console.log(this.Rdc, this.L, this.C); //console.log(this.Rdc, this.L, this.C);
// Clear the frequency dependent characteristics before appending new data: // Clear the frequency dependent characteristics before appending new data:
this.X_vs_f = [];
this.M_vs_f = []; this.M_vs_f = [];
this.SWR_vs_f = []; this.SWR_vs_f = [];
this.eff_vs_f = []; this.eff_vs_f = [];
@ -846,7 +849,6 @@
this.L_vs_f = []; this.L_vs_f = [];
this.Z_vs_f = []; this.Z_vs_f = [];
this.R_vs_f = []; this.R_vs_f = [];
this.X_vs_f = [];
this.Q_vs_f = []; this.Q_vs_f = [];
this.i_vs_f = []; this.i_vs_f = [];
this.P_vs_f = []; this.P_vs_f = [];
@ -873,7 +875,7 @@
//console.log(freq, VVV); //console.log(freq, VVV);
//console.log(freq, eff, SWR, VVV); //console.log(freq, eff, SWR, VVV);
// Make freq in kHz from Hz: // Make freq in MHz from Hz:
freq *= 1e-6; freq *= 1e-6;
this.mu1_vs_f.push({x:freq, y:mu[0]}); this.mu1_vs_f.push({x:freq, y:mu[0]});
@ -1492,14 +1494,14 @@
// Now re-configure the chart axes options: // Now re-configure the chart axes options:
this.myChart.data = { this.myChart.data = {
datasets: [ datasets: [
{ {
label: 'M (\u03bcH)', label: '|Zp| (\u03A9)',
fill: false, fill: false,
borderColor: 'orange', borderColor: 'orange',
backgroundColor: 'orange', backgroundColor: 'orange',
data: this.toroid.calculateMutualInductance(), data: this.toroid.calculateImpedance(),
borderWidth: 1, borderWidth: 1,
yAxisID: 'lID' yAxisID: 'ohmsID'
}, },
{ {
label: 'SWR', label: 'SWR',
@ -1779,7 +1781,7 @@
// In Hz: // In Hz:
this.frequencies = []; this.frequencies = [];
//var f = 1.0 * slider_value; //var f = 1.0 * slider_value;
for(var i = Math.floor(6.00); i <= 8.00; i+=0.01) { for(var i = Math.floor(5.00); i <= 8.00; i+=0.01) {
this.frequencies.push(10.0**i); this.frequencies.push(10.0**i);
} }
} }
@ -1789,7 +1791,7 @@
this.myChart.options.plugins.title.text this.myChart.options.plugins.title.text
= this.ferrite.mat.manufacturer + " " + this.t_size + "-" + this.t_material + " [" + this.ferrite.core.PN + "] " = this.ferrite.mat.manufacturer + " " + this.t_size + "-" + this.t_material + " [" + this.ferrite.core.PN + "] "
+ this.toroid.Np + ":" + this.toroid.Ns + ' #' + (40.0 - conductor_diameter_slider.value) + ' AWG'; + this.toroid.Np + ":" + this.toroid.Ns + ' #' + (40.0 - conductor_diameter_slider.value) + ' AWG';
this.myChart.data.datasets[0].data = this.ferrite.calculateMutualInductance(); this.myChart.data.datasets[0].data = this.ferrite.calculateImpedance();
this.myChart.data.datasets[1].data = this.ferrite.calculateSWR(); this.myChart.data.datasets[1].data = this.ferrite.calculateSWR();
this.myChart.data.datasets[2].data = this.ferrite.calculateEfficiency(); this.myChart.data.datasets[2].data = this.ferrite.calculateEfficiency();
this.myChart.data.datasets[3].data = this.ferrite.calculateInsertionLoss(); this.myChart.data.datasets[3].data = this.ferrite.calculateInsertionLoss();
@ -1850,13 +1852,13 @@
data: { data: {
datasets: [ datasets: [
{ {
label: 'M (\u03bcH)', label: '|Zp| (\u03A9)',
fill: false, fill: false,
borderColor: 'orange', borderColor: 'orange',
backgroundColor: 'orange', backgroundColor: 'orange',
data: this.toroid.calculateMutualInductance(), data: this.toroid.calculateImpedance(),
borderWidth: 1, borderWidth: 1,
yAxisID: 'lID' yAxisID: 'ohmsID'
}, },
{ {
label: 'SWR', label: 'SWR',
@ -2072,20 +2074,22 @@
}, },
min: 0.0, min: 0.0,
position: 'right', position: 'right',
},/* },
'ohmsID': { 'ohmsID': {
type: 'logarithmic', type: 'logarithmic',
display: 'auto', display: 'auto',
title: { title: {
display: true, display: true,
text: '\u03A9', text: '\u03A9',
color: 'black', color: 'orange',
font: { font: {
weight : 'bold' weight : 'bold'
} }
}, },
min: 10.0,
max: 10000.0,
position: 'left', position: 'left',
}, },/*
'qID' : { 'qID' : {
type: 'linear', type: 'linear',
display: 'auto', display: 'auto',
@ -2188,15 +2192,11 @@
callbacks: { callbacks: {
title: function(context) { title: function(context) {
var value = context[0].parsed.x; var value = context[0].parsed.x;
var postlabel = " kHz"; var postlabel = " MHz";
if(value >= 1.0e6) { if(value >= 1.0e6) {
value *= 1e-6; value *= 1e-6;
postlabel = " GHz"; postlabel = " GHz";
} else }
if(value >= 1.0e3) {
value *= 1e-3;
postlabel = " MHz";
}
var label = 'Freq = ' + value.toPrecision(4).toString() + postlabel; var label = 'Freq = ' + value.toPrecision(4).toString() + postlabel;
return label; return label;
}, },
@ -2220,7 +2220,7 @@
} }
} else if(label[1] == 'Z') { } else if(label[1] == 'Z') {
var num = getMetricPrefix(value); var num = getMetricPrefix(value);
label = justifyText('|Z| ', num.val.toPrecision(3).toString() + ' ' + num.pfx + '\u03A9'); label = justifyText(label.substr(0,4), num.val.toPrecision(3).toString() + ' ' + num.pfx + '\u03A9');
} else if(label[0] == 'L') { } else if(label[0] == 'L') {
var num = getMetricPrefix(value * 1e-6); var num = getMetricPrefix(value * 1e-6);
label = justifyText('L ', num.val.toPrecision(3).toString() + ' ' + num.pfx + 'H'); label = justifyText('L ', num.val.toPrecision(3).toString() + ' ' + num.pfx + 'H');