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.
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
Download Projektdatei
Wenn Sie nur an der Exe-Datei interessiert sind, befindet sich diese in dem Unterordner \bin\Debug.