打印
[通用8051核FLASH系列]

HC89F0541无刷电机驱动问题

[复制链接]
1703|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
glyxz1990|  楼主 | 2019-1-14 23:30 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 芯圣电子官方QQ 于 2023-7-25 10:44 编辑

目前正在使用HC89F0541设计无刷电机驱动板,6路PWM+3路外部中断,当电机转速大概为4400r/m左右和到4600r/m左右的时候,外部中断有点不正常,目前是在外部中断函数中对LED不停取反,当转速到达这两个值左右时,灯闪烁不正常,计算的转速也不正常,不知道是不是电机干扰的问题,4000r/m以下没有问题;期间,通过降低osc频率,使用内部外部晶振都一样,单独使用一个板子模拟hall信号输入,通过电位器调节输入的hall(外部中断信号)频率,计算的转速可达2万多转/分钟都没有问题,LED等闪烁正常,用示波器测量的,pwm输出信号貌似也是没有问题的;但是已使用电机测试,就不正常;有没有大神遇到过类似情况,下面是中断函数代码:


void INT2_7_Rpt() interrupt INT2_7_VECTOR 
{
//    LED2_BLINK();
    if(PINTF0&0xE0)//3个引脚有任一个变化
    {
        PINTF0 &=~ 0xE0;//清除INT7,6,5中断标志位
        
        /* 根据当前hall值换相 */
        BLDC_ChangePhase(1,HallValue);//默认正转
        
        T3CON &= ~0x04;//TR3=0,停止T3定时器
        Hall_TimeSum += (u32)((((u32)TH3 << 8) | TL3) + ((u32)Timer3_OverFlow_Cnt<<16));//读取计数值
        TH3 = 0;//复位计数器
        TL3 = 0;
        T3CON |= 0x04;//TR3=1,打开T3定时器
        Hall_Cnt++;
        if(Hall_Cnt==24)
        {
            Hall_IntervalTime = Hall_TimeSum/24;
            Hall_TimeSum=0;
            Hall_Cnt=0;            
        }
        Timer3_OverFlow_Cnt=0;//清除溢出计数
        Motor_StallingFlag=FALSE;//清除堵转标志
        
        LED2_BLINK();
    }
}
沙发
观海| | 2019-1-25 18:33 | 只看该作者
如果加一个去抖会不会好点呢

使用特权

评论回复
板凳
京江自动化| | 2019-3-5 12:34 | 只看该作者
你好,不知道你的电机是几对级,如果你的极对数比较大的话,你hall的中断频率会比较高,我看到你是24次hall中断,计算一下速度。这个除法不好,计算时间比较厂,你用移位的方式计算时间,还有就是你的hall中断优先级是不是最高!

使用特权

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

本版积分规则

2

主题

2

帖子

1

粉丝