在路上… 发表于 2019-3-16 11:27:15

ST FOC5.x电机库 电流值如何转换为真实电流呢?

如题,我使用的是3电阻采样 hall传感器 BLDC电机
在..MCSDK_v5.2.0-Full\MotorControl\MCSDK\MCLib\F1xx\Src\r3_hd2_pwm_curr_fdbk.c
这个文件的500行 有获取三个项的项电流 请问怎么转换为真实电流值?
pHandle->_Super.hIa = pStator_Currents->qI_Component1;
pHandle->_Super.hIb = pStator_Currents->qI_Component2;
pHandle->_Super.hIc = -pStator_Currents->qI_Component1 - pStator_Currents->qI_Component2;
还有在在drive_parameters.h文件中,这个IQMAX的值是怎么确定的??
/*Maximum Torque Per Ampere strategy parameters */
#define IQMAX                        13901
#define SEGDIV                         0
#define ANGC                           {0,0,0,0,0,0,0,0}
#define OFST                           {0,0,0,0,0,0,0,0}


stm32gxx 发表于 2020-8-26 09:00:40

用在相电流采样的ADC分辨率是12位,配成左对齐,意味着adc数据左移4位,相当于乘于16倍,ADC出来的数据肯定是16位。实际的电流有正负,而电路属于单电源系统,才需要做偏置(sdk中称polarization),程序中需要做减法才是实际的相电流,电流就有正有负,因此最终电流的结构体定义ab_t中的电流都是16位有符号数。

qiubenqi 发表于 2019-3-22 20:49:48

((采集值-偏置)/Gain)*3.3/4096= v
I = V/R;

在路上… 发表于 2019-3-23 09:03:16

qiubenqi 发表于 2019-3-22 20:49
((采集值-偏置)/Gain)*3.3/4096= v
I = V/R;

ST的不是这样算的吧

qiubenqi 发表于 2019-3-24 16:47:27

在路上… 发表于 2019-3-23 09:03
ST的不是这样算的吧

是的,只不过用的是S16,65536

在路上… 发表于 2019-3-29 09:49:53

qiubenqi 发表于 2019-3-24 16:47
是的,只不过用的是S16,65536

没看懂 请详述 感谢

qiubenqi 发表于 2019-3-29 14:22:50

在路上… 发表于 2019-3-29 09:49
没看懂 请详述 感谢

   Phase current (16位采集电流值) = (Phase current (真实电流值)* 32767 * Rshunt *
                                 *Amplifying network gain)/(MCU supply voltage/2)

zhangyouyoua5b0 发表于 2020-1-2 15:00:41

楼主,解决了吗,求指教

我是胡工 发表于 2020-8-2 11:46:53

同问 谢谢

suqq12345 发表于 2020-8-17 11:05:11

AD采样数据左对齐的,换算一下嘛

stm32gxx 发表于 2020-8-17 12:13:23

在软件库里,电流是采用Q1.15的带符号数表示的,也就是正的最大值是32767,这个值对应的是电流采样放大器输出的最大电流值,对于一个好的电流放大器电路,要求把(1)极化电压(即DC OFFSET)调成电源的一半,也就是1.65V;(2)放大器增益适中,兼顾电流分辨率和最大电流不要饱和。因此,举个例子,以ST-EVAL_3201为例,它的中值为1.65V,动态范围可以用足,此时对于0.01欧姆的采样电阻,增益7.7,可以读到的最大电流为21.429A,如果电机的NOMINAL电流=10A的话,软件里的数值即为10/21.429*32767=15291,记住这个比例,如果IQ要设为1A,那就是1/21.429*32767=1529.F:\Temp\1.png
页: [1] 2
查看完整版本: ST FOC5.x电机库 电流值如何转换为真实电流呢?