0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

如何在ESP32中使用PWM

CHANBAEK ? 來源:小小小向日葵 ? 作者:騎驢去相親 ? 2023-07-13 11:14 ? 次閱讀

關(guān)于ESP32PWM的簡要說明

ESP32 SoC 滿載了非常有用的外設(shè),PWM 就是其中之一。是的。ESP32 的芯片中有一個專用的 PWM 硬件模塊。脈寬調(diào)制或簡稱PWM是一種成熟且廣泛使用的供電技術(shù)。

您可以使用 ESP32 的 PWM 來驅(qū)動 LED、電機(jī)(普通直流電機(jī)和無刷電機(jī))和智能燈。ESP32 中的 PWM 控制器由兩個主要子模塊組成:LED 控制或 LEDC 外設(shè)和電機(jī)控制脈寬調(diào)制器或 MCPWM 外設(shè)。

盡管我們將 ESP32 中的 PWM 演示限制為衰落 LED,但最好了解一下 ESP32 中帶有輸入捕獲模塊的電機(jī)控制 PWM (MCPWM) 模塊。

如果您曾經(jīng)使用過無刷直流 (BLDC) 電機(jī),您就會意識到感測轉(zhuǎn)子位置(使用霍爾效應(yīng)傳感器)對于精確速度控制的重要性。

ESP32發(fā)光二極管(LEDC)

ESP32 的 LEDC 外設(shè)由 16 個能夠生成獨(dú)立波形的 PWM 通道組成,主要用于 RGB LED 控制,但也可用于其他用途。

關(guān)于 ESP32 中的 LED PWM 控制器,您應(yīng)該注意幾個有趣的點(diǎn)。

16 個獨(dú)立的 PWM 通道,分為兩組,每組 8 個通道。

1 位和 16 位之間的可編程分辨率。

PWM波的頻率取決于PWM的分辨率。

自動增加/減少占空比,無需處理器干預(yù)。

配置ESP32的PWM通道

你還記得Arduino編程中的'analogWrite()'函數(shù)嗎?它是負(fù)責(zé)在Arduino UNO(和其他“Arduino”板)中生成PWM的功能。

由于 ESP32 的 LED PWM 中的幾乎所有內(nèi)容都是用戶可配置的(通道、分辨率和頻率),因此我們將使用一組不同的(專用)函數(shù)來配置 ESP32 中的 PWM,而不是使用“analogWrite()”功能。

以下是驅(qū)動程序公開的所有 LEDC API 的列表。這些函數(shù)是為 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 個函數(shù)中,我們將專注于前三個,因?yàn)樗鼈儗τ谏?PWM 更有用(也是最低要求)。

在 ESP32 中配置 PWM 通道時需要記住的幾個要點(diǎn):

由于有 16 個 PWM 通道,“channel”參數(shù)采用 0 到 15 之間的任何值。

接下來是PWM信號的頻率。您可以根據(jù)需要設(shè)置頻率,例如 1 KHz、5 KHz、8 KHz 和 10 KHz。

PWM 的分辨率也是可配置的,ESP32 PWM 可以編程在 1 位到 16 位分辨率之間的任何位置。

PWM頻率和分辨率成反比,并且取決于時鐘源。因此,在選擇頻率和分辨率值時要小心。

最后,為PWM輸出分配一個GPIO引腳。您可以分配任何 GPIO 引腳,但在分配時要小心(不要使用已經(jīng)使用的 GPIO 引腳,如 UART、SPI 等)。

下表顯示了幾種常用的PWM頻率和分辨率。

圖片

在ESP32中使用PWM的LED衰落

隨著 ESP32 中 PWM 的所有必要信息的發(fā)布,我們現(xiàn)在可以繼續(xù)實(shí)施我們的第一個項(xiàng)目 ESP32 PWM 使 LED 褪色。這是一個非常簡單的項(xiàng)目,連接到 ESP32 GPIO 引腳的 LED 的亮度會逐漸反復(fù)增加和減少。[面向初學(xué)者的 ESP32 項(xiàng)目]

這個項(xiàng)目更多的是了解 LEDC 的功能:ledcSetup、ledcAttachPin 和 ledcWrite,以及如何在 ESP32 中生成 PWM,而不是衰落的 LED 本身。

所需組件

ESP32 開發(fā)套件開發(fā)板

3 個 5 毫米發(fā)光二極管

?220Ω電阻

3 x 5KΩ 電位計(jì)

面包板

連接線

微型 USB 連接線

電路圖

下圖顯示了使用 ESP32 PWM 控制器淡入 LED 淡入淡出的連接。

圖片

法典

您可以使用任何 GPIO 引腳來輸出 PWM 信號。所以,我正在使用GPIO 16,這也是UART2 RX引腳。接下來,我們必須使用“l(fā)edcSetup”功能設(shè)置LEDC通道。第一個參數(shù)是通道。0 到 15 之間的任何值都可以作為通道給出。

