Расчет импульсного трансформатора
Расчет импульсного трансформатора

Расчет импульсного трансформатора

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!