"); //-->
一、简介
1.1 pwm是什么
脉冲宽度调制(PWM),是英文“Pulse Width Modulation”的缩写,简称脉宽调制,是利用微处理器的数字输出来对模拟电路进行控制的一种非常有效的技术,广泛应用在从测量、通信到功率控制与变换的许多领域中。
PWM 的相关参数:
1、PWM 的频率: 是指 1 秒钟内信号从高电平到低电平再回到高电平的次数(一个周期),也就是说一秒钟 PWM 有多少个周期 单位:Hz/
2、PWM 的周期: T=1/f 周期=1/频率 例:如果频率为 50Hz ,也就是说一个周期是 20ms,那么一秒钟就有 50 次 PWM 周期
3、PWM 的占空比: 是一个脉冲周期内,高电平的时间占整个周期时间的比例 单位: % (0%-100%) 例:一个周期 10ms,高电平占 8ms,那么此占空比就是 8/10=80%
PWM 的频率:
是指 1 秒钟内信号从高电平到低电平再回到高电平的次数(一个周期),也就是说一秒钟 PWM 有多少个周期 单位:Hz
PWM 的周期:
T=1/f 周期=1/频率 例:如果频率为 50Hz ,也就是说一个周期是 20ms,那么一秒钟就有 50 次 PWM 周期 3. 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 Air724UG pwm 说明
查阅 Air724UG 模块硬件设计手册:
https://docs.openluat.com/air724ug/product/

PWM_PWT_OUT 的时钟基于 APB 时钟,主时钟是 200Mhz,通过配置 pwt 寄存器的 PWT_Period 和PWT_Duty 来控制 pwm 的输出
PWM_LPG_OUT(Light Pulse Generation)用于低频率的应用如驱动 LED 闪烁。
下面是频率和占空比可以选择的取值范围:
周期范围:
125ms,250ms,500ms,1000ms,1500ms,2000ms,2500ms, 3000ms
选择对应的时间,输出的波形周期也与之对应。
高电平时间:
15.6ms, 31.2ms, 46.8ms, 62ms, 78ms, 94ms, 110ms, 125ms, 140ms, 156ms, 172ms, 188ms,
200ms, 218ms, 243ms
选择对应高电平时间,输出在当前周期内的高电平。
二、演示功能概述
本教程教你如何使用开发板输出 PWM 功能。
功能定义:
1. 使用 PWM 引脚输出脉宽调制信号
2. 驱动开发板指示灯,呼吸灯演示
三、准备硬件环境
3.1 开发板准备
使用 EVB_Air724 开发板,如下图所示:
3.2 数据通信线
USB 数据线一根(micro USB)。
3.3 PC 电脑
WIN7 以及以上版本的 WINDOWS 系统。
3.4 组装硬件环境
USB 数据线插入 USB 口,另一端与电脑相连,拨码开关全部拨到 ON,串口切换开关选择 UART1,USB 供电的 4V 对应开关拨至 ON 档,如下图所示。

四、准备软件环境
4.1 下载调试工具
使用说明参考:
Luatools 下载和详细使用
https://docs.openluat.com/Luatools/
4.2 源码及固件
1、底层 core 下载
下载底层固件,并解压
链接:
https://docs.openluat.com/air724ug/luatos/firmware/
如下图所示,红框的是我们要使用到的

2、 本教程使用的 demo 见附件:
https://gitee.com/openLuat/LuatOS-Air724UG/tree/master/script_LuaTask/demo/pwm呼吸灯
4.3 下载固件和脚本到开发板中
打开 Luatools,开发板上电开机,如开机成功 Luatools 会打印如下信息。

点击项目管理测试选项。

进入管理界面,如下图所示。

点击选择文件,选择底层固件,我的文件放在 D:\luatOS\Air724 路径中

点击增加脚本或资源文件,选择之前下载的程序源码,如下图所示。

点击下载底层和脚本,下载完成如下图所示。

五、代码示例介绍
5.1 PWM 接口说明
本例使用 Air724 的 49 管脚,即 PWM_PWT_OUT GPIO_5 pwm 通道 id=0,控制开发板上的红色电源指示灯。
开启 pwm 通道的 pwm 输出,设置不同的占空比,小灯会有不同的亮度,原理图如图所示。

5.2 breathingLight.lua 代码
打开并且配置 PWM 函数 misc.openPwm(0, 512, y) 说明
--0:gpio5, 1:gpio13
--p1 周期 0-1024
--p2 占空比 0-512

5.3 main.lua 代码
本代码为主程序脚本,系统启动后首先会对 4G 网络进行配置,然后加载加载功能测试模块。
六、开机展示
连接好硬件并下载固件后,重启开发板观察指示灯的变化,如下图所示。
七、常见问题
1、为什么 gpio13 输出是低频波形吗?
gpio13 只能输出低频 pwm 波形。
2、为什么配置后输出没波形?
答:看通道是否配置正确,gpio 口是否被占用。
3、PWM 的信号的频率如何选择?
频率的选择通常取决于具体应用,根据自己的项目需要来选择:
(1)电机控制:常用频率为 1 kHz 到 20 kHz,以确保足够的反应速度和控制精度。
(2)LED 调光:频率通常在 1 kHz 以上,以避免人眼感知到闪烁。
(3)音频信号:频率设置应高于音频信号的最高频率(例如,至少为 20 kHz)。
专栏文章内容及配图由作者撰写发布,仅供工程师学习之用,如有侵权或者其他违规问题,请联系本站处理。 联系我们
相关推荐
GD32E230F6V6实用指南:为下一个项目选择合适单片机
AVR 单片机专栏,资料下载!之二
MSP430 电表解决方案
[转帖]从Cygnal C8051F看8位单片机发展之路
MSP430单片机TIMER_A在产品设计中的应用
《ATmega8原理及应用手册》
Kwikset:超低功耗Wi-Fi解锁无缝体验
倾情奉献:MSP430汇编指令集(中文),详解带实例!
基于物联网的电池组均衡充电与监控系统
低代码利器!MIT 可视化编程赋能 AI + 物联网移动端开发
TDK 发布 SensorStage 传感器评估平台,大幅加速 IMU 开发进程
边缘计算与人工智能(Edge AI)如何引领新一轮技术革命
被收购后的芯科实验室:物联网与人工智能的未来走向
《AVR单片机C语言库》
物联网与RFID芯片
用AT89C2051单片机实验合弦乐
嵌入式系统与物联网
用单片机制作的纯正弦波逆变电源电路
语音合成芯片T6668和单片机8031的接口电路图
5V 单片机与5V 耐压单片机有何区别,为什么至关重要
16位语言函数工具库
创维数码5000系列彩电开关电源(AN单片机)电路
单片机语言C51应用实战集锦
SmartDV展示完整的边缘与连接IP解决方案,以高速和低功耗特性赋能移动、物联网和媒体处理设备创新
AVR 单片机专栏,资料下载!
芯科科技驱动和重塑智能门锁行业格局
MSP430x2xx4xx系列
利用PIC12C508单片机来实现加密狗技术[转帖]
长虹R2118A型彩电开关电源(LA单片机)电路
超低功率高性能新一代产品MSP430F5xx