本帖最后由 Angus 于 2024-9-15 16:15 编辑
按前面所讲,令PWM 频率是 fp, 则比例系数 Kp = 2*3.14159*fp*L/N, N=20~100,为计算方便取值 10*3.14159=31.4159 ,变为 Kp = fp*L/5
推导 PI 系数,用的是标准单位,电压用伏特,电流用安培,电阻用欧姆,电感用亨利。 电流比例运算 V = Kp*I ,
M451 代码中,电流 PI 运算结果,是 0.1V 的数值再增17位小数的变量 Vq_out_f17,比例运算公式两边乘10* 2^17, 变为 (10*2^17)*V = (10*2^17*Kp) * I ,
电流用的是 ADC 值再增5位小数的数值 Iq_Meas_LPF_f5。假如电流采样电阻是 r, 运放倍数是A, 1安电流(5V参考电压,12bit)ADC值就是 Ar*4096/5。再增5位小数,就是再乘32。比例运算公式变成
(10*2^17)*V = (10*2^17*Kp) * I *( Ar*2^32/5)/ (Ar*2^32/5),
等号左边是Vq_out_f17,等号右边下划线部分是 Iq_Meas_LPF_f4(的误差), 公式变成
Vq_out_f17 = (10*2^17*Kp) / (Ar*2^32/5) * Iq_Meas_LPF_f5 。
所以比例系数 Kp_Current =(10*2^17*Kp) / (Ar*2^32/5) = 50Kp/(Ar)
再代入Kp = fp*L/5,得出比比例系数 Kp_Current = 10fp*L/(Ar) , 这里L,r 用亨利/欧姆,或者毫亨/毫欧
积分系数 Ki_Current = Ki*T = Ki/fp = Kp*R/L/fp, 所以 Ki_Current = Kp_Current *R/L/fp = 10R/(Ar), R是电机绕线电阻,r是电流采样电阻。
所以, M451 代码中,电流 PI 系数用以下公式求得:
A是运放倍数。 电机 L/R 和电流阻 r 用欧姆、亨利, 或者毫欧、毫亨。
上图 406 行求出电流误差,409行是用M4内核的饱和运算指令qadd加增量 ,即 Vq_out_f17 = Vq_out_f17 + I_beta ;
|