本人最近在评估TI的InstaSPIN-FOC算法。在研究user.h参数配置方面的问题。
控制板:LAUNCHXL-F28027F LaunchPad
功率板:BOOSTXL-DRV8305EVM
软件:CCS5.5
电机参数:
电压:24V 最大转速:185rpm 连续电流:3A 峰值电流:6A。
1.使用TI的GUI Composer有两种方式:Standalone和Inside of CCS。在standalone模式下,MotorWare projects需要根据电机的相关参数修改user.h文件,然后编译文件,将生成的appProgram.out文件下存放在GUI目录下。Launch the GUI,即可进行Motor identify过程:
2.在进行User.h配置的过程中,我怀疑过合理的配置参数文件是否能一定程度上提升参数辨识的精度?关键参数和配置原则如下:
#define USER_IQ_FULL_SCALE_FREQ_Hz (500.0) //GUI_QSG推荐设置500Hz
#define USER_IQ_FULL_SCALE_VOLTAGE_V (24.0) //一般等于母线电压(24V)
#define USER_PWM_FREQ_kHz (30.0) //30K PWM
#define USER_NUM_PWM_TICKS_PER_ISR_TICK (3) //10k ISR
#define USER_NUM_ISR_TICKS_PER_CTRL_TICK (1) // 10k CTRL
#define USER_NUM_CTRL_TICKS_PER_CURRENT_TICK (1) // 10k CURRENT
#define USER_NUM_CTRL_TICKS_PER_EST_TICK (1) // 10K EST
#define USER_NUM_CTRL_TICKS_PER_SPEED_TICK (10) // 1K SPEED
#define USER_NUM_CTRL_TICKS_PER_TRAJ_TICK (10) // 1K TRAJ
#define USER_MOTOR My_Motor
#define USER_MOTOR_TYPE MOTOR_Type_Pm//PMSM
#define USER_MOTOR_NUM_POLE_PAIRS (8) //8对极(Pole pairs)
#define USER_MOTOR_RES_EST_CURRENT (0.3)//10%*连续电流
#define USER_MOTOR_IND_EST_CURRENT (-0.3)//-10%*连续电流
#define USER_MOTOR_MAX_CURRENT (6) //峰值电流6A
#define USER_MOTOR_FLUX_EST_FREQ_Hz (30.0)//
3.关键参数:
- #define USER_IQ_FULL_SCALE_FREQ_Hz (500.0) //
Hz = RPM * poles / 120。GUI_QSG推荐设置500Hz,即使低速电机。
但这里就存在一个问题,低速电机反电势系数大,就会造成电机参数辨识完成后Flux*FULL_SCALE_FREQ_Hz > FULL_SCALE_VOLTAGE_V。界面报错显示。当然这样的报错究竟会有什么影响不得而知。假如想在GUI屏蔽该错误:对于低速电机建议降低FULL_SCALE_FREQ_Hz ,也可以适当提升FULL_SCALE_VOLTAGE_V的值。
- PWM_FREQ_kHz 需要针对电机特性合理设置。对于高速低电感电机:45K-80K。普通电机:8K-30K。ISR、Current、EST和频率可按实际情况设置。
- #define USER_MOTOR_FLUX_EST_FREQ_Hz (30.0)//
~10% of rated max speed = Hz * 10%
对于低速电机(最高转速在200rpm左右)假如按照上述公式配置,MOTOR_FLUX_EST_FREQ_Hz 的值将很小。通过实验证明FLUX_EST_FREQ_Hz 的值太低,将直接影响到参数辨识的精度。推荐设置在30Hz以上,即使是低速电机。
- #define USER_R_OVER_L_EST_FREQ_Hz (300.0)//
高速电机配置为300,普通电机可减小到100。
- 当辨识的Lsd < 0.001mH时,建议使用proj_lab02c进行 Motor ID。
以上都是我实际调试经验总结,希望探讨~