下一個參數(shù)是頻率。您可以提供任何頻率,但為了方便起見,我將頻率設(shè)置5KHz。此外,您必須設(shè)置PWM的分辨率。此值必須是介于1和 16之間的數(shù)字。我選擇了10位分辨率。

有關(guān)其余設(shè)置,請參閱以下代碼,其中我注釋了重要行。

圖片

注意:您可以將多個 GPIO 引腳連接到同一個LEDC PWM 通道。如果這樣做,所有 GPIO 引腳將共享通道的屬性(分辨率和頻率)。

ADC的ESP32脈寬調(diào)制器

ESP32 中 PWM 的一個重要特點(diǎn)是所有16個通道都可以獨(dú)立配置,即每個通道都可以有自己的分辨率和頻率。為了演示這一點(diǎn),我們利用ADC外設(shè),通過轉(zhuǎn)動電位計(jì)獨(dú)立調(diào)整三個不同LEDC PWM通道的占空比。

三個 5KΩ 電位器連接到 ESP32 的三個 ADC 輸入引腳。根據(jù)ADC的輸出,我們將設(shè)置三個PWM通道的占空比,這些通道配置了不同的參數(shù)。

為了便于理解,我將三個 LED:紅色、綠色和藍(lán)色連接到三個 GPIO 引腳。這三個GPIO引腳連接到三個不同的LEDC PWM通道,每個通道都使用自己的頻率和分辨率進(jìn)行初始化。

圖片

要記住的另一個重要點(diǎn)是 ESP32 的 ADC 分辨率為 12 位。因此,我們必須仔細(xì)地將其映射到PWM分辨率,以獲得全方位的控制。

電路圖

下圖顯示了使用ADC(電位計(jì))調(diào)整PWM通道占空比的連接。

圖片

法典

圖片

結(jié)論

有關(guān) ESP32 PWM 外設(shè)的完整教程。您學(xué)習(xí)了如何在 ESP32 中使用 PWM 來淡入 LED 的淡入淡出,如何配置 PWM 通道、設(shè)置頻率和分辨率。您還學(xué)習(xí)了如何獨(dú)立配置 ESP32 中的 PWM 通道。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • led
    led
    +關(guān)注

    關(guān)注

    240

    文章

    22907

    瀏覽量

    650122
  • 控制器
    +關(guān)注

    關(guān)注

    112

    文章

    15885

    瀏覽量

    175372
  • PWM
    PWM
    +關(guān)注

    關(guān)注

    114

    文章

    5058

    瀏覽量

    212196
  • soc
    soc
    +關(guān)注

    關(guān)注

    38

    文章

    4021

    瀏覽量

    217028
  • ESP32
    +關(guān)注

    關(guān)注

    17

    文章

    936

    瀏覽量

    16663
