Resonanzfrequenz berechnen
-
Wie rechnet man denn bei 7 Bauteilen?
-
mr_guest123 schrieb:
Ich weis nicht wie ich mit so einem Algorithmus anfangen soll, leider...
Du hast irgendwo eine Gleichung. Du weißt dass du in der Textdatei (hoffentlich) alle bis auf einen Parameter gegeben haben wirst. Du stellst die Gleichung also einfach so um, dass da steht:
unbekannt = bekannt1 * bekannt2 / bekannt3 ...
Und schon bist du fertig. Jetzt machst du dir eine Funktion:double calc(double bekannt1, double bekannt2, double bekannt3, ...) { return bekannt1 * bekannt2 / bekannt3 ...; }
-
Ok das geht so:
Impedanz:
Davon der Realteil:
Davon der Imaginärteil:
Und den Imaginärteil einfach auf 0 setzen und dann wie folgt auf Omega umformen:
-
Also allgemein
Kannst du es nun umformen?
-
Ok, das mit dem Summenzeichen verstehe ich aber wie kommt du auf Omega² ?
-
mrguest_123 schrieb:
Ok, das mit dem Summenzeichen verstehe ich aber wie kommt du auf Omega² ?
So wie du auf die Wurzel als Lösung kommst.
-
Sorry, aber irgendwie bin ich ein bisschen verwirrt.
Wo ist das Omega beim C unten? "urde Omega² rausgehoben aus beiden Termen? Oder ist das einfach nur beim L?
Ich hab das ganze einfach auf Gemeinsamen Nenner gebracht und dann Omega herausgehoben --> Quadrat gebildet und da kam die Wurzellösung raus.
Erklär mir bitte deinen Weg.
-
Ich habe mit omega multipliziert. Fertig.
-
Ah ok danke ich verstehe!
Umgeformt auf Omega wäre das dann:
Und dies wäre meine Formel für Omega? Das Summenzeichen muss ich dann halt noch programmieren eventuell mit einer Schleife und "summe_C=summe_C+wert".
So ca.?
-
Ja.
-
Ok gut gut.
Ich lese die Datei aus und berechne den Komplexen Widerstand von Spule, Kondensator und Widerstand. Diese Werte speichere ich dann in ein Array z.B..
Aber nun weiß ich ja nicht mehr was jetzt der komplexe Widerstand von Spule oder Kondensator ist.Ich weiß nur am Anfang mit Hilfe von if()-anweisungen was ein C, L oder R ist:
complex* calc_complex_Z(components* rlc, int f, int len) { complex* r_compl=NULL; complex* hilf=NULL; int x=0; r_compl=malloc(sizeof(complex)* len); if(r_compl != NULL) { hilf=r_compl; while(x<len) { if(rlc->componentType == 'R') { r_compl->real=(int)rlc->rlcValue; r_compl->imag=0; } if(rlc->componentType == 'L') { r_compl->imag=2*3.14*f*rlc->rlcValue; r_compl->real=0; } if(rlc->componentType == 'C') { r_compl->imag=-1/(2*3.14*f*rlc->rlcValue); r_compl->real=0; } x++; r_compl++; rlc++; } } else { printf("Memory allocation failure!"); } return(hilf); }
Vielleicht sollte 3 verschiedne Struktur machen. Also eine für die ganzen Widerstände, eine für Spulen und eine für Kondensator.
In etwa so:
struct complex_r { double real; double imag; }; struct complex_l { double real; double imag; }; struct complex_c { double real; double imag; };
Gibts da ne besser Lösung bzw. wie findet ihr meine Idee?
-
mrguest_123 schrieb:
Vielleicht sollte 3 verschiedne Struktur machen. Also eine für die ganzen Widerstände, eine für Spulen und eine für Kondensator.
[...]
Gibts da ne besser Lösung bzw. wie findet ihr meine Idee?
Ich bin überrascht, dass du es bis jetzt nicht so gemacht hast. Ist aber gut.
Wobei es aber auch ziemlich übertriebener Aufwand ist. Schließlich könntest du auch einfach direkt alle gefragten Größen beim Einlesen berechnen, ohne irgendetwas zwischenspeichern zu müssen.
-
Danke!
Ich hab mir mal die Paralellschaltung genauer unter die Lupe genommen, aber leider komme ich nicht auf den algorithmus... da muss man voll konjugiert komplex erweitern etc. ist ja auf dem Blattpapie nicht schwer.
Sagen wir ich hab eine Paralellschalung bestehend aus einem Widerstand, einer Spule und einem Kondensator.
Der komplexe Gesamtwiderstand würde so aussehn:
Auf gemeinsamen Nenner gebracht und dann Doppelbruch aufgelöst:
Wenn man jetzt auf Omega umformt müsste man konjugiert komplex Erweitern etc. das weis ich auch wie es funktioniert. Das wird eine lange Formel. Und mit 7 Bauteilen rechnen wird das erst lustig
.
Aber ich soll ja einen Algorithmus finden.
Wenn jetzt z.B. ein 2ter Kondensator paralell hinzu geschaltet wird dann würde überall wo C steht noch z.B. C2 hinzu multipliziert werden.
Muss ich das so machen wie oben beschrieben? Oder gibts da einen einfacheren Weg?
-
Mulitpiliziert? Das passt doch gar nicht von den Einheiten. Bist du sicher?
Und wen du so etwas selber lösen willst: Denk abstrakter. Nicht immer am konkreten Beispiel, stell die allgemeine Formel für N Widerstande, M Spulen und O Kondensatoren auf. Klammer Vorfaktoren aus. Fasse Summen und Produkte gleichartiger Größen zusammen. Und dann formst du um.