Other Parts Discussed in Thread: BOOSTXL-DRV8323RH
器件型号: C2000WARE-MOTORCONTROL-SDK
Thread 中讨论的其他器件: BOOSTXL-DRV8323RH
您好:
我目前正在使用 TI 的 Universal MotorControl Lab 测试我们的定制 BLDC 电机、但我遇到了基于霍尔传感器的控制问题。
使用的硬件如所示 LAUNCHXL-F280039 和 BOOSTXL-DRV8323RH 。
AT 构建级别 4 、当使用霍尔传感器驱动 BLDC 时、电机在达到上述速度后间歇性停止 50Hz 。
此外、在发出时 0Hz 速度命令 、则控制器变得不稳定并发散。
电机调谐已完成、并且在完全相同的条件下(使用时) 快速 没有任何问题。
霍尔传感器信号也已照常进行验证、与其他基于霍尔传感器的解决方案(例如 ST) 配合)配合使用时、运行过程中不会出现问题。
霍尔传感器 A、B 和 C 连接到 LaunchPad 引脚 2I、2B 和 2A 分别。
经证实、B 相和 C 相相对于 A 相延迟了 120°和 240°
我还尝试使用进行霍尔传感器校准 HALL_CAL 但它没有什么区别。
您是否恰好知道导致此问题的原因?
以下是 电机和控制器的主要参数、以及霍尔传感器调优结果。 
// in user_mtr1.h
...
#elif (USER_MOTOR1 == my_pm_motor_1)
// Custom BLDC motor definition
#define USER_MOTOR1_TYPE MOTOR_TYPE_PM
#define USER_MOTOR1_NUM_POLE_PAIRS (10)
#define USER_MOTOR1_Rr_Ohm (0.0f)
#define USER_MOTOR1_Rs_Ohm (0.152819753f)
#define USER_MOTOR1_Ls_d_H (0.000289398682f)
#define USER_MOTOR1_Ls_q_H (0.000289398682f)
#define USER_MOTOR1_RATED_FLUX_VpHz (0.041582156f)
#define USER_MOTOR1_MAGNETIZING_CURRENT_A (NULL)
#define USER_MOTOR1_RES_EST_CURRENT_A (2.0f)
#define USER_MOTOR1_IND_EST_CURRENT_A (-1.5f)
#define USER_MOTOR1_MAX_CURRENT_A (6.72f)
#define USER_MOTOR1_FLUX_EXC_FREQ_Hz (40.0f)
// Number of lines on the motor's quadrature encoder
#define USER_MOTOR1_NUM_ENC_SLOTS (NULL)
#define USER_MOTOR1_INERTIA_Kgm2 (240e-07)
// Ls compensation coefficient
#define USER_MOTOR1_Ls_d_COMP_COEF (0.15f) // 0.0f~0.5f
#define USER_MOTOR1_Ls_q_COMP_COEF (0.35f) // 0.0f~0.5f
#define USER_MOTOR1_Ls_MIN_NUM_COEF (0.55f) // 0.5f~1.0f
#define USER_MOTOR1_FREQ_NEARZEROLIMIT_Hz (0.1f) // Hz
#define USER_MOTOR1_RATED_VOLTAGE_V (24.0f)
#define USER_MOTOR1_FREQ_MIN_Hz (1.0f) // Hz
#define USER_MOTOR1_FREQ_MAX_Hz (200.0f) // Hz
#define USER_MOTOR1_FREQ_LOW_Hz (5.0f) // Hz
#define USER_MOTOR1_FREQ_HIGH_Hz (200.0f) // Hz
#define USER_MOTOR1_VOLT_MIN_V (1.0f) // Volt
#define USER_MOTOR1_VOLT_MAX_V (24.0f) // Volt
#define USER_MOTOR1_FORCE_DELTA_A (0.1f) // A
#define USER_MOTOR1_ALIGN_DELTA_A (0.1f) // A
#define USER_MOTOR1_FLUX_CURRENT_A (0.5f) // A
#define USER_MOTOR1_ALIGN_CURRENT_A (5.5f) // A
#define USER_MOTOR1_STARTUP_CURRENT_A (5.5f) // A, 3.5A default
#define USER_MOTOR1_TORQUE_CURRENT_A (5.5f) // A
#define USER_MOTOR1_OVER_CURRENT_A (10.0f) // A
#define USER_MOTOR1_BRAKE_CURRENT_A (1.0f) // A
#define USER_MOTOR1_BRAKE_TIME_DELAY (12000U) // 60s/5ms
#define USER_MOTOR1_SPEED_START_Hz (80.0f)
#define USER_MOTOR1_SPEED_FORCE_Hz (80.0f)
#define USER_MOTOR1_ACCEL_START_Hzps (60.0f)
#define USER_MOTOR1_ACCEL_MAX_Hzps (60.0f)
#define USER_MOTOR1_SPEED_FS_Hz (3.0f)
// only for encoder
#define USER_MOTOR1_ENC_POS_MAX (USER_MOTOR1_NUM_ENC_SLOTS * 4 - 1)
#define USER_MOTOR1_ENC_POS_OFFSET (668)
// Only for eSMO
#define USER_MOTOR1_KSLIDE_MAX (0.75f) //
#define USER_MOTOR1_KSLIDE_MIN (0.15f)
#define USER_MOTOR1_PLL_KP_MAX (6.75f) //
#define USER_MOTOR1_PLL_KP_MIN (0.75f)
#define USER_MOTOR1_PLL_KP_SF (5.0f)
#define USER_MOTOR1_PLL_KI (2.8125E-06f) // Not used, reserve
#define USER_MOTOR1_BEMF_THRESHOLD (0.5f)
#define USER_MOTOR1_BEMF_KSLF_FC_SF (1.0f)
#define USER_MOTOR1_THETA_OFFSET_SF (1.0f)
#define USER_MOTOR1_SPEED_LPF_FC_Hz (200.0f)
// for IS-BLDC
#define USER_MOTOR1_RAMP_START_Hz (3.0f)
#define USER_MOTOR1_RAMP_END_Hz (30.0f)
#define USER_MOTOR1_RAMP_DELAY (5)
#define USER_MOTOR1_ISBLDC_INT_MAX (0.015f)
#define USER_MOTOR1_ISBLDC_INT_MIN (0.010f)
// for Rs online calibration
#define USER_MOTOR1_RSONLINE_WAIT_TIME (60000U) // 5min/300s at 5ms base
#define USER_MOTOR1_RSONLINE_WORK_TIME (24000U) //2min/120s at 5ms base
// Current and Speed PI Regulators Tuning Coefficient
#define USER_MOTOR1_GAIN_SPEED_LOW_Hz (60.0f)
#define USER_MOTOR1_GAIN_SPEED_HIGH_Hz (150.0f)
#define USER_MOTOR1_KP_SPD_START_SF (1.5f) // 0.1~100.0
#define USER_MOTOR1_KI_SPD_START_SF (1.5f) // 0.1~10.0
#define USER_MOTOR1_KP_SPD_LOW_SF (2.0f) // 0.1~100.0
#define USER_MOTOR1_KI_SPD_LOW_SF (2.0f) // 0.1~10.0
#define USER_MOTOR1_KP_SPD_HIGH_SF (1.0f) // 0.1~100.0
#define USER_MOTOR1_KI_SPD_HIGH_SF (1.0f) // 0.1~10.0
#define USER_MOTOR1_GAIN_IQ_LOW_A (2.0f)
#define USER_MOTOR1_GAIN_IQ_HIGH_A (6.0f)
#define USER_MOTOR1_KP_IQ_START_SF (1.5f) // 0.1~10.0
#define USER_MOTOR1_KI_IQ_START_SF (1.5f) // 0.1~10.0
#define USER_MOTOR1_KP_IQ_LOW_SF (2.0f) // 0.1~10.0
#define USER_MOTOR1_KI_IQ_LOW_SF (2.0f) // 0.1~10.0
#define USER_MOTOR1_KP_IQ_HIGH_SF (1.0f) // 0.1~10.0
#define USER_MOTOR1_KI_IQ_HIGH_SF (1.0f) // 0.1~10.0
#define USER_MOTOR1_KP_ID_SF (1.0f) // 0.1~10.0
#define USER_MOTOR1_KI_ID_SF (1.0f) // 0.1~10.0
#if defined(MOTOR1_HALL)
// Only for hall sensor
#define USER_MOTOR1_HALL_DELTA_rad (MATH_TWO_PI / 36.0f) // rad
#endif // MOTOR1_HALL
...
// in motor1_drive.c
...
#elif (USER_MOTOR1 == my_pm_motor_1)
const float32_t hallAngleBuf[7] = { 1.69277406f, -1.43675756f, 2.70116997f, \
-2.49598646f, 0.615839601f , -0.410627186f,
1.69277406f };
...
提前感谢!