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

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

[复制链接]

该用户从未签到

35

主题

78

回帖

429

积分

中级会员

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

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


回复 送花

使用道具 举报

  • TA的每日心情
    开心
    昨天 09:28
  • 签到天数: 90 天

    [LV.6]常住居民II

    68

    主题

    555

    回帖

    1832

    积分

    超级版主

    积分
    1832
    QQ
    发表于 2022-12-20 09:37:42 | 显示全部楼层
    STC  芯官网有开源案例的 可以参考  www.STCAI.com
    QQ截图20221220093703.png
    热线19952583534
    www.STCAI.com

    该用户从未签到

    45

    主题

    2898

    回帖

    6512

    积分

    超级版主

    积分
    6512
    发表于 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中断设为优先级,其余中断均低优先级。

    该用户从未签到

    35

    主题

    78

    回帖

    429

    积分

    中级会员

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

    同时使用3路脉冲是没问题的,但是有加减速过程比较麻烦,在运行过程中还要减去已运行的步数和计算总的步数

    该用户从未签到

    45

    主题

    2898

    回帖

    6512

    积分

    超级版主

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

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

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

    该用户从未签到

    35

    主题

    78

    回帖

    429

    积分

    中级会员

    积分
    429
     楼主| 发表于 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

    该用户从未签到

    45

    主题

    2898

    回帖

    6512

    积分

    超级版主

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

    计算好各个参数后(由当前转速、加减速时间、目标转速加减速步进量),然后启动电机,用固定节拍(时间间隔)进行加减速处理。线性加减速最简单方便,S型则较为复杂些。
  • TA的每日心情
    开心
    2024-1-26 15:29
  • 签到天数: 3 天

    [LV.2]偶尔看看I

    3

    主题

    28

    回帖

    331

    积分

    中级会员

    积分
    331
    发表于 2023-1-17 14:58:53 | 显示全部楼层
    本帖最后由 一轮明月 于 2023-1-18 07:56 编辑
    sky999 发表于 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 送花

    使用道具 举报

    该用户从未签到

    7

    主题

    59

    回帖

    237

    积分

    中级会员

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

    该用户从未签到

    7

    主题

    59

    回帖

    237

    积分

    中级会员

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

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

    本版积分规则

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

    GMT+8, 2024-4-25 02:01 , Processed in 0.070498 second(s), 69 queries .

    Powered by Discuz! X3.5

    © 2001-2024 Discuz! Team.

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