/* Vereinfachte Berechnung der Ausgangsgleichspannung beim Einweggleichrichter. Der Spannungsabfall ueber der Diode wird als konstant angenommen. Das Programm mach waehrend der Iteration keine Plausibilitaetskontrollen fuer die Werte. Autor: Gerhard Krucker Datum: 3.1.1997 Version: 1.0 Sprache: MS Visual C V4.1 (NT Console Application) Filename: Gleichrichterberechnung.C Zugehoerige Files: Keine */ #include #include #include #define PI 3.14159 #define EPS_ 1E-3 /* Abbruchkriterium, wenn Ausgangsspannungsdifferenz < EPS */ main() { double ri; /* Innenwiderstand des Transformators [Ohm] */ double utr; /* Trafospannung unbelastet [Veff] */ double ud; /* Spannung uber der Diode im Durchlassbereich [V] */ double a; /* 1/2 Stromflusswinkel [rad,deg] */ double rl; /* Wert des Lastwiderstandes [Ohm] */ double cl; /* Kapazitaet des Ladekondensators [F,uF] */ double freq; /* Frequenz der Transformatorspannung [Hz] */ double utrs; /* Spitzenwert der Transformatorspannung [V] */ double ul; /* Mittelwert der Spannung an rl [V] */ double il; /* Laststrom bezueglich ul [A] */ double idm; /* Spitzenstrom durch die Diode bezueglich il [A] */ double ul_alt; /* UL vom vorherigen Iterationsschritt [V]*/ double idmax; /* Maximaler Diodenstrom, begrenzt durch ri [A] */ double ubr; /* Brummspannung in [Vss] */ double ieff; /* Effektivwert des Transformatorstromes [A] */ printf("Iterative Naeherung der Ausgangsspannung fuer Einweggleichrichter:\n"); printf("Eingabe RL [Ohm]: ");scanf("%lf",&rl); printf("Eingabe Leerlaufspannung Trafo UAC [Veff]: ");scanf("%lf",&utr); printf("Eingabe Innenwiderstand des Trafos Ri [Ohm]: "); scanf("%lf",&ri); printf("Eingabe Spannungsabfall ueber der Diode UD [V]: ");scanf("%lf",&ud); printf("Eingabe Wert des Ladekondensators CL [uF]:");scanf("%lf",&cl); printf("Eingebe Startwert fuer den Stromflusswinkel 2a [deg]: ");scanf("%lf",&a); printf("Eingabe Frequenz [Hz]: "); scanf("%lf",&freq); cl = cl / 1.0E6; /* cl in Farad wandeln */ a=a / 180.0 * PI ; /* 2a in Radian wandeln */ a=0.5*a; /* a ist der halbe Stromflusswinkel */ utrs = utr * sqrt(2.0); /* Spitzenwert der Transformatorspannung */ ul = utr * cos(a); /* Schaetzwert fuer die erste Spannung ueber der Last */ idmax = (utrs - ud) / ri; /* Maximaler Diodenstrom */ /* Iterationsschleife Sie wird beendet, wenn sich zwei aufeinanderfolgende Werte von ul betragsmaessig um weniger als EPS_ unterscheiden. */ do { il = ul / rl; /* Aktueller Laststrom */ idm = il * ( PI * PI) / (2.0 * a) ; /* Resultierender Diodenspitzenstrom mit Cosinusmodell */ if (idm > idmax) idm=idmax; /* Es kann nicht mehr Strom fliessen als der Trafo hergibt */ if ((ul + ud) >= utrs) ul = utrs-ud-0.1; /* Fall acos(>=1) vermeiden */ printf("ul: %6.4f\til: %6.4f\tidm:%5.2f\t2a: %5.2f\n",ul,il,idm,a * 360.0 /PI); ul_alt= ul; a = acos((ul + ud) / utrs); /* Neuen Stromflusswinkel berechnen */ ul = utrs - (idm * ri + ud); /* Neue Lastspannung */ } while (fabs(ul - ul_alt) > EPS_); ubr=(1- a / PI) * il / (freq * cl); /* Brummspannung berechnen */ printf("Brummspannung: %6.4f [Vss]\n",ubr); ieff=il * PI / 2.0 *sqrt(PI / (2.0 * a)); /* Transformatorstrom berechnen */ printf("Effektivwert des Transformatorstromes: %6.4f [Aeff]\n",ieff); while (!_kbhit()); return 0; }