- Erforderliche Komponenten
- PWM-Generierung
- Code Erläuterung für ESP32 PWM
- Testen der ESP32-PWM-Signale
Die Pulsweitenmodulation (PWM) ist eine Technik, die die Breite eines Pulses variiert, während die Wellenfrequenz konstant gehalten wird. Die PWM-Technik wird hauptsächlich verwendet, um die Helligkeit der LED, die Drehzahl des Gleichstrommotors, die Steuerung eines Servomotors oder in anderen Fällen, in denen ein analoges Signal unter Verwendung einer digitalen Quelle erzeugt werden muss, zu steuern. Wir haben die PWM im vorherigen Artikel ausführlich erläutert.
In diesem Tutorial werden wir uns mit PWM-Pins (Pulsweitenmodulation) der ESP32-Entwicklungsplatine befassen. Alle GPIO-Pins der ESP32-Entwicklungsplatine (außer Power, GND, Tx, Rx und EN) können zum Abrufen des PWM-Signals verwendet werden. Als Beispiel für ein ESP32-PWM bauen wir eine einfache Schaltung auf, die die LED-Helligkeit entsprechend den PWM-Signalen ändert.
Erforderliche Komponenten
- ESP32
- LED
- 330 Ω Widerstand
- 10k Topf
- Steckbrett
PWM-Generierung
Bevor wir die PWM-Generierung auf ESP32 erläutern, wollen wir einige Begriffe diskutieren, die mit PWM verbunden sind.
TON (Einschaltzeit): Die Zeitdauer, in der das Signal hoch ist.
TOFF (Ausschaltzeit): Die Zeitdauer, in der das Signal niedrig ist.
Periode: Dies ist die Summe aus Einschaltzeit und Ausschaltzeit des PWM-Signals.
TotalPeriod = T ON + T OFF
Arbeitszyklus: Der Prozentsatz der Zeit, in der das Signal während des Zeitraums des PWM-Signals hoch war.
Arbeitszyklus = T ON / T Total * 100
Zum Beispiel, wenn ein Impuls mit einer Gesamtperiode von 10 ms 5 ms lang eingeschaltet bleibt (hoch). Dann ist der Arbeitszyklus:
Arbeitszyklus = 5/10 * 100 = 50% Arbeitszyklus
Die Schaltung enthält eine einzelne LED, einen Widerstand und ein 10K-Potentiometer. Der negative Pin der LED ist über einen 330 Ω-Widerstand mit dem GND des ESP32 verbunden. Sie können einen beliebigen Widerstandswert zwischen 230 Ω und 500 Ω verwenden. Verbinden Sie den positiven LED-Pin mit GPIO 16 und den Signal-Pin von Pot mit dem ADC1 (VP) -Pin von ESP32.
Code Erläuterung für ESP32 PWM
Der vollständige Code ist am Ende der Seite angegeben.
Für diesen Code ist keine Bibliothek erforderlich. Beginnen Sie Ihren Code, indem Sie den Pin definieren, an dem die LED angebracht ist. In meinem Fall habe ich GPIO 16 verwendet, um die LED anzuschließen.
const int ledPin = 16; // 16 entspricht GPIO16
Stellen Sie danach die PWM-Signaleigenschaften in den nächsten Zeilen ein. Ich habe die PWM-Frequenz auf 9000 und die Auflösung auf 10 eingestellt. Sie können sie ändern, um verschiedene PWM-Signale zu erzeugen. ESP32-Karten unterstützen eine PWM-Auflösung von 1 Bit bis 16 Bit. Sie müssen auch einen PWM-Kanal auswählen. ESP32 verfügt über insgesamt 16 (0 bis 15) PWM-Kanäle.
const int freq = 9000; const int ledChannel = 0; const int Auflösung = 10;
Konfigurieren Sie nun in der Funktion void setup () die LED-PWM mit den zuvor festgelegten Eigenschaften mithilfe der Funktion ledcSetup () . Definieren Sie in der nächsten Zeile den GPIO-Pin, an dem die LED angeschlossen ist. Mit der Funktion ledcAttachPin () werden der GPIO-Pin und der Kanal definiert, der das Signal erzeugt. In meinem Fall habe ich den ledPin GPIO 16 und den ledChannel verwendet, der Kanal 0 entspricht.
void setup () {Serial.begin (9600); ledcSetup (ledChannel, Freq, Auflösung); ledcAttachPin (ledPin, ledChannel); }}
Lesen Sie in der Void-Schleife den Analog-Pin, an dem der Pot angeschlossen ist, und speichern Sie den Messwert in einer Variablen namens'utyCycle ' . Die LED-Helligkeit nimmt je nach Drehung des Potentiometers zu oder ab. Das ledcWrite () ist analogWrite () sehr ähnlich .
void loop () {utyCycle = analogRead (A0); ledcWrite (ledChannel,utyCycle); Verzögerung (15); }}
Testen der ESP32-PWM-Signale
Um die PWM-Signale des ESP32 zu testen, schließen Sie die LED und das Potentiometer gemäß Schaltplan an und laden Sie den Code auf Ihren ESP32 hoch. Stellen Sie sicher, dass Sie die richtige Karte und den richtigen COM-Anschluss ausgewählt haben. Drehen Sie nun das Potentiometer, um die LED-Helligkeit zu erhöhen oder zu verringern.
Die vollständige Arbeit ist im folgenden Video dargestellt. Überprüfen Sie auch andere ESP32-basierte Projekte, indem Sie dem Link folgen.