公式一:
n:电机转速(单位:转/分)
f:电机运行频率
P:极对数
举例:电机的额定转速为450RPM(450转/分钟),磁极对数为23对,则电机的运行频率为:。
公式二:
F1:FOC执行频率(PWM周期频率,单位:Hz)
:一个PWM周期内霍尔角度变化量
F2:电机运行频率(单位:Hz)
AC:一个电角度周期的角度变化范围
举例:F1为16000Hz,F2可以由公式一计算得出,AC固定为360°,65536。所以可以得到
=
。
公式三
:速度在一个PWM周期内随电角度的变化
CKTIM:用于捕获霍尔传感器的TIM定时器的输入时钟
SAMPLINGFREQ:FOC算法的采样频率
CapturedValue:霍尔传感器的捕获值
PrescalerValue:用于霍尔传感器捕获的时钟的分频系数
计算过程解析:
:捕获的CKTIM时钟数
:输入捕获的霍尔传感器的脉冲周期
:输入捕获的霍尔传感器的脉冲频率
:电气频率(电机电周期的倒数),为什么是3,而不是6?因为STM32F1系列单片机输入捕获没有双边沿触发,程序中使用下降沿捕获,虽然霍尔有6种状态,但是当前只有下降沿触发,这样一来就只有3种状态了。
:换算到每个采样频率对应多少个2Π角度
:将2Π电角度对应为65536,此时得到的即每采样周期对应的电角度(2Π对应为65536)
项目程序中,霍尔转过360°以后,
hRotorAddAngle = (s16)((u16)(PSEUDO_FREQ_CONV/hSensorCapture));
#define PSEUDO_FREQ_CONV ((u32)PSEUDO_FREQ_UDIV*0x10000uL)
#define PSEUDO_FREQ_UDIV (u32)(ROTOR_SPEED_FACTOR/SAMPLING_FREQ)
#define ROTOR_SPEED_FACTOR (u32)(CKTIM/8)
#define CKTIM ((u32)72000000uL)
#define SAMPLING_FREQ ((u16)PWM_FREQ/((REP_RATE+1)/2))
#define PWM_FREQ ((u16)16000)
#define REP_RATE (1)
得出:
SensorPeriod:在程序中为霍尔旋转360°时定时器的捕获值。
296



被折叠的 条评论
为什么被折叠?



