找回密码
 立即注册

QQ登录

只需一步,快速开始

打印 上一主题 下一主题
开启左侧

15万转无感FOC: 高压风机水泵吸尘器,冰箱空调压缩机

  [复制链接]
38#
匿名  发表于 2023-6-8 11:17:30
Angus 发表于 2023-5-29 21:03
以下起转函数,函数 Adjust_Pull_Ommega()可以重载,所以可直接用这个函数名,加到文件中

这部分调整思路本省就是有问题的,估算角度-实际角度,调整方法中很多地方用到了估算角度,前提条件是估算角度是准确可靠的,既然估算角度已经可靠了,还要什么if拖动?直接速度闭环启动不就行了?
回复 支持 反对

使用道具

37#
匿名  发表于 2023-6-7 21:43:27
角度很小时,角度值=正弦值=正切值,所以下图不求反正切,直接用 Vd/Vq 代替Theta_e 是否也可以?


回复 支持 反对

使用道具

36#
 楼主| Angus 发表于 2023-5-29 21:03:40 | 只看该作者
本帖最后由 Angus 于 2023-6-1 09:15 编辑

以下起转函数,函数 Adjust_Pull_Ommega()可以重载,所以可直接用这个函数名,加到文件中



若有兴趣,可对此函数优化, 起转有很多方法


回复 支持 反对

使用道具 举报

35#
匿名  发表于 2023-5-11 22:26:55
Angus 发表于 2023-4-29 21:00
前面乘 2/3 是等幅变换。等幅变换是电压向量的模、等于相电压幅值的变换。

以下是推导:


回复 支持 反对

使用道具

34#
 楼主| Angus 发表于 2023-4-29 21:00:30 | 只看该作者
本帖最后由 Angus 于 2023-5-3 22:00 编辑

前面乘 2/3 是等幅变换。等幅变换是电压向量的模、等于相电压幅值的变换。

以下是推导:
假如 A,B,C 三相电压依次滞后120度,相电压幅度都是U, 就是如下图形和三个公式

三相线圈,空间上的位置是:A相在0度,B相在120度,C相在 240度(或-120度),所以三相电压的“向量和”就是下式


我们对此三相电压的向量和,化简一下



以上推导结果可知,三相电压的“相电压”幅度如果是U,  接到三相电机上,产生的电压向量:是模 U*3/2 的、均速转动的向量。
我们国家的三相电是220V, 有些国家的三相电是110V, 还有些国家用的是 240V,

假如你在国外见到一个用电器,用 ADC 测到某个时刻、此电器输入的三相电压的瞬时值是 ADC_a, ADC_b, ADC_c,此用电器接的电压是多少伏呢?显然只要求出此三个ADC 值的向量的模,然后再乘 2/3 就是三相电压的“相电压”幅值
  
所以,电机 FOC 控制,在求电压(或电流)向量时,乘系数 2/3 是等幅变换,求出的是方向不变、但 "模=相电压幅值" 的向量。



回复 支持 反对

使用道具 举报

33#
匿名  发表于 2023-4-25 11:58:03

RE: 15万转无感弦波: 风机水泵吸尘器,航模电调压缩机

请楼主讲一讲,为何电压向量要乘2/3 ?
A 相接电源 BC 接地时,假如一相电阻是R,  BC 相并联电阻是R/2,
所以 A 相分压是 VDD*2/3,BC 相分压是 VDD/3,
而 BC 相电压在 A 相方向的投影都是VDD/6, 如红色线。BC 相合成的向量是 VDD/3,

这样 ABC 相电压合成向量,应该是 A 相的 VDD*2/3 加 BC 相的 VDD/3,应 = VDD。  
但所有资料里都说是 VDD*2/3   ? 而且没有解释




回复 支持 反对

使用道具

32#
 楼主| Angus 发表于 2023-4-16 13:00:04 | 只看该作者
本帖最后由 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) ;

