-         

Ergebnis 1 bis 6 von 6

Thema: Software PWM ?

  1. #1
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    20.02.2007
    Beiträge
    341

    Software PWM ?

    Anzeige

    Hi,

    hat jemand zufällig eine kleine Erklärung zur Software Pwm, bzw einen Beispielcode ?

    Die Suche bei google brachte mich bis dato leider zu keinem Ergebnis.

    Soweit ich bis jetzt rausgefunden habe erzeuge ich das Pwm Signal indem ich einen Timer nutze und dann Werte abgleiche. Nur wie genau funktioniert das ?

    mfg Yannic

  2. #2

  3. #3
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    21.05.2008
    Ort
    Oststeinbek
    Alter
    27
    Beiträge
    607
    Im grunde genommen funktioniert PWM so: ein Zähler Läuft von Null bis zu einem Maximalwert und fängt dann wieder von Null an (einfachstes Beispiel).
    Ein PWM wird nun z.B. folgendermaßen erzeugt: wenn der Zähler auf Null ist, wird der Pin auf High gesetzt. Bei einem bestimmten Wert zwischen Null und Maximalwert wird der Pin auf Low gesetzt. Je später der Pin auf Low gesetzt wird, desto länger der Higt-Zeitraum, desto höher die Durchschnittsspannung.
    Hardwaremäßig geht das, in dem es ein bestimmtes "compare-match"-Ereigniss bei den Timern gibt, das den Pin automatisch auf Low stellt, du musst nur einstellen, bei wälcher Zählzeit (bei Null wird er wieder auf High gestellt).
    Wenn du es per software machen willst, musst du das manuell machen. Du beobachtest also durchgehend deinen Timer und vergleichst ihn mit deinen Werten. Bei Null stellst du den Pin auf High, und bei der passenden Zählzeit (wann immer du den Pin wieder auf Low haben willst) stellst du den Pin auf Low.
    Auf Porgrammbeispiele habe ich heute nicht wirklich Lust, srry.

    Gruß, Yaro

  4. #4
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    20.02.2007
    Beiträge
    341
    Gut soweit kann ich mir das jetzt vorstellen und versuch es jetzt mal nicht in code sondern in worten zu beschrieben.

    Timer1 zählt Variable_ZEIT hoch.

    Nun möchte ich die Led Led_R in einer bestimmten frequenz deimmen.

    Also im OnTimer vom Timer1

    If Variable_ZEIT <= MEIN WERT Then Led_R = 1 Else Led_R = 0

    Wenn das sowit stimmt, dann würde mich noch interessieren, wie ich den Timer einstellen müsste. Das ist glaube ich momentan mein größtes Problem. Wonach wird das Ganze errechnet ?

  5. #5
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    18.11.2008
    Ort
    Kapfenberg
    Beiträge
    628
    Hallo!

    Zitat Zitat von Blamaster
    Wenn das sowit stimmt, dann würde mich noch interessieren, wie ich den Timer einstellen müsste. Das ist glaube ich momentan mein größtes Problem. Wonach wird das Ganze errechnet ?
    Hier ist das Ganze recht gut erläutert:
    http://www.bunbury.de/technik/avr/

    Gruß
    Thomas

  6. #6
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    21.05.2008
    Ort
    Oststeinbek
    Alter
    27
    Beiträge
    607
    Nimmst z.b. einen 8-Bit Timer, lässt ihn von 0 bis 255 laufen. Deine Werte sind dann auch zwischen 0 und 255. Wert 0 heißt LED aus, 255 heißt voll an. 127 bedeutet halbe helligkeit (ungefähr). Wähle den Prescaler nicht viel zu groß, sonst könnte es sein, dass du siehst, wie die LED blinkt.

    Gruß, Yaro

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •