Resonanzfrequenz berechnen



  • Hallo!

    Ich habe eine gegeben Textdatei, wo Werte für Kondensator, Widerstände und Spulen drinnensteht. Daraus muss ich den Komplexen Gesamtwiderstand einer Paralell- und Serienschaltung berechnen. Das habe ich scon gemacht.

    Aber ich soll die Resonanzfrequenz von der Paralellschaltung und der Serienschaltung berechnen.

    Also so auf Papier schaut das so aus: Imaginärteil einfach auf 0 setzen und umformen auf Omega --> auf fr umformen.

    Aber wie programmier ich das? Der Compiler kann ja nicht einfach umformen?

    mfg mr_gast123


  • Mod

    Das machst du, indem du vorher auf dem Papier die Rechnung ganz allgemein durchführst und das allgemeine Ergebnis einprogrammierst. Falls es nicht möglich ist, eine allgemeine Lösung anzugeben, dann gibt es auch noch andere Techniken, aber darauf kann man dann bei Bedarf eingehen. Dein Problem klingt jedenfalls nicht danach, als ob das nötig sei.

    Ultrasimpelbeispiel:
    Du hast eine Zahl A und der Computer soll eine Zahl x berechnen, mit x + 1 = A. Der Computer kann nicht (bzw nicht ohne großen Aufwand) umformen, also macht es der Mensch und programmiert x = A - 1.



  • Danke.

    Und wenn die Textdatei geändert wird? Dann muss ich wieder eine allgemeine Formel herleiten?

    Kann man das nicht so machen, das wenn man die Textdatei ändern gleich immer die Richtige Resonanzfrequenz ausgerechnet wird?

    Beim Gesamten komplexen Widerstand berechnen einer Serien- und Pralellschaltung ist es jedenfalls so.



  • mr_gast123 schrieb:

    Und wenn die Textdatei geändert wird?

    Die Frage ist welche Informationen hast du und was genau willst du errechnen? Steht in der Textdatei eine allgemeine Formel drin, wirst du die wohl auflösen müssen. (Recht aufwendig.)

    Bekommst du aber einfach nur 2 Werte und musst nen dritten ausrechnen, funktioniert das genau so wie oben beschrieben.

    double add(double a, double b)
    {
      return a + b;
    }
    
    int main(void)
    {
      double a, b, c;
      // a, b einlesen
      c = add(a, b);
      printf("result: %f", c);
      return 0;
    }
    

    Die Funktion ersetzt du jetzt durch das was du brauchst.


  • Mod

    Was ist deine Frage? Weißt du nicht, wie du rechnen sollst? Weißt du nicht, wie du die Rechnung als Algorithmus umsetzen sollst? Mit C hat die Frage jedenfalls erst einmal gar nichts zu tun, daher werde ich den Thread abhängig von deiner Antwort verschieben.

    Weiterhin ist dein Problem unklar beschrieben. Es steht nur fest, dass du Werte aus einer Datei liest und daraus etwas berechnen möchtest. Du kannst weder erwarten, dass sich hier jeder Elektrotechnik auskennt, noch dass man die Schwierigkeiten die du damit hast allein daran nachvollziehen kann, dass du sagst, dass du Schwierigkeiten hast.



  • Ja, ich hab es schon verstanden was Seppj sagte.

    Ich erkläre die Situation nochmal:
    In dieser Textdatei stehen folgende Werte:

    R, 200
    L, 0.001
    L, 0.0017
    C, 0.01
    C, 0.0022
    R, 4700
    R, 2200
    

    Die 1. Spalte steht für den Typ des Bauteils(Widerstand, Kondensator und Spule), die 2. Spalte steht für den Wert des Typen.

    *   a) Lesen Sie die Bauteile vom File und geben Sie in einer Tabelle aus. (Stückliste)
    *   b) Lesen Sie die Bauteile vom File und geben Sie die Komplexen Widerstandswerte aus.
    *       Verwenden Sie die Frequenzen 0, 100Hz, 1000Hz, 100000Hz.
    *   c) Lesen Sie die Bauteile vom File berechnen Sie die Parallelschaltung aller Bauteile.
    *       Verwenden Sie die Frequenzen 0, 100Hz, 1000Hz, 100000Hz.
    *   d) Lesen Sie die Bauteile vom File berechnen Sie die Serienschaltung aller Bauteile.
    *       Verwenden Sie die Frequenzen 0, 100Hz, 1000Hz, 100000Hz.
    *   e) Berechnen Sie die Resonanzfrequenz von c) und d).
    

    Ich hab alle Aufgaben gelöst außer die Aufgabe e.

    Wie gesagt wenn jetzt z.B. ein Kondensatorwert dazu kommt in der Textdatei dann ist ja meine Formel die ich vorher mit dem Papier berechnet habe nich mehr gültig..

    Die Frage ist nun, wie im letzten Beitrag von mir schon gesagt, ob man das übergehen kann?



  • Du musst natürlich eine Formel aufstellen, die Parameterabhängig von der Anzahl der Bauteile ist. (Was du aber auch schon bei c) und d) musstest...)


  • Mod

    Du musst das, was du auf dem Papier machen würdest möglichst abstrakt formulieren und einprogrammieren. Du gehst ja bei der Papierrechnung auch nicht jedes Mal neu dran und forscht erst einmal nach, wie man das überhaupt ausrechnet. Du hast da doch irgendein Kochrezept, wie man das macht. Und eben das nennt man einen Algorithmus und das können Computer in der Regel ungeheuer gut. Weil ich von Elektrotechnik fast keine Ahnung (mehr) habe, kann ich dir nicht konkreter helfen. Wäre daher gut, wenn du mal erklärst, wie man das rechnen würde.



  • Einen Algorithmus aufzustellen für Paralell+Serienschaltung war ganz einfach.., aber das mit Resonanzfrequenz fällt mir schwer.

    Das mit der Resonanzfrequenz habe ich mir folgender Maßen vorgestellt:

    Sagen wir als Bsp haben wir einen Kondensator mit einen Widerstand in Serie geschaltet.
    Zuerst muss man den komplexen Gesamtwiderstand, die Impedanz berechnen und daraus von Real- und Imaginärteil unterscheiden:

    Impedanz:
    Z=Rj1ωCZ=R-j\frac{1}{\omega C}
    R ist der Realteil und der Rest der Imaginärteil

    Hier einfach auf omaga und dann auf f umformen, dann hat man die Resonanzfrequenz:
    1ωC=0\Rightarrow \frac{1}{\omega C}=0

    Ich hab ja im meinem Textfile 7 Bauteile. Ja ich könnte sie Händisch berechnen, aber das wäre dann kein Algorithmus.

    Ich weis nicht wie ich mit so einem Algorithmus anfangen soll, leider...



  • Dieser Thread wurde von Moderator/in SeppJ aus dem Forum C (C89 und C99) in das Forum Rund um die Programmierung verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.


  • Mod

    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:
    Z=R1+jωL1+jωL2j1ωC1j1ωC2+R2+R3+R4Z=R1+j\omega L1+j\omega L2-j\frac{1}{\omega C1}-j\frac{1}{\omega C2}+R2+R3+R4

    Davon der Realteil:
    Re=R1+R2+R3+R4Re=R1+R2+R3+R4

    Davon der Imaginärteil:
    Imag=j(ωL1+ωL21ωC11ωC2)Imag=j\cdot (\omega L1+\omega L2-\frac{1}{\omega C1}-\frac{1}{\omega C2})

    Und den Imaginärteil einfach auf 0 setzen und dann wie folgt auf Omega umformen:
    ω=L1C1C2+L2C1C22\omega =\sqrt{L1\cdot C1\cdot C2 + L2\cdot C1\cdot C2-2}


  • Mod

    Also allgemein
    0=ω2_iL_i_j1C_j0=\omega^2\sum\_i L\_i - \sum\_j\frac 1 {C\_j}
    Kannst du es nun umformen?



  • Ok, das mit dem Summenzeichen verstehe ich aber wie kommt du auf Omega² ?


  • Mod

    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.


  • Mod

    Ich habe mit omega multipliziert. Fertig.



  • Ah ok danke ich verstehe!

    Umgeformt auf Omega wäre das dann:
    ω=j1CjiLi\omega =\sqrt{\frac{\sum j\frac{1}{Cj}}{\sum iLi}}

    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.?


  • Mod

    Ja.


Anmelden zum Antworten