找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

  [复制链接]
61#
匿名  发表于 2024-3-25 11:04:58
Angus 发表于 2024-3-24 11:16
在做位置估算时,要用到一个低通滤波器。低通带宽若太低,转速响应慢;若太高,起转时容易受干扰、同步慢。 ...

这里的低通滤波器,是为了得到一个比较平滑的反电动势是吗?能否详细讲讲。这个算法在启动和低速时和速度正常时的区别,以及如何切换的,谢谢!
回复 支持 反对

使用道具

62#
 楼主| Angus 发表于 2024-3-26 09:07:29 | 只看该作者
游客 223.112.186.x 发表于 2024-3-25 11:04
这里的低通滤波器,是为了得到一个比较平滑的反电动势是吗?能否详细讲讲。这个算法在启动和低速时和速度 ...

我们是dq 轴估算,直接计算出 q 轴的电势,这个反电势直接与转速成正比。

刚启转时,电流容易受干扰 ADC 数据更容易跳动,计算出的反电势也会数据跳动,就是含有高频分量,由此计算出的转速值,也会有数据跳动。低通滤波,就是滤除数据跳动分量。实际机械转速几乎不跳动,就是频率较低,带宽较窄。

启转成功后,数据比较稳定,可以适当增大一点点带宽,加快转速响应,特别是转速会快速变化的应用。
回复 支持 反对

使用道具 举报

63#
 楼主| Angus 发表于 2024-4-1 12:40:11 | 只看该作者
本帖最后由 Angus 于 2024-9-15 16:30 编辑

电机公式是 V - Ri = Ldi/dt + E ;  位置估算输入的电压,一般先把电机绕线电阻的压降去掉,即先计算等式左边的 V-Ri
我们的代码是用电压的 25mV 数值计算的,可以保证电压不足10V的低压电机的计算精度。最大电压可到 1638.3V,380V 的电机也无需修改电压数据精度。

先计算 V- Ri, 187/188行是Vd/Vq电压的 25mV 数值。Ri 计算结果是 伏,就要乘 40 得 25mV 数值
R = 毫欧/1000 = RESISTER_COIL / 1000
i = 电流ADC值/1安电流的ADC 值
电流 Iq_Measure_f3,是电流ADC 值乘8的数值(乘8是为了后面位置估算提高精度),所以电流ADC值 = Iq_measure_f3/8
CURRENT_Adc1000 是1安电流的ADC值、再乘1000的数据,所以1安电流 ADC 值 =  CURRENT_Adc1000 / 1000
所以电流 i = (Iq_Measure_f3/8) / (CURRENT_Adc1000/1000)



40*R*i  = 40 * (RESISTER_COIL/1000)*【(Iq_Measure_f3/8) / (CURRENT_Adc1000/1000)】
上式简化后 40*Ri = 5*RESISTER_COIL * Iq_Measure_f3 / CURRENT_Adc1000
Iq_Measure_f3 有 15 位,如果电阻RESISTER_COIL 有17位,前面乘积就 32位了,就不能再乘5了,所以把乘5移到分母除5。

第208行代码本应除5,做四舍五入要加 2.5, 加不了小数,就变成加5除10。
回复 支持 反对

使用道具 举报

64#
 楼主| Angus 发表于 2024-4-17 17:12:47 | 只看该作者
本帖最后由 Angus 于 2024-4-17 22:11 编辑

新唐 M451 无感 FOC 是如何很快起转成功的?

无感 FOC 的起转,是先托动,就是电磁场吸引着转子永磁体转动。
刚开始,转子位置未知,用较大电流吸着磁铁转,所以磁铁跟得紧,电流方向与磁铁夹角小于90度,如下图。





转速稍快后,磁铁位置准确了。由于电流大转矩大,转速又慢,所以电流方向与转子夹角仍小于90度。若想让二者夹角到90度,有两个方法:
1>,加快电流转速。让电流方向,尽快转到 Q 轴位置——90度。  如果电流不减小,可能要转很多圈,电流方向才能赶上90度位置,切同步慢。
2>,减小电流降低转矩,永磁体转不动就会落后,直到落后电流方向 90度,就变同步转。 如果电流减太快、转矩降太快,重载时,还没变同步,就转不动而停转了。

