Радиотехника | Электротехника | Строительство | Растениеводство | Учёба | Книги | Фильмы | Игры | Вопросы-ответы | Визитка

Главы страницы

  1. Заголовочный файл tr-trans.h
  2. Файл tr-trans.cpp
  3. Файл main.c
  4. Makefile
  5. Эпилог

Как расчитать тороидальный трансформатор

Тороидальный трансформатор

Использована методика Николаенко М.Н., опубликованная в книге "Секреты радиолюбителя-конструктора" в 2006г.

Программа на C++

Заголовочный файл tr-trans.h

 #ifndef TORTRANS
#define TORTRANS
//// Расчет тороидального трансформатора

class TorTrans
{
    public:
        TorTrans ();
        virtual ~TorTrans();
        int raschet();
        int print_data();

        static const float pi=3.14;
        float nu; //// КПД трансформатора 
        float U1; //// напряжение питания, В
        float U2; //// напряжение нагрузки, В
        float U3; //// напряжение нагрузки, В
        float U4; //// напряжение нагрузки, В
        float U5; //// напряжение нагрузки, В
        float U6; //// напряжение нагрузки, В
        float r1; //// активное сопротивление первичной обмотки, Ом
        float r2; //// активное сопротивление вторичной обмотки, Ом
        float r3; //// активное сопротивление вторичной обмотки, Ом
        float r4; //// активное сопротивление вторичной обмотки, Ом
        float r5; //// активное сопротивление вторичной обмотки, Ом
        float r6; //// активное сопротивление вторичной обмотки, Ом
        float I1; //// ток первичной обмотки , А
        float I2; //// ток вторичной обмотки , А
        float I3; //// ток вторичной обмотки , А
        float I4; //// ток вторичной обмотки , А
        float I5; //// ток вторичной обмотки , А
        float I6; //// ток вторичной обмотки , А
        float A;  //// плотность тока в обмотках,А/мм2

        //*размеры сердечника трансформатора*//
        float Pgb;////габаритная мощность тр-ра, Вт
        float D; //// наружный диаметр сердечника, см
        float d;  ////внутренний диаметр сердечника, см
        float h; //// высота сердечника, см
        float lc;   //// средняя длина магнитной силовой линии
        float lo;   //// расчетная средняя длина витка
        bool  is_hot_steel; //// горячекатанная сталь
        float Ks; //// коэф.заполнения сердечника железом
        float Kok;//// коэф.заполнения окна медью 
        //* выходные данные *//
        //* условия пpuмeHuмocти даНН020 железа есть выполнение соотношения
         * tau_el <= tau_ konstr
         * ***********************************//
        float tau_el; //* электрическая постоянная времени транса *//
        float tau_konstr;
        int N1; //// число витков первичной обмотки
        int N2,N3,N4,N5,N6; //// число витков вторичной обмотки
        float d1,d2,d3,d4,d5,d6; //// диаметры проводов первичной и вторичной обмоток,мм
        float Sc; //* площадь сечения керна сердечника, см2 *//
        float S; //*расчетная площадь сечения керна сердечника, см2 *//
        float So; //* площадь сечения окна сердечника, см2 *//
        float n2; //* квадрат коэффициента трансформации *//
        float ww1; //* число витков на вольт горячекатанной стали *//
        float ww2; //* число витков на вольт холоднокатанной стали *// 
        //* эквивалентное сопротивление выходноса каскада на трансе *//
        float R_equiv;
        float L1; //* требуемая индуктивность nерв. обмотки *//


    private:
        int raschet0(); //// начальные присвоения
};


#endif

Файл tr-trans.cpp

 #include 'stdio.h'
#include 'math.h'
#include 'tortrans.h'
TorTrans::TorTrans() {
    nu=0.92; // КПД трансформатора
    U1=220.0; // напряжение питания, В
    U2=12.6; // напряжение нагрузки, В
    U3=0; // напряжение нагрузки, В
    U4=0; // напряжение нагрузки, В
    U5=0; // напряжение нагрузки, В
    U6=0; // напряжение нагрузки, В
    r1; // активное сопротивление первичной обмотки, Ом
    r2; // активное сопротивление вторичной обмотки, Ом
    I1; // ток первичной обмотки , А
    I2=1.0; // ток вторичной обмотки , А
    A=4;  // плотность тока в обмотках,А/мм2 
    /*еры сердечника трансформатора*/
    D=8.0; // наружный диаметр сердечника, см
    d=5.0;  //внутренний диаметр сердечника, см
    h=2.0; // высота сердечника, см
    is_hot_steel=true; // горячекатанная сталь
    Ks=0.9; // коэф.заполнения сердечника железом
    Kok=0.3;// коэф.заполнения окна медью
    //mu=250;

    raschet0();
}

