干货分享:开启PWM调光之门,一起来做呼吸灯

news/2024/11/13 7:57:26/文章来源:https://www.cnblogs.com/luatos/p/18537612

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_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 PC电脑

Win7及其以上版本的Windows系统。

3.3 数据通信线

USB转Type-C数据线一根;

四、准备软件环境

4.1 下载调试工具

https://docs.openluat.com/Luatools/

4.2 源码及固件

最新固件下载:
https://docs.openluat.com/air780e/luatos/firmware/

固件详见core_V1112压缩包:
LuatOS-SoC_V1112_EC618_FULL.soc

图片

 

五、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%

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

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

相关文章

干货分享:Air780E软件指南:字符串处理

一、Lua字符串介绍关于字符串,Lua提供了一些灵活且强大的功能,一些入门知识如下: 1.1 字符串定义 在Lua中,字符串可以用单引号或双引号"来定义。例如: localstr1=Hello,World! localstr2="Hello,Lua!" 1.2 字符串长度 可以使用#操作符获取字符串的长度。例…

干货分享:通用加解密函数(crypto),Air780E篇

一、加解密概述加解密算法是保证数据安全的基础技术,无论是在数据传输、存储,还是用户身份验证中,都起着至关重要的作用.随着互联网的发展和信息安全威胁的增加,了解并掌握常用的加解密算法已经成为开发者和安全从业者的必修课. 常见的15种加密解密算法分别是:散列哈希[MD…

Docker仓库之Harbor企业级镜像仓库的搭建与使用

本章将和大家分享Docker仓库之Harbor企业级镜像仓库的搭建与使用。本章将和大家分享Docker仓库之Harbor企业级镜像仓库的搭建与使用。废话不多说,下面我们直接进入主题。 一、企业最爱:Harbor企业级镜像仓库 Harbor是VMware公司开源的一个企业级Docker Registry项目,项目地址…

面试:什么是死锁,如何避免或解决死锁;MySQL中的死锁现象,MySQL死锁如何解决

面试:什么是死锁,死锁产生的四个必要条件,如何避免或解决死锁;数据库锁,锁分类,控制事务;MySQL中的死锁现象,MySQL死锁如何解决文章目录 前言 一、死锁1.1 什么是死锁 1.2 死锁产生的四个必要条件 1.3 模拟产生死锁的代码 1.4 死锁的产生原因二、如何避免或解决死锁2.1…

23. 使用MySQL之使用存储过程

1. 存储过程 迄今为止,使用的大多数SQL语句都是针对一个或多个表的单条语句。并非所有操作都这么简单,经常会有一个完整的操作需要多条语句才能完成。 例如,考虑以下的情形。为了处理订单,需要核对以保证库存中有相应的物品。如果库存有物品,这些物品需要预定以便不将它们…

【java开发】 Java 打包方式总结

前言 由于笔者之前也一直在使用 IDEA, Maven 等成熟工具|框架的打包方式, 也没有仔细研究过这个 JAR 包打包之中的细节, 网上公开的视频也没有找到, 但文章倒挺多的, 那周六日就简单看一下吧, 将这些打包方式都整理整理. 本篇文章彻底理解 Maven & IDEA & 原生的打包方…

分享一套基于thinkphp开发的小说内容管理系统源码,附安装教程,100%开源。

小说内容管理系统系统介绍小说内容管理系统是一套用于快速构建小说发布与阅读的小说内容管理平台。使用小说内容管理系统可以快速搭建一个完整的小说阅读网站,节省开发时间和成本。 小说内容管理系统是一套基于ThinkPHP6 + MySql + Layui + BUI 开发的小说行业内容管理系统。 …

【数据库】Cassandra的安装及基本操作

Cassandra 数据库安装 官方文档 安装环境Ubuntu 22.04.5LTS Cassandra 4.0.14 JDK 11操作步骤下载安装包curl -OL https://dlcdn.apache.org/cassandra/4.0.14/apache-cassandra-4.0.14-bin.tar.gz解压操作解压tar -zxvf ./apache-cassandra-4.0.14-bin.tar.gz运行数据库,该步…

【数据库】GeoMesa的安装及基本操作

GeoMesa-Cassandra 安装 官方文档_安装 GeoMesa Cassandra 安装环境Ubuntu 22.04.5 LTS Cassandra 3.11.16 JDK 11 geomesa-cassandra_2.12-5.1.0操作步骤下载 bin文件 wget https://github.com/locationtech/geomesa/releases/download/geomesa-5.1.0/geomesa-cassandra_2.12-…

【数据库】GeoServer的安装及基本操作

GeoServer 安装 参考: WSL-Ubuntu22.04 安装Geoserver流程 方式一:采用Tomcat的方式安装GeoServer 下载curl -OL https://sourceforge.net/projects/geoserver/files/GeoServer/2.26.0/geoserver-2.26.0-war.ziphttp://localhost:8080/http://localhost:8080/geoserver/方式二…

【java开发】 java web的Filter(过滤器),Interceptor(拦截器) 和 Aspect(切面)

“ 在Java Web开发中,始终离不开Filter,Interceptor,Aspect三个部分,本文将对此进行介绍。” Filter 是servlet层面的,由Servlet容器(如Tomcat)支持,只能在web程序中使用,实现了javax.servlet.Filter接口 Interceptor 是Spring Web层面的(Structs也有), 它是由Spring容器…

Tesla Model Y refresh All In One

Tesla Model Y refresh All In One Tesla Model Y Juniper / Tesla Model Y 焕新版Tesla Model Y refresh All In OneTesla Model Y Juniper / Tesla Model Y 焕新版demoshttps://www.youtube.com/watch?v=WWou0YzxJ7Yhttps://topelectricsuv.com/news/tesla/2024-tesla-model…