使用Launchpad-28069+Drv8305,驱动一个外转子的电机(电感值在几个uH)。
#define USER_MOTOR_RES_EST_CURRENT (2)
#define USER_MOTOR_IND_EST_CURRENT (-2)
按照上述配置时,电机可以正常完成参数辨识过程,辨识结果也比较准确。
但当我将上述参数改为3A时(user.h中的其他参数保持不变),电机无法完成正常的参数辨识,在进行到电感辨识的时候,发出很大的噪音,驱动板Drv8305报错。反复试过几次都是这样的问题,请问这是什么原因?
#define USER_MOTOR_RES_EST_CURRENT (3)
#define USER_MOTOR_IND_EST_CURRENT (-3)
手册中对这两个电流的解释为:只提到辨识电感时,电机也处于旋转状态,Ls电流可能无需过高。
1.一般都是把这两个值设置成相同的大小,符号相反。可不可以将RES = 3,IND = -1。是否可以?
2.由于进行参数辨识代码不开源,不知道他的辨识策略。是否有详细的文档可供参考?
但有注意到电机在进行电感辨识的过程中,有一个短暂的停止动作,这是什么情况?
希望得到TI工程师的回答,非常感谢!
ming chen3:
将RES设置为3A,IND设置为-2A同样可以完成参数辨识,不会发出噪音。
就是都设置为3A和-3A时,电机发出很大噪音,报警,无法完成参数辨识。
使用Launchpad-28069+Drv8305,驱动一个外转子的电机(电感值在几个uH)。
#define USER_MOTOR_RES_EST_CURRENT (2)
#define USER_MOTOR_IND_EST_CURRENT (-2)
按照上述配置时,电机可以正常完成参数辨识过程,辨识结果也比较准确。
但当我将上述参数改为3A时(user.h中的其他参数保持不变),电机无法完成正常的参数辨识,在进行到电感辨识的时候,发出很大的噪音,驱动板Drv8305报错。反复试过几次都是这样的问题,请问这是什么原因?
#define USER_MOTOR_RES_EST_CURRENT (3)
#define USER_MOTOR_IND_EST_CURRENT (-3)
手册中对这两个电流的解释为:只提到辨识电感时,电机也处于旋转状态,Ls电流可能无需过高。
1.一般都是把这两个值设置成相同的大小,符号相反。可不可以将RES = 3,IND = -1。是否可以?
2.由于进行参数辨识代码不开源,不知道他的辨识策略。是否有详细的文档可供参考?
但有注意到电机在进行电感辨识的过程中,有一个短暂的停止动作,这是什么情况?
希望得到TI工程师的回答,非常感谢!
Linda:
回复 ming chen3:
您好!
请问USER_MOTOR_MAX_CURRENT这个值设的是多少?
可否把所有USER_MOTOR_开头的相关参数发上来看看?
使用Launchpad-28069+Drv8305,驱动一个外转子的电机(电感值在几个uH)。
#define USER_MOTOR_RES_EST_CURRENT (2)
#define USER_MOTOR_IND_EST_CURRENT (-2)
按照上述配置时,电机可以正常完成参数辨识过程,辨识结果也比较准确。
但当我将上述参数改为3A时(user.h中的其他参数保持不变),电机无法完成正常的参数辨识,在进行到电感辨识的时候,发出很大的噪音,驱动板Drv8305报错。反复试过几次都是这样的问题,请问这是什么原因?
#define USER_MOTOR_RES_EST_CURRENT (3)
#define USER_MOTOR_IND_EST_CURRENT (-3)
手册中对这两个电流的解释为:只提到辨识电感时,电机也处于旋转状态,Ls电流可能无需过高。
1.一般都是把这两个值设置成相同的大小,符号相反。可不可以将RES = 3,IND = -1。是否可以?
2.由于进行参数辨识代码不开源,不知道他的辨识策略。是否有详细的文档可供参考?
但有注意到电机在进行电感辨识的过程中,有一个短暂的停止动作,这是什么情况?
希望得到TI工程师的回答,非常感谢!
ming chen3:
回复 Linda:
#define USER_IQ_FULL_SCALE_FREQ_Hz (1300.0)
#define USER_IQ_FULL_SCALE_VOLTAGE_V (30.0) // 24.0 Set to Vbus
#define USER_ADC_FULL_SCALE_VOLTAGE_V (44.30) // BOOSTXL-DRV8305EVM = 44.30 V
#define USER_IQ_FULL_SCALE_CURRENT_A (24.0) // BOOSTXL-DRV8305EVM = 24.0 A
#define USER_ADC_FULL_SCALE_CURRENT_A (47.14) // BOOSTXL-DRV8305EVM = 47.14 A
#define USER_NUM_CURRENT_SENSORS (3) // 3 Preferred setting for best performance across full speed range, allows for 100% duty cycle
#define USER_NUM_VOLTAGE_SENSORS (3) // 3 Required
#define I_A_offset (1.022829056)#define I_B_offset (1.020207703)#define I_C_offset (1.014472127)
#define V_A_offset (0.04628497362)#define V_B_offset (0.04616570473)#define V_C_offset (0.04622781277)
#define USER_PWM_FREQ_kHz (45.0) //30.0 Example, 8.0 – 30.0 KHz typical; 45-80 KHz may be required for very low inductance, high speed motors
#define USER_MAX_VS_MAG_PU (0.5) // Set to 0.5 if a current reconstruction technique is not used. Look at the module svgen_current in lab10a-x for more info.
#define USER_NUM_PWM_TICKS_PER_ISR_TICK (3)
//! \brief Defines the number of isr ticks (hardware) per controller clock tick (software)//! \brief Controller clock tick (CTRL) is the main clock used for all timing in the software//! \brief Typically the PWM Frequency triggers (can be decimated by the ePWM hardware for less overhead) an ADC SOC//! \brief ADC SOC triggers an ADC Conversion Done//! \brief ADC Conversion Done triggers ISR//! \brief This relates the hardware ISR rate to the software controller rate//! \brief Typcially want to consider some form of decimation (ePWM hardware, CURRENT or EST) over 16KHz ISR to insure interrupt completes and leaves time for background tasks#define USER_NUM_ISR_TICKS_PER_CTRL_TICK (1) // 2 Example, controller clock rate (CTRL) runs at PWM / 2; ex 30 KHz PWM, 15 KHz control
//! \brief Defines the number of controller clock ticks per current controller clock tick//! \brief Relationship of controller clock rate to current controller (FOC) rate#define USER_NUM_CTRL_TICKS_PER_CURRENT_TICK (1) // 1 Typical, Forward FOC current controller (Iq/Id/IPARK/SVPWM) runs at same rate as CTRL.
//! \brief Defines the number of controller clock ticks per estimator clock tick//! \brief Relationship of controller clock rate to estimator (FAST) rate//! \brief Depends on needed dynamic performance, FAST provides very good results as low as 1 KHz while more dynamic or high speed applications may require up to 15 KHz#define USER_NUM_CTRL_TICKS_PER_EST_TICK (1) // 1 Typical, FAST estimator runs at same rate as CTRL;
//! \brief Defines the number of controller clock ticks per speed controller clock tick//! \brief Relationship of controller clock rate to speed loop rate#define USER_NUM_CTRL_TICKS_PER_SPEED_TICK (15) // 15 Typical to match PWM, ex: 15KHz PWM, controller, and current loop, 1KHz speed loop
//! \brief Defines the number of controller clock ticks per trajectory clock tick//! \brief Relationship of controller clock rate to trajectory loop rate//! \brief Typically the same as the speed rate#define USER_NUM_CTRL_TICKS_PER_TRAJ_TICK (15) // 15 Typical to match PWM, ex: 10KHz controller & current loop, 1KHz speed loop, 1 KHz Trajectory
//! \brief LIMITS// **************************************************************************//! \brief Defines the maximum negative current to be applied in Id reference//! \brief Used in field weakening only, this is a safety setting (e.g. to protect against demagnetization)//! \brief User must also be aware that overall current magnitude [sqrt(Id^2 + Iq^2)] should be kept below any machine design specifications#define USER_MAX_NEGATIVE_ID_REF_CURRENT_A (-0.5 * USER_MOTOR_MAX_CURRENT) // -0.5 * USER_MOTOR_MAX_CURRENT Example, adjust to meet safety needs of your motor
//! \brief Defines the R/L estimation frequency, Hz//! \brief User higher values for low inductance motors and lower values for higher inductance//! \brief motors. The values can range from 100 to 300 Hz.#define USER_R_OVER_L_EST_FREQ_Hz (300) // 300 Default
//! \brief Defines the low speed limit for the flux integrator, pu//! \brief This is the speed range (CW/CCW) at which the ForceAngle object is active, but only if Enabled//! \brief Outside of this speed – or if Disabled – the ForcAngle will NEVER be active and the angle is provided by FAST only#define USER_ZEROSPEEDLIMIT (0.5 / USER_IQ_FULL_SCALE_FREQ_Hz) // 0.002 pu, 1-5 Hz typical; Hz = USER_ZEROSPEEDLIMIT * USER_IQ_FULL_SCALE_FREQ_Hz
//! \brief Defines the force angle frequency, Hz//! \brief Frequency of stator vector rotation used by the ForceAngle object//! \brief Can be positive or negative#define USER_FORCE_ANGLE_FREQ_Hz (2.0 * USER_ZEROSPEEDLIMIT * USER_IQ_FULL_SCALE_FREQ_Hz) // 1.0 Typical force angle start-up speed
//! \brief POLES// **************************************************************************//! \brief Defines the analog voltage filter pole location, Hz//! \brief Must match the hardware filter for Vph#define USER_VOLTAGE_FILTER_POLE_Hz (344.62) // BOOSTXL-DRV8305 = 344.62 Hz
//! \brief USER MOTOR & ID SETTINGS// **************************************************************************
//! \brief Define each motor with a unique name and ID number// BLDC & SMPM motors#define Estun_EMJ_04APB22 101#define Anaheim_BLY172S 102#define Teknic_M2310PLN04K 104
// IPM motors// If user provides separate Ls-d, Ls-q// else treat as SPM with user or identified average Ls#define Belt_Drive_Washer_IPM 201#define Anaheim_Salient 202
// ACIM motors#define Marathon_5K33GN2A 301
//! \brief Uncomment the motor which should be included at compile//! \brief These motor ID settings and motor parameters are then available to be used by the control system//! \brief Once your ideal settings and parameters are identified update the motor section here so it is available in the binary code//#define USER_MOTOR Estun_EMJ_04APB22#define USER_MOTOR My_Motor//#define USER_MOTOR Teknic_M2310PLN04K//#define USER_MOTOR Belt_Drive_Washer_IPM//#define USER_MOTOR Marathon_5K33GN2A//#define USER_MOTOR Anaheim_Salient
#if (USER_MOTOR == Estun_EMJ_04APB22) // Name must match the motor #define#define USER_MOTOR_TYPE MOTOR_Type_Pm // Motor_Type_Pm (All Synchronous: BLDC, PMSM, SMPM, IPM) or Motor_Type_Induction (Asynchronous ACI)#define USER_MOTOR_NUM_POLE_PAIRS (4) // PAIRS, not total poles. Used to calculate user RPM from rotor Hz only#define USER_MOTOR_Rr (NULL) // Induction motors only, else NULL#define USER_MOTOR_Rs (2.303403) // Identified phase to neutral resistance in a Y equivalent circuit (Ohms, float)#define USER_MOTOR_Ls_d (0.008464367) // For PM, Identified average stator inductance (Henry, float)#define USER_MOTOR_Ls_q (0.008464367) // For PM, Identified average stator inductance (Henry, float)#define USER_MOTOR_RATED_FLUX (0.38) // Identified TOTAL flux linkage between the rotor and the stator (V/Hz)#define USER_MOTOR_MAGNETIZING_CURRENT (NULL) // Induction motors only, else NULL#define USER_MOTOR_RES_EST_CURRENT (1.0) // During Motor ID, maximum current (Amperes, float) used for Rs estimation, 10-20% rated current#define USER_MOTOR_IND_EST_CURRENT (-1.0) // During Motor ID, maximum current (negative Amperes, float) used for Ls estimation, use just enough to enable rotation#define USER_MOTOR_MAX_CURRENT (3.82) // CRITICAL: Used during ID and run-time, sets a limit on the maximum current command output of the provided Speed PI Controller to the Iq controller#define USER_MOTOR_FLUX_EST_FREQ_Hz (20.0) // During Motor ID, maximum commanded speed (Hz, float), ~10% rated
/*#elif (USER_MOTOR == My_Motor)#define USER_MOTOR_TYPE MOTOR_Type_Pm#define USER_MOTOR_NUM_POLE_PAIRS (12)#define USER_MOTOR_Rr (NULL)//NULL#define USER_MOTOR_Rs (NULL)#define USER_MOTOR_Ls_d (NULL)#define USER_MOTOR_Ls_q (NULL)#define USER_MOTOR_RATED_FLUX (NULL)#define USER_MOTOR_MAGNETIZING_CURRENT (NULL)//NULL#define USER_MOTOR_RES_EST_CURRENT (2)#define USER_MOTOR_IND_EST_CURRENT (-2)#define USER_MOTOR_MAX_CURRENT (15.0)#define USER_MOTOR_FLUX_EST_FREQ_Hz (50.0)*/
使用Launchpad-28069+Drv8305,驱动一个外转子的电机(电感值在几个uH)。
#define USER_MOTOR_RES_EST_CURRENT (2)
#define USER_MOTOR_IND_EST_CURRENT (-2)
按照上述配置时,电机可以正常完成参数辨识过程,辨识结果也比较准确。
但当我将上述参数改为3A时(user.h中的其他参数保持不变),电机无法完成正常的参数辨识,在进行到电感辨识的时候,发出很大的噪音,驱动板Drv8305报错。反复试过几次都是这样的问题,请问这是什么原因?
#define USER_MOTOR_RES_EST_CURRENT (3)
#define USER_MOTOR_IND_EST_CURRENT (-3)
手册中对这两个电流的解释为:只提到辨识电感时,电机也处于旋转状态,Ls电流可能无需过高。
1.一般都是把这两个值设置成相同的大小,符号相反。可不可以将RES = 3,IND = -1。是否可以?
2.由于进行参数辨识代码不开源,不知道他的辨识策略。是否有详细的文档可供参考?
但有注意到电机在进行电感辨识的过程中,有一个短暂的停止动作,这是什么情况?
希望得到TI工程师的回答,非常感谢!
Linda:
回复 ming chen3:
您好!
从参数上看没有特别的问题,减小IND_EST_CURRENT应该是有效的办法。
使用Launchpad-28069+Drv8305,驱动一个外转子的电机(电感值在几个uH)。
#define USER_MOTOR_RES_EST_CURRENT (2)
#define USER_MOTOR_IND_EST_CURRENT (-2)
按照上述配置时,电机可以正常完成参数辨识过程,辨识结果也比较准确。
但当我将上述参数改为3A时(user.h中的其他参数保持不变),电机无法完成正常的参数辨识,在进行到电感辨识的时候,发出很大的噪音,驱动板Drv8305报错。反复试过几次都是这样的问题,请问这是什么原因?
#define USER_MOTOR_RES_EST_CURRENT (3)
#define USER_MOTOR_IND_EST_CURRENT (-3)
手册中对这两个电流的解释为:只提到辨识电感时,电机也处于旋转状态,Ls电流可能无需过高。
1.一般都是把这两个值设置成相同的大小,符号相反。可不可以将RES = 3,IND = -1。是否可以?
2.由于进行参数辨识代码不开源,不知道他的辨识策略。是否有详细的文档可供参考?
但有注意到电机在进行电感辨识的过程中,有一个短暂的停止动作,这是什么情况?
希望得到TI工程师的回答,非常感谢!
ming chen3:
回复 Linda:
详细看了一下user guide中的电感辨识过程,对之前IND_EST_CURRENT设置过大电机噪音很大,无法完整辨识,原因仍比较疑惑。
要识别PMSM 电机的定子电感,相关算法会向D 轴注入电流USER_MOTOR_IND_EST_CURRENT,为负值。
电感电流会有一个斜升的过程。斜率为:USER_MOTOR_RES_EST_CURRENT /s;
假如:#define USER_MOTOR_RES_EST_CURRENT (1.0)
#define USER_MOTOR_IND_EST_CURRENT (-0.5)
从增加0.5A 电流到将电流注入D 轴共需耗费0.5s。
我在进行参数辨识的时候,出现问题,前面的实验已经将原因锁定为IND_EST_CURRENT设置过大,该量设置过大导致无法完成辨识怀疑原因有以下两种:
1.注入Id的电流为-3A时,弱磁过大,影响到电机进行Ls辨识的正常运行,导致电机运行故障;
2.IND_EST_CURRENT设置过大,在斜升过程现有斜率(IND_EST_CURRENT/s)无法达到IND设置值。电感斜升阶段是否对斜升时间有设置或限制???
希望得到TI工程师回答!谢谢~
使用Launchpad-28069+Drv8305,驱动一个外转子的电机(电感值在几个uH)。
#define USER_MOTOR_RES_EST_CURRENT (2)
#define USER_MOTOR_IND_EST_CURRENT (-2)
按照上述配置时,电机可以正常完成参数辨识过程,辨识结果也比较准确。
但当我将上述参数改为3A时(user.h中的其他参数保持不变),电机无法完成正常的参数辨识,在进行到电感辨识的时候,发出很大的噪音,驱动板Drv8305报错。反复试过几次都是这样的问题,请问这是什么原因?
#define USER_MOTOR_RES_EST_CURRENT (3)
#define USER_MOTOR_IND_EST_CURRENT (-3)
手册中对这两个电流的解释为:只提到辨识电感时,电机也处于旋转状态,Ls电流可能无需过高。
1.一般都是把这两个值设置成相同的大小,符号相反。可不可以将RES = 3,IND = -1。是否可以?
2.由于进行参数辨识代码不开源,不知道他的辨识策略。是否有详细的文档可供参考?
但有注意到电机在进行电感辨识的过程中,有一个短暂的停止动作,这是什么情况?
希望得到TI工程师的回答,非常感谢!
feiyuan xia:
回复 ming chen3:
我也遇到,当电机在学习的过程中,电机运行后突然停止,DRV8305的nFAULT引脚变低,测量AVDD为0V,重新上电也是一样的现象,请问这一般是什么原因?