深度ESP32 PWM教程如何在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 通道。

         

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/102345.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

jmeter 计数器Counter

计数器可以用于生成动态的数值或字符串,以模拟不同的用户或数据。 计数器通常与用户线程组结合使用,以生成不同的变量值并在测试中应用。以下是计数器的几个常用属性: 变量前缀(Variable Name Prefix):定义…

开源协议对比:局限性、应注意事项与详细对比

🌷🍁 博主猫头虎 带您 Go to New World.✨🍁 🦄 博客首页——猫头虎的博客🎐 🐳《面试题大全专栏》 文章图文并茂🦕生动形象🦖简单易学!欢迎大家来踩踩~🌺 &a…

生成式AI的JavScript技术栈

如果不使用新的软件基础设施技术,就很难理解它们。 至少,a16z 基础设施团队发现了这一点,而且因为我们中的许多人都是以程序员的身份开始职业生涯的,所以我们经常通过实践来学习。 尤其是生成式AI浪潮的情况尤其如此,它…

go语言的高级特性

go语言调用C语言 go tool cgo main.go

使用openWRT 配置SFTP 实现远程文件安全传输

文章目录 前言 1. openssh-sftp-server 安装2. 安装cpolar工具3.配置SFTP远程访问4.固定远程连接地址 前言 本次教程我们将在OpenWRT上安装SFTP服务,并结合cpolar内网穿透,创建安全隧道映射22端口,实现在公网环境下远程OpenWRT SFTP&#xf…

【漏洞复现】2023HVV WPS Office 远程代码执行漏洞(RCE)

文章目录 前言声明一、漏洞描述二、影响范围三、漏洞复现服务端的功能客户端的功能 四、修复建议 前言 2023HVV期间曝出的WPS Office 存在RCE漏洞,攻击者可通过该漏洞执行任意命令,获取服务器控制权限。 声明 请勿利用文章内的相关技术从事非法测试&am…

PostgreSQL PG15 新功能 PG_WALINSPECT

开头还是介绍一下群,如果感兴趣PolarDB ,MongoDB ,MySQL ,PostgreSQL ,Redis ,Oracle ,Oceanbase 等有问题,有需求都可以加群群内有各大数据库行业大咖,CTO,可以解决你的问题。加群请加微信号 liuaustin3 (…

Tomcat环境变量配置教程

1、在官网下载并解压Tomcat,记住解压好的目录,后面配置环境需要用到。 官网地址:Apache Tomcat - Welcome! --- 阿帕奇雄猫 - 欢迎! 2、右键此电脑(我的电脑)->属性->高级系统设置->环境变量 3、…

旅游APP外包开发注意事项

旅游类APP通常具有多种功能,以提供给用户更好的旅行体验。以下分享常见的旅游类APP功能以及在开发和使用这些APP时需要注意的问题,希望对大家有所帮助。北京木奇移动技术有限公司,专业的软件外包开发公司,欢迎交流合作。 常见功能…

QT(9.4)tcp通信,数据库,opencv,

作业&#xff1a; 1.服务器 头文件&#xff1a; #ifndef WIDGET_H #define WIDGET_H#include <QWidget> #include <QTcpSocket>//客户端头文件 #include <QMessageBox>//消息对话框头文件 #include <QTcpServer>//服务器头文件 #include <list>…

NIFI实现JSON转SQL并插入到数据库表中

说明 本文中的NIFI是使用docker进行安装的&#xff0c;所有的配置参考&#xff1a;docker安装Apache NIFI 需求背景 现在有一个文件&#xff0c;里面存储的是一些json格式的数据&#xff0c;要求将文件中的数据存入数据库表中&#xff0c;以下是一些模拟的数据和对应的数据库…

知识蒸馏学习

知识蒸馏----教师和学生模型&#xff1a;将已训练完善的模型作为教师模型&#xff0c;通过控制“温度”从模型的输出结果中“蒸馏”出“知识”用于学生模型的训练&#xff0c;并希望轻量级的学生模型能够学到教师模型的“知识”&#xff0c;达到和教师模型相同的表现。 本质上属…