锐单电子商城 , 一站式电子元器件采购平台!
  • 电话:400-990-0325

TI INSTASPIN 下桥臂电阻采样改为U V W电流传感器采样,软件上要改什么地方啊?或者怎样换算符合算法要求?

时间:2023-07-11 21:37:00 2w电流采样电阻2512

首先计算转换比,然后修改user.h中的USER_ADC_FULL_SCALE_CURRENT_A

其次: 修改hal.h中的readAdcData函数,如下标记黄色三个值的正负符号。请注意,该算法以流入电机电流的方向为正。如果您使用霍尔取样,然后运输,最终确定电流方向,如果相反,则在value前加符号。

static inline void HAL_readAdcData(HAL_Handle handle,HAL_AdcData_t *pAdcData)

{

HAL_Obj *obj = (HAL_Obj *)handle;

_iq value;

_iq current_sf = HAL_getCurrentScaleFactor(handle);

_iq voltage_sf = HAL_getVoltageScaleFactor(handle);

// convert current A

// sample the first sample twice due to errata sprz342f, ignore the first sample

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;

// 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;

// 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;

另一个函数,updateAdcBias, 若是正相采样,则bias =, 否则 -=。

static inline void HAL_updateAdcBias(HAL_Handle handle)

{

uint_least8_t cnt;

HAL_Obj *obj = (HAL_Obj *)handle;

_iq bias;

// update the current bias

for(cnt=0;cnt

{

bias = HAL_getBias(handle,HAL_SensorType_Current,cnt);

bias = OFFSET_getOffset(obj->offsetHandle_I[cnt]);

HAL_setBias(handle,HAL_SensorType_Current,cnt,bias);

}

ERIC

如果确认答案,请帮助表扬“是”

- ERIC

锐单商城拥有海量元器件数据手册IC替代型号,打造电子元器件IC百科大全!

相关文章