上一篇把第一版的 MA600A 通信、旁轴布局和标定问题基本讲完了。V1 不是完全不能用,手动转动时也能看到角度变化,但磁铁和传感器不在转轴中心以后,气隙、偏心和安装角度都会叠到波形里。软件当然可以继续补,只是越往后做 FOC,我越不想每次看到速度抖动,都先猜一句:“这次又是不是磁编的锅?”
所以 V2 最重要的一处修改,就是把 MA600A 放回电机轴线上,让磁铁正对芯片中心旋转。这一篇只看一件事:改成同轴以后,角度采集到底变得怎么样了。
1. 这次改版的目的,不只是把芯片挪到中间
同轴方案看起来很直白:电机轴、径向充磁磁铁和 MA600A 的敏感中心尽量落在同一条轴线上。真正画板时,还是要同时考虑磁铁高度、PCB 与电机端面的间距、固定螺钉、走线和焊接空间。
我最后的取舍是,把中心位置优先留给角度反馈。这样会牺牲一点布局自由度,但磁铁每转一圈时,传感器看到的磁场变化会更接近芯片希望的工作状态。后面做成两个相同模组时,安装关系也更容易复现。
实物装起来以后,磁铁不再需要通过侧边结构去“照”传感器,板子和电机之间的关系也简单了不少。对这种小模组来说,我觉得同轴最大的好处不是某一个漂亮的精度数字,而是减少了一个很难重复的机械变量。
2. 采集也顺手重新拆了一层
V1 后期还发现一个软件问题:如果在 16 kHz FOC 中断里直接读取 SPI,单次编码器事务大约要 18 μs,而一个控制周期只有 62.5 μs。等电流环、速度环和位置环都接进来,这块时间就有点奢侈了。
V2 采用独立采集、快照消费的方式:
TMR7 是唯一主动访问 MA600A 的地方,encoder_service 负责检查跳变、展开机械角、应用 correction table 并发布快照。FOC 中断只拿最新结果,不再自己发起 SPI 事务。这样角度采集和控制计算各管一段,串口诊断也只能读快照,避免“为了看状态,又偷偷读了一次 SPI”。
3. 手拖波形:V1 只作背景,主要看 V2
当时V1驱动板的旁轴原始角度虽然能跟着转动,但局部非线性比较明显,后面必须依赖更重的 correction table 去拉回来。
V2版本驱动器改为同轴后,我最开始测试都没有进行标定. 只是开环拖动了下电机. 可以看到波形已经是很线性的了,说明磁场非常均匀.这就基本不用标定就可以用了.
4. 同轴方案最实际的收益:标定从“抢救”变成“微调”
对我来说,这次改版最有价值的结果不是把 correction table 删掉。统一保留自动标定流程仍然更稳妥,也方便两套电机模组使用相同的软件。
变化在于:V1 的旁轴波形需要依靠标定去补偿比较明显的安装非线性;V2 同轴以后,原始角度本身已经具备直接进入控制链路的条件,标定更像是在做小误差修整。装好磁铁、确认气隙以后,不需要先围着某一段异常波形反复猜机械偏心,调试起点明显靠前了。
这也正是我想要的效果——磁编不一定要成为项目里最抢镜的部分,但它最好别在后面的每一环里都来抢戏。





