如何在ESP32中使用PWM

关于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 通道。

手机密码忘了怎么解锁
浙江省明确了5G发展目标争取到2022年全省形成优良的5G产业生态
怎么升级鸿蒙2.0系统 升级鸿蒙系统步骤
当贝X3荣获京东年度最佳高端品,新年开局虎虎生威
戴尔“企业级”视频监控解决方案
如何在ESP32中使用PWM
事故发生前充气柜的操作方法说明
成家立业男士的最终考虑,大众高尔夫7与福特福克斯哪个更好?
如何了解LED驱动及调光
Eurocom推出了EUROCOM MXM3至PCIe适配器
嵌入式设计中每一分钱都很重要
希捷全球首款MACH.2多磁臂银河2X14推出,微软提供支持
传统服装制造产业能与人工智能产生怎样的交织
13亿美元!汽车大厂在印尼投建整车厂
葡萄牙航空将于10月底停飞伦敦城市航线
redis分布式锁如何实现锁等待
【制裁网络犯罪的法治历程与时代贡献】
soa架构的优缺点解析
阿里巴巴为中小企业搭建从“原材料到商品销售”的全链路数字化体系
从创新环境、教育政策和劳动力市场政策三个方面阐述AI自动化变革