Расчет импульсного трансформатора
31 августа 2022 101 просмотр
Будем надеяться, что я не поленюсь переписать её на кресты и под мобилки, и, возможно,
private void button1_Click(object sender, EventArgs e)
{
//заранее объявим необходимые переменные
double winp=0, imax=0, skin=0, unum=0, unum1=0, unum2=0, unum3=0, wu1=0, wu2=0, wu3=0, pout=0;
//считываем значения входных параметров
double umin = double.Parse(textBox1.Text);
double umax = double.Parse(textBox2.Text);
double bmax = double.Parse(textBox3.Text);
double freq = double.Parse(textBox4.Text);
double ssec = double.Parse(textBox5.Text);
double sokn = double.Parse(textBox6.Text);
//считываем значения выходных параметров
double u1 = double.Parse(textBox7.Text);
double i1 = double.Parse(textBox8.Text);
double u2 = double.Parse(textBox9.Text);
double i2 = double.Parse(textBox10.Text);
double u3 = double.Parse(textBox11.Text);
double i3 = double.Parse(textBox12.Text);
//считаем габаритную мощность
double psiz = ssec * sokn * freq * bmax / 150;
//считаем выходную мощность
pout = u1 * i1 + u2 * i2 + u3 * i3;
//проверим хватает ли габаритной мощности
if (0.95 * psiz < pout)
{
//выведем результат в окно
textBox13.Clear();
textBox13.Text += Environment.NewLine + "Не хватает габаритной мощности. Подберите магнитопровод большего размера.";
}
else
{
//считаем количество витков первички
winp = Math.Ceiling(1767.5 * (umax-1.2) / freq / bmax / ssec);
//считаем максимальный ток первичной обмотки
imax = (u1 * i1 + u2 * i2 + u3 * i3) / (umin-1.2)*1.414/0.95;
//вычисляем глубину скин-слоя меди и ближайший диаметр провода
skin = Math.Floor(5030 * Math.Pow(0.01724 / 0.999994 / freq, 0.5))/5;
//определим количество жил, необходимых на такой частоте
unum = Math.Ceiling((Math.Pow(Math.Pow(imax, 0.5)*0.6, 2)*3.14/4)/(Math.Pow(skin, 2)*3.14/4));
//посчитаем количество витков вторичных обмоток
if (u1 < 1)
{
textBox13.Clear();
textBox13.Text += Environment.NewLine + "Вы не ввели необходимые параметры вторичной обмотки";
}
else
{
wu1 = Math.Ceiling((u1 + 1.2) / ((umin - 1.2) * 0.707 / winp));
wu2 = Math.Round((u2 + 1.2) / ((u1 + 1.2) / wu1), 2);
wu3 = Math.Round((u3 + 1.2) / ((u1 + 1.2) / wu1), 2);
//пересчитаем число витков первички, учтём мертвоё время в 5%
winp = Math.Round(((umin - 1.2) * 0.707 / ((u1 + 1.2) / wu1)) / 0.95);
//вычислим число жил для основной вторичной обмотки
unum1 = Math.Ceiling((Math.Pow(Math.Pow(i1, 0.5) * 0.6, 2) * 3.14 / 4) / (Math.Pow(skin, 2) * 3.14 / 4));
//выведем результат в окно
textBox13.Clear();
textBox13.Text += Environment.NewLine + "Число витков первичной обмотки = " + winp.ToString();
textBox13.Text += Environment.NewLine + "Оптимальный диаметр провода = " + skin.ToString() + " мм";
textBox13.Text += Environment.NewLine + "Максимальный ток первичной обмотки = " + imax.ToString() + " А";
textBox13.Text += Environment.NewLine + "Количество жил первичной обмотки = " + unum.ToString();
textBox13.Text += Environment.NewLine + "Число витков обмотки U1 = " + wu1.ToString();
textBox13.Text += Environment.NewLine + "Количество жил обмотки U1 = " + unum1.ToString();
//проверяем доп. обмотку
if (u2 < 0.6)
{
}
else
{
//вычислим число жил для доп. обмотки
unum2 = Math.Ceiling((Math.Pow(Math.Pow(i2, 0.5) * 0.6, 2) * 3.14 / 4) / (Math.Pow(skin, 2) * 3.14 / 4));
textBox13.Text += Environment.NewLine + "Число витков обмотки U2 = " + wu2.ToString();
textBox13.Text += Environment.NewLine + "Количество жил обмотки U2 = " + unum2.ToString();
int checku2 = (int)wu2;
double checkwu2 = wu2 - checku2;
if (checkwu2 != 0)
{
checku2 = checku2 + 1;
textBox13.Text += Environment.NewLine + "Используйте " + checku2.ToString() + " витка(ов) и стабилизатор.";
}
}
//проверяем вторую доп. обмотку
if (u3 < 0.6)
{
}
else
{
//вычислим число жил для второй доп. обмотки
unum3 = Math.Ceiling((Math.Pow(Math.Pow(i3, 0.5) * 0.6, 2) * 3.14 / 4) / (Math.Pow(skin, 2) * 3.14 / 4));
textBox13.Text += Environment.NewLine + "Число витков обмотки U3 = " + wu3.ToString();
textBox13.Text += Environment.NewLine + "Количество жил обмотки U3 = " + unum3.ToString();
int checku3 = (int)wu3;
double checkwu3 = wu3 - checku3;
if (checku3 != 0)
{
checku3 = checku3 + 1;
textBox13.Text += Environment.NewLine + "Используйте " + checku3.ToString() + " витка(ов) и стабилизатор";
}
}
}
}
}
Thats all folks!