PWM - Pulsweitenmodulation - pulse-width modulation history menue Letztmalig dran rumgefummelt: 23.09.22 13:22:16
Die Pulsweitenmodulation (PWM) (auch Unterschwingungsverfahren) ist eine Modulationsart, bei der eine technische Größe (z. B. elektrischer Strom) zwischen zwei Werten wechselt. Dabei wird bei konstanter Frequenz der Tastgrad des Signales moduliert, also die Breite (nicht etwa Weite) eines Impulses. Der englische Begriff für das Verfahren lautet pulse-width modulation (PWM), das hat den deutschen Sprachgebrauch wohl nachhaltig beeinflusst.
Ein PWM-Signal wird allgemein über einen Tiefpass demoduliert. Die resultierende demodulierte technische Größe entspricht dem arithmetischen Mittelwert und damit der mittleren Höhe der Fläche unter der modulierten Größe, mathematisch bestimmt aus dem Integral über eine ganze Zahl von Perioden, geteilt durch die Dauer der Integration.
PWM ist auch unter Pulsbreitenmodulation (PBM) und Pulsdauermodulation (PDM) bekannt. Der letztgenannte Begriff ist genormt.
Ein anschauliches Beispiel für diese Modulationsart ist ein Schalter, mit dem man eine Heizung ständig ein- und ausschaltet. Je länger die Einschaltzeit gegenüber der Periodendauer ist, umso höher die mittlere Heizleistung. Die Temperatur des geheizten Gebäudes kann nur vergleichsweise langsam dem Ein- und Ausschaltvorgang folgen; durch seine thermische Trägheit ergibt sich das notwendige Tiefpassverhalten zur Demodulation.

1. Theorie der der Quasi-Analgogsteuerung
2. Technischer Hintergrund der PWM-Steurungen
3. Echte PWM-Steuerungen
4. Duty-Cycle-Steuerungen
5. Echte Analg-Controller
6. Projekte & Linksammlung
7. Verwandte Themen

PIC-Schaltungen

Puls-Width Modulation - das Logo

inhaltlich auf korrektem Stand - evtl. partiell unvollständig ;-)

Informatik-Profi-Wissen

  Quellen:

1. Theorie der Quasi-Analogsteuerung

Zumindest nach außen hin ist das Portkonzept eines Controllers die wichtigste Informationsquelle, aber auch das Ziel einer technischen Lösung mit einem Mikrocontroller. Letztlich ist hier die einzige Möglichkeit, mit dem Controller selbst zu kommunizieren, also Eingaben zu tätigen, aber auch Ausgaben in gewünschter Form zu erhalten.
... wer bitte schön braucht denn das???
technische Signalwandlung Messen, Steuern, Regeln Phasenanschnittsteuerung AD- bzw. DA-Wandlung als Prinzip Ansteuerung von Elektromotoren

technische Signalwandlung

Messen, Steuern, Regeln

Phasenanschnittsteuerung mittels Thyrisoren

D/A bzw. A/D-Wandlung

9 Volt - LEGO-Motoren

Analogsignale zur Controller-Steuerung (geht praktisch nicht - unendlich aufwändig)

Diskrete Signale zur Controller-Steuerung (immer noch zu komplex)

kontinuierliches Analogsignal

diskretes Digitalsignal

Signalpegel zur Controller-Ausgangs-Steuerung - technisch nicht realisierbar

definierter Signalpegel

verkleinerter definierter Signalpegel

weiter verkleinerter definierter Signalpegel

PWM mit angeschnittener Phase

minimal angeschnittenes PWM-Signal

erweitert angeschnittenes PWM-Signal

noch weiter angeschnittenes PWM-Signal

noch weiter angeschnittenes PWM-Signal

PWM zur Regulierung der Leuchtstärke einer LED

 

minimal angeschnittenes PWM-Signal

erweitert angeschnittenes PWM-Signal

Zeitscheibe für aktiven Ausgang vergrößert

Zeitscheibe für aktiven Ausgang weiter vergrößert

Zeitscheibe für aktiven Ausgang noch weiter vergrößert

Zeitscheibe für aktiven Ausgang noch weiter vergrößert

Zeitscheibe für aktiven Ausgang noch weiter vergrößert

Zeitscheibe für aktiven Ausgang noch weiter vergrößert

