Bodediagramm für 2Pol aktiv Hoch und Tiefpass

Gast #5266486
Lesenswert?
• ▲
▼
Hallo ihr Lieben,
ich wollte aus der Übertragungsfunktion ein Bodediagramm erstellen.
H(s)= A + Bs + Cs^2 / D + Es + Fs^2
Die aufgelöste Formel steht in der function CalcH.
Das sieht auch alles klasse aus nur ist mein Graph um den Faktor 5 
gestaucht und ich verstehe nicht warum.
Ich hab da jetzt erstmal in meiner Skalierfunktion geschummelt.
Da wohl keine sich in den Code reinlesen möchte, bitte nur mal schauen,
ob ich mich bei der Umsetzung der Übertragungsfunktion vertan habe 
(function CalcH) Om1 ist klein Omega und ABCDEF sind wie Oben.

1
      function mkH(Type,GGain,XSize,XOffset,YGOffset,XStep,YGStep,XUr,YGUr,XFakt,YGFakt,GPhase,YPOffset,YPStep,YPUr,YPFakt){
2
        var posx;
3
        var Gpoints = '';
4
        var Ppoints = '';
5
        var Log10 = YGStep/YGFakt/Math.log(10);      
6
        for(posx=0;posx<(XSize+1);posx++){
7
          var Om = 2*Math.PI*Math.pow(10,((posx-XOffset)*XFakt/XStep)+XUr);
8
          Calc(Type,Om);
9
          var yG = Math.log(QBetrag)*Log10*5;<--HIER HABE ICH GESCHUMMELT
10
          Gpoints += posx.toString()+','+(YGOffset+(YGUr*YGStep) - yG).toString()+' ';
11
          var yP = Phase*YPStep/YPFakt;
12
          Ppoints += posx.toString()+','+(YPOffset+(YPUr*YPStep) - yP).toString()+' ';
13
        }
14
        document.getElementById(GGain).setAttribute('points', Gpoints);
15
        document.getElementById(GPhase).setAttribute('points', Ppoints);
16
      }
17
      function Calc(Type,Om){
18
        var Z1=document.getElementById('Z1').value/1000;
19
        var Z2=document.getElementById('Z2').value/1000;
20
        var Z3=document.getElementById('Z3').value/1000;
21
        var Z4=document.getElementById('Z4').value/1000;
22
        //document.getElementById('Debug').innerHTML+=Z1+'|';
23
        if (Type=='LP')CalcH(1,0,0,1,Z4*(Z1+Z2),Z1*Z2*Z3*Z4,Om);//Tiefpass
24
        if (Type=='HP')CalcH(0,0,Z1*Z2*Z3*Z4,1,Z1*(Z3+Z4),Z1*Z2*Z3*Z4,Om);//Tiefpass
25
      }
26
      function CalcH(A,B,C,D,E,F,Om1){
27
        var Om2=Om1*Om1;
28
        var Om3=Om2*Om1;
29
        var Om4=Om2*Om2;
30
        var Nenner = D*D + Om2*(E*E-2*D*F) + Om4*F*F;
31
        var ZRe = A*D + Om2*(B*E-A*F-C*D) + Om4*C*F;
32
        var ZIm = Om1*(B*D-A*E) + Om3*(C*E-B*F);
33
        var Re = ZRe/Nenner;
34
        var Im = ZIm/Nenner;
35
        QBetrag = Re*Re + Im*Im;
36
        //document.getElementById('Debug').innerHTML+=temp+'|';
37
        Phase = (Math.acos(Re/Math.sqrt(QBetrag))*180/Math.PI);
38
        if (Im<0)Phase *= -1;
39
      }

Vielen Dank
Christof
Angehängte Dateien:

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.