回复 支持 反对

使用道具 举报

31#
 楼主| Angus 发表于 2023-4-11 11:22:22 | 只看该作者
本帖最后由 Angus 于 2023-4-11 11:26 编辑

前面推导可知,电流 PI 系数可按下式确定



L,R 是电机线圈的电感、电阻, N = 20~100
回复 支持 反对

使用道具 举报

30#
 楼主| Angus 发表于 2023-4-10 11:00:25 | 只看该作者
本帖最后由 Angus 于 2023-4-10 13:27 编辑

Kp 如何取值呢?

楼上已推导出 Ki 取值 = RKp/L,我们重新推导楼上过程,


上式,是一阶低通滤波器的公式,低通的带宽(或转折频点)是

套用拉氏反变换公式,可求出冲激响应。或者把上式变成微分方程也可求出时域解为下式:

冲激响应的积分,是阶跃响应。对上式求积分,得到输入突变时的输出公式、和函数图形如下。


低通,除了用带宽描述,还有一种描述方法是: 阶跃上升时间,一般取“输出上升到1-1/e ”的时间,做为上升时间,如上图,t=L/Kp 时上升到 1-1/e。
电机的电流 PI 控制,电流上升时间一般取15个PWM周期以上,上升太快,输出容易振荡。
我们代码中的注释,建议取值 20~100个 PWM周期, 即低通带宽是 PWM 频率的 1/20~1/100
确定了低通带宽,就确定了Kp


这就是电流 PI 控制系数的计算方法。





回复 支持 反对

使用道具 举报

29#
 楼主| Angus 发表于 2023-3-30 11:36:26 | 只看该作者
本帖最后由 Angus 于 2023-3-31 21:58 编辑

这里讲一下电流 PI 参数的取值问题

电机可以看成一个电感串一个电阻,其拉氏变换是 1/(sL+R), PI 控制的拉氏变换是 (Kp + Ki/s) , 这俩公式看不懂的,请去复习一下拉氏变换
电流的 PI 控制图如下,x是电流设定值,y是电机的实际电流。PI 控制的输出是电压V,电压加到电机(电阻+电感), 又调整了电流大小,控制的最终结果是 y=x 。因为有积分运算,所以只要 x-y >0, PI 运算的结果V 就会一直增加,所以电机电流y也一直增加,直到 y=x。


上图写成公式

公式化简

令 Ki = K*Kp, K是一个常数,公式变为



上式可变成 y 的二阶微分方程,求出 y  的解,用拉氏反变换的方法也可求出 y 的解。
当设定电流不变、即x=常数时,y 的解的形式是:
其中 x1,x2 是 S 的一元二次方程   的解。我们先不求解,讨论解的形式,比较简单。

S的一元二次方程有俩实数解时,y 的解中,e的指数是实数,y 的值指数变化(增加或衰减)趋于终值C0,没有振荡。
如果上述一元二次方程的解是复数,e的指数是复数,按欧拉公式,就是y的解是三角函数、乘e指数。y的解有三角函数,就是电流 y 有振荡。PI 控制效果、是振荡式趋于稳定值C0,这是我们不希望的。
上述S的二次方程有实根,必须满足:

上式可写成 ,第二个括号内的值 >=0,就满足整个公式>=0。

从第二个括号内式子 4RKp - 4LkKp >=0 得出 R - LK >= 0,即 K <= R/L
所以,Ki 满足下式,  电流响应就不会有振荡:

这就是 Ki 取值的理论依据,实际上 PI 控制环路还有PWM  滞后一个周期等其它微小滞后因素,Ki 的这个临界值,比 R/L*Kp 还大一点,也就是只要Kp的取值不会引起振荡,Ki 取值 = R/L*Kp 也不会振荡。

回复 支持 2 反对 0

使用道具 举报

高级模式
B Color Image Link Quote Code Smilies |上传

本版积分规则

新唐MCU