Diodenkennlinie – VB.Net Beispiel

Dioden zeichnen sich durch ihre logarithmischen Strom/Spannungs-Kennlinie aus. Welche Form die U/I-Kurve aber genau annimmt; hängt von der Art der Diode und ihrer Temperatur ab. Das hier vorgestellte Programm simuliert dabei die vier geläufigsten Dioden bei Temperaturen zwischen 0° und 150°C. Sie können sich das Strom/Spannungs-Verhältnis bei gewählten Parametern angucken, oder Sie lassen sich gleich den ganzen Verlauf, also die Diodenkennlinie im Bereich von 0 bis 20 mA aufzeigen.

Das Programm besteht größtenteils aus bekannten Elementen. Dreh und Angelpunkt ist die folgende Diodengleichung, die den Strom in Abhänigkeit von der Spannung und der Temperatur berechnet. I_s ist vom jeweiligen Diodentyp abhängig:

     I = I_s * Math.Exp(Ui / 0.03 / 300 * (Temp + 273))

Die Berechnung findet komplett im Timer statt ebenso wie die Ausgabe. Es kommen auch zum ersten Mal Radiobuttons zum Einsatz. Diese Buttons schalten sich automatisch auf nicht ausgewählt, wenn ein anderer Button ausgewählt wurde. So kann man sicher gehen, dass nie zwei Zustände gleichzeitig ausgewählt sind.

Gesamter Quelltext

Public Class Form1
 
    Dim Ui As Double
    Dim I_s
    Dim Temp
    Dim Sweep
    Dim P1 As Point
    Dim pz As Point
    Dim P2 As Point
    Dim stift As New Pen(Color.Black, 1)
    Dim stiftl As New Pen(Color.Black, 1)
    Dim U
 
    Private Sub pSet(ByVal x As Integer, ByVal y As Integer)
        P1.X = x
        P1.Y = y
        pz.X = 1
        pz.Y = 1
        Dim vsize As New Size(pz)
        Dim rect As New Rectangle(P1, vsize)
 
        PictureBox1.CreateGraphics.DrawRectangle(Pens.Black, rect) ‚, P1) ‚, P1)
    End Sub
 
    Private Sub Line(ByVal x As Integer, ByVal y As Integer)
        P2.X = x
        P2.Y = y
 
        PictureBox1.CreateGraphics.DrawLine(stiftl, P1, P2)
        P1.X = x
        P1.Y = y
    End Sub
 
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) HandlesbtZeichnen.Click
        Sweep = 1
    End Sub
 
    Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
        Dim df
        Dim I, j
        Dim valg
 
 
        If Ui = 0 Then
            For I = 0 To 10
                For j = 0 To 10
                    pSet((20 + I * 40), (j * 20) + 10)
                Next j
            Next I
            pSet(20, 210)
        End If
 
        If Sweep = 1 Then Ui = Ui + 0.01
        If Ui < 0 Then Ui = 0
        If Ui > 2 Then Ui = 2
        valg = Ui * 100
 
        I = I_s * Math.Exp(Ui / 0.03 / 300 * (Temp + 273))
        U = Ui
        If I > 20 Then
            I = 20
            Sweep = 0
            Ui = Ui – 0.01
        End If
      
        df = (210 – I * 10)
        Line(20 + U * 200, df)
        U = Int(U * 100) / 100
        Label1.Text = Str$(U) + “ V“
        I = Int(I * 100) / 100
 
        Label2.Text = Str$(I) + “ mA“
        ‚VScroll1.Value = VScroll1.Maximum – valg + VScroll1.Minimum
    End Sub
 
    Private Sub VScroll1_Scroll(ByVal sender As System.Object, ByVal e As System.Windows.Forms.ScrollEventArgs)Handles VScroll1.Scroll
        Dim val
        val = VScroll1.Maximum – VScroll1.Value + VScroll1.Minimum
        If Ui < val / 100 Then Ui = Ui + 0.01
        If Ui > (val / 100) Then Ui = val / 100
    End Sub
 
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        I_s = 0.0000000358
        Ui = 0
        Temp = HScrollBar1.Value
        Label8.Text = „Temp = “ + Str(HScrollBar1.Value) + „°C“
    End Sub
 
    Private Sub RadioButton1_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs)Handles RadioButton1.CheckedChanged
        I_s = 0.0001894
        Ui = 0
        pSet(100, 1100)
    End Sub
 
    Private Sub RadioButton2_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs)Handles RadioButton2.CheckedChanged
        I_s = 0.0000000358
        Ui = 0
        pSet(100, 1100)
    End Sub
 
    Private Sub RadioButton3_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs)Handles RadioButton3.CheckedChanged
        I_s = 2.439E-19
        Ui = 0
        pSet(100, 1100)
    End Sub
 
    Private Sub RadioButton4_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs)Handles RadioButton4.CheckedChanged
        I_s = 4.622E-23
        Ui = 0
        pSet(100, 1100)
    End Sub
 
    Private Sub HScrollBar1_Scroll(ByVal sender As System.Object, ByVal e AsSystem.Windows.Forms.ScrollEventArgs) Handles HScrollBar1.Scroll
        Temp = HScrollBar1.Value
        Label8.Text = „Temp = “ + Str(HScrollBar1.Value) + „°C“
        Ui = 0
        pSet(100, 1100)
    End Sub
 
    Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btneu.Click
        PictureBox1.Image = Nothing
        Ui = 0
    End Sub
End Class

[Einklappen]

Download Projektdatei

Wenn Sie nur an der Exe-Datei interessiert sind, befindet sich diese in dem Unterordner \bin\Debug.