目录

  • 1. 使用加减速的理由
  • 2. 梯形加减速算法特点
  • 3. 算法基础
  • 4. 梯形算法要求的变量
    • 4.1 在加速阶段:
    • 4.2匀速阶段
  • 5. 加减速算法推导过程
    • 5.1 电机转过的角度θ的计算:
    • 5.2 电机由速度0匀加速运动,转过θ所用的时间tn:
    • 5.3 求相邻脉冲时间间隔Δt:
    • 5.4 求第1个周期内计数器的值
    • 5.5 求第n个周期内计数器的值
    • 5.6 由s = 1/2 ώtn¬2 和θ = nα可推出:
    • 5.7 在一个电机匀加速到一定速度,再匀减速的情况下,如下图:
    • 5.8 加速情况
  • 6. 算法优化
  • 7.总结

1. 使用加减速的理由

为什么要使用加减速呢?步进电机有一个很重要的技术参数:空载启动频率,也就是在没有负载的情况下能够正常启动的最大脉冲频率,如果脉冲频率大于该值,步进电机则不能够正常启动,发生丢步或者堵转的情况;或者也可以理解为由于步进脉冲变化过快,转子由于惯性的作用跟不上电信号的变化。所以要使用加减速来解决启动频率低的问题,在启动时使用较低的脉冲频率,然后逐渐的加快频率。

2. 梯形加减速算法特点


梯形加减速一共分为三个阶段,OA 加速部分、AB 匀速部分 和 BC 减速部分。 在 OA 加速过程中,由低于步进电机的启动频率开始启动(模型中由 0 启动),以固定的加速度增加速度到目标值;在 AB 匀速过程中,以最大速度匀速运动; 在 BC 减速部分中,以加速度不变的速度递减到 0; 这种算法是一种在加速过程和减速过程中加速度不变的匀变速控制算法,由于速度变化的曲线有折点,所以在启动、停止、匀速段中很容易产生冲击和振动。

3. 算法基础

步进电机的转动需要控制器发送脉冲,如果控制器以恒定速度发送脉冲,那么步进电机就以恒定速度转动;如果控制器以加速度发送脉冲,那么步进电机就以加速度运动;所以只要改变脉冲的频率 就可以改变速度的变化,也就是说调整脉冲之间的时间间隔就可以改变速度。

上图为步进电机与时间的示意图,其中

  • t0 表示第1个脉冲发送时刻
  • t1 表示第2个脉冲发送时刻
  • t2 表示第3个脉冲发送时刻
  • tt 表示定时器的计数周期
  • C0 表示定时器从 t0 ~ t1 时刻的定时器计数值
  • C1 表示定时器从 t1 ~ t2 时刻的定时器计数值
  • Δt1 和Δt2表示两个脉冲之间的间隔时间
    以 stm32 的高级定时器 8 为例,定时器 8 的时钟频率为 168MHZ, 如果将分频值设置为 5,那么定时器的时钟频率则为:ft=168/(5+1)=28MHZ, 相当于计数 28M 次正好为一秒,周期与频率为倒 数关系,所以分频值为 5 的定时器 8 的计数周期tt = 1/ft;C0和C1的值即为ARR寄存器的值,所以我们在固定的定时器频率下,只需要改变ARR的值,即可改变电机的速度。

4. 梯形算法要求的变量

我们通过控制定时器输出PWM波形来描绘上述梯形,至少需要知道以下变量:

4.1 在加速阶段:

  • 加速初始PWM频率
  • 加速度accel
  • 加速所用的脉冲数

4.2匀速阶段

  • 匀速所用的脉冲数
  • 减速阶段
  • 减速初始频率
  • 减速度decel
  • 减速所用的脉冲

一般情况下,电机加速度accel、减速度decel和匀速运动的最大速度max_speed是给定的,我们需要通过这3个变量推导出剩余的变量。知道以上变量,再推导出每步的定时器频率,结合脉冲数即可绘制完整的梯形图。

5. 加减速算法推导过程

5.1 电机转过的角度θ的计算:


其中:n表示驱动电机的脉冲数
α表示电机的步距角

5.2 电机由速度0匀加速运动,转过θ所用的时间tn:

5.3 求相邻脉冲时间间隔Δt:


此处计算时,让θt = (n+1) α, θt-1 = nα,而不是θt = nα, θt-1 = (n-1)α,是因为Δt是两脉冲之间的时间间隔,θt-1的脉冲数n最小也应该等于1,所以在n为正整数的情况下,采用θt = (n+1) α, θt-1 = nα更符合实际情况。

5.4 求第1个周期内计数器的值

5.5 求第n个周期内计数器的值


公式推导一共分为以下 5 个步骤推导:
A. 步骤 1 是将 n 与 n-1 分别带入到公式 9;
B. 分子分母提出 C0 和根号 n, 并将其约掉;
C. 整理化简根号下的内容;
D. 将麦克劳林公式带入;
E. 忽略无穷下余项,化简求得; 将其化简为关于 Cn 的式子如下:
通过公式(7)和公式(9),即可推到出每个周期内的计时器的值,及每步的频率。经过化简的公式(9)有一定的误差,其得出的结果比公式(8)快。所以我们对公式(7)乘以0.676加以校正。