Zeitscheibe für aktiven Ausgang noch weiter vergrößert

     
 


2. Technischer Hintergrund der PWM-Steurungen

Die naheliegendste Methode, die Drehzahl eines Gleichstrommotors zu beeinflussen, ist das Variieren seiner Betriebsspannung. Dieses Verfahren ist aus mehreren Gründen nicht optimal. Der Motor braucht eine bestimmte Mindestspannung, um aus dem Stillstand anzulaufen, und im unteren Drehzahlbereich ist die mechanische Leistung niedrig. Eine bessere Lösung besteht darin, die Betriebsspannung konstant auf der Nennspannung zu halten, jedoch den Strom mit einem schnellen Schalter periodisch ein- und auszuschalten. Damit sind die Startprobleme beseitigt, und der Motor läuft auch bei niedrigen Drehzahlen ruhig und gleichmäßig. Die zweite Methode lässt sich auf zwei Wegen realisieren:
Wenn der Motor schneller drehen soll, wird die Anzahl der in jedem Zeitintervall zum Motor durchgeschalteten Stromimpulse erhöht. Das bedeutet, dass die Impulsbreite konstant bleibt, was sich ändert, ist die Frequenz. Der technische Aufwand ist niedrig, doch bei niedrigen Drehzahlen neigt der Motor zu ungleichmäßigem Lauf.
Die Anzahl der Impulse in jedem Zeitintervall wird konstant gehalten, geändert wird die Impulsbreite. Der technische Aufwand ist etwas höher, doch bei niedrigen Drehzahlen verhält sich der Motor nahezu ideal.


3. Echte PWM-Steuerungen

Es wird Sie nicht überraschen, dass wir den zweiten Weg, die Pulsbreitenmodulation (PWM, Pulse Width Modulation) gewählt haben. Unten im Bild ist skizziert, wie die Impulsfolgen bei unterschiedlichen Impulsbreiten aussehen. Ein neuer Begriff, der hier auftaucht und der die relative Impulsbreite ausdrückt, ist der Begriff Duty-cycle. Damit ist das rechnerische Verhältnis des Teils der Periode, in dem Strom fließt, zu einer ganzen Periode (Einschaltzeit plus Ausschaltzeit) gemeint.
Der Duty-cycle gibt an, wie viel Prozent der maximalen Energie dem Motor zugeführt wird. Bei 50 % sind die Ein- und Ausschaltzeiten gleich lang, bei 100 % liegt die Betriebsspannung kontinuierlich an den Motoranschlüssen.
Der Tastgrad (auch Aussteuergrad, engl: duty factor) gibt für eine periodische Folge von Impulsen gemäß DIN IEC 60469-1 das Verhältnis der Impulsdauer zur Impulsperiodendauer an. Der Tastgrad wird als dimensionslose Verhältniszahl mit einem Wert von 0 … 1 oder 0 … 100 % angegeben. Dieses wird nachfolgend an idealen Impulsen erläutert, die eine Rechteckschwingung bilden.


 

Duty-Cycle-Steuerungen

y: Gleichwert; yeff: Effektivwert Tastgrad
τ: Impulsdauer
T: Periodendauer

Speziell für den Tastgrad τ / T = 0,5 = 50 % entsteht ein symmetrischer Puls.

Der Begriff Tastverhältnis kommt in der genannten Norm nicht vor und wird in der Literatur nicht einheitlich verwendet; er wird sowohl für den Tastgrad als auch dessen Kehrwert als auch für das Verhältnis zwischen Impuls- und Pausendauer verwendet. Die letzte Variante entspricht dem in derselben Norm vorkommenden Begriff Ein-Aus-Verhältnis, definiert als das Verhältnis Impulsdauer zu Impulsabstand, also das Ein-Aus-Verhältnis.