收藏 人收藏

    評論

    相關(guān)推薦

    利用ESP32 PWM信號控制LED的亮度

    在本教程,我們將討論ESP32 開發(fā)板的 PWM(脈沖寬度調(diào)制)引腳。ESP32 開發(fā)板的所有 GPIO 引腳(Power、GND、Tx、Rx 和 EN 除外)均可用于獲取
    的頭像 發(fā)表于 08-12 15:21 ?1.6w次閱讀
    利用<b class='flag-5'>ESP32</b> <b class='flag-5'>PWM</b>信號控制LED的亮度

    什么是PWM?如何在esp32初始化配置?

    什么是PWM?如何在esp32初始化配置?
    發(fā)表于 02-17 07:19

    何在Windows 10上啟動/設(shè)置ESP8266/ESP32 RTOS環(huán)境?

    我在 Arduino IDE 上有一些關(guān)于 ESP8266/ESP32 的經(jīng)驗(yàn)。 請告訴我,如何在 Windows 10 上啟動/設(shè)置 ESP8266/
    發(fā)表于 05-19 10:33

    ESP32教程之如何在Windows系統(tǒng)上搭建開發(fā)環(huán)境

    本文檔的主要內(nèi)容詳細(xì)介紹的是ESP32教程之如何在Windows系統(tǒng)上搭建開發(fā)環(huán)境。
    發(fā)表于 12-13 15:34 ?40次下載
    <b class='flag-5'>ESP32</b>教程之如<b class='flag-5'>何在</b>Windows系統(tǒng)上搭建開發(fā)環(huán)境

    ESP32模組的主要特性

    WT-ESP32-DevKitC V4是一款基于ESP32的小型開發(fā)板,集WIFI+藍(lán)牙方案于一體,板上模組絕大部分管腳均已引出,開發(fā)人員可根據(jù)實(shí)際需求,輕松通過跳線連接多種外圍器件,或?qū)㈤_發(fā)板直接
    發(fā)表于 11-04 14:54 ?3786次閱讀

    如果在Zephyr內(nèi)如何使用ESP32藍(lán)牙

    在Zephyr ESP32 藍(lán)牙驅(qū)動簡析一文簡要分析了esp32 藍(lán)牙如何集成進(jìn)Zephyr,本文接著說明如果在Zephyr內(nèi)使用ESP32藍(lán)牙。 在Zepher
    的頭像 發(fā)表于 06-07 16:42 ?3518次閱讀

    ESP32_PWM學(xué)習(xí)總結(jié)

    esp32——PWM學(xué)習(xí)總結(jié)什么是PWMesp32初始化配置定時器配置通道配置修改輸出占空比方式使用軟件改變
    發(fā)表于 12-22 19:39 ?12次下載
    <b class='flag-5'>ESP32_PWM</b>學(xué)習(xí)總結(jié)

    esp32小車實(shí)驗(yàn)

    esp32小車實(shí)驗(yàn)了解esp32呼吸燈實(shí)驗(yàn)驅(qū)動直流電機(jī)認(rèn)識第一個傳感器使用wifi進(jìn)行調(diào)參了解esp32環(huán)境搭建以及初識esp32我們所用的開發(fā)板跟視頻
    發(fā)表于 01-12 17:16 ?18次下載
    <b class='flag-5'>esp32</b>小車實(shí)驗(yàn)

    ESP32系列芯片的規(guī)格

    ESP32是一款2.4GHz Wi-Fi和藍(lán)牙組合芯片,采用TSMC超低功耗40nm設(shè)計(jì)技術(shù)它旨在實(shí)現(xiàn)最佳功率和射頻性能,顯示出魯棒性、多功能性和靈活性在各種應(yīng)用和電源場景的可靠性。ESP32系列芯片包括
    發(fā)表于 04-25 16:21 ?7次下載

    何在ESP32/ESP8266上使用MicroPython

    在本教程,我們將了解 MicroPython,它與 Python 有何不同,以及如何在 ESP32/ESP8266 上開始使用 MicroPython。此外,我們將看到一個 LED
    發(fā)表于 08-19 15:09 ?1.3w次閱讀
    如<b class='flag-5'>何在</b><b class='flag-5'>ESP32</b>/<b class='flag-5'>ESP</b>8266上使用MicroPython

    使用Visuino DIY如何在M5StickC ESP32上顯示時間

    電子發(fā)燒友網(wǎng)站提供《使用Visuino DIY如何在M5StickC ESP32上顯示時間.zip》資料免費(fèi)下載
    發(fā)表于 11-21 09:36 ?0次下載
    使用Visuino DIY如<b class='flag-5'>何在</b>M5StickC <b class='flag-5'>ESP32</b>上顯示時間

    【DFRobot Beetle ESP32-C3開發(fā)板試用體驗(yàn)】WEBSOKET—PWM—LED

    的,用ESP32C3寫一個websocket服務(wù)器,用網(wǎng)頁來實(shí)現(xiàn)控制板載LED燈亮度的例子。 【實(shí)現(xiàn)思路】1、ESP32建立webserver。2、書寫一個ajax的網(wǎng)頁。3、配置LED燈的pwm。 1
    的頭像 發(fā)表于 11-28 14:11 ?1419次閱讀
    【DFRobot Beetle <b class='flag-5'>ESP32</b>-C3開發(fā)板試用體驗(yàn)】WEBSOKET—<b class='flag-5'>PWM</b>—LED

    ESP32 PWM驅(qū)動電機(jī)

    ESP32 尋跡模塊測試 尋跡模塊測試 所選設(shè)備 ESP32使用PWM 示例代碼 尋跡模塊測試 所選設(shè)備 ’ ESP32 引腳 說明 16 需要先拉低在拉高,才能驅(qū)動電機(jī) 13
    發(fā)表于 03-20 11:37 ?2次下載
    <b class='flag-5'>ESP32</b> <b class='flag-5'>PWM</b>驅(qū)動電機(jī)

    如何使用ESP32的LEDC進(jìn)行PWM控制?

    LEDC(LED控制器)是ESP32的一個功能強(qiáng)大的PWM(脈沖寬度調(diào)制)控制器。
    發(fā)表于 05-19 11:14 ?2274次閱讀
    如何使用<b class='flag-5'>ESP32</b>的LEDC進(jìn)行<b class='flag-5'>PWM</b>控制?

    何在Arduino IDE安裝ESP32開發(fā)環(huán)境

    要在Arduino IDE中使ESP32開發(fā)板,您需要先安裝相應(yīng)的開發(fā)環(huán)境。以下是在Arduino IDE安裝ESP32開發(fā)環(huán)境的步驟。
    的頭像 發(fā)表于 07-13 16:48 ?1.6w次閱讀
    如<b class='flag-5'>何在</b>Arduino IDE<b class='flag-5'>中</b>安裝<b class='flag-5'>ESP32</b>開發(fā)環(huán)境