5.6 由s = 1/2 ώtn¬2 和θ = nα可推出:

5.7 在一个电机匀加速到一定速度,再匀减速的情况下,如下图:

5.8 加速情况

对于加减速的情况来说,由于已经设定好了步进电机加速度、减速度、最大速度和步数,所以说一共分为两种情况:

6. 算法优化

7.总结

在给定步距角α、定时器频率tt、加速度ώ1、减速度ώ2和最大速度speed以及总步数total_step的情况下,电机的加减速计算步骤如下:

步进电机梯形曲线加减速运动算法实现相关推荐

  1. S曲线加减速算法 VS 梯形加减速算法

    设计运动控制系统很多年,突然有人问我S曲线加减速算法跟梯形加减速算法的区别,我竟然拼凑了很多语言都没能讲清楚.作为一个技术男怎能善罢甘休,但介于个人能力有限只能借用网上大牛的讲解搞清楚.苦苦搜索了三天 ...

  2. 基于STM32F103的步进电机S型曲线加减速算法与实现

    步进电机是将电脉冲信号转变为角位移或线位移的开环控制电机,是现代数字程序控制系统中的主要执行元件,应用极为广泛.在非超载的情况下,电机的转速.停止的位置只取决于脉冲信号的频率和脉冲数,而不受负载变化的 ...

  3. 步进电机S型曲线加减速算法与实现

    转载于http://blog.csdn.net/pengzhihui2012/article/details/52228822?locationNum=6 一年前做过的S型曲线加减速算法,再次做的时候 ...

  4. 基于51单片机+ULN2003控制步进电机S曲线加减速

    目录 1.ULN2003功能简介 2.28BYJ48简介 3.S曲线加减速方法 4.proteus仿真及实物测试 1.ULN2003功能简介 ULN2003比较简单,相关资料也比较多.可以用来驱动四线 ...

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

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

  6. 步进电机S曲线加减速控制生成器-VB6.0实现

    程序功能:生成步进电机S曲线运动数组代码 程序语言:VB6.0 对应硬件线路连接见上章: https://blog.csdn.net/LuDanTongXue/article/details/8786 ...

  7. 步进电机--S 曲线的C算法

    Created with Raphaël 2.1.0Foo1Foo1Foo2Foo2Foo3Foo3Foo4Foo4Foo5Foo5To boundaryTo controlTo entityTo d ...

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

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

  9. matlab拟合s型加减速曲线,运动控制系统s曲线加减速的实现方法

    运动控制系统s曲线加减速的实现方法 [专利摘要]一种运动控制系统S曲线加减速的实现方法,1)S曲线加减速的实现条件:S曲线加减速控制过程的基本限定条件公式如公式(6):完整的S曲线加减速过程应满足公式 ...

最新文章

  1. LeetCode 136. Single Number--异或--Java,C++,Python解法
  2. 专利分析与申请(1):法国汤姆森公司关于在有损编码器上扩展无损编码器的专利分析...
  3. wireshark抓包图解 TCP三次握手/四次挥手详解
  4. maven升级遇到的疑惑
  5. plotly之甘特图绘制
  6. codeforces 1B 模拟
  7. Centos7系统升级
  8. __init__在python中的用法_如何打“我爱你”的摩斯密码
  9. 搭建动态IP池的几种方式,有什么优缺点
  10. java技术管理的简历_基于javaweb个人简历生成及管理系统.doc
  11. 智能计算机与应用是核心期刊吗,人工智能的核心期刊都有哪些
  12. 技术系统进化法则包括_TRIZ理论八大技术系统进化法则.doc
  13. 演员改行做程序员?一男一女,这两个人你绝对想不到
  14. 【PR】如何处理视频在最后时声音逐渐变小
  15. 南京审计大学计算机考研专业课答案
  16. Zabbix-Sender 增加自定义监控项-- Ping 到目的地链路监控--bat脚本循环运行
  17. chromeDriver下载地址
  18. java中public,private,protect,default区别
  19. c++主线程和子线程
  20. 凯利讯半导体滤波器的种类与作用

热门文章

  1. 云之讯官方测试Demo音频版源码阅读
  2. zune linux_兑换Zune Marketplace Media的预付Zune卡积分
  3. python全景图像拼接_python实现图像全景拼接
  4. 硬盘坏道检测和修复(HDDL、MHDD、THDD)图文教程
  5. 纯JavaScript实现俄罗斯方块(详细注释,ES6)
  6. 解决:Win11无法连接网络打印机
  7. MySQL数据库综合练习四
  8. 【重磅】Crust详解波卡平行链插槽竞拍机制!
  9. 利用PD4ML将html 生成PDF 并展示
  10. 文化因素对商标翻译的影响