一直有朋友问我怎么打造个性化呼吸灯,本文我将以合宙低功耗4G模组经典型号——Air780E为例,展示PWM输出呼吸灯的实现方法,帮助大家深入理解如何在项目中应用PWM技术。
一、PWM概述
1.1 PWM是什么
脉冲宽度调制PWM,是英文“Pulse Width Modulation”的缩写,简称脉宽调制,是利用微处理器的数字输出来对模拟威廉希尔官方网站 进行控制的一种非常有效的技术。
PWM具有高效、控制精度高及实现简便等优点,但PWM信号可能产生高频噪声,需要滤波以减小干扰。另外,某些应用需要特定的硬件支持,如支持PWM输入的微控制器或威廉希尔官方网站 。
要想使用PWM,还需先了解PWM的相关参数:
PWM的频率:
是指1秒钟内信号从高电平到低电平再回到高电平的次数(一个周期),也就是说一秒钟PWM有多少个周期。单位:Hz。
PWM的周期:
T=1/f 周期=1/频率例:如果频率为50Hz,T=1/50=0.02s,也就是说一个周期是20ms;
1s=1000ms,那么一秒钟就有50次PWM周期。
PWM的占空比:
是一个脉冲周期内,高电平的时间占整个周期时间的比例。单位:% (0%-100%)
例:一个周期10ms,高电平占8ms,那么此占空比就是8/10=80%。
1.2 PWM原理
单片机的IO引脚输出的是数字信号,且只能输出1和0。那如果TTL电平中,高电平为5V,低电平为0V,但是我们想要输出不同的模拟电压,比如输出3.75V应该怎么操作?
此时要用到PWM,通过改变IO口输出方波的占空比,得到不同的模拟电压。
3.75/5=0.75,也就是高电平时间占整个周期的75%,即占空比为75%,可得到模拟电压3.75V。
注意上图中蓝线,代表着输出的模拟电压,占空比越大,则模拟电压也越大。
1.3 PWM通道说明
详见Air780E产品手册GPIO复用表:
https://docs.openluat.com/air780e/product/
当前版本为:
《Air780E_GPIO_table_20240812.pdf》
由上方GPIO复用表可知:
Air780E的实际可用PWM通道有4个(0/1/2/4), 但每个都有3种配置。
PWM3/PWM5已经被底层使用,例如PWM1和PWM11都使用硬件通道1,只能选其中一个使用。启用PWM1就不能启用PWM11,调用PWM库的API时,填软件通道id。
相关注意事项:
软件通道10/11/12/14需要V1002以上的固件,即20221219之后编译的版本。
软件通道20/21/22需要V1016以上的固件,即20230330之后编译的版本。
上述映射是固定的,mcu.iomux也没有配置项, 而且已经枚举了全部可用PWM通道。
二、演示功能概述
接下来本文将用两个示例,演示如何使用Air780E的PWM功能:
PWM输出:
控制Air780E核心板pwm4通道的pwm输出,设置不同的占空比,让小灯有不同的亮度;
呼吸灯效果:
使用Air780E核心板的pwm1通道,外接发光二极管来查看呼吸灯效果。
三、准备硬件环境
3.1 开发板准备
本文使用Air780E核心板进行演示:
详见Air780E产品手册开发板使用说明:
https://docs.openluat.com/air780e/product/
写这篇文章时最新版本的使用说明为:
<<开发板Core_Air780E使用说明 V1.0.5.pdf>>
核心板使用过程中遇到任何问题,可以直接参考这份使用说明pdf文档。
3.2 数据通信线
3.3 PC电脑
Win7及其以上版本的Windows系统。
四、准备软件环境
4.1 下载调试工具
https://docs.openluat.com/Luatools/
4.2 源码及固件
最新固件下载:
https://docs.openluat.com/air780e/luatos/firmware/
固件详见core_V1112压缩包:
LuatOS-SoC_V1112_EC618_FULL.soc
最新demo源码下载:
https://gitee.com/openLuat/LuatOS-Air780E/tree/master/demo/pwm
五、PWM软硬件资料
5.1 API接口介绍
本教程使用API接口详见:
https://wiki.luatos.com/api/pwm.html?highlight=pwm
5.2 Air780E烧录说明
将Air780E通过USB数据线连接电脑:
1)按住下载模式按键(boot 键)不放,同时再长按开机键开机,这时开发板会进入下载模式,Luatools下载进度条会开始跑,这时可以松开boot按键。直到工具提示下载完成。
2)如果未能成功进入下载模式,而是进入正常开机模式,这时可以按住 boot 键,再短按复位按键,让开发板重启,重新进入下载模式。
如何判断有没有进入下载模式:
可以通过PC端的设备管理器中虚拟出来的USB端口数量来判断。
正常开机模式:
下载模式:
六、代码示例介绍
6.1 PWM输出
本例使用Air780E核心板上的NetLed(网络状态灯),pwm通道id=4,打开pwm4通道的pwm输出,设置不同的占空比,小灯会有不同的亮度。
6.1.1 代码介绍
6.1.2 效果展示
6.2 呼吸灯效果
本例使用Air780E核心板的pwm1通道,外接发光二极管来查看呼吸灯效果:
呼吸灯效果就是小灯由亮到暗逐渐变化,很有节奏感地一起一伏,”感觉,好像人在呼吸“,我们可以通过不断调高占空比让小灯一点点亮起,再不断调低占空比让小灯一点点熄灭从而达到此效果。
6.2.1 硬件接线
GPIO24 --------发光二极管正极
GND -----------发光二极管负极
6.2.2 代码介绍
6.2.3 效果展示
外接发光二极管,效果如下图所示:
也可用Air780E核心板上的NetLed(网络状态灯)来观察呼吸灯效果,但demo里的PWM通道要改成相应的id,可查看上文的PWM通道说明。
我们通过示波器查看PWM的输出波形,可以看到占空比在10%-90%之间变化。
七、常见问题
1. 如何验证所产生的PWM信号?
可以使用示波器检测PWM输出,查看频率、占空比和波形的完整性。确保波形按照设计参数正常工作,必要时进行调整。
2. PWM的信号的频率如何选择?
频率的选择通常取决于具体应用,根据自己的项目需要来选择:
电机控制:常用频率为1kHz到20kHz,以确保足够的反应速度和控制精度。
LED调光:频率通常在1kHz以上,以避免人眼感知到闪烁。
音频信号:频率设置应高于音频信号的最高频率(例如,至少为20kHz)。
3. 什么是占空比,如何计算PWM的占空比?
占空比即是一个脉冲周期内,高电平的时间占整个周期。
例如:
如果PWM信号的高电平时间为2ms,周期为10ms。
则:占空比 = (2 / 10) × 100 = 20%
今天的内容就分享到这里了
-
单片机
+关注
关注
6037文章
44558浏览量
635197 -
PWM
+关注
关注
114文章
5186浏览量
213913 -
模组
+关注
关注
6文章
1492浏览量
30383 -
呼吸灯
+关注
关注
10文章
110浏览量
42727
发布评论请先 登录
相关推荐
评论