为什么我的无刷电机驱动向右转动正常,向左转动有点卡,而且电流相差近10倍?
要做一个小东西,需要用到无刷电机驱动,无刷电机是EAD的DA23BBB-200,用PIC16F877+IR2102+IRF540做的电路,PWM的频率为37K,占空比50%。控制码为:
左转:const uchar ccw={0xff,0x77,0xbe,0x7e,0xcf,0xd7,0xaf};//向左转,一切正常,电流0.08A
在转:const uchar cw={0xff,0xcf,0x7e,0xd7,0xbe,0xaf,0x77};//向右转,抖动,电流0.59A
利用877的RB5-7来接收HALL信号,采样并驱动的代码为:
void sample()
{
uchar sam0,sam1,sam2;
do{
uint t=5;
sam1=PORTB&0xe0;
delay(t);
sam2=PORTB&0xe0;
}while(sam1-sam2); //采集两次HALL状态
if (sam1-oldsam!=0)//如果本次hall状态与上次不同,则继续
{
oldsam=sam1;
sam1=oldsam>>5;//将采集的结果右移五位,并送至PORTC口控制MOS
PORTC=ccw;
}
}
在控制码为CCW的情况下,一切正常,转动轻盈,没什么噪音,电流也才0.08A,但把PORTC=ccw;换为PORTC=cw;时,发现电流增大至0.59A,同时声音增大了一点,手摸电机表面感觉有抖动。
我把CW里的控制码顺序前后调整了N多次,总是无法达到和正转一样的效果。换了一个电机也一样。有次不小心焊错了线,结果为右转正常,左转不正常了。但现在想不起接错的时间是怎么接了。
下图为电路,及电机的HALL状态表。哪位大侠能救救我啊?在此先感谢了!
1,先查硬件
2,再查软件 已经解决了。我把cw={0xff,0x77,0xbe,0x7e,0xcf,0xd7,0xaf};调整为:cw={0xff,0xd7,0x7e,0x77,0xaf,0xcf,0xbe}就一切正常了 原来是逻辑顺序的问题了。我原来也有这个问题的。我再仔细查查!
页:
[1]