
在进行占空比测量时,最简单的一种方案就是使用计数器半周期完成测量。支持的计数器需要有双边沿分离检测的特性,在实际工作中,通常32位宽的计数器都支持该测量。该方案通过预设半周期时间可以得到非常高精度的测量结果。在NI的采集板卡类型中,cDAQ 9174,9178有四个计数器,每个槽都可以使用计数器资源,而cDAQ-9172只有5槽和6槽可以使用计数器资源。对于带2个24位计数器的板卡来说,这种板卡一般不具有双边沿分离检测,工程师可以采用脉冲宽度测量的方式,分别测量高脉宽时间和低脉宽时间,从而计算占空比。
利用模拟采集测量
除了使用计数器来完成占空比测量之外,工程师也可以利用模拟采集来完成测量工作。该方案主要使用波形测量选板中的脉冲测量VI,可以根据周期性的采集数据计算占空比。要求模拟采集有足够高的采样率(5~10倍以上脉冲频率,根据占空比而定)才能获取足够的波形信息,来提高占空比测量精度。这种通过软件来计算占空比的方式处理速度相对而言比较一般。
利用FPGA完成测量
想要测量PWM波的占空比,工程师还可以利用FPGA来帮助自己完成测量工作。FPGA上有精确的40MHz时钟驱动的计数器资源,通过记录信号沿变化时刻的计数器值可以计算得到PWM波的脉宽和周期,从而计算出占空比。可使用程序即为FPGA占空比测量程序,实际调用时可将Digital In换成模块IO。
可以用两级中断来实现,该方法可实现精确占空比与频率的调整。。。
大致思想是:
1在定时器T0中开定时器T1,并使pwm=1,
2在定时器T1中关掉T1,即TR1=0;并使pwm=0;
注:t0控制频率(周期),t1控制占空比(高电平时间),你只要装载相应的定时器初值即可。很实用的哦
#include "reg52h"
unsigned char count; //05ms次数标识
sbit pwm =P2^7 ; //PWM信号输出
sbit jia =P2^4; //角度增加按键检测IO口
sbit jan =P2^5; //角度减少按键检测IO口
unsigned char jd; //角度标识
void delay(unsigned char i)//延时
{
unsigned char j,k;
for(j=i;j>0;j--)
for(k=125;k>0;k--);
}
void Time0_Init() //定时器初始化
{
TMOD = 0x01; //定时器0工作在方式1
IE = 0x82;
TH0 = 0xfe;
TL0 = 0x33; //110592MZ晶振,05ms
TR0=1; //定时器开始
}
void Time0_Int() interrupt 1 //中断程序
{
TH0 = 0xfe; //重新赋值
TL0 = 0x33;
if(count< jd) //判断05ms次数是否小于角度标识
pwm=1; //确实小于,PWM输出高电平
else
pwm=0; //大于则输出低电平
count=(count+1); //05ms次数加1
count=count%40; //次数始终保持为40 即保持周期为20ms
}
void keyscan() //按键扫描
{
if(jia==0) //角度增加按键是否按下
{
delay(10); //按下延时,消抖
if(jia==0) //确实按下
{
jd++; //角度标识加1
count=0; //按键按下 则20ms周期从新开始
if(jd==6)
jd=5; //已经是180度,则保持
while(jia==0); //等待按键放开
}
}
if(jan==0) //角度减小按键是否按下
{
delay(10);
if(jan==0)
{
jd--; //角度标识减1
count=0;
if(jd==0)
jd=1; //已经是0度,则保持
while(jan==0);
}
}
}
void main()
{
jd=1;
count=0;
Time0_Init();
while(1)
{
keyscan(); //按键扫描
}
}
三菱的指令中有PWM,比如:PWM D200 D202 Y0,PWM D200脉宽 D202周期 Y0输出 ,但可控精度不好。
还可以用梯形图来模拟PWM。
以上就是关于如何测量PWM波的占空比全部的内容,包括:如何测量PWM波的占空比、怎么用51单片机来实现pwm调节占空比、跪求STC程序:两个按键控制占空比,输出PWM等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)