找回密码
 立即注册
查看: 7219|回复: 31

请教下,同时控制3个伺服电机XYZ轴

[复制链接]

46

主题

108

回帖

604

积分

高级会员

积分
604
发表于 2022-12-20 07:27:20 | 显示全部楼层 |阅读模式
请教下,怎么同时控制3个伺服电机XYZ轴?因为3个电机都有加速过程和减速过程,一个电机运行的时候,总会被其他2个干扰,最高脉冲是50khz。

另外给STC一个建议,能不能针对伺服电机和步进电机的控制,出一些相关的寄存器,毕竟这2种电机在工控领域是必不可少的,谢谢


回复

使用道具 举报 送花

  • 打卡等级:常住居民III
  • 打卡总天数:172
  • 最近打卡:2025-04-28 08:49:07
已绑定手机

90

主题

961

回帖

2318

积分

超级版主

积分
2318
QQ
发表于 2022-12-20 09:37:42 | 显示全部楼层
STC  芯官网有开源案例的 可以参考  www.STCAI.com
QQ截图20221220093703.png
热线19952583534
www.STCAI.com
  • 打卡等级:偶尔看看III
  • 打卡总天数:51
  • 最近打卡:2025-05-02 10:07:51

73

主题

5883

回帖

1万

积分

超级版主

积分
12081
发表于 2022-12-20 11:00:06 | 显示全部楼层
伺服电机你是指发方波脉冲信号吧?
方案1:使用STC8H系列、STC32G12K128系列,使用3路PWM工作于高速脉冲输出方式,3路最高50KHz没有任何问题,MCU跑24MHz以上,PWM中断设为优先级,其余中断均低优先级。
方案2:使用STC8G系列,使用PCA工作于高速脉冲输出方式,3路最高50KHz没有任何问题,MCU跑24MHz以上,PCA中断设为优先级,其余中断均低优先级。
方案3:使用STC8H系列、STC32G12K128系列,使用3个定时器工作于高速脉冲输出方式,3路最高50KHz没有任何问题,MCU跑24MHz以上,PWM中断设为优先级,其余中断均低优先级。

46

主题

108

回帖

604

积分

高级会员

积分
604
发表于 2022-12-20 18:01:51 | 显示全部楼层
梁*** 发表于 2022-12-20 11:00
伺服电机你是指发方波脉冲信号吧?
方案1:使用STC8H系列、STC32G12K128系列,使用3路PWM工作于高速脉冲输 ...

同时使用3路脉冲是没问题的,但是有加减速过程比较麻烦,在运行过程中还要减去已运行的步数和计算总的步数
  • 打卡等级:偶尔看看III
  • 打卡总天数:51
  • 最近打卡:2025-05-02 10:07:51

73

主题

5883

回帖

1万

积分

超级版主

积分
12081
发表于 2022-12-20 18:15:42 | 显示全部楼层
本帖最后由 梁工 于 2023-2-6 13:31 编辑

如果要控制步数,则启动前就已经确定了总步数,加减速、目标速度等等参数都已经计算好,按一定的时间节拍来处理加减速即可。我以前做过6个电机的控制,用的是STC8A8K64S4A12(现在改版为STC8A8K64D4),4路PCA+Timer3+Timer4,6路电机。

如果使用STC8H、STC32G等等,则可以用8路电机,因为有8路PWM,每路都可以工作于匹配比较方式。

46

主题

108

回帖

604

积分

高级会员

积分
604
发表于 2022-12-20 19:33:29 | 显示全部楼层
梁*** 发表于 2022-12-20 18:15
如果要控制步数,则启动前就已经确定了总步数,加减速、目标速度等等参数都已经计算好,按一定的时间节拍来 ...

你好,能不能给个思路,假设
电机1的开始转速是1khz,目标转速是50khz,总步数是10万步
电机2的开始转速是3khz,目标转速是40khz,总步数是10万步
2个同时转,怎么样处理加减速?

点评

计算好各个参数后(由当前转速、加减速时间、目标转速加减速步进量),然后启动电机,用固定节拍(时间间隔)进行加减速处理。线性加减速最简单方便,S型则较为复杂些。  详情 回复 发表于 2022-12-20 23:45
  • 打卡等级:偶尔看看III
  • 打卡总天数:51
  • 最近打卡:2025-05-02 10:07:51

73

主题

5883

回帖

1万

积分

超级版主

积分
12081
发表于 2022-12-20 23:45:33 | 显示全部楼层
sky*** 发表于 2022-12-20 19:33
你好,能不能给个思路,假设
电机1的开始转速是1khz,目标转速是50khz,总步数是10万步
电机2的开始转速 ...

计算好各个参数后(由当前转速、加减速时间、目标转速加减速步进量),然后启动电机,用固定节拍(时间间隔)进行加减速处理。线性加减速最简单方便,S型则较为复杂些。
  • 打卡等级:初来乍到
  • 打卡总天数:5
  • 最近打卡:2024-05-02 21:48:56

6

主题

48

回帖

614

积分

高级会员

积分
614
发表于 2023-1-17 14:58:53 | 显示全部楼层
本帖最后由 一轮明月 于 2023-1-18 07:56 编辑
sky*** 发表于 2022-12-20 19:33
你好,能不能给个思路,假设
电机1的开始转速是1khz,目标转速是50khz,总步数是10万步
电机2的开始转速 ...

我做过相关案例,当时想用PWM做伺服电机驱动3轴,但后来改用定时器中断,因为硬件PWM我没有找到精确计数方式就用中断脉冲的计数.
刹车减速是自己做的S形减速算法,脉冲起始和结束先找到预刹车脉冲数然后逐步修改脉冲周期,例如1万步就是1万个脉冲设计转速1Khz,比如调试轨道必须在起始2秒和结束2秒先刹车才能不发冲,那就各分出2K脉冲做刹车,剩下6K的脉冲才是设计脉冲,那启动的2K就由2HZ>10HZ>60hz...>600HZ>800HZ这样按周期发命令改变脉冲周期直到脉冲数满2K就发设计脉冲并计数,计数到最后2K的脉冲又反过来逐减直到脉冲发完周期到2HZ.
这是个死办法,但只要S曲线算法和调试的预留脉冲适合那启动和结束基本不发冲.
回复 支持 1 反对 0

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:1
  • 最近打卡:2024-05-10 16:29:53

12

主题

66

回帖

285

积分

中级会员

积分
285
发表于 2023-1-19 13:15:49 | 显示全部楼层
老早我就提出过这种问题,针对步进伺服专门开发寄存器
我们现在用32晶振33兆4轴也才勉强100K
关键是算法,用简单点算法吧,每步固定步数吧!(我们是其他算发),尽量不要用每一步都计算,尽量定时器中断内时间短。50K应该没问题.
32单片机频率还是只有几十兆,将就用吧!
  • 打卡等级:初来乍到
  • 打卡总天数:1
  • 最近打卡:2024-05-10 16:29:53

12

主题

66

回帖

285

积分

中级会员

积分
285
发表于 2023-1-19 13:20:48 | 显示全部楼层

有一点注意
定时器是溢出值,PWM是比较值
32单片机只有2个PWM定时器
如果其他地方不用理论可以控制7轴,越多就要求单片机速度快,处理中断时间短,或是目标频率降低
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|小黑屋|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

GMT+8, 2025-5-3 15:03 , Processed in 0.136009 second(s), 111 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表