我做了一个测量脉宽的东西,用AVR的捕获功能,我发现有误捕获的时候,居然我还用了滤波
我做了一个测量脉宽的东西,用AVR的捕获功能,我发现有误捕获的时候,居然我还用了滤波,才基本消除,否则跳动大.客户又说,它的脉冲一般是15V左右,但是是线圈输出,可能有200V左右的电压,把我前端的光藕6N137也烧掉了 把源程序发上来,大家分析分析 这个源程序:这个网站上有:
//ICP1输入捕获中断处理程序
SIGNAL(SIG_INPUT_CAPTURE1)
{
count1++;
switch(count1)
{
case 1://第一次捕获,则开始计数
{
//TCCR1B |= (1<<CS11);//开始计数,8分频
temp1 = ICR1;
TCCR1B=0xc2;
}
break;
case 2: //第二次捕获,表示一个周期结束,计数结束
{
temp2 = ICR1;
TCCR1B=0x00;//0x82;
//cli();
if(temp2>=temp1)
{
maikuan1=temp2-temp1;
}
else
{
maikuan1=65536-temp1+temp2;
}
counta1++;
value_bufm1=maikuan1;
//amaikuan1=maikuan1;
bihuo1siji=0;
count1=0;
biaoji1=1;
//temp2 -= temp1;
}
break;
default: ;
}
}
int main()
{
TCCR1A = 0x00;
TCNT1= 0x00;
TCCR1B=0x82;
//sei();
TIMSK=0x20;//打开输入捕捉器中断使能
while(1)
{
if(biaoji1==1)
{
biaoji1=0;
TCCR1A = 0x00;
TCNT1= 0x00;
//sei();
TIMSK=0x20;//打开输入捕捉器中断使能
TCCR1B=0x82;
}
}
} 我用单片机产生的脉冲测量肯定没有问题,但用户使用就有问题了,我测量了220V的过零信号(以前用于可控硅调压用的),我发现也有些跳.期待魏坤的示波表早点出来压. 1楼你看出什么问题了吗? 工业环境电网220V充满了不可预料的尖脉冲等谐波,一定要用滤波、限幅等措施. 是啊,我也是第一次做这个捕获,应该就是这些谐波引起的。 5楼说得没有错,
知道检测脉宽是多少的情况下,程序在捕获后,temp1与temp2可以做个误差判断,在什么范围下是合适的,这样可以去掉一些干扰。 老大做过430单片机测量脉宽的吗?我用430做的测量高电平宽度的程序,老搞不通,你有空给帮忙分析下吧!http://www.amobbs.com/thread-5538807-1-1.html
页:
[1]