本帖最后由 Angus 于 2023-4-16 19:31 编辑
按前面所讲,令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 ,也就是做比例运算时,Kp 系数要乘 10*2^17 , 数据才正确。
M451 代码中,电流 PI 运算时,电流用的是 ADC 值再增4位小数的数值 Iq_Meas_LPF_f4。假如电流采样电阻是 r, 运放倍数是A, 1安电流(5V参考电压,12bit)ADC值就是 Ar*4096/5。再增4位小数,就是再乘16。比例运算公式变成
(10*2^17)*V = (10*2^17*Kp) * I *( Ar*2^16/5)/ (Ar*2^16/5), 等号左边是Vq_out_f17,等号右边下划线部分是 Iq_Meas_LPF_f4(的误差), 公式就是下式
Vq_out_f17 = (10*2^17*Kp) / (Ar*2^16/5) * Iq_Meas_LPF_f4 。
所以比例系数 Kp_Current =(10*2^17*Kp) / (Ar*2^16/5) = 100Kp/(Ar)
再代入Kp = fp*L/5,得出比比例系数 Kp_Current = 20fp*L/(Ar) , 这里L,r 用亨利/欧姆,或者毫亨/毫欧
积分系数 Ki_Current = Ki*T = Ki/fp = Kp*R/L/fp, 所以 Ki_Current = Kp_Current *R/L/fp = 20R/(Ar), R是电机绕线电阻,r是电流采样电阻。
所以, M451 代码中,电流 PI 系数用以下公式求得:
A是运放倍数。 电机 L/R 和电流阻 r 用欧姆、亨利, 或者毫欧、毫亨。
上图 363 行求出电流误差,364行是用M4内核的饱和运算指令qadd加增量 ,即 Vq_out_f17 = Vq_out_f17 + Kp_current *[e(n) - e(n-1)] + Ki_current * e(n) ;
|