我采用DRV8301-69MT套件,开发一款48伏压缩机驱动产品。
目前用的是库里的lab3b工程
在压缩机空载情况下,实际转速gMotorVars.Speed_krpm可以达到我设置的转速gMotorVars.SpeedRef_krpm,例如设置2.5K转速,实际可以达到,电流约为2.2A;
然而加上负载后,实际转速不能达到我的目标转速,无论设置多大,实际转速也就几百转,电流1.2A左右,就再也上不去了。
我想请问,可能是哪里出了问题?有没有什么排查方向?
Green Deng:
你好,如你之前发的帖子中的内容,方便的话更新一下你的电机信息。
针对这个问题:
1、请检查速度控制器(ctrl.spd_out)的输出是否接近最大扭矩电流设定值(USER_MOTOR_MAX_CURRENT/USER_IQ_FULL_SCALE_CURRENT_A)。如果是,尝试在user.h中增加USER_MOTOR_MAX_CURRENT。
2. 请检查电压矢量(gmotorvar . vs)的值是否超过或接近USER_MAX_VS_MAG_PU。如果是,那可能需要用到lab10a的过调制。
Shan:
回复 Green Deng:
Green Deng你好,如你之前发的帖子中的内容,方便的话更新一下你的电机信息。 针对这个问题: 1、请检查速度控制器(ctrl.spd_out)的输出是否接近最大扭矩电流设定值(USER_MOTOR_MAX_CURRENT/USER_IQ_FULL_SCALE_CURRENT_A)。如果是,尝试在user.h中增加USER_MOTOR_MAX_CURRENT。2. 请检查电压矢量(gmotorvar . vs)的值是否超过或接近USER_MAX_VS_MAG_PU。如果是,那可能需要用到lab10a的过调制。
Shan:
回复 Shan:
上述描述中应为USER_ADC_FULL_SCALE_CURRENT_A为23,USER_IQ_FULL_SCALE_CURRENT_A为11.5
Green Deng:
回复 Shan:
抱歉漏贴了,以下是回复:
1、检查updateGlobalVariables_motor()函数中是否包含以下代码,如果没有,请添加它们以监测gMotorVars.Vs。
// read Vd and Vq vectors per units gMotorVars.Vd = CTRL_getVd_out_pu(ctrlHandle); gMotorVars.Vq = CTRL_getVq_out_pu(ctrlHandle);// calculate vector Vs in per units gMotorVars.Vs = _IQsqrt(_IQmpy(gMotorVars.Vd, gMotorVars.Vd) + _IQmpy(gMotorVars.Vq, gMotorVars.Vq));2、增加直流母线电压,以查看速度控制器(ctrl.spd_out)的输出接近最大转矩电流设置值时(USER_MOTOR_MAX_CURRENT / USER_IQ_FULL_SCALE_CURRENT_A)会发生什么情况。
3、看上去USER_ADC_FULL_SCALE_CURRENT_A对于USER_MOTOR_MAX_CURRENT来说太小了,应该至少是USER_MOTOR_MAX_CURRENT的3到5倍,否则,电流检测值将超出ADC的范围。