本帖最后由 youzhewujie 于 2023-2-27 03:18 编辑
你好,我在使用N32G030控制HALL无刷电机的时候,发现下面的问题可否帮忙解答:
软硬件基本情况是:
我无刷电机是120度放置的HALL电机,4对极,24V,额定转速5000转。软件使用参考程序,硬件自己做的板子,MOS,驱动芯片,IO配置等跟Demo板一致。测量HALL信号正常,纹波很小
控制的时候,使用HALL学习功能,可以得到相序和相移,下载学习到的数据后,无刷电机可以运行,但稳定性跟速度有关系,学习到的数据只能在500转到1000转运行(80mA左右),超过1000转电流急速增大(空载500mA),2000转达到惊人的3A电流,且电机抖动严重。
后面我手动修改相移,在不同速度下配置不同的相移,可以把2000转以内的电流控制到200mA以下,但3000mA以上还是有问题。
个人分析了下代码,HALL学习的代码好像只更新了FixAge[0],FixAge[1~5]没有更新应该是0,但HAll角度计算的时候是都调用了的。贴出串口处理HALL学习的代码和学习完成后计算HALL角度的代码如下:
------------------------------------------------------------------------------------
case MT_SET_HALL_PARAM:
#ifdef HALL_FOR_ANGLE
pObj->HallStudy.Enable = SM_intexp(&pBuf,1);
if(pObj->HallStudy.Enable == 1)
{
pBuf+=8;
pObj->HallStudy.CurrentValue = SM_intexp(&pBuf,1) * 50;
}
else
{
for(i = 0;i<6;i++)
pObj->HallCalc.HallFixLineSeq = SM_intexp(&pBuf,1);
pObj->HallCalc.HallFixAngle[0] = SM_intexp(&pBuf,2);
-----------------------------------------------------------------------------------
if(pHallCalc->AngleCalTickCnt > 0)//Angel Inc
HallAngle = pHallCalc->HallFixAngle[pHallCalc->Index] + pHallCalc->HallAngleOffset + IncSet;
else//Angel Dec
HallAngle = pHallCalc->HallFixAngle[pHallCalc->IndexOld] + pHallCalc->HallAngleOffset - IncSet;
---------------------------------------------------------------------------------------
会不会这段代码有缺陷造成的了?不过我修改过更新全部FixAngle好像也差不多。
还有其他原因吗?比如电机4个对极的相移不同?电机Hall信号延时相移与转速有关?麻烦大家帮忙解答解答,多谢!! |
单个带霍尔的电机,其相序和相移是固定的,可以先通过三相两两通电的方式去确定霍尔与转子位置的对应关系(这个网上都有资料),确定好相序后再去微调相移。相序相移整对了(工作电流最小的时候),低速高速都能转