Der Mikrocontroller PICI6F877 hat bereits zwei Rechtecksignal-Module an Bord, die Perioden und Impulsbreiten der erzeugten Rechtecksignale lassen sich über das Programm steuern. Die Ausgänge dieser PWM-Module sind die Mikrocontroller-Anschlüsse c1 und c2. Aber Achtung: Zu PWM-Modul 1 gehört Ausgang c2, zu PWM-Modul 2 gehört Ausgang cl! Das Programm muss zuerst ein PWM-Modul initialisieren und anschließend bestimmte Parameter in das zugehörige Register schreiben.
Die genannte Aufgabe kann für Standardwerte die Bibliothek „16f877_bert " übernehmen, sie schließt nämlich die Bibliothek „pwm_hardware.jal" ein. Da die dort festgelegten Standardeinstellungen nicht immer passend sind, wollen wir kurz betrachten, wie die PWM-Module individuell konfiguriert werden können.
Die von uns verwendeten Variablen haben ausschließlich die Länge 8 Bit, sie können folglich Werte annehmen. Deshalb wollen wir die Parameter des PWM-Signals ebenfalls mit 8 Bit einstellen. Weil der Motorstillstand auch als Geschwindigkeit gilt, lässt sich die Motodrehzahl in 256 Abstufungen steuern. Diese Stufenanzahl ist mehr als ausreichend.
Der Duty-cycle des vom PWM-Modul erzeugten Signals kann mit bis zu zehn Bit gesteuert werden. Die beiden niederwertigen Bits stehen in einem Register mit dem Namen CCP1CON. Auch wenn wir den Duty-cycle mit nur acht Bit steuern wollen, müssen wir die acht Bit aufteilen. Die beiden unteren Bits stehen in CCP1CON, die übrigen sechs Bit in einem anderen Register, das CCPR1L heißt. Das ist etwas umständlich, und hier auch nicht unbedingt sinnvoll. Wenn wir die beiden niederwertigen Bits nicht verwenden und auf 0 setzen, können die Drehzahlstufen 1, 2 und 3 nicht eingestellt werden. Die Stufe 3 ist gleichbedeutend mit dem Duty-cycle 1,2 %, die Stufe 4 entspricht 1,6 %. Der Sprung von 0 % (Motorstillstand) nach 1,6 % ist so gering, dass er bei der Drehzahleinstellung in Kauf genommen. werden kann.
Wenn wir die beiden in CCPICON stehenden niederwertigen Bits auf Null setzen und zu,. Drehzahlsteuerung nicht verwenden, können wir die Motordrehzahl nur mit den acht Bits ir CCPR1L steuern.
Werfen wir einen Blick auf das Datenblatt des PIC16F877. Aus der unten stehenden Tabelle geht hervor, dass die höchste Frequenz des vom Mikrocontroller erzeugten PWM-Signal 19,53 kHz beträgt, wenn der Duty-cycle mit der Auflösung 10 Bit gesteuert wird.
 
PWM Frequueny 1.22 kHz 4.88 kHz 19.53 kHz 78.12kHz 156.3 kHz 208.3 kHz
Timer Prescaler (1, 4. 16) 16 4 1 1 1 1
PR2 Value 0xFFh 0xFFh 0xFFh 0x3Fh 0x1Fh 0x17h
Maximum Resolution (bits) 10 10 10 8 7 5,

Tafel 1: Frequenzen des PWM-Signals

Die in der Tabelle stehenden Werte können natürlich auch rechnerisch ermittelt werden. Im Datenblatt ist angegeben, dass sich die Periode des PWM-Signals aus folgender Beziehung: ergibt:
(PR2 + 1 ) 4 - T„„ - TMR2prescalcr Hier sind:
PR2 = FF = 256
Tos = 1 / 20 MHz = 50 ns TMR2prescaler = 1
Eine Periode ist 0,0000512 s lang, folglich beträgt die Frequenz 19,531 kHz.
Diese PWM-Frequenz liegt für Anwendungen wie die Drehzahlsteuerung genügend hoch Mit ihr arbeitet die Steuerung perfekt, der Motor 71427 von Lego läuft erstaunlich ruhig und gleichmäßig. Falls ein anderer Motortyp weniger gleichmäßig läuft oder ungewöhnliche Geräusche verursacht, schafft möglicherweise eine niedrigere PWM-Frequenz Abhilfe. Bei der Auflösung 10 Bit (einschließlich der beiden von uns nicht verwendeten Bits) stehen auch die PWM-Frequenzen 4,88 kHz und 1,22 kHz zur Verfügung.
Für die Frequenz 19,531 kHz muss der Timer-Prescaler auf 1 stehen, und PR2 muss den Wert OxFFh erhalten. Der zweite Wert lässt sich unkompliziert einstellen, denn PR2 ist das Peri
Wichtige Eigenschaften: Maximale Drehzahl 360 U/min, Leerlautstrom 3,5 mA, Blockierstrom
360 mA, Blockierdrehmoment 6 Ncm (nach Messungen von Philippe Hurbain, zowzu.~hilohome.corn).


