Transistor Kennlinien Kurve in C++ Builder - pow, polybezier oder pixels?



  • hallo

    ja hmm, ich weiß nicht wie ich das den canvas methoden umsetzen kann.

    ich möchte eine wertetabelle machen, die für jeden punkt (der ja immer unterschiedlich ist) werte für x (= uce) und y (= ic) ausrechnen lassen.

    Diese Punkte sollen dann aneinander gereit gezeichnet werden (also logischerweise mit der methode "pixels" von canvas), das ergibt ja dann automatisch die kennlinie.

    ich weiß nun nicht wie ich das anstellen soll?
    das proggen der wertetabelle ist mir ehrlich gesagt ein rätsel, sowie die übergabe der einzelnen werte an "Canvas pixels".

    ne gerade zeichne ich ja so:

    for (int i = 10; i <= 200; i++)
    PaintBox1->Canvas->Pixels[i][10] = clRed;

    nun müsste ich ja [i] jedesmal den neu errechneten wert von x (= uce) zuweisen, damit da dann der punkt an einer andren stelle gezeichnet wird. nur wie?

    danke 🙂



  • Hallo

    nun müsste ich ja [i] jedesmal den neu errechneten wert

    nein, das i bleibt genau so wie du es hast, du mußt den y-Wert (bei dir 10) immer neu berechnen.

    Jetzt brauchst du einen Maßstab Pixel/Meßwert. Zum Beispiel 1 Pixel entsprechen 5 V (wenn da irgendwo Volt ist). Dann kannst du vom linken Pixel anfangen, indem du den niedrigsten möglichen Ausgangswert in deine Formel einsetzt, also

    x = uce(0 * 5); // Pixel mal Maßstab
    

    dann kommt der nächste Pixel

    x = uce(1 * 5); // Pixel mal Maßstab
    

    das ganze natürlich in einer Schleife bis zum letzten möglichen Pixel.

    Das Ergebnis deiner Rechnung mußt du gegebenfalls wieder mit einem passenden Maßstab verrechnen, um ihn dann anzeigen zu können.

    bis bald
    akari



  • Hi, habe hier mal eine Methode mit einem TChart:

    float UTH = 1;         //Pinch-Off-Spannung
       float beta = 1;        //Transistor-Verstärkung
       float Step = 0.01;     //Berechnungsschritte 
       float ID;
       float UGS = 3;
       Chart->BottomAxis->Automatic = false;
       Chart->BottomAxis->Minimum = 0;
       Chart->BottomAxis->Maximum = 10;
       Chart->LeftAxis->Automatic = false;
       Chart->LeftAxis->Minimum = 0;
       Chart->LeftAxis->Maximum = 4;
       for(float UDS = 0; UDS<=Chart->BottomAxis->Maximum; UDS+=Step)
       {
          if(UDS < UGS-UTH)                              //Triodenbereich
          {
             ID = beta*((UGS-UTH)*UDS-(pow(UDS,2)/2));
          }
          else                                           //Sättigungsbereich
          {
             ID = (beta/2)*pow(UGS-UTH,2);
          }
          Series1->AddXY(UDS,ID);
       }
    


  • ui, das schaut aber kompliziert aus! hab mal activex charts eingefügt und ne menge einstellungen entdeckt.
    ich glaub, dass wäre zu kompli.
    aber danke 🙂

    mit tchart kenn ich mich gar nicht aus



  • Du brauchst blos ein TChart auf die Form zu packen, dann einen neue Serie hinzufüngen und das wars dann auch schon.



  • JUHUHUU es klappt. ich denke jetzt weiß ich den rest auch weiter!
    Vielen Dank an euch beide!!!!
    Habt mir echt geholfen!

    Viele Grüße



  • Eigentlich trau ich mich gar nicht nochmal zu fragen, nur ich verzweifel langsam. Die Formeln zur Berechnung im vorherigen Teil dieses Beitrags sind nur für FET`s also MOS Feldeffekt Transistoren. Genau das bemerkte ich erst als ich fast alles fertig hatte *rotwerd*

    Kann mir jemand sagen welche Formeln ich für einen ganz normalen bipolaren Transistor nehmen soll und wie ich das in meine Schleife einbaue:

    die sieht ja so aus mit TChart:

    float UTH = 1;         //Pinch-Off-Spannung
       float beta = 1;        //Transistor-Verstärkung
       float Step = 0.01;     //Berechnungsschritte
       float ID;
       float UGS = 3;
       Chart->BottomAxis->Automatic = false;
       Chart->BottomAxis->Minimum = 0;
       Chart->BottomAxis->Maximum = 10;
       Chart->LeftAxis->Automatic = false;
       Chart->LeftAxis->Minimum = 0;
       Chart->LeftAxis->Maximum = 4;
       for(float UDS = 0; UDS<=Chart->BottomAxis->Maximum; UDS+=Step)
       {
          if(UDS < UGS-UTH)                              //Triodenbereich
          {
           //-> FET Formel, die ist ja falsch ID = beta*((UGS-UTH)*UDS-(pow(UDS,2)/2));
          }
          else                                           //Sättigungsbereich
          {
            //-> ID = (beta/2)*pow(UGS-UTH,2);
          }
          Series1->AddXY(UDS,ID);
       }
    


  • Für den Sättigungsbereich gilt:

    Ic = Is*exp(UBE/UT)*(1+UCE/UA)

    wobei Is: Sperrsättigungsstrom
    UA: Early-Spannung
    UT: Temperaturspannung (vgl. Diode) bei 20°C 26mV

    falls du lieber Ib anstelle von UBE haben möchtest: Ib = Is/B0*exp(UBE/UT)
    B0: extraploierte Stromverstärkung für UCE = 0V

    Die Formel für den Übergangsbereich weiss ich leider auch nicht, die müsste ähnlich wie jene der Diode sein.
    Wenn du dein Projekt für einen Bipolaren brauchst, wieso lieferst du dann ein Beispielbild eine n-Kanal MOS-FET?



  • calibo-nostra schrieb:

    Eigentlich trau ich mich gar nicht nochmal zu fragen, nur ich verzweifel langsam. Die Formeln zur Berechnung im vorherigen Teil dieses Beitrags sind nur für FET`s also MOS Feldeffekt Transistoren. Genau das bemerkte ich erst als ich fast alles fertig hatte *rotwerd*

    Kann mir jemand sagen welche Formeln ich für einen ganz normalen bipolaren Transistor nehmen soll und wie ich das in meine Schleife einbaue:

    das ist mal ein richtig tolles Beispiel wie eine Projektarbeit NICHT ablaufen sollte. Du schreibst eine Software und hast absolut kein Hintergrundwissen über das was Du da machst. Ich meine nicht das Programmieren, sondern die Elektronik. Vielleicht solltest Du Dich zuerst damit befassen, wenn Du das kapiert hast Dich erst dann ans Programmieren machen? Was bringen Dir die vorgekauten Lösungen hier wenn Du letztendlich nichts kapiert hast?
    Zur Erinnerung: eine Projektarbeit dient dazu, sich mit einem Problem zu befassen, Problemlösungen selbstständig(!) zu erarbeiten(!), kurz: etwas daraus zu lernen. Dieses Wissen das Du Dir dann daraus erwirbst wirst Du nicht so schnell vergessen....die vorgekauten Lösungen bringen Dir sogesehen gar nichts.



  • Das ich Hintergrundwissen haben muss ist mir klar, das habe ich auch, nur keines welches mein Problem lösen könnte, da die Elektrotechnik sich nicht mit dem Zeichnen von Kennlinien eines Transistors auseinandersetz. Ich kenne die Elektrotechnik für Transistoren nur, wie sie sich lediglich nur damit befasst, Arbeitspunkte zu bestimmen und widerstände, spannungen und ströme auszurechnen, nicht aber wie nun eine stromsteuerkennlinie gezeichnet wird, und wie das eine Funktion ebschreibt, da alles irgendwie mit allem zusammenhängt.

    Danke aber für diesen Kommentar, ich denke jetzt werde ich mich mit mehr Gewissen auf mein Projekt stürzen!

    Danke auch wedmer! -- Diese Mos-FET Formel habe ich aus einem Tutorial, aber ist eben genau das falsche gewesen, wollte ja bipolare Trans-Kenn-Linien zeichnen!

    Danke


Anmelden zum Antworten