[应用相关]

DIY“低成本”的野路子“闭环”步进电机

[复制链接]
477|8
手机看帖
扫描二维码
随时随地手机跟帖
scu319hy|  楼主 | 2024-1-30 18:09 | 显示全部楼层 |阅读模式
10年前玩3D打印机的时候,一直有心上“闭环”步进电机。看到网上有人自己DIY,于是乎也想有样学样的自己搞。不过那些年要搞的东西太多,一直没能启动这个项目。
这个想法一直拖着,直到5年前才决定启动DIY闭环步进电机的项目。各种材料准备了一堆,PCB打了两版样。折腾了好几周,因为纠结于嵌入式开发环境太过垃圾,以及板子中的各种设计失误而夭折了。仅仅是把步进电机转进来而已。
最近终于给我的编辑器加上了嵌入式平台开发的相关能力。在翻找实验板的时候,突然看到了躺在桌子上5年的步进电机。于是乎,决定重启这个项目,一方面是验证编辑的嵌入式开发相关功能,另一方面是真心想把悬在心头数年之久的一块大石给卸下来(心头悬的大石太多,卸下这块估计还有五百块在等着我 )
先看运行效果,如下:
和专业的当然不能比,但总算是基本功能实现了。

板子还是用的5年前打的样,之前打了几十块(实在不是我要打这么多,被强行买一送N了...),虽然设计的漏洞百出,但总算是勉强能用。还是决定咬牙把它跑起来,哪怕多飞几根线也行。一口气焊了5块,还有一堆真空包装没开封的...
boards.jpg
简jian洁lou”的PCB设计,手工雕刻的工程板过于先进就不展示了
不知道是因为运气还是因为东西太简单了,几处改造都比较简单,正面一共才8个件,都不用动,其它不相关的件一个都不用焊

核心只有三样:

MCU是STM32F030F4

电机驱动是DRV8870/AT4950

角度传感器是TLE5012 E1000

板子有了,就是撸代码时间。经过几天艰苦卓绝的瞎折腾,烧了四块电机驱动芯片之后,深刻认识到了之前的设计失败之处。经过反复的软硬件补丁之后,终于有了前面视频的效果。
关于控制精度
如下图:在1.8度二手42步进电机上16细分每一步都有0.1度左右的变化。正反转的回差有0.2~0.3度。
步进电机控制器.png
16细分,单步约0.1度
总结

目前看下来,之前的设计失误有以下几点:

1. 脑子抽风了,用了检波电路来滤波PWM。搞得电流控制参考电压是非线性的。

2. 电流采样电阻过小。总想着电机驱动电流要大点更好,总想冲着DRV8870标称的"峰值"3.5安来搞。结合问题1,自然就是芯片冒烟的结果...

3. TLE5012 E1000 的接口有SPI和增量两种方式,为了响应快,使用了增量输出的接口。但在高速+震动的情况下,这个接口的输出总会有累计误差(当然,应该是我使用不当)。最后改用SPI读绝对值,效果就好多了。

4. 没用硬件SPI,用软件读数据需要花8~9微秒。这会影响控制精度。不过,由于STM32F030的性能也就这样,用硬件方式中断开销又是另一个头疼的事。

5. 想当然的把电压控制当成了电流控制。这导致最开始跑起来的版本,细分效果很差。在特定转速下,振动得像拖拉机。原本我都想放弃这个板子,重新选型搞新版本了。在和DRV8825的运行效果对比之后,终于意识到了控制电压不是控制电流。好在运气不错,原有的电流控制电路拆分成两路,STM32F030还空了一个可用的定时器输出脚,刚好就在原有的电流控制电路边上有引线,飞线解决。

6. STM32F030引脚不够了,电流控制做不到"闭环",500rpm以上电机特别无力。好在,一是步进电机通常不用跑这么快;二是电流变化和电机转速强相关,用速度来控制电流也是可以行得通的"补丁"。

7. STM32F030性能似乎不足以支撑更高转速的精细控制。仅是步进输入信号的中断处理就会对高速运行产生较显著的影响了。32细分,64细分在中低速时震动会更小些,但性能不足,细分高了跑不快。

8. 板子布局极其不合理,对散热非常不利。

疑问

最初我以为能靠角度传感器精细控制换相,以求最高精度的角度控制,最短的换相时间。但操作下来,似乎很难达到。角度传感器有延迟和误差,电机转动时会有震动。乱七八糟加一起,不知道应该相信谁。一个步进角才1.8度,误差下来电机完全没法正常工作了。

现在的实现则变成自由换向,角度传感器仅用做速度和角度测量,再用测量出的结果来修正换相的速度和角度误差。这大概就是所谓的速度环和角度环?再加上闭环的电流控制,就是所谓的“三环控制”了?

我没用过其它的闭环步进电机,只是在网上看过图片和视频而已。电机控制理论更是没学过,纯靠中学水平的数学/物理知识加上我几十年的编程经验胡乱操作一番。不知道这样算是个什么水平,欢迎各路大神指点迷津。

最后来个全家福
屏幕截图 2024-01-30 143139.png
all.jpg
DIY的开发环境 + DIY的步进电机控制器 + DIY的JLINK-OB STM32 + 格格不入的ESP32开发板(步进电机测试信号)

补充

因为是"野路子",代码、电路之类的就不拿出来献丑了。

前面已经讲了设计思路和总结的问题,这应该是其中稍稍有价值的内容,仅供大家围观

使用特权

评论回复
laocuo1142| | 2024-1-31 15:09 | 显示全部楼层
野路子

使用特权

评论回复
xch| | 2024-1-31 18:17 | 显示全部楼层
电机连续运转时噪声大不大?

使用特权

评论回复
scu319hy|  楼主 | 2024-1-31 23:09 | 显示全部楼层
看视频,可以听到声音的。比敲键盘要小很多。
只有在特定转速产生共振时,声音会稍微大一点。
比印象中A4988在16细分下的声音小,和DRV8825在16细分下差不多。

使用特权

评论回复
玄德| | 2024-2-1 10:38 | 显示全部楼层

原创,有新意,贴地气,有人味,
喜欢这种文章。

使用特权

评论回复
玄德| | 2024-2-1 10:38 | 显示全部楼层

原创,有新意,贴地气,有人味,
喜欢这种文章。

使用特权

评论回复
起点116| | 2024-2-2 06:13 | 显示全部楼层
厉害,野路子也是路

使用特权

评论回复
scu319hy|  楼主 | 2024-2-3 12:54 | 显示全部楼层
起点116 发表于 2024-2-2 06:13
厉害,野路子也是路

感谢捧场

使用特权

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

本版积分规则

4

主题

19

帖子

1

粉丝