PWM mit eSptop 10 mit Arduino IDE

PWM mit eSptop 10 mit Arduino IDE

Impulsbreitenmodulation oder PWM ist eine Technik, mit der das digitale Signal hackt wird, um eine variable Ausgabe zu erhalten. Die meisten Mikrocontroller haben eine interne Uhr, mit der ein PWM -Signal erzeugt wird. In diesem Tutorial werden wir PWM -Stifte abdecken und wie sie in ESP32 mit der Arduino IDE konfiguriert werden können.

PWM -Stifte in ESP32

Das ESP32 -Board verfügt über 16 unabhängige Kanäle, mit denen PWM -Signale generiert 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.

In der 36 Pins Variante der ESP32 -Board die sechs SPI -integrierten Stifte, die auch nicht als PWM -Signalgeneratoren verwendet werden können.

So verwenden Sie ESP32 -PWM -Stifte

PWM ist eine Technik zur Steuerung des Geräts mithilfe eines digitalen Variablen -Impulssignals. PWM hilft bei der Steuerung der Motordrehzahl. Hauptkomponente bei der Erzeugung von PWM -Signalen ist das interne Timermodul. Der Timer wird von der internen Mikrocontroller -Uhr -Quelle gesteuert.

Wenn der Zeitpunkt beginnt, wird der Wert mit zwei Komparatoren verglichen und sobald er den definierten Arbeitszykluswert erreicht. Als nächstes zählt das Timer -Signal, bis es den Periodenregisterwert erreicht. 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 nach vier Eigenschaften zu erzeugen, müssen definiert werden:

  • PWM -Frequenz: Die Frequenz für PWM ist entgegengesetzt zu dem Zeitpunkt, an dem jeder Wert je nach Anwendung festgelegt werden kann.
  • PWM -Auflösung: Die Auflösung definiert die Anzahl der diskreten Arbeitszyklusstufen, die kontrolliert werden können.
  • Auslastungsgrad: Zeitspanne, in der sich ein PWM -Signal im aktiven Zustand befindet.
  • GPIO PIN: PIN -Anzahl von ESP32, bei dem PWM -Signal gelesen werden soll. (GPIO 34,35,36,39 können nicht verwendet werden)

Konfigurieren Sie die PWM -Kanäle von ESP32

Das Konfigurieren des PWM -Kanals in ESP32 ähnelt der Analogwrite () Funktion bei der Arduino -Programmierung. Aber hier werden wir einen dedizierten Satz von verwenden LEDCSETUP () Funktionen zum Konfigurieren von PWM in ESP32. So ziemlich alles, was für ein PWM -Signal wie erforderlich ist wie Kanal, Auflösung Und Frequenz kann vom Benutzer leicht konfigurierbar sein.

Im Folgenden ist die LEDCSETUP () Funktion zum Konfigurieren von ESP32 -PWM -Signal:

LEDCSETUP (Kanal, Frequenz, Auflösung_Bits);

Diese Funktion enthält drei Argumente.

Kanal: Als ESP32 hat 16 PWM -Kanäle, damit die Kanal Argument in der LEDCSETUP () Funktion kann einen beliebigen Wert zwischen 0 und 15 nehmen.

Frequenz: Als nächstes in der LEDCSETUP () Funktion Wir haben Frequenzargumente, die nach Anforderungen wie 1 kHz, 5 kHz, 8 kHz und 10 kHz festgelegt werden können. Beispielsweise kann die maximale PWM -Frequenz mit einer Auflösung von 10 Bit im PWM -Modul eingestellt werden.125 kHz.

Auflösung: Die PWM-Signalauflösung kann zwischen 1 Bit und 16-Bit-Auflösung konfiguriert werden.

In ESP32 sind sowohl die PWM -Frequenz als auch die Auflösung unabhängig von der Uhrquelle und umgekehrt proportional.

Der letzte Schritt besteht darin, einen Pin für PWM zu definieren. Weisen Sie keine bereits verwendeten Stifte für Kommunikation wie GPIO -Stifte wie UART, SPI usw. zu.

Der LEDC (LED -PWM -Controller) wurde hauptsächlich für ESP32 PWM LED -Steuerungssignale entwickelt. PWM -Signale, die hier generiert werden, können jedoch auch für andere Anwendungen verwendet werden.

