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

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren