发新帖我要提问
123
返回列表
打印
[技术问答]

如何测量PWM信号的周期和占空比?

[复制链接]
楼主: dongnanxibei
手机看帖
扫描二维码
随时随地手机跟帖
41
albertaabbot| | 2024-9-13 20:06 | 只看该作者 回帖奖励 |倒序浏览
如果单片机有输入捕获功能,可以配置一个定时器/计数器来捕获PWM信号的边沿。

使用特权

评论回复
42
物联万物互联| | 2024-9-13 20:13 | 只看该作者
逻辑分析仪的探针连接到微控制器的输出、pwm和信号引脚

使用特权

评论回复
43
lihuami| | 2024-9-14 20:10 | 只看该作者
配置定时器:将单片机的定时器配置为适当的模式(如向上计数模式),并设置定时器的预分频器和自动重装载值。
启动测量:当检测到PWM信号的上升沿或下降沿时,启动定时器开始计数。
记录时间:在PWM信号的另一个边缘(下降沿或上升沿)到来时,停止定时器并记录下定时器的计数值。这个计数值代表了PWM信号的一个电平(高或低)的时间长度。
重复测量:对于另一个电平,重复上述步骤。
计算周期和占空比:根据记录下的两个时间长度,可以计算出PWM信号的周期(两个时间长度之和)和占空比(高电平时间长度除以周期)。
2. 输入捕获法

使用特权

评论回复
44
wangdezhi| | 2024-9-14 22:01 | 只看该作者
初始化定时器,配置为外部脉冲计数模式,并在中断服务程序中根据计数值计算PWM信号的频率和占空比。

使用特权

评论回复
45
sesefadou| | 2024-9-15 08:53 | 只看该作者
测量单片机PWM信号的周期和占空比是嵌入式系统开发中的一项重要技能,这在调试、性能评估和功能验证时尤其重要

使用特权

评论回复
46
albertaabbot| | 2024-9-15 21:21 | 只看该作者
为了防止因PWM占空比极端情况(如0%或100%)导致的程序死锁,应在中断服务程序中加入超时退出机制。例如,如果在定时器溢出之前没有检测到下降沿或上升沿,应根据当前的端口电平状态判断占空比为0%或100%。

使用特权

评论回复
47
pl202| | 2024-9-16 09:11 | 只看该作者
在进行实际测量时,应注意电平匹配、噪声干扰以及测量环境的稳定性

使用特权

评论回复
48
earlmax| | 2024-9-16 18:25 | 只看该作者
将单片机的某个引脚配置为输入捕获模式,并设置输入捕获的触发条件(上升沿、下降沿或双边沿)。
启动捕获:当PWM信号的边缘触发输入捕获时,单片机会记录下当前定时器的计数值到捕获寄存器中。
记录时间戳:在每次捕获到边缘时,记录下对应的时间戳(即定时器的计数值)。
计算周期和占空比:通过比较相邻两个边缘的时间戳,可以计算出PWM信号的周期和占空比。

使用特权

评论回复
49
ccook11| | 2024-9-16 21:57 | 只看该作者
通过配置单片机的定时器为输入捕获模式,可以直接测量PWM信号的周期和占空比。以STM32为例,可以配置TIMx的两个通道(IC1和IC2)来实现这一功能。当PWM信号的第一个上升沿到来时,定时器的计数器被复位;当下降沿到来时,IC2会发生捕获事件,记录此时的计数值(记为IC2_DATA2);当第二个上升沿到来时,IC1发生捕获事件,记录此时的计数值(记为IC1_DATA1)。由此,可以通过计算得出PWM的频率和占空比。

使用特权

评论回复
50
geraldbetty| | 2024-9-18 15:08 | 只看该作者
在等待上升沿/下降沿的过程中,实时提取定时器的值,一旦定时时间超过1个周期的限定(一般可定义为2-3个周期时间),即退出等待

使用特权

评论回复
51
belindagraham| | 2024-9-18 20:49 | 只看该作者
利用定时器的输入捕获功能,当上升沿或下降沿来临时,硬件将定时器/计数器的值保存在一个影子寄存器中,并产生捕获中断。通过固定每次上升/下降沿的计数器值,相减即可分别得出高电平值和低电平值,从而计算出占空比

使用特权

评论回复
52
lzbf| | 2024-9-19 08:09 | 只看该作者
如果单片机有模数转换器(ADC),可以将 PWM 信号通过一个 RC 低通滤波器连接到 ADC 输入引脚。PWM 信号经过低通滤波器后,会得到一个与 PWM 占空比成正比的直流电压。

使用特权

评论回复
53
qiufengsd| | 2024-9-19 10:57 | 只看该作者
可以使用其定时器/计数器配合中断来实现类似的测量功能。

使用特权

评论回复
54
mickit| | 2024-9-19 16:06 | 只看该作者
在中断服务例程中读取捕获的值,这些值表示PWM信号的高电平时间和总周期时间。

使用特权

评论回复
55
班杰明| | 2024-9-19 22:51 | 只看该作者
用输入捕获

使用特权

评论回复
56
dreamCar| | 2024-9-23 17:40 | 只看该作者
如果MCU具有输入捕捉功能,可以配置定时器/计数器来捕捉pwm信号的边沿。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则