如何测量PWM波的占空比

如何测量PWM波的占空比,第1张

利用计数器进行测量

在进行占空比测量时,最简单的一种方案就是使用计数器半周期完成测量。支持的计数器需要有双边沿分离检测的特性,在实际工作中,通常32位宽的计数器都支持该测量。该方案通过预设半周期时间可以得到非常高精度的测量结果。在NI的采集板卡类型中,cDAQ 9174,9178有四个计数器,每个槽都可以使用计数器资源,而cDAQ-9172只有5槽和6槽可以使用计数器资源。对于带2个24位计数器的板卡来说,这种板卡一般不具有双边沿分离检测,工程师可以采用脉冲宽度测量的方式,分别测量高脉宽时间和低脉宽时间,从而计算占空比。

利用模拟采集测量

除了使用计数器来完成占空比测量之外,工程师也可以利用模拟采集来完成测量工作。该方案主要使用波形测量选板中的脉冲测量VI,可以根据周期性的采集数据计算占空比。要求模拟采集有足够高的采样率(5~10倍以上脉冲频率,根据占空比而定)才能获取足够的波形信息,来提高占空比测量精度。这种通过软件来计算占空比的方式处理速度相对而言比较一般。

利用FPGA完成测量

想要测量PWM波的占空比,工程师还可以利用FPGA来帮助自己完成测量工作。FPGA上有精确的40MHz时钟驱动的计数器资源,通过记录信号沿变化时刻的计数器值可以计算得到PWM波的脉宽和周期,从而计算出占空比。可使用程序即为FPGA占空比测量程序,实际调用时可将Digital In换成模块IO。

我觉得可以把PWM信号读入I/O口,定义两个变量,一个high表示高电平,一个low表示低电平,遇到第一个上升沿开始给high+1,遇到第一个下降沿给low+1,遇到第二个上升沿,则停止计数。统计high与low,就可以知道一个周期内,占空比。

80S52没有硬件PWM功能,靠

定时器中断很简单,只不过频率不能太高,或调

节精度比较差

下面是双定时器产生PWM主要语句:

TMOD=0X11

TH0=(65536-20000)/256//

定时20ms

TL0=(65536-20000)%256

TH1=(65536-b)/256//定时要小于20ms,改变b的值即改变占空比

TL1=(65536-b)%256

ET0=1

EA=1

TR0=1

PWM=1

b=2000

while(1)

void

timer0()interrupt

1

{

TH0=(65536-20000)/256

TL0=(65536-20000)%256

PWM=1

TR1=1

ET1=1

}

void

timer1()interrupt

3

{

TH1=(65536-b)/256

TL1=(65536-b)%256

PWM=0

TR1=0

ET1=0

}

定时器0中断负责每

20ms将管脚置

1,定时1负责在20ms之内的某一时间将该管脚清0

当然也可以采用自动重装方式,中断可以更频繁一些,产生的PWM频率要高一些

也可以只用一个定时器,这时产生PWM波要么频率低,要么调节精度差,因中断一次至少10US,你就不用指望一次调节步距10us以下了


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12091177.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-21
下一篇 2023-05-21

发表评论

登录后才能评论

评论列表(0条)

保存