Hi Everyone,
I am using Lab1C with my custom board to drive BLDC motor(48V,10000rpm,peak current 2A) with following data
Motor Parameter
#define USER_MOTOR_TYPE MOTOR_Type_Pm
#define USER_MOTOR_NUM_POLE_PAIRS (2)
#define USER_MOTOR_Rr (NULL)
#define USER_MOTOR_Rs (1.2)
#define USER_MOTOR_Ls_d (0.000721023)
#define USER_MOTOR_Ls_q (0.000721023)
#define USER_MOTOR_RATED_FLUX (0.28)
#define USER_MOTOR_MAGNETIZING_CURRENT (NULL)
#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)
Board Parameter is
#define USER_IQ_FULL_SCALE_FREQ_Hz (433)
#define USER_IQ_FULL_SCALE_VOLTAGE_V (88.0)
#define USER_ADC_FULL_SCALE_VOLTAGE_V (69.3)
#define USER_VOLTAGE_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_VOLTAGE_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_VOLTAGE_FILTER_POLE_Hz (698.34)
Actually physically i have only 2 current sensor(Phase "A" sensor is not available), so i have manged it from software side by using following equation in HAL_readAdcData(hal.h)
// convert current B
value = (_iq)ADC_readResult(obj->adcHandle,ADC_ResultNumber_2);
value = _IQ12mpy(value,current_sf) - obj->adcBias.I.value[1]; // divide by 2^numAdcBits = 2^12
pAdcData->I.value[1] = -value; //-ve to change the polarity of current Sensor
// convert current C
value = (_iq)ADC_readResult(obj->adcHandle,ADC_ResultNumber_3);
value = _IQ12mpy(value,current_sf) - obj->adcBias.I.value[2]; // divide by 2^numAdcBits = 2^12
pAdcData->I.value[2] = -value;
//pAdcData->I.value[2] = (pAdcData->I.value[0]+pAdcData->I.value[1]);
// convert current A
value = (_iq)ADC_readResult(obj->adcHandle,ADC_ResultNumber_1);
value = _IQ12mpy(value,current_sf) - obj->adcBias.I.value[0]; // divide by 2^numAdcBits = 2^12
//pAdcData->I.value[0] = -value;
pAdcData->I.value[0] = (pAdcData->I.value[1]+pAdcData->I.value[2]);
and in hal.c while declaring Current sensor adc
ADC_setSocChanNumber(obj->adcHandle,ADC_SocNumber_0,ADC_SocChanNumber_A4);
ADC_setSocTrigSrc(obj->adcHandle,ADC_SocNumber_0,ADC_SocTrigSrc_EPWM1_ADCSOCA);
ADC_setSocSampleDelay(obj->adcHandle,ADC_SocNumber_0,ADC_SocSampleDelay_7_cycles);
ADC_setSocChanNumber(obj->adcHandle,ADC_SocNumber_1,ADC_SocChanNumber_A4); //Same as phase b current Sensing
ADC_setSocTrigSrc(obj->adcHandle,ADC_SocNumber_1,ADC_SocTrigSrc_EPWM1_ADCSOCA);
ADC_setSocSampleDelay(obj->adcHandle,ADC_SocNumber_1,ADC_SocSampleDelay_7_cycles);
ADC_setSocChanNumber(obj->adcHandle,ADC_SocNumber_2,ADC_SocChanNumber_A4);
ADC_setSocTrigSrc(obj->adcHandle,ADC_SocNumber_2,ADC_SocTrigSrc_EPWM1_ADCSOCA);
ADC_setSocSampleDelay(obj->adcHandle,ADC_SocNumber_2,ADC_SocSampleDelay_7_cycles);
ADC_setSocChanNumber(obj->adcHandle,ADC_SocNumber_3,ADC_SocChanNumber_A6);
ADC_setSocTrigSrc(obj->adcHandle,ADC_SocNumber_3,ADC_SocTrigSrc_EPWM1_ADCSOCA);
ADC_setSocSampleDelay(obj->adcHandle,ADC_SocNumber_3,ADC_SocSampleDelay_7_cycles);
bcz if was selecting 2 current sensor and according adc in hal.c, it was drawing 14A(more than Limit)
So like this when i manged from software side then it was working fine and i have achieved my desirable speed upto 8400 RPM with the max acceleration of 10 KRPM.
But now my question is
i want to increase my acceleration to 50KRPM, and i am unable to achieve it(even after increasing Motor MAx current to 18A, i was not getting).
After reading
https://e2e.ti.com/support/microcontrollers/c2000/f/171/t/463896 thread i have tried to LAB10a but it was also drawing 14A.(Even other than Lab1b and Lab1C whichever lab i was trying it was drawing 14A)
So my question is
How to get Higher Acceleration ?
and how to run other lab(Specifically Lab10A)?(which was drawing higher current)
