Forum: Analoge Elektronik und Schaltungstechnik Bodediagramm für 2Pol aktiv Hoch und Tiefpass


von Christof Rieger (Gast)


Angehängte Dateien:

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

von Christof Rieger (Gast)


Lesenswert?

Danke Leute,
ich bin doof. Ich liege sogar um den Faktor 10 daneben. Die dB sind ja 
zum 10 Logarithmus mit dem Faktor 10 skaliert. log(2) ist ja 0,3 und 
nicht 3.

Sorry

von Christof Rieger (Gast)


Lesenswert?

Hi,
da ich hier gegagert habe möchte ich euch noch mitteilen, das die erste 
Version des Tools fertig ist.
Es kann über http://r-tron.via-hub.de/bode.htm aufgerufen werden.

LG Christof

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.