Pulsweitenmodulation

  • VB.NET

Es gibt 11 Antworten in diesem Thema. Der letzte Beitrag () ist von Jogl.

    Pulsweitenmodulation

    Hi!

    Ich habe am LPT-Port eine LED angeschlossen. Diese möchte ich mittels PWM dimmen.
    Das Prinzip der PWM hab ich soweit verstanden... Aber ich hab überhaupt keine Idee, wie ich das Softwareseitig umsetzen kann.
    Ich hab mir vorgestellt, dass man über ein TrackBar die Helligkeit regeln kann.
    Aber wie??
    Nimm ein Timer mit Interval von 1ms beim Ticken wird so ein Code uasgeführt

    VB.NET-Quellcode

    1. Dim iTicks As Integer = 0
    2. Sub Timer1_Tick()
    3. If TrackBarPosition < iTick Then
    4. 'LPT Port AN
    5. Else
    6. 'LPT Port AUS
    7. End If
    8. If iTick > 1000 Then
    9. iTick = 0
    10. Else
    11. iTick += 1
    12. End If
    13. End Sub


    Der LPT Port bleibt solange AN wie iTick kleiner als die TrackBar Position ist. Die TrackBar sollte von 0 bis 1000 regelbar sein.

    Dies wäre nur eine Möglichkeit, vielleicht gibs noch eine andere =)
    Hi dodo!

    Erst mal danke, für deine Antwort.

    Ich hab deinen Code ausprobiert... da passiert aber nicht viel... geht alles viel zu langsam
    Wenn die TrackBar ganz am anfang ist, leuchtet die LED für ca. 8 Sekunden, dann ist sie ganz kurz aus und dann leuchtet sie wieder...
    Wenn die Trackbar ganz Hinten ist, ist die LED für ca. 8 Sekunden aus, leuchtet kurz, wieder aus.
    Ja mir is dann auch eingefallen dass die gesamte Periode ja eine Sekunde dauert löl also kürze das alles einfach ^^ vielleicht auch ohne Timer einfach eine Do While schleife die Hochzählt aber das pinzip ist so.
    Du gibst eine Zahl als gesamte Periode an und dann bestimmst du anhand der TrackBar wielange die LED an sein soll und den rest wird sie Ausgeschaltet!
    Der Code ist doch schon wie oben im Timer.
    Bin gerade nicht so in der Lage den genauen code zu erstellen, warn hartes WE ^^
    Aber in etwa so

    VB.NET-Quellcode

    1. Dim Enabled As Boolean = False
    2. Dim iTick as Integer = 0
    3. Dim iPeriode As Integer = 100
    4. Do
    5. If iTick > iPriode Then
    6. iTick = 0
    7. Else
    8. iTick += 1
    9. End If
    10. If iTick < TrackBar1.Value Then
    11. ' AN
    12. Else
    13. ' AUS
    14. End If
    15. Application.DoEvent()
    16. Loop While Enabled = True


    Der is jetzt ausm Kopf erstellt, also keine garantie. Aber halt so ähnlich denke ich mir den. Die Periode ist die Gesamtzeit von Zeit-Ein und Zeit-Aus. Mit der Trackbar wird demnach eingestellt wielange der LPT AN sein soll. Je kleiner der Wert ist um so dunkler ist die LED, weil die LED ja nur für den Bruchteil einer Sekunde eingeschaltet wird. Wird der TrackBar Wert größer ist die AUS Zeit kürzer und es scheint so, dass die LED heller leuchte!
    Nuja ist eben PULSweiten Modulation ^^ gepulst heißt flackern, ich weiß nicht wielange VB benötigt um eine Zeile abzuarbeiten, aber eigentlich dürfte die Frequenz so hoch sein, dass das menschliche Auge es nicht mehr wahrnimmt. Das ist etwa bei 100 Hz der fall. Aber vielleicht kannst ja noch bischel rumprobieren. Das System haste ja schonmal wie man so was realisiert =)
    Die Perioden Zeit kannste ja auch mal auf 10 oder so setzten.