步进电机加减速_步进电机电机加减速 - CSDN
精华内容
参与话题
  • 一、加减速控制曲线 直线(梯形)加减速曲线--图略...《几种步进电机加减速方法的对比研究及其应用》-------算法原理《基于STM32的步进电机S形加减速控制曲线的快速实现方法》 -- 很实用,,,其他 --- 找度娘去.....

    一、加减速控制曲线

    • 直线(梯形)加减速曲线--图略
    • 指数型加减速曲线       --图略
    • S型加减速曲线           --图略

    二、参考资料

    • 《几种步进电机加减速方法的对比研究及其应用》-------算法原理
    • 《基于STM32的步进电机S形加减速控制曲线的快速实现方法》 --  很实用,,,
    • 其他 --- 找度娘去.....

    网盘资源下载--步进电机

    展开全文
  • 步进电机减速控制

    千次阅读 2016-02-29 15:09:42
    几种步进电机加减速方法的对比研究及其应用 http://www.docin.com/p-425915619.html 51单片机步进电机加速减速匀速演示 步进电机的加速减速 简单介绍几种控制步进电机加减速的方法
    展开全文
  • 步进电机加减速——梯形算法

    千次阅读 2019-07-15 14:05:48
    1.声明 1、这是我第一篇博客文章,如有错误请各位...步进电机加减速算法目的:对于上述2、3的场合,步进电机容易出现丢步和过冲甚至无法启动的现象,所以加入该算法来解决这一问题。 3. 算法实现 3.1加减速期望曲线...

    1.声明

    1、这是我第一篇博客文章,如有错误请各位大佬指点,谢谢。
    2、该篇文章是适合了解了步进电机基础原理的学习者阅读。

    2.目的

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

    3. 算法实现

    3.1加减速期望曲线

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

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

    电机的调速与脉冲周期是有关系的,并且是正比例关系,脉冲周期越长,步进电机转速越慢。
    在梯形加速过程,速度变化是直线的,将该曲线截取加速过程放大并加入脉冲,如图2所示。
    在这里插入图片描述
    图2
    图中t0到t1这段时间为第一个脉冲的时间,t1到t2为第二个脉冲的时间
    C0为第一个脉冲的定时器计数值
    tt为定时器的计数周期,也就是频率的倒数
    距离=速度*时间
    每给一个脉冲,步进电机行走一步,这时候步进电机旋转的角度称为步距角,用α表示,单位为弧度。
    所以图2中每个长方形的面积就是一个步距角,所以每个长方形面积相等。

    3.3位置与加速度的关系

    根据牛顿定律位移S=V0t+1/2at²,由于步进电机启动初始速度为0,所以公式变成S=1/2at²。在这里用ω’表示加速度。所以公式变成S=1/2ω’t²。由于已知步距角和脉冲数(n),所以S=αn。
    从而得到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)

    3.5.2实际曲线另外一种情况

    在实际的运动中,梯形曲线并不一定是图1那样,还有另外一种情况,如图4所示。
    在这里插入图片描述
    图4
    该图显示实际最大速度未达到设定最大速度。
    accle_lim:实际加速运动的脉冲数
    max_s_lim:达到设定最大速度需要的脉冲数
    根据公式n1=(n1+n2)*ω’2/(ω’1+ω’2)可以得到accle_lim=(step *decle)/(accel+decel)
    根据公式n *ω’=ω’n/2 *α可以得到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
    decel_val=(max_s_lim *accel)/decel
    2.accle_lim<max_s_lim
    decel_val=step-accle_lim

    4.结论

    通过上面的分析与计算得出了两个关系
    1、加减速度和脉冲周期的关系
    2、减速开始时刻

    展开全文
  • 步进电机的线速度控制

    万次阅读 2017-08-08 11:16:50
    AVR446:步进电机的线速度控制特征: 步进电机线速度控制 -控制加速、减速、最大速度运行的步数 通过一个定时器驱动 全步/半步驱动模式 支持所有带16位定时器的AVR设备 演示程序使用的是处理器ATmega48(8位AVR...

    1. 介绍

    这篇应用笔记描述怎样去实现步进电机的线速度控制,步进电机是一个电磁设备将数字脉冲转换为机械轴转动,使用这种电机有很多优点,例如因为没有电刷与触点存在所以使用跟简单、低成本、高可靠性、低速时转矩大、运动精度高,许多具有步进电机的系统在改变速度的时候需要控制加速度/减速度,这个应用笔记提供一个演示程序,能够控制减速度以及位置和速度

    这种线性速度控制是基于2005年1月“嵌入式系统编程”提出的一种算法,D. Austin的一篇“实时生成步进电机速度曲线”文章。该算法只使用简单的定点算术运算没有数据表,可以实时地进行参数化和计算。
    这里写图片描述

    2. 原理

    2.1. 步进电机

    本应用笔记涵盖了步进电机线速度斜坡控制原理以及控制器本身的实现,假定读者熟悉基本的步进电机操作,但将给出最相关主题的摘要,更多关于步进电机的内容可以在“D. W. Jones,步进电机控制.”找到

    2.1.1. 双极与单级步进电机

    两种常见的步进电动机类型是双极电动机和单极电动机。双极和单极电机是相似的,除了单极在每个绕组上有一个中心抽头,如下图所示
    这里写图片描述
    双极型步进电机需要电流在两个方向上通过绕组驱动,需要一个完整的桥驱动器,如下图,单极步进电机允许一个更简单的驱动电路,如下图,限制电流向一个方向流动,单极步进电机的主要缺点是有限的能力去激励所有的绕组,导致较低的扭矩,单极步进电机可以通过断开中心抽头当做双极步进电机使用
    这里写图片描述

    2.1.2. 全步/半步

    步进电机使用全步进模式逐次上电每个绕组,这样有四种不同的设置,在下表中Full-stepping行显示,通过同时驱动两个绕组,步进电机被困在全步的中间位置,也就是我们所知的半步,这给出了8个位置,如下表中的Half-stepping行显示,当为两个绕组供电时,转矩比一个绕组高出约1.4倍,但是以两倍的功耗为代价,一个机械周期通常包括一系列电气周期
    这里写图片描述

    2.1.3 速度特性

    步进电机的一个缺点是高速时转矩有限,因为步进电机的转矩随着速度的增加而减小,步进电机在达到谐振速度时转矩也会降低,如下图,谐振速度取决于步进电机的驱动方案和负载(T=转矩,w=速度)
    这里写图片描述

    2.2. 步进电机的基本方程

    为了使步进电机转动,通过绕组的电流必须以正确的顺序改变,当输入脉冲(步进电机脉冲)和方向信号时输出以正确的脉冲序列

    为了使步进电机以恒定的速度旋转,必须以稳定的速率产生脉冲,如下图
    这里写图片描述
    一个计数器用于产生这些脉冲,运行频率:f [HZ]

    计数器c产生延时:
    这里写图片描述
    步进电机的角度、位置、速度由以下公式计算:
    这里写图片描述
    spr是一圈的步数,n是单钱步数,1弧度/秒=9.55转

    2.3. 线性速度斜坡

    为了平稳的启动和停止步进电机,需要对其进行加减速控制,下图显示了加速度、速度与位置之间的关系,使用恒定的加/减速给出了一个线性速度剖面图
    这里写图片描述
    步进电机脉冲之间的延时δt控制转动速度,为了使步进电机尽可能的接近速度斜坡,必须计算这些时间延时

    离散步控制步进电机的运动,并且这些步骤之间的时间延迟的精度是由定时器的频率给出的
    这里写图片描述

    2.3.1. 精确计算步间延迟

    第一个计数器延迟C0以及后续的计数器延迟CN,由(详见附录)提供:
    这里写图片描述
    微控制器的计算能力有限,计算两个平方根是耗费时间的。因此考虑减小计算复杂度

    计数值为n时,使用泰勒级数近似的步骤间的延迟(见附录详细):
    这里写图片描述
    这种计算要比平方根快的多,但在n=1时引入了0.44的误差。一种补偿这个误差的方法是把C0乘0.676

    2.3.2. 加速度变化

    如附录所示,加速度由C0和n给出,如果加速度(或减速度)发生变化,必须计算一个新的n

    时间Tn和n:
    这里写图片描述

    合并这些方程:
    这里写图片描述

    这表明,到达给定速度所需的步数与加速度成反比:
    这里写图片描述

    这意味着通过改变n来改变加速度
    这里写图片描述

    移动给定数量的步数,减速必须以正确的步数开始,以零速度结束。下面的公式是用来寻找n1
    这里写图片描述

    3. 实施

    一个用C编写的工作实现包含在这个应用笔记中。源代码和编译信息可以通过打开包含源代码的“自述文件”来找到。

    应用程序演示了步进电机的线性速度控制。用户可以通过串口发出不同的命令来控制步进电机的速度曲线,AVR将相应地驱动连接的步进电机。

    演示程序分为三个主要模块,如下图所示。每个块有一个文件
    这里写图片描述
    main.c:有一个菜单和一个命令接口,让用户通过连接到串行线的终端控制步进电机。
    speed_cntr.c:计算需要的数据并产生步进脉冲使步进电机按照预期的速度运动
    sm_driver.c:计算步数和输出控制步进电机的正确信号

    为了控制步进电机,需要描述速度曲线的四个参数,速度曲线以零速度开始,并加速到给定的速度。这个速度保持恒定,直到开始减速。最后,电机在给定数量的步数内减速到零速。速度曲线如图
    这里写图片描述

    描述速度曲线参数:

    • step:移动的步数
    • accel:加速使用
    • decal:减速使用
    • speed:最大速度

    3.1. 菜单和命令接口

    要使用演示应用程序,用户必须将终端连接到AVR的串行端口。UART设置为19200波特、8位数据、无奇偶校验和1位停止位。任何终端仿真程序都应该工作。使用终端,用户可以提供不同的命令来控制步进电机,并从演示应用程序中获取信息。

    UART接收中断程序(uart.c)存储接收到的字符到缓冲区。当接收到(ASCII代码13)时,主程序读取缓冲区并执行给定的命令。

    开始时发送“?”命令,将提供帮助信息:
    这里写图片描述

    在显示菜单或执行命令之后,显示信息行:
    这里写图片描述

    演示应用程序给出当前步进电机的位置、加速、减速和速度,以及移动的步数。

    有三种不同的方法可以使步进电机移动:


    • 步进电机按照应用程序给定的设置运行。
    • [data]
      步进电机在给定的设置下移动[data]步
    • [steps][accel][decel][speed]
      步进电机在[accel][decel][speed]设置下移动[steps]步
      当步进电机开始运行时,将显示Running…。只要点击运行,新命令就被丢弃。在停止“OK”显示后,接受新命令。

    3.2. 速度控制器

    速度控制器计算并生成速度曲线。速度控制器的框图如图所示。为了运行步进电机速度控制器通过调用函数move()设置。

    这里写图片描述

    函数move()首先计算所需的所有参数然后存储在结构体中,使能定时器中断,定时器按照所需的速度斜坡产生中断,每个中断调用函数step_counter()移动步进电机

    3.2.1. 计算设置

    在演示应用程序中,为每个命令计算速度参数,和小的延迟作为步进电机移动的开始。在实际应用中,如果只需要对速度曲线进行有限的更改则可能不需要如此。在这种情况下,参数可以预先计算
    为了使代码运行更快,避免使用浮点运算,因此变量的精度对保持准确是很重要的
    预编译常数也被用来简化算法,可以在smdriver h头文件中找到:
    这里写图片描述
    计算曲线有两种不同的方案:

    • 加速达到到期望的速度
    • 期望的速度没有达到开始减速
      方案取决于描述速度曲线的四个参数

    3.2.1.1. 加速到期望的速度

    减速开始前达到期望的速度
    这里写图片描述

    max_s_lim:是需要加速到期望速度的步数。
    这里写图片描述

    accel_lim:减速开始前的步数(不计期望的速度)。
    这里写图片描述

    如果max_s_lim小于accel_lim加速被期望速度所限制,decel_val计算如下
    这里写图片描述

    3.2.1.2. 期望的速度到达前减速

    这里写图片描述

    如果max_s_lim>accel_lim,加速被减速开始所限制,decel_val计算:
    这里写图片描述

    3.2.2. 定时器中断

    定时器中断产生“步进脉冲”(调用StepCpinter()),并且只有在步进电机运行时才运行。定时器中断将按照速度曲线运行在四种不同的状态下,如图
    这里写图片描述

    以上的状态由定时器中断中的状态机实现,如下图
    这里写图片描述

    当应用程序开始或者步进电机停止时状态机保持在STOP状态,当计算完成一个新的状态被设置,定时器中断被使能,当移动多余1步时状态机进入ACCEL状态,如果只移动1步,则进入DECEL状态

    当处于ACCEL状态时,步进电机加速直到达到期望的速度进入RUN或者必须开始减速进入DECEL,当处于RUN状态时,步进电机保持在恒定的速度,直到必须开始减速进入DECEL状态

    保持在DECEL状态直到在期望的步数下减速至0进入STOP状态

    3.2.2.1. 计算和计数

    对于加速和减速过程中的每一步,必须有一个新的时间延迟。

    这个计算包括一个除法给余数,并且为了提高精度,这个余数被保留,并包含在下一个计算中。
    这里写图片描述

    为了跟踪位置和何时改变状态,需要一些计数变量,如下图。
    这里写图片描述

    • step_count:记录步数,当加速开始和减速结束后具有相同的0值
    • accel_count:被用来控制加减速,在ACCEL状态下以0值按步开始自加直到ACCEL结束,当DECEL开始时,它被设置为-decel_val,按步自加,直到0运动结束,进入STOP
    • decel_start:告知何时开始减速,当step_count等于decel_start是进入DECEL状态

    3.3. 步进电机驱动

    步进电机驱动生成正确的序列信号移动步进电机向要求的方向,步进电机驱动如下图
    这里写图片描述
    步数计数器递增或递减,在每一次调用step_counter()时。当使用fullstep,计数器的值从0到3,使用时halfstep,从0到7。这个值等于步进电机在一个电循环中的不同位置。用作步骤表的索引,并且给出正确的信号。

    3.4. 代码大小和速度

    完整的演示代码使用4K的程序存储器,速度控制和步进电机驱动占用1.5K。删除使用预先计算的参数将进一步减少代码大小。

    当调用Move(),定期器启动前完成计算,大概有1.5ms的延迟从调用到步进电机的启动,定时器中断在加速减速的过程中执行运算每一次大概需要200us,在恒定的速度运行时,需要更少的时间大概35us即可,然后最大的速度受到加速减速的限制,对于一个一圈400步的步进电机来说,最大速度:
    这里写图片描述

    在其他应用程序中实现此代码时,必须考虑其他中断。如果步进电机的定时器中断被另一个ISR阻断,这将使步进电机速度不同(不是恒定加速度)。在给定的应用程序中,它可能不是关键的,但是尽可能使代码健壮和确定是一件好事。

    官方代码+文档:http://download.csdn.net/detail/u010650845/9923879

    展开全文
  • 步进电机选型的计算方法

    千次阅读 2017-10-19 09:58:07
    原文地址:步进电机选型的计算方法作者:三拓电气  随着工业自动化水平的不断提高,步进及伺服技术在各个领域的应用程度也在不断提升,步进电机和伺服电机越来越多的被用来替代传统的控制方式。而对于步进及伺服...
  • 步进电机失步(丢步)的原因和对策步进电机可以根据脉冲数和脉冲频率来对电机实现开环控制位置和速度,是一种便宜、简单好用的控制类电机,在自动化控制领域得到越来越广泛的应用。但由于步进电机不是闭环控制,选型...
  • 51单片机按键控制步进电机加减速及正反转

    万次阅读 多人点赞 2020-04-09 18:44:09
    之前尝试用单片机控制42步进电机正反转,电机连接导轨实现滑台前进后退,在这里分享一下测试程序及接线图,程序部分参考网上找到的,已经实际测试过,可以实现控制功能。 所用硬件:步进电机及驱动器、STC89C52...
  • STM32F103步进电机梯形匀加速算法

    千次阅读 2019-04-17 08:45:14
    最近公司的一个项目用带驱动器的步进电机,奈何,经理让我搞个匀加速的启动和停止。以前从来没考虑过算法的我,走了很多弯路,不过最后还是解决了这个问题。 梯形加减速应该是指数加速算法和S型加速算法中最简单也...
  • 实验目的:利用Arduino+TB6600驱动模块控制两相四线42减速步进电机 材料: Arduino Nano *1 TB6600驱动器 *1 42减速步进电机*1 面包板 *1 12V电源适配器*1 导线 若干 接线: 12V电源适配器正负极分别接驱动器VCC...
  • STM32步进电机加减速

    千次阅读 2017-09-13 16:11:40
    电机加减速为了,电机启动停止更加稳定,提高匀速速度。S曲线算法优化电机的运行。 整个过程就是,模仿S曲线设置电机的频率 程序采用,通过s_curve()函数映射一张小于1500个点的表, 输出一次pwm方波,中断...
  • 用过的几款步进电机驱动IC

    万次阅读 2018-11-09 19:56:45
    使用专用集成步进电机驱动芯片有诸多优势,比如效率高、高精度(细分)的支持、过流保护、过热保护、丢步检测、内置减速曲线(可减轻处理器负荷)等;而且驱动起来也是非常简易,只需脉冲方波或者通过总线(spi、i2c...
  • http://blog.csdn.net/firestarway/article/details/51226701 不正确地驱动步进电机很容易导致电机发出“嗡嗡”的噪声和很大的振动。当驱动步进电机时,如果发现步进电机处于静止状态时,其内部都发出很明显的噪
  • Arduino基础入门篇26—步进电机

    万次阅读 多人点赞 2019-11-04 15:04:25
    本篇使用ULN2003驱动五线四相减速步进电机
  • fpga实现了脉冲发生器,s型加减速

    千次阅读 2017-06-04 01:42:54
    基础单元还是FPGA实现好一点,复杂的算法dsp或者arm来实现。不过也有全部用arm实现的。
  • 一、静态指标术语 二、动态指标术语 三、步进电机加减速过程控制技术 四、步进电机的细分驱动控制 五、步进电机控制策略
  • 步进电机 简介: 步进电机和直流电机 一样都是 将电能转换成机械能。步进电机将电脉冲转换成特定的旋转运动,每个脉冲所产生的运动是精确的,并可重复。通俗的讲就是,我们给步进电机 一个脉冲减速牙箱,...
  • 步进电机S型曲线加减速算法与实现

    万次阅读 多人点赞 2016-12-08 00:11:24
    一年前做过的S型曲线加减速算法,再次做的时候竟然犯错,在此总结记录一下,方便以后查阅,同时希望帮助初学者提供简单的参考资料(注:本项目采用的带细分的驱动器,MCU的OC比较输出模块产生50%的PWM方波)。...
  • Arduino 控制减速步进电机 校验

    千次阅读 2016-11-12 23:34:34
    Arduino 电机 校准
1 2 3 4 5 ... 20
收藏数 1,043
精华内容 417
关键字:

步进电机加减速