Einführung in die PWM für AVR (Atmel) Mikrocontroller
Teilen
Einführung in PWM für AVR (Atmel) Mikrocontroller
PWM steht für Pulsweitenmodulation und ist die Methode, um variable Spannungen mit digitalen Mitteln zu erzeugen. Typischerweise stammen variable Spannungen von analogen Schaltungen, und digitale Schaltungen erzeugen nur zwei Spannungen, die hohe (5V, 3,3V, 1,8V usw.) oder die niedrige (0V). Wie ist es also möglich, dass digitale Schaltungen eine Spannung erzeugen können, die zwischen den hohen und den niedrigen Spannungen liegt? Wenn Sie ein digitales Signal auf konsistente Weise auf- und absteigen lassen, erhalten Sie einen Anteil der Spannung zwischen den hohen und niedrigen Spannungen. Stellen Sie sich vor, ein digitales Signal würde gleichmäßig hoch (5V) und niedrig (0V) gepulst, sagen wir, das Signal war 1 Mikrosekunde lang im hohen Zustand und 1 Mikrosekunde lang im niedrigen Zustand. Fügen Sie einen Kondensator hinzu, um das Signal zu glätten, dann würde die Spannung 2,5 Volt betragen. Ändern Sie nun die hohe Spannung im hohen Zustand auf 9 Mikrosekunden und im niedrigen Zustand auf 1 Mikrosekunde, dann würde die Spannung 90% von 5 Volt, oder 5V x 0,9 = 4,5 Volt betragen. Die 90% sind signifikant, da der Tastgrad als Prozentsatz (%) dargestellt wird. Die Anwendungen, die mit PWM verbunden sein könnten, sind: die Steuerung von Motoren, Tonausgabe, Dimmen von LEDs und die Erzeugung angenäherter analoger Wellenformen.
Okay, lassen Sie uns technischer werden, denn PWM hat viele Anforderungen und Spezifikationen, die sehr wichtig sind, um sicherzustellen, dass Sie ein PWM-Signal ausgeben, das von dem empfangenden Gerät akzeptiert wird. Das Gerät, das das von Ihrem Mikrocontroller ausgegebene PWM empfängt, benötigt das PWM in einer bestimmten Frequenz. Die Periode des PWM ist das, was die Frequenz erzeugt, und sie wird als Zeitdauer dargestellt. Die Periode ist der Zeitpunkt, an dem das digitale Signal hochgehalten wird und dann niedrig wird, und der Anteil innerhalb dieser Periode ist der Tastgrad. Die Periode wird zunächst ausgewählt und ändert sich nicht. Je länger die Periode, desto langsamer die Frequenz, und je kürzer die Periode, desto schneller die Frequenz. Die Frequenz des PWM ist die Anzahl dieser Perioden, die in eine Sekunde passen. Wenn die Periode 1 Millisekunde lang ist, dann wäre die Frequenz 1 kHz, oder 1000 Hz, oder 1000 Mal pro Sekunde.
Es gibt verschiedene Arten von PWM, einschließlich phasenkorrekter PWM, bei der der Impuls genau in der Mitte der Periode stattfindet, und Standard-PWM, bei der der Impuls am Ende der Periode stattfindet. Der Tastgrad, wie oben erwähnt, ist der Prozentsatz, den der Impuls innerhalb der Periode hoch ist. Zum Beispiel wäre ein Tastgrad von 50% die Hälfte des hohen Spannungspegels.
Wenn Sie ein ausreichend schnelles PWM haben, können Sie auch analoge Wellenformen fast jeder Art erzeugen. Indem Sie den Tastgrad in jeder Periode variieren, könnten Sie im Wesentlichen die Wellenform zeichnen und sie so ausgeben, aber die Wellenform wird eher stufenförmig erscheinen, anstatt einer perfekten Wellenform. Je kleiner die Perioden oder höher die Frequenz, desto besser und glatter können die Wellenformen sein.
Ich zeige im Video ein Beispiel, wie man ein PWM-Signal vom AVR-Mikrocontroller an ein Hobby-Servo sendet. Hobby-Servos, der Standardtyp und nicht der digitale Typ, empfangen ein PWM-Signal, im Allgemeinen mit einer Periode von 20 ms und der Impuls innerhalb dieser Periode hat im Allgemeinen Einschränkungen von 0,9 und 2,1 ms. Der 0,9 ms Impuls stellt das Servo-Horn auf eine Drehung von 0 Grad ein und der 2,1 ms Impuls stellt das Servo-Horn auf 180 Grad ein. Diese Zahlen können je nach verwendetem Servo variieren, und selbst wenn das Datenblatt Ihnen diese Zahlen gibt, kann Ihr Servo etwas anders sein, wie Sie in diesem und meinen anderen Videos sehen werden.
Wie erzeugt der Mikrocontroller also ein PWM? Der Mikrocontroller verwendet seine Taktquelle und einen eingebauten Timer-Mechanismus. Sie können den internen Timer so steuern, dass er bis zu einer bestimmten Zählung hochzählt und dann auf 0 zurückgesetzt wird, so dass der Timer immer wieder hochzählt und dann auf 0 zurückgesetzt wird. Dies legt Ihre Periode fest. Sie haben nun die Möglichkeit, einen Impuls zu steuern, indem Sie einen Impuls zu einer bestimmten Zählung im Timer einschalten, während er hochzählt. Wenn der Zähler auf 0 zurückgeht, schalten Sie den Impuls aus. Dies bietet viel Flexibilität, da Sie immer auf die Zählung des Timers zugreifen und mit einem einzigen Timer verschiedene Impulse bereitstellen können. Dies ist großartig, wenn Sie mehrere Servos gleichzeitig steuern möchten.