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.

insta spin motion 控制电机时,实际电流小于控制电流是怎么回事?

Other Parts Discussed in Thread: MOTORWARE

我的硬件是自己根据TI硬件boostxldrv8301_revB参考设计的板子,采样输出电压和输出电流(3路)。其中电流采样为下桥臂电阻采样,三相桥臂都采样。软件基于proj_lab13b。

采用48V PMSM电机;电机额定电流8.2A;额定转速3000RPM. 额定转矩1.27Nm.极对数4;

电流采样电阻值20mohm;电流采样放大电路倍数为8.45倍;

电机正转,反转都ok,如下是我的部分软硬件设置:

USER_IQ_FULL_SCALE_VOLTAGE_V      (48.0)

USER_IQ_FULL_SCALE_CURRENT_A         (21.0) 

USER_ADC_FULL_SCALE_CURRENT_A        (39.0)

#define USER_NUM_CURRENT_SENSORS            (3)

电机部分参数设置如下

USER_MOTOR_MAX_CURRENT          (11.6)      // 8.2*1.414= 11.6A;

USER_MOTOR_VOLT_MAX             (48.0) 

目前碰到的问题如下:

当电机带部分负载时,在某转速下,如转速约1800rpm,通过CCS调试窗口看到Id_ref 已经达到 9.8A,电机转矩达到0.73NM;但此时串联在直流母线回路中的电流表显示实际电流仅3.5A。

为什么控制电流和实际电流差别如此悬殊?原因在哪里?

请大神解答。谢谢。

  • 这个问题你可以先参考一下InstaSPIN-FOC and InstaSPIN-MOTION User's Guide (Rev. H)的chapter 5.2(硬件先决条件)

    另外,程序中注意以下几点:

    1.根据user.h中的硬件板设置正确的参数,如:

    #define USER_IQ_FULL_SCALE_VOLTAGE_V           (xx)
    
    #define USER_VOLTAGE_FILTER_POLE_Hz               (xx)
    
    #define USER_ADC_FULL_SCALE_VOLTAGE_V       (xx)
    
    #define USER_IQ_FULL_SCALE_CURRENT_A           (xx)
    
    #define USER_ADC_FULL_SCALE_CURRENT_A       (xx)

    2. 在hal.h中的HAL_readAdcData()中更改当前系数的符号,

    static inline void HAL_readAdcData(HAL_Handle handle,HAL_AdcData_t *pAdcData)
    
    {
    
       _iq current_sf = HAL_getCurrentScaleFactor(handle);
    
    }

    3. 然后,您可以按照instaSPIN实验指南使用lab01b和lab01c验证硬件,然后使用lab02b或lab02c进行识别并检查识别参数是否与TI EVM板一样正确。

    Btw,Id_ref是什么意思?直流母线电流不等于Id或Iq。

  • 回复的时候图表没法贴上来,请移步到doc文件中看,谢谢。
  • 你好,请问有按照上述的内容测试过吗?因为我看你的文档,似乎是对一开始的问题的补充说明,并没有更新测试结果?
  • Green Deng 说:
    你好,请问有按照上述的内容测试过吗?因为我看你的文档,似乎是对一开始的问题的补充说明,并没有更新测试结果?

    是的,我的回复文档是对所提问题的补充说明,在您回复之后,我还没有测试。我需要一一核对您提到的那些参数的设置,看有没有设置不合适的地方,如果有不合适的地方我修好之后,然后我再测试一下,到时候我尽量把测试结果贴上来。

    我根据之前那个文档测试的结果,发现对于电机电流的设定,我的理解不是RMS值;而是应该设置为峰值;

    比如,电机额定电流是8.2A,这自然是有效值;但在设定电机的电流参数:最大电流,比如我设置为额定电流,应该换算成 8.2*1.414=11.6A,峰值电流;

    #define USER_MOTOR_MAX_CURRENT          (11.6)

    这样设置是否正确呢?

  • USER_MOTOR_MAX_CURRENT的值是最大转矩电流,它是速度控制器的最大输出值。 它与电动机的额定电流没有直接关系。 你可以根据所需的扭矩输出将其设置为额定电流的1.0到2.0倍。
  • Green Deng 说:
    USER_MOTOR_MAX_CURRENT的值是最大转矩电流,它是速度控制器的最大输出值。 它与电动机的额定电流没有直接关系。 你可以根据所需的扭矩输出将其设置为额定电流的1.0到2.0倍。

    如果是这样的话,那就是说,在这个例程中,没有设置电机额定电流的选项? 这似乎不太合理,因为最大电流往往是在启动或急加速,过载等情况下会遇到,并且是短时间的,但正常运行时一般会在额定电流以下。如果没有额定电流的选项,控制程序如何保证电机在额定参数下运行?是不是需要用户自己加入电机额定电流的参数?

  • 也不需要,instaSPIN算法是自动识别电机参数的。另外,电机运行所需的参数你可以参考InstaSPIN Projects and Labs User’s Guide里面的描述,里面基本也没提到电机额定电流。
    C:\ti\motorware\motorware_1_01_00_18\docs\labs\instaspin_labs.pdf