4. Duty-Cycle-Steuerungen

Diese Art der digitalen Ausgangsansteuerungen ist faktisch ein Ersatz für echte PWM-Steuerungen. Eigentlich ist das nichts weiter, als en definiertes Ein- und Ausschalten eines ganz gewöhnlichen Digitalausganges. Es wird also entweder die volle Spannung geschalten, oder gar kein (bzw. fast gar keine!!!).
Angewandt wird dieses Verfahren genau dann, wenn der Controller keine oder nicht in geforderter Anzahl PWM-Ausgänge besitzt - wir demonstrieren hier für einen PIC12F675 dieses ebenfalls "quasianloge" Verfahren.
Der RGB-Fader lässt drei verschiedenfarbige LEDs parallel zueinander langsam aufachten und wieder verlöschen. Damit wird ein halb transparentes oder transparentes Kunststoffgehäuse zu einem Leuchtobjekt besonderer Art.
Die Leuchtstärke der LEDs lässt sich durch pulsbreitenmodulierte Signale (PWM) steuern. Für dieses Projekt werden drei PWM-Generatoren benötigt, doch selbst der leistungsstarke PIC16F877 hat nur zwei PWM-Module an Bord. Weil beim kleinen PIC12F675 überhaupt kein PWM-Modul vorhanden ist, erzeugen wir die drei PWM-Signale mit Hilfe von Software.
Oben haben wir das Prinzip und den Zweck der Pulsbreitenmodulation ausführlich getrachtet. Beim RGB-Fader wenden wir möglichst einfache Prozeduren an, denn hier kommt es nicht auf eine feste PWM-Signalfrequenz, sondern auf den so genannten Duty-Cycle an.
Der Duty-cycle ist das Verhältnis der Zeit, in der das Signal logisch 1 ist, zu der Zeit der gesamten Signalperiode, ausgedrückt in Prozent. Der Programmaufbau ist am einfachsten, wenn die Signalfrequenz unberücksichtigt bleibt. In diesem Fall hat die Signalfrequenz ihren höchsten möglichen Wert. Eine Ausgangsleitung wird auf logisch 1 geschaltet, gleichzeitig wird ein Zähler gestartet. Wenn der Zähler als „byte" definiert ist, springt er nach 256 Schritten selbstständig auf Null zurück. Die Dauer des Hochzählens ist gleich der Periode es PWM-Signals.
Wenn der Zähler auf Null springt, wird die Ausgangsleitung auf logisch 1 gesetzt, und beim Erreichen eines bestimmten Zählerstands wird sie auf logisch 0 zurück gesetzt. Ist dieser Zähe erstand der Stand Null, dann ist der Duty-cycle ebenfalls Null. Findet das Rücksetzen beispielsweise beim Zählerstand 100 statt, ergibt sich ein Duty-cycle von 100 / 255 = 39 %.
Die Prozedur müssen wir für drei LEDs schreiben:
procedure fade_pwm is
  if t0 == 0 then
    blueled = 1
    redled = 1
    greenled = 1
  end if
  if t0 >= tblue then blueled = 0 end if
  if t0 >= tred then redled = 0 end if
  if t0 >= tgreen then greenled = 0 end if
  t0 = t0 + 1
end procedure
Die Variablen „blueled", „redled" und „greenled" sind die Mikrocontroller-Anschlüsse denen die LEDs angeschlossen sind, und die Variablen „tblue", „tred" und „tgreen" sind , Zählerstände, bei denen die LEDs abgeschaltet werden. Für unser Programm haben wir die Prozedur „fade-pwm" geschrieben, diese Routine werden wir im Programm mehrfach nötigen.
Eine LED leuchtet langsam auf, wenn der Duty-cycle des PWM-Signals langsam von 0 auf 100 % steigt. Der Wert 100 % muss nicht unbedingt erreicht werden, denn die maximale Leuchtstärke durchschnittlicher roter und grüner LEDs setzt schon bei einem Duty-cycle etwa 78 % ein, bei blauen LEDs liegt dieser Wert sogar unter 20 %.
Während der Steigerung des Duty-cycle muss das PWM-Signal weiterhin generiert werden. Deshalb würde das Delay-Kommando hier nicht zum Ziel führen. Wir lösen dieses Problem wie folgt:
counter = counter + 1
if counter == 500 then
  tblue = tblue + 1
  counter = 0
