大家好、
我将 Lab1C 与定制板搭配使用、以通过以下数据驱动 BLDC 电机(48V、10000rpm、峰值电流2A)
电机参数
#define USER_MOTOR_TYPE Motor_Type_Pm
#define USER_MOTOR_NUM_POLE_PAIRS (2)
#define USER_MOTOR_RR (空)
#define USER_MOTOR_Rs (1.2)
#define USER_MOTOR_LS_d (0.000721023)
#define USER_MOTOR_LS_q (0.000721023)
#define USER_MOTOR_RATed_VLUX (0.28)
#define USER_MOTOR_磁 化电流 (空)
#define USER_MOTOR_RES_EST_CURRENT (1.0)
#define USER_MOTOR_IND_EST_CURRENT (-1.0)
#define USER_MOTOR_MAX_CURRENT (9.0)
#define USER_MOTOR_FLUX_EST_FREQ_Hz (20.0)
#define USER_MOTOR_FREQ_LOW (2.0)
#define USER_MOTOR_FREQ_HIGH (220.0)
#define USER_MOTOR_FREQ_MAX (250.0)
#define USER_MOTOR_VOLT_MIN (3.0)
#define USER_MOTOR_VOLT_MAX (68.0)
板参数是
#define USER_IQ_FULL_SCALE_FREQ_Hz (433)
#define USER_IQ_FULL_SCALE_VOLTAGE_V (88.0)
#define USER_ADC_FULL_SCALE_VOLTGE_V (69.3)
#define USER_VOLTGE_SF ((float_t)((USER_ADC_FULL_SCALE_VOLTAGE_V)/(USER_IQ_FULL_SCALE_VOLTAGE_V))
#define USER_IQ_FULL_SCALE_CURRENT_A (19.8)
#define USER_ADC_FULL_SCALE_CURRENT_A (33)
#define USER_CURRENT_SF ((float_t)((USER_ADC_FULL_SCALE_CURRENT_A)/(USER_IQ_FULL_SCALE_CURRENT_A))
#define USER_NUM_CURRENT_SENSORS (3)
#define USER_NUM_VOLTGE_SENSORS (3)
#define USER_PWM_FREQ_kHz (15.0)
#define USER_MAX_VS_MAG_PU (0.5)
#define USER_NUM_PWM_TICKS_PER_ISR_TICK (1)
#define USER_NUM_CTRL_TICKS_PER_SPEED_TICK (5)
#define USER_NUM_CTRL_TICKS_PER_TRAJ_TICK (5)
#define USER_VOLTGE_FILTER_POLE_Hz (698.34)
实际上、我只有2个电流传感器(不提供相位"A"传感器)、因此我使用 HAL_readAdcData (hal.h)中的以下公式从软件方面对其进行了改编
//转换电流 B
值=(_IQ) ADC_readResult (obj->adcHandle、ADC_ResultNumber_2);
值=_IQ12mpy (value、curry_SF)- obj->adcBias.I.value[1];//除以2^numAdcBits = 2^12
pAdcData->I.value[1]=-value; //-ve 更改电流传感器的极性
//转换当前 C
值=(_IQ) ADC_readResult (obj->adcHandle、ADC_ResultNumber_3);
值=_IQ12mpy (value、curry_SF)- obj->adcBias.I.value[2];//除以2^numAdcBits = 2^12
pAdcData->I.value[2]=-value;
//pAdcData->I.value[2]=(pAdcData->I.value[0]+pAdcData->I.value[1]);
//转换电流 A
值=(_IQ) ADC_readResult (obj->adcHandle、ADC_ResultNumber_1);
值=_IQ12mpy (value、curry_SF)- obj->adcBias.I.value[0];//除以2^numAdcBits = 2^12
//pAdcData->I.value[0]=-value;
pAdcData->I.value[0]=(pAdcData->I.value[1]+pAdcData->I.value[2]);
并在 hal.c 中进行设置、同时声明电流传感器 ADC
ADC_setSockChanNumber (obj->adcHandle、ADC_SockNumber_0、ADC_SockChanNumber_A4);
ADC_setSockTrigSrc (obj->adcHandle、ADC_SockNumber_0、ADC_SockTrigSrc_EPWM1_ADCSOCA);
ADC_setSockSampleDelay (obj->adcHandle、ADC_SockNumber_0、ADC_SockSampleDelay_7_cycles);
ADC_setSockChanNumber (obj->adcHandle、ADC_SockNumber_1、ADC_SockChanNumber_A4); //与 b 相电流感测相同
ADC_setSockTrigSrc (obj->adcHandle、ADC_SockNumber_1、ADC_SockTrigSrc_EPWM1_ADCSOCA);
ADC_setSockSampleDelay (obj->adcHandle、ADC_SockNumber_1、ADC_SockSampleDelay_7_cycles);
ADC_setSockChanNumber (obj->adcHandle、ADC_SockNumber_2、ADC_SockChanNumber_A4);
ADC_setSockTrigSrc (obj->adcHandle、ADC_SockNumber_2、ADC_SockTrigSrc_EPWM1_ADCSOCA);
ADC_setSockSampleDelay (obj->adcHandle、ADC_SockNumber_2、ADC_SockSampleDelay_7_cycles);
ADC_setSockChanNumber (obj->adcHandle、ADC_SockNumber_3、ADC_SockChanNumber_A6);
ADC_setSockTrigSrc (obj->adcHandle、ADC_SockNumber_3、ADC_SockTrigSrc_EPWM1_ADCSOCA);
ADC_setSockSampleDelay (obj->adcHandle、ADC_SockNumber_3、ADC_SockSampleDelay_7_cycles);
bcz 如果选择2个电流传感器、根据 hal.c 中的 ADC、则绘制的是14A (超过限制)
就像这样、当我从软件方面进行管理时、它运行良好、我实现了最高8400RPM 的理想速度、最大加速度为10kRPM。
但现在我的问题是
我想将加速度增加到50KRPM、但无法实现 (即使将电机最大电流增加到18A、我也没有获得)。
读数之后
https://e2e.ti.com/support/microcontrollers/c2000/f/171/t/463896 线程我曾尝试过 LAB10a、但它也绘制了14A。(即使不是 Lab1b 和 Lab1C、无论我尝试的是哪个实验、它绘制的是14A)
我的问题是
如何获得更高的加速度?
以及如何运行其他实验(尤其是 Lab10A)?(该实验消耗的电流更高)
