铣了个小东西 用来认真装磁铁
这回真对得准了
但是令人吃惊的是 并未像我预期的那样对结果有任何改善 甚至可以说 比起原来粘歪的另一个电机 误差更大 这种情况下都有正负1度的原始误差 真令我陷入到深深的疑惑中 如果是电机磁场干扰 不应该是这种一圈4次起伏的误差图像 唯一可能只能是磁铁本身就充磁得不够对称 或者MT6701芯片问题
我于是看了一下磁场的分布 果然磁铁很不完美 不光并不对称 甚至分界线都不是直线 是个大圆弧的一部分 (照片不太容易看出 但是现场一目了然)
这东西真不是肉眼能检测的 估计再买也不会更好 算了 反正靠校正
这个项目充分地体现了一个事儿 就是人生事 八九不如意 遍布网上 就磁编码而言 估计就我这暴露的细节最多 下面则是AIR001的BUG
就普通的STM32F030系列 串口如果是8倍超采样的话 计算波特率时候 要比16倍超采样乘2 然而AIR001不是 估计是自己的实现 其手册也没有如此宣传 但是它提供的LL库中 却错误地照抄了STM32F030系列的算法 我也是花了一段时间才发现这个问题
但是这是可以软件解决的 问题是当使用500kbps及以上速率的USART2时 出现了大量的误码 一开始我以为是电机干扰 可是测试所有外部信号波形 均几乎完美 没有受到干扰的迹象 最后发现应该是驱动MT6701的SSI时钟干扰导致 一个PA2 一个PA3 引脚也相邻 但是同样在外部引线也测不出干扰 应该是芯片内部的串扰 这让我对国产芯片抗干扰能力差的说法 有了一个直观的了解
最后只能将通信速率降到250kpbs 这时候干扰被悬崖式的阻断 长期测试也没有发现误码 这时候 如果采用我设计在地址F8上某通信协议 可以类比传统20kHz频率的步进驱动 但是这时候转速在细分大的时候受到影响 一般16细分只能得到每秒数圈的水平
其实通信的负担并不重 500kpbs是我观察到一个比较合理的通信速率 可惜了 目前主要负担是定期的闭环计算 能占一半的时钟资源 光MCU电流就会升到10mA左右 目前最高速度在24V电源能得到每秒10圈左右 (30V能得到10多圈) 但是..... 也有例外 在调整某些预测方面的参数时候 曾经将马达激发到 前所未有的速度 以至于定时计算位置的中断跟不上 从磁编码数值得到了相反的增长方向 促使了自激的继续
VID_20231119_164409.mp4 点击下载
正常受控情况是这样的
VID_20231118_184445.mp4 点击下载
再往下走感觉非常困难 尤其是我并没有一个应用它的系统 来使用它 并调整算法 只能说业余玩玩 可能最终会作为半成品开源 不过我尽量实现了一个较包容的框架 可以使用各种磁感应传感器和算法 (目前我打算完成两个算法 PID和一个半开环根据负载调整电流的) 然后就等哪天我再需要 比如要搞个FDM的3D打印机 或者机械臂之类的再说 (但是从内心看 我对此兴趣不大)
时段 | 个数 |
---|---|
{{f.startingTime}}点 - {{f.endTime}}点 | {{f.fileCount}} |