end if
fade_pwm
In die Schleife ist ein Zähler eingebaut. Bei jedem Schleifendurchlauf wird die PCM-Prozedur aufgerufen. Während der 500 Durchläufe wird die LED-Helligkeit nur einmal angepasst, gleichzeitig wird der Zähler auf Null gesetzt.
Ein attraktives Farbenspiel entsteht, wenn die Helligkeit einer Farbe ansteigt, während c Helligkeit einer anderen Farbe sinkt. In diesem Fall laufen die Farben kontinuierlich ineinander über. In der Schleife sinkt der Wert der Farbe Grün von 200 auf 0, während der Wert der Farbe Blau von 0 auf 50 gesteigert wird.
tgreen = 200
tblue = 0
while tgreen != 0 loop
  counter = counter + 1
  if counter == 800 then
    tblue = tblue + 1
    tgreen = tgreen -4
    counter = 0
    end if
  fade_pwm
end loop
Der Unterschied

der Maximalwerte 50 für Blau und 200 für Grün hat seinen Grund darin, lass blaue LEDs bei wesentlich niedrigerem Duty-cycle ihre maximale Helligkeit entfalten. Die Schleife wird wiederholt, bis die Farbe Grün den Wert Null erreicht hat. Durch Aneinanderfügen von drei Schleifen durchläuft der LED-Fader alle von den LEDs darstellbaren Mischfarben.
Das Programm des LED-Faders ist relativ lang:

... und hier nun zum Download des kompletten Programmes

Schaltplan des Projektes Realisierung des Projektes mit einer RGB-LED

Schaltplan mit SPL-Editor 5.0

Schaltplan mit SPL-Editor 5.0 zum Download

RGB-LED leuchtet auch kurz grün

RGB-LED leuchtet blau

RGB-LED leuchtet rot

 


5. Echte Anlog-Controller

Nun klingt ja alles vorab formulierte schon nach einer Art Optimum und es stellt sich dem Laien schon gar nicht mehr die Frage, ob es vielleicht auch heute noch Anwendungsfälle für "echte Analog-Steuerungen gibt.

 


6. Projekte & Linksammlung

 

 


7. Verwandte Themen history menue scroll up

Was ist alles mit dem Betriebssystem eines Microcomputers verwandt? Antwort: faktisch der gesamte Bereich der Digitalelektronik und sowieso die gesamte Technik der Software-Technologie der Vergangenheit, Gegenwart sowie zumindest der nächsten Zukunft.

Der LC-80 Simulator

POLYCOMPUTER

Z80-CPU

Mnemonic-Code-Notation

höhere Programmierwerkzeuge

... und so funktioniert ein Computer

 

die beliebte alphabetisch sortierte Schnell-Liste

die beliebte numerisch sortierte Schnell-Liste

Allgemeine FLAG-Wirkung

FLAG-Wirkung auf OP-Code-Gruppen

Alphabetisch sortierte Dokumentation

FLAG Teile I

FLAG Teile 2

Allgemeine Funktionssymbolik

Aktuelles sowie weiterentwickeltes Betriebssystem

Blockschaltbild eines Einchiprechners

   

Projekt Assemblerprogrammierung

   


zur Hauptseite
© Samuel-von-Pufendorf-Gymnasium Flöha © Frank Rost am 15. April 2010 um 9.57 Uhr

... dieser Text wurde nach den Regeln irgendeiner Rechtschreibreform verfasst - ich hab' irgendwann einmal beschlossen, an diesem Zirkus nicht mehr teilzunehmen ;-)

„Dieses Land braucht eine Steuerreform, dieses Land braucht eine Rentenreform - wir schreiben Schiffahrt mit drei „f“!“

Diddi Hallervorden, dt. Komiker und Kabarettist

Diese Seite wurde ohne Zusatz irgendwelcher Konversationsstoffe erstellt ;-)