Hier sind einige Punkte, die man berücksichtigen muss, während Sie das ESP32 -PWM -Signal konfigurieren:

  • Insgesamt 16 unabhängige PWM -Kanäle sind in ESP32, die in zwei Gruppen aufgeteilt werden, die jeweils 8 Kanäle haben.
  • 8 PWM -Kanäle sind hohe Geschwindigkeit, während die anderen 8 Kanäle niedrig sind.
  • Die PWM-Auflösung kann zwischen 1-Bit und 16 Bit festgelegt werden.
  • Die PWM -Frequenz hängt von der Auflösung von PWM ab.
  • Der Arbeitszyklus kann ohne Prozessorintervention automatisch erhöht oder verringert werden.

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 Tabelle zeigt die PIN -Verbindung für LEDs mit ESP32.

ESP32 GPIO PIN LED
GPIO 18 +Ich habe
GND -Ich habe

Code für LED -Helligkeitskontrolle

Der unten angegebene Code lässt die LED ein- und ausblenden:

const int led = 18; /*Entspricht dem GPIO Pin 18*//
const int freq = 5000; /*PWM -Signalfrequenz*//
const int led_channel = 0;
const int resolution = 8; /*PWM -Auflösung*//
void setup ()
LEDCSETUP (LED_Channel, Freq, Auflösung); /*PWM -Signal definiert*/
LEDCATTACHPIN (LED, LED_Channel);

void Loop ()
für (int Dutycycle = 0; Dutycycle = 0; DutyCycle-) /*LED-Helligkeit nimmt ab* /
LEDCWrite (LED_Channel, Dutycycle);
Verzögerung (15);

Der Code wurde zunächst die PIN -Nummer für LED definiert, der GPIO 18 ist. Als nächstes setzen wir die PWM -Signaleigenschaften, die Frequenz, PWM -Signalauflösung und LED -Kanal sind.

Als nächstes mit dem LEDCSETUP () Funktion Wir konfigurieren das PWM -Signal. Diese Funktion akzeptiert die drei Argumente Frequenz, Auflösung Und LED -Kanal Wir haben früher definiert.

Im Schleifenteil variieren wir den Arbeitszyklus zwischen 0 und 255, um die Helligkeit der LED zu erhöhen. Danach verringert die Verwendung der for -Schleife die LED -Helligkeit von 255 auf 0.

Die Impulsbreitenmodulation verwandelt ein digitales Signal in ein analoges Signal, indem das Timing geändert wird, wie lange es ein- und ausgeschaltet bleibt. Der Begriff Auslastungsgrad wird verwendet, um den Prozentsatz oder das Verhältnis zu beschreiben, wie lange es bleibt, verglichen mit dem Ausschalten.

Hier haben wir einen 8-Bit-Kanal gemäß den Berechnungen eingenommen:

2^8 = 256, die Werte von 0 bis 255 enthalten. In dem oben angegebenen Beispiel entspricht der Arbeitszyklus 100%. Für 20% Arbeitszyklus oder einen anderen Wert können wir ihn unter Verwendung der folgenden Berechnungen berechnen:

Kanalauflösung = 8 Bit

Für 100% Dienstzyklus = 0 bis 255 (2^8 = 256 Werte)

Für 20% Dienstzyklus = 20% von 256 sind 51

Ein 20% igen Arbeitszyklus von 8-Bit-Auflösung entspricht also gleichwerten Werten von Bereich 0 bis 51.

Wobei 0 = 0% und 51 = 100% des 8-Bit-Auflösungszykluszyklus.

Ausgang

Auf der Hardware können wir die Helligkeit der LED in vollem Umfang sehen. Dies bedeutet, dass das Arbeitszyklussignal bei 255 liegt.

Jetzt können wir sehen, dass die LED völlig schwach ist, was bedeutet, dass der Arbeitszykluswert bei 0 liegt.

Wir haben die LED -Helligkeit mit dem PWM -Signal erfolgreich kontrolliert.

Abschluss

Hier in diesem Artikel haben wir ESP32 PWM -Pins besprochen und wie sie zur Steuerung mehrerer Peripheriegeräte wie LED oder Motor verwendet werden können. Wir haben auch den Code zur Steuerung von Einzel- und mehreren LEDs mit demselben PWM -Kanal besprochen. Mit dieser Anleitung kann jede Art von Hardware mit Hilfe des PWM -Signals gesteuert werden.