- Was ist ein PWM-Signal?
- Wie wandle ich ein PWM-Signal in eine analoge Spannung um?
- Schaltplan:
- Programmieren des MSP für das PWM-Signal:
- Steuern der Helligkeit von LED mit PWM:
Dieses Tutorial ist Teil einer Reihe von MSP430G2 LaunchPad-Tutorials, in denen wir lernen, das MSP430G2 LaunchPad von Texas Instruments zu verwenden. Bisher haben wir die Grundlagen der Karte gelernt und das Lesen von analogen Spannungen, Schnittstellen-LCD mit MSP430G2 usw. behandelt. Nun fahren wir mit dem nächsten Schritt zum Erlernen von PWM in MSP430G2 fort. Dazu steuern wir die Helligkeit einer LED durch Variation des Potentiometers. Das Potentiometer wird daher an einen analogen Pin des MSP430 angeschlossen, um dessen analoge Spannung abzulesen. Daher wird empfohlen, das ADC-Lernprogramm zu lesen, bevor Sie fortfahren.
Was ist ein PWM-Signal?
Die Pulsweitenmodulation (PWM) ist ein digitales Signal, das am häufigsten in Steuerschaltungen verwendet wird. Dieses Signal wird in einer vordefinierten Zeit und Geschwindigkeit auf hoch (3,3 V) und niedrig (0 V) gesetzt. Die Zeit, während der das Signal hoch bleibt, wird als "Einschaltzeit" bezeichnet, und die Zeit, während der das Signal niedrig bleibt, wird als "Ausschaltzeit" bezeichnet. Es gibt zwei wichtige Parameter für eine PWM, wie unten erläutert:
Arbeitszyklus der PWM:
Der Prozentsatz der Zeit, in der das PWM-Signal HIGH (Einschaltzeit) bleibt, wird als Arbeitszyklus bezeichnet. Wenn das Signal immer eingeschaltet ist, befindet es sich in einem Tastverhältnis von 100% und wenn es immer ausgeschaltet ist, ist es ein Tastverhältnis von 0%.
Arbeitszyklus = Einschaltzeit / (Einschaltzeit + Ausschaltzeit)
Frequenz einer PWM:
Die Frequenz eines PWM-Signals bestimmt, wie schnell eine PWM eine Periode abschließt. Eine Periode ist für das Ein- und Ausschalten eines PWM-Signals abgeschlossen, wie in der obigen Abbildung gezeigt. In unserem Tutorial beträgt die Frequenz 500 Hz, da dies der von der Energia IDE festgelegte Standardwert ist.
Es gibt eine Vielzahl von Anwendungen für PWM-Signale in Echtzeit. Um Ihnen eine Vorstellung zu geben, kann das PWM-Signal zur Steuerung von Servomotoren verwendet und auch in eine analoge Spannung umgewandelt werden, mit der die Helligkeit einer LED gesteuert werden kann. Lassen Sie uns ein wenig darüber lernen, wie das gemacht werden kann.
Hier sind einige PWM-Beispiele mit anderen Mikrocontrollern:
- PWM mit PIC Microcontroller mit MPLAB und XC8 erzeugen
- Servomotorsteuerung mit Raspberry Pi
- Arduino-basierter LED-Dimmer mit PWM
Überprüfen Sie hier alle PWM-bezogenen Projekte.
Wie wandle ich ein PWM-Signal in eine analoge Spannung um?
Für PWM-Signale zu analoger Spannung können wir eine Schaltung verwenden, die als RC-Filter bezeichnet wird. Dies ist eine einfache und am häufigsten verwendete Schaltung für diesen Zweck. Die Schaltung enthält nur einen Widerstand und einen Kondensator in Reihe, wie in der folgenden Schaltung gezeigt.
Grundsätzlich passiert hier also, dass sich der Kondensator durch den Widerstand auflädt, wenn das PWM-Signal hoch ist, und wenn das PWM-Signal niedrig wird, entlädt sich der Kondensator durch die gespeicherte Ladung. Auf diese Weise haben wir immer eine konstante Spannung am Ausgang, die proportional zum PWM-Arbeitszyklus ist.
In der oben gezeigten Grafik ist die gelbe Farbe das PWM-Signal und die blaue Farbe die analoge Ausgangsspannung. Wie Sie sehen können, ist die Ausgangswelle keine reine Gleichstromwelle, sollte aber für unsere Anwendung sehr gut funktionieren. Wenn Sie für andere Anwendungen eine reine Gleichstromwelle benötigen, sollten Sie einen Schaltkreis entwerfen.
Schaltplan:
Der Schaltplan ist ziemlich einfach; Es hat nur ein Potentiometer und einen Widerstand und einen Kondensator, um eine RC-Schaltung und die LED selbst zu bilden. Das Potentiometer wird verwendet, um eine analoge Spannung bereitzustellen, auf deren Grundlage das PWM-Signal-Tastverhältnis gesteuert werden kann. Der Ausgang des Potis ist mit Pin P1.0 verbunden, der analoge Spannungen lesen kann. Dann müssen wir ein PWM-Signal erzeugen, das unter Verwendung des Pins P1.2 erfolgen kann. Dieses PWM-Signal wird dann an die RC-Filterschaltung gesendet, um das PWM-Signal in eine analoge Spannung umzuwandeln, die dann an die LED gegeben wird.
Es ist sehr wichtig zu verstehen, dass nicht alle Pins auf der MSP-Karte analoge Spannungen lesen oder PWM-Pins erzeugen können. Die spezifischen Pins, die die spezifischen Aufgaben ausführen können, sind in der folgenden Abbildung dargestellt. Verwenden Sie dies immer als Anleitung, um Ihre Pins für die Programmierung auszuwählen.
Bauen Sie die komplette Schaltung wie oben gezeigt zusammen. Sie können ein Steckbrett und einige Überbrückungskabel verwenden und die Verbindungen einfach herstellen. Sobald die Verbindungen hergestellt sind, sah mein Board wie unten gezeigt aus.
Programmieren des MSP für das PWM-Signal:
Sobald die Hardware fertig ist, können wir mit unserer Programmierung beginnen. Das erste in einem Programm ist, die Pins zu deklarieren, die wir verwenden werden. Hier verwenden wir den Pin Nummer 4 (P1.2) als Ausgangs-Pin, da er PWM erzeugen kann. Also erstellen wir eine Variable und weisen den Pin-Namen zu, damit Sie später im Programm leicht darauf zugreifen können. Das vollständige Programm finden Sie am Ende.
int PWMpin = 4; // Wir verwenden den 4. Pin am MSP-Modul als PWM-Pin
Als nächstes kommen wir zur Setup- Funktion. Unabhängig von Code wird hier geschrieben wird nur einmal durchgeführt werden, hier erklären wir, dass wir diese 4 verwenden th Pin als Ausgangsstift da PWM - Ausgangsfunktionalität ist. Beachten Sie, dass wir hier anstelle der Nummer 4 die Variable PWMpin verwendet haben, damit der Code aussagekräftiger aussieht
void setup () { pinMode (PWMpin, OUTPUT); // Der PEMpin ist als Outptut gesetzt }
Schließlich wir bekommen in die Schleife Funktion. Was immer wir hier schreiben, wird immer wieder ausgeführt. In diesem Programm müssen wir die analoge Spannung lesen und entsprechend ein PWM-Signal erzeugen, und dies muss immer wieder passieren. Beginnen wir also damit, zunächst die analoge Spannung von Pin A0 abzulesen, da wir ein Potentiometer daran angeschlossen haben.
Hier lesen wir den Wert mit der AanalogRead- Funktion. Diese Funktion gibt einen Wert von 0-1024 zurück, basierend auf dem Wert der an den Pin angelegten Spannung. Wir speichern diesen Wert dann in einer Variablen namens "val", wie unten gezeigt
int val = analogRead (A0); // Lesen Sie den ADC-Wert von Pin A0
Wir müssen die Werte von 0 bis 1024 vom ADC in Werte von 0 bis 255 konvertieren, um sie der PWM-Funktion zu geben. Warum sollten wir das konvertieren? Ich werde das in Kürze sagen, aber denken Sie vorerst daran, dass wir konvertieren müssen. Einen Satz von Werten auf einem anderen Satz von Werten zu konvertieren Energia eine hat Karte Funktion ähnlich wie Arduino. Also konvertieren wir die Werte von 0-1204 in 0-255 und speichern sie wieder in der Variablen "val".
val = map (val , 0, 1023, 0, 255); // Der ADC gibt einen Wert von 0-1023 aus und konvertiert ihn in 0-255
Jetzt haben wir einen variablen Wert von 0-255 basierend auf der Position des Potentiometers. Alles, was wir tun müssen, ist, diesen Wert am PWM-Pin zu verwenden. Dies kann über die folgende Zeile erfolgen.
analogWrite (PWMpin, val); // Schreibe diesen Wert in den PWM-Pin.
Kommen wir zurück zu der Frage, warum 0-255 auf den PWM-Pin geschrieben wird. Dieser Wert 0-255 bestimmt das Tastverhältnis des PWM-Signals. Wenn der Wert des Signals beispielsweise 0 ist, bedeutet dies, dass das Tastverhältnis für 127 0% beträgt, für 50 50% und für 255 100%, genau wie oben in diesem Artikel gezeigt und erläutert.
Steuern der Helligkeit von LED mit PWM:
Sobald Sie die Hardware und den Code verstanden haben, ist es Zeit, Spaß an der Arbeit der Schaltung zu haben. Laden Sie den Code auf die MSP430G2-Karte hoch und drehen Sie den Potentiometerknopf. Wenn Sie den Knopf drehen, ändert sich die Spannung an Pin 2, die vom Mikrocontroller gelesen wird, und je nach Spannung werden die PWM-Signale an Pin 4 erzeugt. Je höher die Spannung, desto größer ist das Tastverhältnis und umgekehrt.
Dieses PWM-Signal wird dann in eine analoge Spannung umgewandelt, um eine LED zu leuchten. Die Helligkeit der LED ist direkt proportional zum Arbeitszyklus des PWM-Signals. Abgesehen von der LED auf dem Steckbrett können Sie auch feststellen, dass die smd-LED (rote Farbe) ihre Helligkeit ähnlich wie die LED auf dem Steckbrett variiert. Diese LED ist ebenfalls mit demselben Pin verbunden, verfügt jedoch nicht über ein RC-Netzwerk, sodass sie tatsächlich sehr schnell flackert. Sie können das Brett in einem dunklen Raum schütteln, um das Flackern zu überprüfen. Die komplette Arbeit ist auch im Video unten zu sehen.
Das ist alles für den Moment, Leute, wir haben gelernt, wie man PWM-Signale auf der MSP430G2-Karte verwendet. In unserem nächsten Tutorial werden wir lernen, wie einfach es ist, einen Servomotor mit denselben PWM-Signalen zu steuern. Wenn Sie irgendwelche Zweifel haben, posten Sie sie im Kommentarbereich unten oder in den Foren für technische Hilfe.