磁编码器 虽然分辨率不低 一圈其实很不线性的,不能指望他代替真的光编。实际上还不如开环细分。。。再加上为了体验好,调参功能简化阉割,没有滤波器,多个轴惯量不一样延时也不一样 铣个圆都是奇形怪状的。不如坚守开环步进。。。
已开源 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
------------------------------------------------------
长假不想出门扎堆 就打算研究一下步进电机的闭环驱动 大抵最初的是受网上便宜的从口罩机上查下来的闭环套件的刺激 但是全换掉又对旧物感觉不平 何况尚有余虑 不一定适合我现在的CNC系统
现在流行的步进闭环驱动应该都是FOC系统 加上电流环 速度环 位置环的PID控制 眼下DIY流行使用如MT6816之类的磁编码器 自带电流环的A4950之类的电机驱动 成品板约50元 实际造价只有10几 几套下来 实在莫如自制
但此类DIY通常为3D打印设计 而我因为入手了光敏树脂打印机 就不太考虑其他3D打印了 毕竟大尺寸东西不如买现成的 但凡有个民用构思 网上早有许多成品
考虑几种步进驱动适用场景:
3D打印 特点是控制复杂 代码说上万行只怕都说小 需要长时间工作 噪声 发热 失步都是关键问题 而且一般皮带驱动 步距大 转速低 而且负荷低且平稳
厂房工业驱动 控制代码简单 无论是皮带还是丝杆驱动 都有转速大 负荷大的需要 一般简单地来回 过程要求转速稳定 启停平滑
CNC系统 代码量中等 一般丝杆驱动 步距小 转速快 各轴转向频繁 负荷变化激烈 对位置要求精准 噪声和发热对个人而言并不太重要 但仍需避免失步
再考虑FOC+PID方案的优缺点:
驱动力矩大 始终驱动力都在Q轴上 每一步都能达最大牛米数 而开环的一旦细分 比如16步细分 细分扭矩只能达到最大牛米数的sin(90度/16)=0.1倍 这也是为什么闭环不发热 因为它只需要付出原本电流的1/10
精度高 因为有反馈机制 它可以在每一细步上用尽电流数 而开环需要付出临时错步的代价 比如错了90度 这时候能给出同样的扭矩 在模5丝杆上 就会有25um的误差 精度就下来了
低负荷时候 PID可能会过冲振荡 而开环可以自动锁定位置 PID也很难适应需要频繁转向 频繁改速的场景
闭环可以弥补失步问题 可以设置警戒阈值 不至于超过加工精度要求还不知道
闭环要工作优良 需要调整许多参数 适应范围较窄 需要经验和耐心
再考察目前的DIY方案 应该也是我的项目意向 磁编码器性能应该满足精度要求 即便AS5600 也能有4096级 应能做到1024级 在模为5mm的丝杆上 等于一步5um 要知道这已经达到高精度机床标准了 比大多数国内加工中心强了 如果用MT6816 可以做到1.25um就是超高精度了 瓶颈不在于此
关键是电机驱动 无论A4950 TB67H450 还是几种国内仿制的 斩波死区时间都25us (受到电机电感量影响 这个也委实很难减少 即便自己打造斩波驱动)这意味着控制频率只能是10kHz级别 2环PID至少10个周期达标的话 转速得低于每秒1圈 模5丝杆就是5mm 对于铣雕还勉强 钻孔就未免移动太慢了 而且还得考虑负荷太变化激烈 PID很难平稳下来 会过冲会振荡 影响最终精度
我注意到有些闭环驱动 如HDB-ISD880 有个开关 可以选择“频繁转向”还“长时间平稳”两种工作模式 我怀疑其实前者就是开环模式
所以我打算先进行仿真 想办法解决一些问题 或者自动混合开环和闭环的方法 如果不行 看看能不能纯粹搞一个寄生在开环系统上 仅仅进行失步补偿和告警的简单系统
关于环境目标和一些有关物理参数
模5滚珠丝杆(我在用 也常用)
57步进电机 额定电流3A (再大的话A4950就驱动不了了) 扭矩2Nm(200RPM内) 转动惯量5*10^-5kg·m^2 相电感约2mH(小于3mH) 相电阻小于2欧 (使用A4950其实不用太考虑这两项 除非启停期间 电感自然有续流 而控制板会在启停时候减速)
传动机构质量 未知 最大的X轴估计小于30kg 最小的Z轴估计小于10kg
机械效率毛估估决定就是0.8了
弹性联轴器弹性系数取 50Nm/rad
导轨和滚珠丝杠摩擦系数取 0.01

。不过,我觉得在步进上相位测量的误差会被放大50倍我觉得是这样的(前边说200倍,我错了,是50倍),不管是FOC驱动还是什么别的驱动,测量的相位误差应该会带来驱动相位的误差,而误差放大50倍导致驱动相位的误差放大50倍,这个我想应该是成立的。而磁编码器的相位不太准,容易被干扰这也是成立的
没有用晶振 全靠MCU的校正数据来获得准确主频 也没有设计光耦接口的恒流电路 在下单前最后一刻才加的LDO 但是其实是打算短路直接用开关稳压3.3V的 (但是有些国产MCU抗干扰能力很差 所以以防万一)