This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

DRV8301-69MT调试转速上不去

Expert 1119 points


我采用DRV8301-69MT套件,开发一款48伏压缩机驱动产品。

目前用的是库里的lab3b工程

在压缩机空载情况下,实际转速gMotorVars.Speed_krpm可以达到我设置的转速gMotorVars.SpeedRef_krpm,例如设置2.5K转速,实际可以达到,电流约为2.2A;

然而加上负载后,实际转速不能达到我的目标转速,无论设置多大,实际转速也就几百转,电流1.2A左右,就再也上不去了。

我想请问,可能是哪里出了问题?有没有什么排查方向?

  • 你好,如你之前发的帖子中的内容,方便的话更新一下你的电机信息。
    针对这个问题:
    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的过调制。
  • 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的过调制。

    电机信息,我也是客户提供的,电流没说,不过,我们在客户那边用他们之前产品做试验,4500转时候在7A左右。其他参数如下:

    电压48V,极对数3对,转速范围1500——4500;定子电阻0.08,d轴电感0.47mH,q轴电感0.7mH,感应电压常数8.37,电机转矩常数0.12,磁通0.072,转动惯量2.42E-04

    根据您的提示,我观察了您说的两个变量:

    1、gmotorvar . vs值一直为0;

    2、ctrl.spd_out约为0.86,的确达到了设定值USER_MOTOR_MAX_CURRENT/USER_IQ_FULL_SCALE_CURRENT_A。但是,这里我解释下:套件上面电流反馈的电阻,我更改过,套件原先运放处电阻为1K和20K,即放大20倍,2m欧采样电阻下,USER_ADC_FULL_SCALE_CURRENT_A值为82.5,USER_IQ_FULL_SCALE_CURRENT_A值为41.25。由于实际我用的压缩机实际最大电流也就7A,因此为了采样更清楚我放大了倍数,改为1K和71.5K 的组合,这样,我的user.h中USER_IQ_FULL_SCALE_CURRENT_A值设为23,USER_IQ_FULL_SCALE_CURRENT_A为11.5.我的USER_MOTOR_MAX_CURRENT设为10.现在,运行中ctrl.spd_out为0.86,的确大约等于10/11.5.但是,USER_MOTOR_MAX_CURRENT也不能继续加大了,否则就大于USER_IQ_FULL_SCALE_CURRENT_A了,会导致报错。

  • 上述描述中应为USER_ADC_FULL_SCALE_CURRENT_A为23,USER_IQ_FULL_SCALE_CURRENT_A为11.5
  • 抱歉漏贴了,以下是回复:

    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的范围。