打印
[技术问答]

新唐 M451 无感 FOC 起转代码解析

[复制链接]
787|11
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
七毛钱|  楼主 | 2022-10-10 09:25 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
看起转函数Adjust_Pull_Ommega()头文件说明,转速Pull_Ommega 每次加增量——函数参数一(转速逐步加快)。然后转速 Pull_Ommega 去掉16位小数,加到角度Angle_q 上。



也就是说,开始是电磁场吸着磁铁做均加速转动。如果一直不收敛,拖动转速Pull_Ommega 加到上限——函数参数三,就不再加速了,也不减速。这就是状态4第一阶段。

若磁铁位置一直不收敛,显然也无法同步,在ADC中断代码里,超时就去状态1,停转,重启。代码如下215行




如果磁铁转起来了,位置也收敛了,阶段一就变到阶段二,函数Adjust_Pull_Ommega() 返回( q 轴 - 电流方向)的角度差,即下图中的 theta。如果电流较大、电磁吸力较大,转速不快时,磁铁 d 轴会紧跟电流方向,若想电流方向靠近 q 轴,就要电流的方向加快转动,同时降低电流、减小电磁场对磁铁的吸引力。

阶段二,转速Pull_Ommega 按参数二增减调整,  让电流方向Angle_q 加快靠近 q 轴。一旦( q 轴 - 电流方向Angle_q)的角度差在Angle_Jump_Sync(缺省3072=16.8度) 之内就变同步转动。
下图是ADC 中断里,阶段二的代码,temp16 是上图中的角度偏差 theta。237行,temp16 >0, 就是电流转动比q 轴滞后,就降电流,降转矩。240行,电流转速加倍。



若temp16 <0, 看233行,就是电流方向超前 q 轴了,就要 Angle_q 降速,并加大电流。

使用特权

评论回复
沙发
huxiaoping| | 2022-10-10 22:47 | 只看该作者
看论坛晒得波形还可以,想请教下楼主,M451的这个方案实际效果如何呢?电机参数依赖大吗?比如一个参数调好了换一个别的电机能跑不?

使用特权

评论回复
板凳
cyclefly| | 2022-10-11 21:09 | 只看该作者
有实例么

使用特权

评论回复
地板
duo点| | 2022-10-12 14:58 | 只看该作者
一切纸上谈兵的东西还不如来点实际应用方案

使用特权

评论回复
5
Henryko| | 2022-11-6 20:16 | 只看该作者
M451的这个方案实际效果如何呢?

使用特权

评论回复
6
tpgf| | 2022-11-7 15:03 | 只看该作者
在起转函数之前如何对这部分硬件进行初始化呢

使用特权

评论回复
7
八层楼| | 2022-11-7 15:17 | 只看该作者
一般来说是什么引发磁铁位置一直不收敛呢

使用特权

评论回复
8
观海| | 2022-11-7 15:28 | 只看该作者
如果位置是发散的 会导致什么结果出现呢

使用特权

评论回复
9
guanjiaer| | 2022-11-7 15:57 | 只看该作者
由阶段一就变到阶段二的过程中,采用的是什么查询方式呢

使用特权

评论回复
10
heimaojingzhang| | 2022-11-7 16:07 | 只看该作者
偏差角度和采样数据之间是如何进行换算的呢

使用特权

评论回复
11
keaibukelian| | 2022-11-7 16:16 | 只看该作者
如果无法同步,那么软件中设置了多少次进行重启呢

使用特权

评论回复
12
AloneKaven| | 2022-11-9 22:27 | 只看该作者
起转函数之前如何对这部分硬件进行初始化?

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

342

主题

2359

帖子

4

粉丝