STM32F103步进电机梯形匀加速算法
最近公司的一个项目用带驱动器的步进电机,奈何,经理让我搞个匀加速的启动和停止。以前从来没考虑过算法的我,走了很多弯路,不过最后还是解决了这个问题。
梯形加减速应该是指数加速算法和S型加速算法中最简单也最容易实现的一个算法。
(图画的不好见谅)
在加速阶段和减速阶段将时间分成很多等分,这样由vt关系可得,s=v*t就是单位时间内,发送给步进电机的脉冲数(我的细分数1000,也就是1000个脉冲一圈,为了方便解释,将脉冲数理解成距离,因为脉冲数也可以换算成距离,根据带动的齿轮之类的。)
在我的代码中我是将加速阶段分成了10个相等的时间段,由宏定义表示
硬件资源
STM32的PWM波(间接驱动驱动器),定时器外部时钟模式2(发送脉冲多少脉冲值的计数)
软件设计
要求,主板每次发送一定得脉冲让步进电机运转一定的距离,奈何启动频率过高,会让步进电机还没建立磁场下一个脉冲就来了,以至于脉冲与目标行动的距离出现误差,于是就需要匀加速。
这里我用了一个结构体,在代码中注释都很清楚。
那么,开始的第一步,就是计算好需要的脉冲值
(START_FT+(START_F(ADD_SPEED1)T+…+(START_F(ADD_SPEED9)T)/10002
而我们设定好一个起始的频率,和一个目标频率,还有时间段的长度,以及加速次数,就可以计算出满足加速和减速阶段的最小脉冲值。
如果不满足这个脉冲值,会造成步进电机停止的时候不是以最小的频率停止。
达到目标频率后要以目标频率去匀速运动
剩下的就是代码中对,每次加速的时刻的判断,和每次减速时刻的判断
而代码中,对目标频率,起始频率,加速时间,加速次数都可以直接修改宏定义就可以了。
源码和参考资料链接
https://download.csdn.net/download/weixin_42783751/11117775
STM32F103步进电机梯形匀加速算法相关推荐
- 步进电机的匀加速程序
步进电机的匀加速程序是指通过逐渐增加步进电机的转速来实现平滑加速的程序.这可以通过调整每次步进的角度或者改变脉冲频率来实现.在步进电机加速过程中,速度是逐渐增加的,从而实现平滑加速而不产生震动或噪音. ...
- 步进电机梯形曲线加减速运动算法实现
目录 1. 使用加减速的理由 2. 梯形加减速算法特点 3. 算法基础 4. 梯形算法要求的变量 4.1 在加速阶段: 4.2匀速阶段 5. 加减速算法推导过程 5.1 电机转过的角度θ的计算: 5. ...
- S曲线加减速算法 VS 梯形加减速算法
设计运动控制系统很多年,突然有人问我S曲线加减速算法跟梯形加减速算法的区别,我竟然拼凑了很多语言都没能讲清楚.作为一个技术男怎能善罢甘休,但介于个人能力有限只能借用网上大牛的讲解搞清楚.苦苦搜索了三天 ...
- STM32:F407步进电机梯形加减速算法的实现
项目中对步进电机运行速度有了新要求,所以尝试实现梯形加减速算法,S形加减速算法. 本文主要实现梯形加减速算法. 更新(22-06-18) 正点原子官6月17日新上线了<电机控制专题例程>, ...
- 使用matlab将UKF应用于六维匀加速直线运动目标跟踪系统
将UKF应用于六维匀加速直线运动目标跟踪系统 % UKF在六维匀加速直线运动目标跟踪系统中的应用 % ukf_for_track_6_div_system %% 初始化参数设定 % 状态位数 n = ...
- 【GNN】谷歌、阿里、腾讯等在大规模图神经网络上必用的GNN加速算法
点击上方,选择星标或置顶,每天给你送上干货 作者 | 对白 出品 | 对白的算法屋 今天我们来聊一聊在大规模图神经网络上必用的GNN加速算法.GNN在图结构的任务上取得了很好的结果,但由于需要将图加载 ...
- 智慧交通day02-车流量检测实现05:小车匀加速案例
""" 现在利用卡尔曼滤波对小车的运动状态进行预测.主要流程如下所示:导入相应的工具包小车运动数据生成参数初始化利用卡尔曼滤波进行小车状态预测可视化:观察参数的变化与结果 ...
- Lucy-Richardson加速算法以及PSF计算MATLAB代码
前面我们介绍了Lucy-Richardson的加速算法,这里给出其implement和PSF的显微成像计算公式. https://blog.csdn.net/weixin_41923961/artic ...
- 【Lucy-Richardson去卷积】迭代加速算法
这篇博文其实跟一篇Applied Optics文献实在太像了,简直就是翻译,我从别人那里转过来,就标成翻译了. 个人的实现Matlab代码: https://blog.csdn.net/weixin_ ...
最新文章
- R可视化绘制指数分布(Exponential Distribution)
- 六、MyBatis教程之六注解使用详解
- 2021年上海市高考成绩查询,2021上海市地区高考成绩排名查询,上海市高考各高中成绩喜报榜单...
- 中小型商业银行的软件安全测试之道
- 开源BTS产品中存在多处漏洞,攻击者或可劫持手机通讯基站
- 怎么把mysql转换mssql_MySQL如何转SQL server
- 利用iconv进行文件编码批量原地转换
- Jenkins之构建Maven项目的多种方式
- shell变一些小技巧
- [转]深入理解linux内核list_head
- 一台服务器上部署多个Terracotta的方法
- C/C++ OpenCV设置感兴趣区域ROI
- tp3.2框架关闭日志记录
- 服务器内存太小,伤不起![异常与应用程序池引发的连锁命案]
- 自己的电脑怎么测网速
- 3D深度相机调研【史上最全,不服来战】
- 计算机英语词汇汇总,计算机英语词汇汇总
- 关于所谓U盘有占用空间,却看不到文件的一些看法
- OVN 流表基础 -- 基于 kubeOVN (一)
- 【MySQL】MySQL用 limit 为什么会影响性能?