1.声明
1、这是根据大佬的一篇文章进行修改,原末尾有一处描述有误,我在这里详细补充更正一下,很感谢大佬的分享。

步进电机加减速——梯形算法_步进电机梯形加减速算法_woniu2333的博客-CSDN博客

2.目的
使用要求与场合:

1、步进电机
2、速度变化较大
3、启动停止频繁
步进电机加减速算法目的:对于上述2、3的场合,步进电机容易出现丢步和过冲甚至无法启动的现象,所以加入该算法来解决这一问题。

3. 算法实现
3.1加减速期望曲线

如图1所示,该曲线是期望的加减速曲线。横坐标t为时间,纵坐标ω为速度。以下三个参数有开发者设定。
accel:加速度
decel:减速度
step:总行程

图1

3.2速度与脉冲周期有何关系

电机的调速与脉冲周期是有关系的,并且是正比例关系,脉冲周期越长,步进电机转速越慢。
在梯形加速过程,速度变化是直线的,将该曲线截取加速过程放大并加入脉冲,如图2所示。

图2

图中t0到t1这段时间为第一个脉冲的时间,t1到t2为第二个脉冲的时间。
C0为第一个脉冲的自动重装载的值(定时器的周期溢出值ARR)。 
tt为计数周期(取决于系统时钟与分频值)也就是频率的倒数。

距离=速度*时间
每给一个脉冲,步进电机行走一步,这时候步进电机旋转的角度称为步距角,用α表示,单位为弧度。
所以图2中每个长方形的面积就是一个步距角,所以每个长方形面积相等。

3.3位移与加速度的关系
根据牛顿定律位移S=V0t+1/2at²,由于步进电机启动初始速度为0,所以公式变成S=1/2at²。在这里用ω’表示加速度。所以公式变成S=1/2ω’t²。因为位移与步距角以及脉冲数的关系为S=αn,
从而得到该加速度在t时间内所走的脉冲数1/2ω’t²=αn

3.4脉冲周期与脉冲数和加速度的关系
由于t表示从t0到tn的时间,由于t0为0,所以tn=t,通过转换,tn与加速度的关系如下:
tn=√(2*n *α/ω’)­­­
所以Cntt=t(n+1)-tn=(√(n+1)-√n)*√(2α/ω’)
得到Cn=1/tt *(√(n+1)-√n)*√(2α/ω’)
由上述的推导得到Cn与加速度和脉冲数和加速度的关系,因此可以求得在加速过程或者减速过程脉冲的周期。

3.5何时减速
得到了加减速度和脉冲周期的关系后还需要考虑电机什么时候开始减速。

3.5.1斜率与脉冲数的关系
如图3所示

图3
n1:加速需要的脉冲数
n2:减速需要的脉冲数
ω’1:加速度
ω’2:减速度
斜率(K)=y/x,所以y=K*x,在图3中,由于该三角形高相等,所以n1 * ω’1=n2 * ω’2
为了方便后面计算,等式左右两边加上n1 * ω’2,得到n1 * ω’1+n1 * ω’2=n2 * ω’2+n1 * ω’2
最终得到n1=(n1+n2)*ω’2/(ω’1+ω’2) 公式1

3.5.2目标速度与步数的关系
根据牛顿定律速度V=V0+at,由于步进电机启动初始速度为0,因此V=at,在这里V用ω表示,a用
ω’表示,因此ω=ω’t,根据3.3得 1/2ω’t²=αn ,将t代入可得nω’=ω²/2a 公式2
此时ω为目标速度,因此可以得到该加速度条件下达到目标速度时所需要的步数。

3.5.3实际曲线另外一种情况
在实际的运动中,梯形曲线并不一定是图1那样,还有另外一种情况,如图4所示。

图4

该图显示实际最大速度未达到设定最大速度。
accle_lim:实际加速运动的脉冲数
max_s_lim:达到设定最大速度需要的脉冲数
根据公式1:n1=(n1+n2)*ω’2/(ω’1+ω’2) 可以得到accle_lim=(step *decle)/(accel+decel)
根据公式2:nω’=ω²/2a 可以得到max_s_lim=n=speed *speed/(2 *α *accel)
从数学角度将模型的两种情况分为了accle_lim>max_s_lim的和accle_lim<max_s_lim这两种情况,而开始减速时间decel_val也会变得不同
1.accle_lim>max_s_lim
由n1 * ω’1=n2 * ω’2可得
decel_val=(max_s_lim *accel)/decel
2.accle_lim<max_s_lim
decel_val=step-accle_lim

