如题,我使用的是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}
复制代码
|
I = V/R;
ST的不是这样算的吧
是的,只不过用的是S16,65536
评分
查看全部评分
没看懂 请详述 感谢
Phase current (16位采集电流值) = (Phase current (真实电流值)* 32767 * Rshunt *
*Amplifying network gain)/(MCU supply voltage/2)
çµæµå¢ç
è¿æ¾åæ°
çµæºåæ°
大神,我的三电阻采样,想让电流的有效值显示在数码管上,该怎么做呀,拜托指点一下,愁死了
(1)库函数,__weak void R3_1_GetPhaseCurrents( PWMC_Handle_t * pHdl, ab_t * pStator_Currents )是用于采集相电流,每一次只采a,b,c中2相,组合并不是固定的,根据sectorX来,修改这个函数,要知道波形是一个周期,可以根据sectorX的变化判断是否满足一个周期,在数据未达到一个周期前,根据需要把这些电流存起来
pHandle->_Super.Ia = pStator_Currents->a;
pHandle->_Super.Ib = pStator_Currents->b;
pHandle->_Super.Ic = -pStator_Currents->a - pStator_Currents->b;
(2)如果采满一个周期,就开始计算RMS,这个可能需要一段时间,这期间就不用再存电流,等算好后,就可以显示;接着开始下一次取电流。
这样的方法不是实时的,有些电流周期数据没有计算进去,不过对于数码管这种低速的显示,应该是可以了。
另外也可以用纯硬件实现,比如,每次abc相电流采样结束,把电流值用dac输出,然后再接到专用有效值芯片,那么芯片就一直输出有效值,供mcu的adc采集就可以,这样不需要mcu参加有效值的计算。