找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 4288|回复: 1
打印 上一主题 下一主题
收起左侧

stm32单片机实现高速控制步进电机S曲线加减速运动程序源码

[复制链接]
跳转到指定楼层
#

使用单片机做步进电机控制的时候,经常碰到一些非常伤脑筋的问题,一是写步进电机控制时许确实很麻烦,正转反转,加速减速,得研究很长时间数学公式,特别是S加减速运动;二是单片机的计算速度不行,要求脉冲速度快的话,加减速需要计算变化的脉冲频率,计算不过来,特别是两个或多个电机要联动控制或者插补基本上就不行了,两个电机运动会出现明显的偏差。
所以能不能有其他简单快速的方案了?
经过很长时间研究后,我发现常规的运动控制完全可以使用单片机+一个专用运动控制芯片HMC80xx来实现,这样的话,复杂的加减速控制程序,多个步进高精度联动都由专用运动芯片来完成,单片机只需要通过通信接口写入控制命令就可以了。
话不多说,我们来看看具体的实现方案:






由上述的系统框图和单片机与运动控制专用芯片接线图可以看出,使用一个stm32或者C51等单片机+运动芯片控制步进或伺服电机,只要使用单片机的IO口连接运动芯片的总线,然后通过IO写入指令就可以。芯片本身提供了单片机可以直接调用的API函数,实现基本的定长加减速运动,多轴直线插补,圆弧插补运动的函数,单片机程序只要按说明直接调用函数,指定参数值就可以了。


比如定长加减速运动控制函数:
q  定长运动
功能:指定一个运动轴及曲线类型、运动方向、脉冲输出模式、初始速度、运行速度、定长运动距离、开始减速位置、加速时间、减速时间,以初始速度开始加速,在指定的加速时间到时加速到运行速度恒速运行,直到脉冲输出个数大于等于减速位置设定的个数时,开始减速,在指定的减速时间到达时减速到初始速度,并在完成运动距离时停止,如果SD减速开关从OFF->ON 转换并且没有到达设定的减速位置,并且SD_EN使能,将立即开始减速,然后以低速运行完成运动距离后停止。
函数:int  DeltMov(int dev,unsigned int Axs,unsigned intcurve,unsigned int Dir,unsigned char Outmod,unsigned int Vo,unsigned intVt,unsigned int Length,unsigned int StartDec,unsigned long Acctime,unsignedlong Dectime,unsigned int SD_EN,unsigned int WaitSYNC);


分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏1 分享淘帖 顶 踩
回复

使用道具 举报

楼主
ID:710888 发表于 2021-3-14 10:24 | 只看该作者
是否可以提供下运动控制芯片datasheet 的官网链接
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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