關于ESP32PWM的簡要說明
ESP32 SoC 滿載了非常有用的外設,PWM 就是其中之一。是的。ESP32 的芯片中有一個專用的 PWM 硬件模塊。脈寬調制或簡稱PWM是一種成熟且廣泛使用的供電技術。
您可以使用 ESP32 的 PWM 來驅動 LED、電機(普通直流電機和無刷電機)和智能燈。ESP32 中的 PWM 控制器由兩個主要子模塊組成:LED 控制或 LEDC 外設和電機控制脈寬調制器或 MCPWM 外設。
盡管我們將 ESP32 中的 PWM 演示限制為衰落 LED,但最好了解一下 ESP32 中帶有輸入捕獲模塊的電機控制 PWM (MCPWM) 模塊。
如果您曾經使用過無刷直流 (BLDC) 電機,您就會意識到感測轉子位置(使用霍爾效應傳感器)對于精確速度控制的重要性。
ESP32發光二極管(LEDC)
ESP32 的 LEDC 外設由 16 個能夠生成獨立波形的 PWM 通道組成,主要用于 RGB LED 控制,但也可用于其他用途。
關于 ESP32 中的 LED PWM 控制器,您應該注意幾個有趣的點。
16 個獨立的 PWM 通道,分為兩組,每組 8 個通道。
1 位和 16 位之間的可編程分辨率。
PWM波的頻率取決于PWM的分辨率。
自動增加/減少占空比,無需處理器干預。
配置ESP32的PWM通道
你還記得Arduino編程中的'analogWrite()'函數嗎?它是負責在Arduino UNO(和其他“Arduino”板)中生成PWM的功能。
由于 ESP32 的 LED PWM 中的幾乎所有內容都是用戶可配置的(通道、分辨率和頻率),因此我們將使用一組不同的(專用)函數來配置 ESP32 中的 PWM,而不是使用“analogWrite()”功能。
以下是驅動程序公開的所有 LEDC API 的列表。這些函數是為 ESP32 的 Arduino IDE 端口編寫的。
ledcSetup(頻道、頻率、resolution_bits);
ledcAttachPin(pin, channel);
ledcWrite(channel, Occupational cycle);
ledcRead(channel);
ledcWriteTone(通道,頻率);
ledcWriteNote(channel, note, octave);
ledcReadFreq(channel);
ledcDetachPin(pin);
在 8 個函數中,我們將專注于前三個,因為它們對于生成 PWM 更有用(也是最低要求)。
在 ESP32 中配置 PWM 通道時需要記住的幾個要點:
由于有 16 個 PWM 通道,“channel”參數采用 0 到 15 之間的任何值。
接下來是PWM信號的頻率。您可以根據需要設置頻率,例如 1 KHz、5 KHz、8 KHz 和 10 KHz。
PWM 的分辨率也是可配置的,ESP32 PWM 可以編程在 1 位到 16 位分辨率之間的任何位置。
PWM頻率和分辨率成反比,并且取決于時鐘源。因此,在選擇頻率和分辨率值時要小心。
最后,為PWM輸出分配一個GPIO引腳。您可以分配任何 GPIO 引腳,但在分配時要小心(不要使用已經使用的 GPIO 引腳,如 UART、SPI 等)。
下表顯示了幾種常用的PWM頻率和分辨率。
在ESP32中使用PWM的LED衰落
隨著 ESP32 中 PWM 的所有必要信息的發布,我們現在可以繼續實施我們的第一個項目 ESP32 PWM 使 LED 褪色。這是一個非常簡單的項目,連接到 ESP32 GPIO 引腳的 LED 的亮度會逐漸反復增加和減少。[面向初學者的 ESP32 項目]
這個項目更多的是了解 LEDC 的功能:ledcSetup、ledcAttachPin 和 ledcWrite,以及如何在 ESP32 中生成 PWM,而不是衰落的 LED 本身。
所需組件
ESP32 開發套件開發板
3 個 5 毫米發光二極管
?220Ω電阻
3 x 5KΩ 電位計
面包板
連接線
微型 USB 連接線
電路圖
下圖顯示了使用 ESP32 PWM 控制器淡入 LED 淡入淡出的連接。
法典
您可以使用任何 GPIO 引腳來輸出 PWM 信號。所以,我正在使用GPIO 16,這也是UART2 RX引腳。接下來,我們必須使用“ledcSetup”功能設置LEDC通道。第一個參數是通道。0 到 15 之間的任何值都可以作為通道給出。
下一個參數是頻率。您可以提供任何頻率,但為了方便起見,我將頻率設置5KHz。此外,您必須設置PWM的分辨率。此值必須是介于1和 16之間的數字。我選擇了10位分辨率。
有關其余設置,請參閱以下代碼,其中我注釋了重要行。
注意:您可以將多個 GPIO 引腳連接到同一個LEDC PWM 通道。如果這樣做,所有 GPIO 引腳將共享通道的屬性(分辨率和頻率)。
帶ADC的ESP32脈寬調制器
ESP32 中 PWM 的一個重要特點是所有16個通道都可以獨立配置,即每個通道都可以有自己的分辨率和頻率。為了演示這一點,我們利用ADC外設,通過轉動電位計獨立調整三個不同LEDC PWM通道的占空比。
三個 5KΩ 電位器連接到 ESP32 的三個 ADC 輸入引腳。根據ADC的輸出,我們將設置三個PWM通道的占空比,這些通道配置了不同的參數。
為了便于理解,我將三個 LED:紅色、綠色和藍色連接到三個 GPIO 引腳。這三個GPIO引腳連接到三個不同的LEDC PWM通道,每個通道都使用自己的頻率和分辨率進行初始化。
要記住的另一個重要點是 ESP32 的 ADC 分辨率為 12 位。因此,我們必須仔細地將其映射到PWM分辨率,以獲得全方位的控制。
電路圖
下圖顯示了使用ADC(電位計)調整PWM通道占空比的連接。
法典
結論
有關 ESP32 PWM 外設的完整教程。您學習了如何在 ESP32 中使用 PWM 來淡入 LED 的淡入淡出,如何配置 PWM 通道、設置頻率和分辨率。您還學習了如何獨立配置 ESP32 中的 PWM 通道。
-
led
+關注
關注
242文章
23277瀏覽量
660897 -
控制器
+關注
關注
112文章
16365瀏覽量
178075 -
PWM
+關注
關注
114文章
5186瀏覽量
213958 -
soc
+關注
關注
38文章
4165瀏覽量
218273 -
ESP32
+關注
關注
18文章
971瀏覽量
17276
發布評論請先 登錄
相關推薦
評論