所以,以上两个办法,同时使用,才能尽快变到同步转动。

这里再详细说一下电流加速度。
为了加快电流转速,我们采用了指数加速的方式。如下图

刚开始时,转速要慢,要让电流吸住磁铁转。转到磁铁位置准确了,就要尽快转到90度,这时指数加速,电流方向可很快转到90度

转速调整函数, Adjust_Pull_Ommega(Speed_Inc,  PULL_Ommega_Inc_f16 ,  PULL_Ommega_Max_f16);   
函数内这样实现
Pull_Ommega_f16 += Pull_Ommega_f16 * Speed_Inc >>14 ;      // 指数加速
Pull_Ommega_f16 += PULL_Ommega_Inc_f16 ;                        // 线性加速


拖动刚开始,如果只想线性加速,可以让实参一 = 0,磁铁位置准确了,再用非0实参。


回复 支持 反对

使用道具 举报

65#
 楼主| Angus 发表于 2024-4-19 17:36:13 | 只看该作者
本帖最后由 Angus 于 2024-7-16 09:28 编辑

状态 4 起转流程图



锁定电流 CURRENT_MotorLock_f12 的取值:大小让重载时能转得动。
锁定时间 TIME_MotorLock 的取值: 反转最大角度时,能转到位。比如想逆时针转,电流在 12点锁定,此时磁铁若在8点会是最大反转角度,锁定时长要让磁铁转到12点差不多。先用电流半值驱动,是让轻载时减缓转速、减轻在 12 点左右的来回抖动。

线性加速度 PULL_Ommega_Inc_f16 的取值,重载起动时(起转较慢), 拖动最少的圈数能起转成功,一般两三圈, 或四五圈就能同步。
轻载时磁铁跟得紧,线性加速度若取值小,要到转速较高时、要转很多圈电流方向才能追上Q轴,就用指数加速度加快电流增速。逐步增加指数加速度值,让轻载能较快同步。

拖动转速上限 PULL_Ommega_Max_f16 :比最小能同步的转速高一点。比如在500 rpm 以下无法同步转,则拖动转速上限可取值700rpm 以上。
拖动转速下限 PULL_Ommega_Min_f16 : 一般比最小同步转速小一点。比如500rpm以下无法同步转动,则拖动转速下限可取值 300rpm以下。高于此转速才判断是否同步。




回复 支持 反对

使用道具 举报

66#
 楼主| Angus 发表于 2024-4-24 13:25:42 | 只看该作者
本帖最后由 Angus 于 2024-4-28 10:00 编辑

状态 4 起转波形


从上图可见,收敛速度很快,电流方向追赶估算角度的速度有点慢。若要加快起转,就要缩短这段时间。
回复 支持 反对

使用道具 举报

67#
 楼主| Angus 发表于 2024-4-26 23:03:34 | 只看该作者
本帖最后由 Angus 于 2024-4-27 11:00 编辑

24年4月26日以后更新的代码,完善了状态 3 起转。 下图可见,切同步较快。

压缩泵起转波形,50ms 内切同步,电流 PI 值可以稍大一点,以加快响应。


风机起转波形,0.2 秒切同步

回复 支持 反对

使用道具 举报

68#
 楼主| Angus 发表于 2024-5-30 11:33:55 | 只看该作者
高压电机控制的电源部分


回复 支持 反对

使用道具 举报

69#
 楼主| Angus 发表于 2024-5-30 11:35:28 | 只看该作者

高压电机控制的 AC/DC 部分。



回复 支持 反对

使用道具 举报

70#
 楼主| Angus 发表于 2024-5-30 12:31:34 | 只看该作者
高压电机控制的功率驱动部分。



R114 的阻值按保护电流选取,取值 75欧时,保护电流 10A
回复 支持 反对

使用道具 举报

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

本版积分规则

新唐MCU