如何通过PWM技术制作呼吸灯?看这一篇就够了!

呼吸灯以其独特的灯光渐变效果,广泛应用于现代电子设备中,有柔和且富有节奏的视觉体验。实现呼吸灯效果的关键技术之一是脉冲宽度调制(Pulse Width Modulation, PWM)。本文将深入探讨如何利用PWM技术制作一个简单的呼吸灯,并解析其背后的工作原理。

本文将以低功耗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 数据通信线

USB转Type-C数据线一根;

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%

今天的内容就分享到这里了~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值