步进电机-T型加减速相关推荐

  1. STM32步进电机S型加减速算法

    简单说明一下硬件资源,需要用到STM32两个定时器,TIM1产生PWM脉冲并对脉冲个数计数,TIM2开启定时中断用于算法的实现.采用CubeMX+Hal库配置,这里不做详细介绍,重点介绍S型加减速算法 ...

  2. 步进电机s型加减速计算工具_21个有关伺服电机的问题想当工程师的你一定得知道...

    工业机器人电动伺服系统的一般结构为三个闭环控制,即电流环.速度环和位置环.一般情况下,对于交流伺服驱动器,可通过对其内部功能参数进行人工设定而实现位置控制.速度控制.转矩控制等多种功能. 1.如何正确 ...

  3. 步进电机s型加减速计算工具_步进电机噪音和振动的原因分析及应对策略

    不正确地驱动步进电机很容易导致电机发出"嗡嗡"的噪声和很大的振动. 当驱动步进电机时,如果发现步进电机处于静止状态时,其内部都发出很明显的噪音,有点类似线圈快速变化那种,一般是由于 ...

  4. STM32-步进电机S型加减速控制

    基于STM32的步进电机S型加减速控制算法 STM32简介 STM32代表ARM Cortex-M内核的32位微控制器.专为要求高性能.低成本.低功耗的嵌入式应用专门设计的: STM32系列的内核主要 ...

  5. 步进电机的S型加减速算法

    电机能运行的速度远远大于启动速度(即最大匀速速度),那么怎么平稳的运行到最大速度就是S型加减速曲线的作用 1.Qt 1.1.S加减速的计算 static float Freq[10][1000]; s ...

  6. 七段S型加减速算法--多轴时间同步方案调研

    七段S型加减速算法--时间同步 基本概念 问题提出 参考资料 参考一: 链接1 链接2 链接3 参考二 实现方案 后续 基本概念 7段S型加减速算法(7 segments S-curve veloci ...

  7. STM32:F407步进电机S形加减速算法的实现

    本文主要实现S形加减速算法. 更新(22-06-18) 正点原子官6月17日新上线了<电机控制专题例程>,可以免费下载和观看,正点原子STM32点击应用控制系列教程. 我已经详细地看了一遍 ...

  8. S型加减速程序,C++,PLC,AGV

    做无人驾驶AGV项目,起动和停车冲击非常大,参考牛人的博文https://blog.csdn.net/Septembernine/article/details/53125828,写了一段S型加减速程 ...

  9. 89c52单片机控制两个步进电机正反转加减速(程序+仿真)

    89c52单片机控制两个步进电机正反转加减速(程序+仿真) 先上图: 源代码: /*********************************************************** ...

最新文章

  1. 推荐一个提供干货的java公众号
  2. mysql 3/17/2016
  3. 贝壳找房挖到AI大牛叶杰平,房产中介转型需要技术,高估值更需要
  4. [转贴] 游戏服务器架构二
  5. java练气期(2)----java高级(File类与IO流)
  6. 1.17 局部内部类
  7. 【编程思想】【设计模式】【行为模式Behavioral】观察者模式Observer
  8. 719. Find K-th Smallest Pair Distance
  9. 【转载】#323 - A Generic Class is a Template for a Class
  10. 75-100-020-测试-MySQL 单表优化案例
  11. 从大哥大到iPhone13,谈谈移动网络发展
  12. JDBC系列 之 存储过程
  13. 谷歌浏览器(Chrome浏览器)最新官方下载(含注意事项)
  14. 微信小程序原生实现好看的日期选择插件-万年历
  15. XPS文件转换成PDF
  16. 软件性能测试包括哪些方面,简述软件系统性能指标主要包括哪些方面
  17. 按键精灵手机版_关于截屏一些方法
  18. AI集成产品中海量数据处理的嵌入式解决方案(一)
  19. Openwrt编译进阶-修改ROOT密码,修改默认WiFi名称,修改主机名,修改主机型号
  20. Paul Graham:为什么在经济危机中创业?

热门文章

  1. h1到h6的字体大小(93)
  2. 熟悉常用的HDFS操作(附录HDFS常用命令)
  3. material studio使用perl脚本形成交联聚合物
  4. bpmn 文件 服务器部署,Liferay7 BPM门户开发之45: 集成Activiti文件上传部署流程BPMN模型...
  5. linux c++ 程序运行core,gdb调试显示cannot access memory at address
  6. Java与智能工厂:构建智能化的生产制造系统
  7. [Qt5] QT+VS读取dwg文件
  8. 免费分享:5本架构师书籍,架构解密从分布式到微服务,分布式服务架构:原理、设计与实战,架构真经互联网技术架构的设计原则,架构探险
  9. LeetCode #226 - Invert Binary Tree - Easy
  10. RECS高管教练课程是什么?