TorTrans::~TorTrans() { } 
int TorTrans::raschet() {
    printf("nНачало расчета...n");
    raschet0();
    float w;//число виктов на вольт
    if(is_hot_steel) w=ww1;
    else w=ww2;
    N1=U1*w;
    N2=U2*w*1.03;
    N3=U3*w*1.03;
    N4=U4*w*1.03;
    N5=U5*w*1.03;
    N6=U6*w*1.03;
    /* расчитываем диаметры проводов */
    d1=1.13*sqrt(I1/A); 
    d2=1.13*sqrt(I2/A);
    d3=1.13*sqrt(I3/A);
    d4=1.13*sqrt(I4/A);
    d5=1.13*sqrt(I5/A);
    d6=1.13*sqrt(I6/A);
    r1=0.0175/((d1*d1*pi)/4)*N1*lo/100;
    r2=0.0175/((d2*d2*pi)/4)*N2*lo/100;
    r3=0.0175/((d3*d3*pi)/4)*N3*lo/100;
    r4=0.0175/((d4*d4*pi)/4)*N4*lo/100;
    r5=0.0175/((d5*d5*pi)/4)*N5*lo/100;
    r6=0.0175/((d6*d6*pi)/4)*N6*lo/100;

    //r2=r1*n2*(1.0-A)/A;
    printf("nПараметры обмоток:n");
    Kok=(d1*d1/4*pi*N1+d2*d2/4*pi*N2+d3*d3/4*pi*N3+d4*d4/4*pi*N4
            +d5*d5/4*pi*N5+d6*d6/4*pi*N6)*(1e-2)/So; 
    printf("tКоэффициент заполнения окна медью : %.3fn",Kok);
    printf("tCредняя длина витка : %.1f смn", lo);
    printf("ntr1 = %.2f Ом,tr2 = %.2f Омn",r1,r2);
    if(U3>0 || U4>0) {
        printf("tr3 = %.2f Ом,tr4 = %.2f Омn",r3,r4);
    }
    if(U5>0 || U6>0) {
        printf("tr5 = %.2f Ом,tr6 = %.2f Омn",r5,r6);
    }
    printf("ntN1 = %d ,tN2 = %d n",N1,N2);
    if(N3>0 || N4>0) {
        printf("tN3 = %d ,tN4 = %d n",N3,N4);
    }
    if(N5>0 || N6>0) {
        printf("tN5 = %d ,tN6 = %d n",N5,N6);
    } 
    printf("ntd1 = %.2f мм,td2 = %.2f ммn",d1,d2);
    if(N3>0 || N4>0) {
        printf("td3 = %.2f мм,td4 = %.2f ммn",d3,d4);
    }
    if(N5>0 || N6>0) {
        printf("td5 = %.2f мм,td6 = %.2f ммn",d5,d6);
    }
    //delta=9.0e-4*N1*I0;
    //printf("tЗазор при сборке сердечника : %.2f ммn",delta);
    /* рассчитываем заполнение окна */
    float l1=lo*N1/100;
    float l2=lo*N2/100;
    float l3=lo*N3/100;
    float l4=lo*N4/100;
    float l5=lo*N5/100;
    float l6=lo*N6/100; 
    printf("nРасход провода:n");
    printf("t%.2f = %.2f м t%.2f = %.2f мn",d1,l1,d2,l2);
    if(N3>0 || N4>0) {
        printf("t%.2f = %.2f м t%.2f = %.2f мn",d3,l3,d4,l4);
    }
    if(N5>0 || N6>0) {
        printf("t%.2f = %.2f м t%.2f = %.2f мn",d5,l5,d6,l6);
    }

    printf("n");
    return 0;
} 
int TorTrans::raschet0() {
    Pgb=(U2*I2+U3*I3+U4*I4+U5*I5+U6*I6)/nu;
    I1=1.1*(Pgb/U1);
    //r1=(1-nu)*Ra;
    lc=((D-d)/4+d)*pi;;
    Sc=h*(D-d)/2;//*Ks;
    So=pi*d*d/4;
    lo=((D-d)+h*2+d); // todo  расчетная средняя длина витка
    if(Pgb<=10) {
        ww1=41/Sc;
        ww2=38/Sc;
        S=sqrt(Pgb);
        A=4.5;
        nu=0.8;
    } 
    if(Pgb<=30 && Pgb>10) {
        ww1=36/Sc;
        ww2=32/Sc;
        S=sqrt(Pgb)/1.1;
        A=4.0;
        nu=0.9;
    }
    if(Pgb>30 && Pgb<=50) {
        ww1=33.3/Sc;
        ww2=29/Sc;
        S=sqrt(Pgb)/1.2;
        A=3.5;
        nu=0.92;
    }
    if(Pgb>50 && Pgb<=120) {
        ww1=32/Sc;
        ww2=28/Sc;
        S=sqrt(Pgb)/12;
        A=3.0;
        nu=0.95;
    } 
    if(Pgb>120) {
        printf("n Мощность трансформатора = %.1f  ватт ",Pgb);
        printf("n Это вне компетенции данной программыn");
        return 1;
    }
    if(S>Sc) {
        printf("n Сердечник д.б. не менее %.2f см2",S);
        return 1;
    }
    if(d
int TorTrans::print_data() {
    printf("nИсходные данные: n");
    printf("tНапряжение первичной обмотки = %.1f Вn",U1);
    printf("tToк первичной обмотки = %.3f А n", I1);
    printf("tНапряжение вторичной обмотки = %.1f Вn",U2);
    printf("tToк вторичной обмотки = %.3f А n", I2);
    if(U3>0) {
        printf("tНапряжение обмотки №3 = %.1f Вn",U3);
        printf("tToк обмотки №3 = %.3f А n", I3);
    }
    if(U4>0) {
        printf("tНапряжение обмотки №4 = %.1f Вn",U4);
        printf("tToк обмотки №4 = %.3f А n", I4);
    } 
    if(U5>0) {
        printf("tНапряжение обмотки №5 = %.1f Вn",U5);
        printf("tToк вторичной обмотки №5 = %.3f А n", I5);
    }
    if(U6>0) {
        printf("tНапряжение обмотки №6 = %.1f Вn",U6);
        printf("tToк обмотки №6 = %.3f А n", I6);
    }
    printf("nПараметры сердечника трансформатора: n");
    printf("tis_hot_steel = %sn",((is_hot_steel)?"true (Сталь горячекатанная)":"false (Сталь холоднокатанная)"));
    printf("tСердечник : К%dX%dX%d  n", (int)(D*10),(int)(d*10),(int)(h*10));
    printf("tСечение окна  = %.2f(см) и железа = %.2f(см)n",So, Sc);
    printf("tСредняя длина магнитной силовой лuнuu : %.1f смn", lc);


    return 0;
}

Файл main.c

#include 'stdio.h'
#include 'math.h'
#include 'tortrans.h'
#include 'iostream'
#include 'charint.h'
#include 'string.h' 
int main(int argc, char *argv[]) {
    printf("\nИспользование : w -значение параметр...");
    printf("\n\tпример : w -Un 12.6 -In 3.5 -h 5.0\n"); 
      if (argc>0) {
      if (argc%2==0) {
          printf("\nневерное количество параметров : %d\n",argc);
          return 1;
      }
    }
    TorTrans tr;
      for (int i=(argc-1)/2;i>0;i-=1) {
     printf("\n i=%d agr=%s",i,argv[i*2-1]);
      if (strcmp(argv[i*2-1],"-is_hot_steel")==0) {
          tr.is_hot_steel=false;
          continue;
      }
      CharInt chi(argv[i*2]);
      if (strcmp(argv[i*2-1],"-U1")==0) {
          ;tr.U1=(float)chi.dfloat;
          ;continue;
      }
      if (strcmp(argv[i*2-1],"-U2")==0) {
          ;tr.U2=(float)chi.dfloat;
          ;continue;
      }
      if (strcmp(argv[i*2-1],"-I2")==0) {
          ;tr.I2=(float)chi.dfloat;
          ;continue;
      }
         if (strcmp(argv[i*2-1],"-U3")==0) {
          tr.U3=(float)chi.dfloat;
          continue;
      }
      if (strcmp(argv[i*2-1],"-I3")==0) {
          tr.I3=(float)chi.dfloat;
          continue;
      }
      if (strcmp(argv[i*2-1],"-U4")==0) {
          tr.U4=(float)chi.dfloat;
          continue;
      }
      if (strcmp(argv[i*2-1],"-I4")==0) {
          tr.I4=(float)chi.dfloat;
          continue;
      }
      if (strcmp(argv[i*2-1],"-U5")==0) {
          tr.U5=(float)chi.dfloat;
          continue;
      }
      if (strcmp(argv[i*2-1],"-I5")==0) {
          tr.I5=(float)chi.dfloat;
          continue;
      }
      if (strcmp(argv[i*2-1],"-U6")==0) {
          tr.U6=(float)chi.dfloat;
          continue;
      }
      if (strcmp(argv[i*2-1],"-I6")==0) {
          tr.I6=(float)chi.dfloat;
          continue;
      }
      if (strcmp(argv[i*2-1],"-D")==0) {
          tr.D=(float)chi.dfloat;
          continue;
      }
      if (strcmp(argv[i*2-1],"-d")==0) {
          tr.d=(float)chi.dfloat;
          continue;
      }
      if (strcmp(argv[i*2-1],"-h")==0) {
          tr.h=(float)chi.dfloat;
          continue;
      }
    }
    tr.raschet();
    return 0;
}

Makefile

TARGET = calc-tor120transf
CHILD  = tortrans
LIB    = charint
CC     = g++
$(TARGET): $(LIB).h $(LIB).cpp $(CHILD).h $(CHILD).cpp main.cpp
	$(CC) -o $(TARGET) $(LIB).h $(LIB).cpp $(CHILD).h $(CHILD).cpp main.cpp

install: $(TARGET)
	mv $(TARGET) /usr/local/bin/

uninstall: $(TARGET)
	rm lampout1trans /usr/local/bin/$(TARGET)

clear:
	rm *.o

Эпилог

Функции программы документированы, переменные имеют доступные имена.

Но если понадобится помощь -- обращайтесь