m24h作者
3年1个月前IP:上海
925739
13楼

今天看了几套网上闭环开源方案在PID方面的源代码 总结下来是

  1. 最早期的代码直接单环位置控制

  2. 有的有位置控制和速度控制 但是并不形成双环 只是可以配置电机用在哪种场景

  3. 有的是把位置误差和速度误差直接相加 然后做单环PID

  4. 比较复杂的方案是位置差距较远时 双环位置速度控制 但是接近目标时切换到单环位置控制(但如果跟不上造成位置偏差大就是失败 跟上了又等于纯粹单环了 。。。感觉双环只在救失步时候用上)

  5. 面对复杂情况 有使用保守的 主要只用Kp的 有做了自整定的 还有及时重置控制参数的

可见闭环步进如果需要用到复杂场景上也并不容易 纯粹搬伺服电机的控制理论并不适用 虽然“用恰当的速度到达恰当的地方”听起来不错 但就现在一般运动控制器和步进电机的协议而言 还缺了“恰当的时间点”和“恰当的前瞻”的信息

算法的事情还需要考虑 但是忍不住布局了硬件规划

  1. MCU用AIR001 引脚恰恰够

  2. 驱动用A4950或兼容的

  3. 磁编码器用MT6701 

  4. 输入使用MCU的正交编码器 目前网上没有用STM32正交编码器 纯硬件计数“方向”“脉冲”的方案 因为那不是正交编码 但我想到了个绝妙的主意 利用STM32定时器异或功能先异或“方向”和“脉冲” 然后使用输入过滤器进行延时 延时后的信号和“方向”“脉冲”任一方就变成正交编码了 只是一次计数两倍

  5. 使用串口进行设置 不用什么按钮和OLED 并且尽量就不需要设置

评论
4
文号 / 925739

千古风流
名片专栏发私信
学术分 1
总主题 68 帖总回复 1007 楼拥有证书:进士 学者 机友
注册于 2020/01/22 18:44:43最后登录 2026/10/31 02:54:58
主体类型:个人
所属领域:无
认证方式:手机号
IP归属地:上海

个人简介

个人开源项目: m24h.github.io

笔记
{{note.content}}
{{n.user.username}}
{{fromNow(n.toc)}} {{n.status === noteStatus.disabled ? "已屏蔽" : ""}} {{n.status === noteStatus.unknown ? "正在审核" : ""}} {{n.status === noteStatus.deleted ? '已删除' : ''}}
  • 编辑
  • 删除
  • {{n.status === 'disabled' ? "解除屏蔽" : "屏蔽" }}
我也是有底线的