芦席一小生 发表于 2012-4-5 08:48

关于T法测速的问题(附程序代码)

本帖最后由 芦席一小生 于 2012-4-5 08:50 编辑

异步电机,采用矢量控制算法,无速度环,转矩电流指令值由油门踏板控制
测速传感器采用64齿的旋转编码器,输出两相信号到DSP,使DSP检测边沿,电机旋转一周,QEP电路能计数256次。
采用M法测速是没有问题的。
采用T法测速:每计数16次(即来了16个边沿信号),便计算一次速度,时间由PWM波的周期计算得到

现在碰到这样一个问题,电机刚启动时,有个蹭的一声异响,然后电机开始转,然后松开油门,电机停转,然后突然又蹭蹭的突然转几下,而且检测到的速度值有时候还会很大。
附上程序代码:
interrupt void T4UFINT_ISR(void)
{
        long flag_u,T3cnt;
        //下溢中断,代表电机反转
        T3cnt=EvbRegs.T3CNT;
        flag_u=EvbRegs.GPTCONB.bit.T3STAT;
        if(flag_u==1)
        {
                if(flag_o==1)
                {
                        Time=count1*83+(T3cnt-T3cnt_o)/75;                //83为PWM波周期,单位为us,count1为三角波周期计数
                }
                if(flag_o==0)
                {
                        Time=count1*83+(T3cnt+T3cnt_o)/75;
                }

        }
        if(flag_u==0)
        {
                if(flag_o==1)
                {
                        Time=count1*83-(T3cnt+T3cnt_o)/75;               
                }
                if(flag_o==0)
                {
                        Time=count1*83+(T3cnt_o-T3cnt)/75;
                }
        }
        T3cnt_o=T3cnt;
        flag_o=flag_u;
       
        wr=402123860/Time;        //_IQ10(wr)=(16*2*pi*1000000/256)*1024/Time
        if(Time>402123860)
        {
                wr=0;
        }

        Time=0;
        count1=0;
        EvbRegs.EVBIFRB.bit.T4UFINT=1;
        PieCtrl.PIEACK.all|=PIEACK_GROUP5;

        EvbRegs.T4CNT=0x0010;

}

huqiangzyr 发表于 2012-4-10 06:47

是不是发错地方了?
页: [1]
查看完整版本: 关于T法测速的问题(附程序代码)