PWM -Stifte in ESP32
Die ESP32 -Karte verfügt über 16 unabhängige Kanäle, mit denen PWM -Signale mit unterschiedlichen Zeiträumen und Breite erzeugt werden können. Fast alle GPIO -Stifte, die als Ausgabe wirken können, können verwendet werden, um ein PWM -Signal zu erzeugen. GPIO -Stifte 34,35,36,39 können nicht als PWM -Stifte verwendet werden, da sie nur Pins eingeben.
In der 36 Pins -Variante von ESP32 -Board werden jedoch auch die sechs SPI -integrierten Stifte als PWM -Signalgeneratoren nicht empfohlen.
So verwenden Sie ESP32 -PWM -Stifte
PWM ist eine Technik zur Steuerung der Ausgabe mit einem variablen digitalen Impulssignal. PWM hilft bei der Steuerung der Motordrehzahl oder der LED -Helligkeit. Hauptkomponente bei der Erzeugung von PWM -Signalen ist das interne Timermodul. Der Timer wird von der internen Mikrocontroller -Uhr -Quelle gesteuert.
Mit der Zeit wird sein Wert mit zwei Komparatoren verglichen und sobald er die definierte erreicht Auslastungsgrad Wert Ein Signal am PWM -Pin wird ausgelöst, wodurch die Pinzustände auf niedrig wechseln. Als nächstes zählt das Timer -Signal, bis es die erreicht Zeitraum Wert registrieren. Jetzt wird der Komparator jetzt wieder einen neuen Auslöser erzeugen und die Pins -State -Verschiebung von PWM -Stiften von niedrig zu hoch.
Um ein PWM -Signal an GPIO -Stiften zu erzeugen, müssen die folgenden vier Eigenschaften definiert werden:
Hier sind einige Punkte, die man berücksichtigen muss, während Sie das ESP32 -PWM -Signal konfigurieren:
Steuerung der LED -Helligkeit unter Verwendung von PWM -Signal in ESP32
Jetzt werden wir die LED -Helligkeit mit einem PWM -Signal steuern. LED mit ESP32 GPIO PIN 18 anschließen.
Die folgende Tabelle zeigt die PIN -Konfiguration für LED mit ESP32.
ESP32 GPIO PIN | LED |
---|---|
GPIO 18 | +Ich habe |
GND | -Ich habe |
Code für eine LED -Helligkeitskontrolle
Programmieren eines ESP32 -Boards mit Micropython Open Thonny Ide und laden Sie den folgenden Code hoch. Denken Sie daran, das ESP32 -Board mit Micropython -Firmware zu blinken, wenn Sie erstmals verwendet werden.
vom Maschinenimportstift, PWM
Zum Zeitpunkt des Imports
Frequenz = 5000
LED1 = PWM (Pin (18), Frequenz)
während wahr:
Für Duty_Cycle im Bereich (0, 1024):
LED1.Dienst (Duty_Cycle)
Schlaf (0.005)
Der Code wurde mit dem Importieren der erforderlichen Klassen begonnen.
vom Maschinenimportstift, PWM
Der LED Objekt wird für das PWM -Signal initialisiert.
LED = PWM (Pin (18), Frequenz)
Ein PWM -Objekt benötigt zwei Argumente: Eine ist die Frequenz und ein anderer ist Dienstzyklus.
Frequenz: Der Frequenzwert reicht von 0 bis 78125. Hier haben wir eine Frequenz von 5 kHz verwendet, um die LED -Helligkeit zu kontrollieren.
Auslastungsgrad: Sein Wert reicht von 0 Und 1023. Hier 1023 ist gleich dem maximalen Wert, der definiert 100% Arbeitszyklus und volle Helligkeit der LED und ähnlich auf der gegenüberliegenden Seite, 0 entspricht 0% Dienstzyklus bedeutet, dass LED völlig schwach ist.
Verwenden der Arbeitszyklusfunktion Pflicht() Wir verabschieden den Arbeitszyklus als Argument für diese Funktion.
LED.Dienst (Duty_Cycle)
In der während Schleife a für Die Schleife wird initialisiert, die den Arbeitszyklus jedes Mal erhöht, wenn er mit einem Intervall von 5 ms um 1 läuft.
Für Duty_Cycle im Bereich (0, 1024):
LED.Dienst (Duty_Cycle)
Schlaf (0.005)
Der Bereich() Funktion kann geschrieben werden als:
Bereich (Start, Stopp, Schritt)
Hier Start Gibt den Startwert des Arbeitszyklus an, der gleich 0 entspricht. stoppen Erklären Sie den Wert, den wir den Arbeitszyklus stoppen möchten. Hier haben wir den Wert 1024 verwendet, da der Maximalwert, bei dem er kommen kann.
Das Letzte Schritt beschreibt den Inkrementierungsfaktor und standardmäßig ist es 1.
Ausgang
Auf der Hardware können wir die Helligkeit der LED in vollem Umfang sehen. Dies bedeutet, dass das Arbeitszyklussignal bei 1024 liegt.
Jetzt können wir sehen, dass die LED völlig schwach ist, was bedeutet, dass der Arbeitszykluswert bei 0 liegt.
Steuern mehrerer Stifte mit demselben PWM -Signal
Wir können mehrere Stifte mit demselben PWM -Signal steuern, das aus einem einzelnen PWM -Kanal erzeugt wird. Jetzt werden wir das Beispiel für ein einzelnes LED ändern, um mehrere LEDs Helligkeit zu kontrollieren.
Schließen Sie drei LEDs an GPIO -Pins 23, 18 und 15 an.
Unter dem Tisch gibt wir PIN -Layout für drei LEDs.
ESP32 GPIO PIN | LED |
---|---|
GPIO 23 | +Ich habe 1 geführt |
GPIO 18 | +Ich habe 2 geführt |
GPIO 15 | +Ich habe 3 geführt |
GND | LED Common GND |
Code für mehrere LEDs Helligkeitskontrolle
Offen Thonny Ide und schreiben Sie den Code in das Editor -Fenster. Schließen Sie danach das ESP32 -Board an und laden Sie es hoch.
vom Maschinenimportstift, PWM
Zum Zeitpunkt des Imports
Frequenz = 5000
LED1 = PWM (Pin (18), Frequenz)
LED2 = PWM (Pin (23), Frequenz)
LED3 = PWM (Pin (15), Frequenz)
während wahr:
Für Duty_Cycle im Bereich (0, 1024):
LED1.Dienst (Duty_Cycle)
LED2.Dienst (Duty_Cycle)
LED3.Dienst (Duty_Cycle)
Schlaf (0.005)
Der Code ähnelt dem vorherigen Beispiel. Wir haben gerade zwei neue LEDs am gpio pin hinzugefügt 23 Und 15.
Der gleiche Arbeitszyklus- und Frequenzwert wird verwendet.
Ausgang
Im Ausgangsabschnitt können wir sehen, dass alle drei LEDs in voller Helligkeit sind, was bedeutet.
Jetzt sind alle drei LEDs düster, was bedeutet, dass alle den gleichen Arbeitszyklus aus demselben PWM -Kanal mit dem Dienstzykluswert 0 haben.
Wir haben die LED -Helligkeit mit dem PWM -Signal erfolgreich kontrolliert.
Abschluss
In diesem Leitfaden haben wir ESP32 PWM -Pins besprochen und wie sie zur Steuerung von Geräten verwendet werden können. Wir haben auch den Code zur Steuerung von Einzel- und mehreren LEDs mit dem PWM -Kanal besprochen. Mit dieser Anleitung kann jede Art von Hardware mit Hilfe des PWM -Signals gesteuert werden.