YI Hui-ling
ZHANG Ren-jie
School of Optical - Electrical and Computer Engineering
and Technology
Shanghai 200093
China
,
University of Shanghai for Science
,
)
,
,
(
:
Abstract
文章编号: 1009 - 2552( 2015) 03 - 0178 - 04
DOI: 10. 13274 / j. cnki. hdzj. 2015. 03. 044
基于 STM32 的步进电机 S 曲线加减速算法的优化
仪慧玲,张仁杰
( 上海理工大学光电信息与计算机工程学院,上海
)
200093
摘 要: 步进电机加速启动或者减速停止的时候,容易发生失步或者过冲现象。S 曲线加减速算
法比较平稳,因此广泛应用于运动控制系统。本文基于 STM32 控制系统通过 Modbus 通信协议给
驱动器发送内部自发脉冲命令,在 S 曲线的基础上对算法进行优化,不仅保证电机运行过程的
平稳,而且可以提高电机的脉冲响应频率。通过对脉冲产生的基准时钟进行不同的设置,实现
步进电机低速和高速情况下对脉冲频率精度的需求。
关键词: 步进电机;
中图分类号: TP391
文献标识码: A
; 脉冲响应频率
Modbus
曲线;
STM32
S
;
The optimization of S curve algorithm based on STM32
Stepper motor is likely to out of step or overshoot when it accelerates to start or slowing down
to stop. The S curve arithmetic is widely used in motion control systems because it is stationary. On the
basis of the S curve
this paper optimizes the algorithm based on STM32 control systems and Modbus
communication protocol. It’s not only to guarantee the machine running smoothly
,
but also can improve
,
the impulse response frequency of the motor. By setting the reference clock it can achieve the demand of
the accuracy of the impulse frequency during the low speed or high speed.
Key words
stepper motors
scurve
STM32
Modbus
impulse response frequency
:
;
;
;
;
0 引言
1 - 2
。
步进电机是一个将脉冲信号转换成角位移的执
],其工作原理是每接收一个脉冲,就按设
行机构[
定的方向转过一个固定的角度,可以通过控制脉冲
的数量来控制电机的角位移量,通过控制脉冲的频
率来控制电机的速度及加速度
理论上脉冲频率越
高,电机的运转速度越快
但在实际应用中,脉冲频
率太高时,步进电机的内部反电动势会增加,会导致
步进电机发生失步或者堵转现象
所以要考虑最合
适的脉冲输出方案,才能实现步进电机的精确定位
。
在步进电机控制系统中,有两种可以选择的工
]
作模式,外加脉冲模式和内部自发脉冲模式[
其中内部自发脉冲模式下可以设置点动频率
频率
脉冲数等参数
、
运行频率
、
降频时间
、
。
启动
、
通过
升
、
。
。
。
3 - 4
—871—
、
CPU
Modbus
总线并使用
协议功能完善
RS485
控制命令以及设定的参数,使
输出相应的升
协议接收上位机的运动
按照设定的参数
降频脉冲用于控制步进电机运动
。
使用简单,已经成
协议开放
、
Modbus
、
为了实现精确的定位,
为一种通用的工业标准[
本文中运动
必须保证脉冲信号严格按照要求输出
。
的时钟频率可
控制选用
,并且定时器资源比较丰富,通过对
以达到
曲线
高
进行优化,提出了一种可行的方法确保了电机在低
速启动以及高速运转时的稳定性和可靠性[
低频脉冲信号输出的不同情况的分析,对
、
系列的芯片,
72MHz
STM32
STM32
。
]
5
6 - 7
S
]
。
收稿日期: 2014 - 03 - 14
作者简介: 仪慧玲(
1989 -
电机控制系统
。
) ,女,在读硕士研究生,研究方向为步进
2
S
的
示步长
的是
S 曲线加减速算法的理论实现
加减速曲线的种类有很多,如图
曲线模型,其中
所示为典型
表
为了获得更好的加减速效果,本系统选用
表示每秒脉冲数,
STEP
PPS
2
回归函数,
logistic
函数的基本模型为:
。
logistic
(
)
1
x
=
1 + e - x
y
曲线特点是开始增长缓慢,但是在以后的某一
范围内迅速增长,达到一定程度后,增长又缓慢下来
正好适合电机的加速轨迹,
最终趋于一个稳定值
既可以符合加速度曲线形态,又可以快速进入目标
回归函数模型如下:
速度
本系统中使用的
。
logistic
。
y =
其中,
k
增益
。
(
)
×
k - c
表示增益,
a
1
1 + e - a
(
x - b
) + c
是倾斜率,
b
是偏移量,
c
是起始
1 自发脉冲设计方案
]
8
。
CPU
步进电机是由数字信号控制运动的,转速随着
电机工作在自发脉冲
输入脉冲的频率变化而变化
控制输出给驱动器,驱动
模式下时,脉冲是由
电机一个完整的运动过程,要经过从
电机运动[
。
加速到目标速度的加速过程,以目标速度
低速启动
、
匀速运动
到减速的过程才能使电机稳定的运动
、
。
内部自发脉冲工作模式下,要解决的问题就是电机
的加减速过程,即以何种曲线加减速的问题
。
曲线加减速在伺服电机系统中被广泛使用,在
顶部圆滑的曲线,可
步进电机系统中也同样适用
以确保在最终趋于恒定速度时,不会出现速度过冲
的现象
。
步进电机加速过程是由基础频率和跳跃频率
( 步进电机在基础频率上逐渐提高的频率) 组成加
通过计算式来获得加速度的数据,可以为
速曲线
。
。
的速度控制提供理论依据
通常情况下
。
。
CPU
内存中
速度控制是利用
CPU
CPU
的速度控制,不是实时地用公式计算,而是把事先算
好的数据填入
CPU
的定时器来实现的,也就是用规定的时间来触发一
这个规定的时间也就是定时器的时间常
个脉冲
计算式得到的数据为频率值,其倒数就是时间
数
值
然后按照
定时器的工作频率进行换算就
可以得到速度控制所需的时间常数
CPU
。
。
。
。
步进电机工作在自发脉冲时的工作原理如图
所示
。
图 1 自发脉冲工作原理
Modbus
协议给下位机发送命令,
上位机通过
收到自发脉冲命令之后,关闭外部脉冲接收
CPU
端,打开内部自发脉冲所需的定时器
通过设定该
定时器的定时时间来控制输出脉冲的频率,脉冲频
曲线加减速方式进行输出,从而使电机可
率按照
以平稳的运行
。
S
。
1
图 2 经典 S 曲线模型
倾斜率
a
的变化对曲线的影响如图
所示
。
3
图 3
logistic 函数模型中倾斜率对曲线的影响
由上图可以看出,倾斜率越大,曲线就越陡,也
,由曲线走势
的时候,曲线较平滑,并且可以快速
就是上升速度越快,本系统中取
可以看出
a = 1
达到目标速度
a = 1
4
图
表示了偏移量
对曲线的影响情况,从上
图可以看出,偏移量只是单纯地左右偏移,而曲线形
态不发生变化,本系统中取
,可以实现快速达
到目标速度的要求
b = 5
b
。
。
—971—
S 曲线加减速算法的具体实现办法
3
STM32
时钟最高能达到
,若采用
72MHz
72MHz
16
是
STM32
72MHz
的时钟基准,则定时器计数一次的时间为
位的定时器,最大计数值为
而
所以若定时器的时间基准选为
大计数 周 期 为
1 /72μs。
,
65535
,则脉冲的最
,此 时 频 率 约 为
,往往步进
1. 1kHz。
1. 1kHz
电机的启动过程的起始频率会比较低,
并不
可以实现的方法有两种,一是对定时
能满足要求
器的时间基准进行分频处理; 二是使用定时器的级
联,但是会增加
即最小的频率只能达到
65535 /72 = 910μs
资源的消耗
1. 1kHz
。
CPU
。
11
]
对定时器时间基准进行分频时,对于分频系数的
选择也要慎重考虑,既要考虑到定时精度的问题,又
最小频率对总的定时时间的
要考虑升频过程中最大
、
为了增加定时时间,即实现低频脉冲的输
要求[
,即定时器时
出,分频系数越高越好,当分频系数为
,最大的
钟为
1MHz
,理论
定时时间为
上可以满足电机起始频率的要求[
72
时,定时器计一个数的时间为
,此时对应的频率为
65535μs
15. 3Hz
1μs
。
]
11
5
1μs
如图
3. 3μs
。CPU
300KHz
的定时时间为
所示为最高频率设置为
下的定时器脉冲输出波形
,所以定时器计数的理论值为
,即对应
,定时器基准时钟频率设置为
计一个值的
1MHz
,但是
时间为
定时器的计数值设置只能为整型变量,所以计数
,即脉冲的实际输出
值
3. 3
,误差较大
频率为
。
且定时时间不为整数时,都
分析可知分频系数为
会存在误差
3
,与目标频率相差
会自动转换成整型变量
330kHz
30kHz
3. 3
72
。
。
图 5 定时器时钟为 1MHz、最高频率 300kHz 脉冲输出
设分频系数为
,当前的理论
,当前频率为
,定时器的基准时间为
div
f
则:
TB。
计数值为
CNT
TB =
div + 1
72
× 10 - 6 s
72
)
(
× 106
div + 1
CNT =
f
可求出其误差为:
]
CNT × TB
越小,对应的时间基准
( [
Δf = 1 /
分频系数
× TB
CNT
- 1 /
)
(
div
)
TB
越小,
图 4
增益
型为:
k
logistic 函数模型中偏移量对曲线的影响
设置为
,因此系统选定的曲线模
1000
(
y =
1000 - 200
)
×
1
1 + e -
(
x - 5
) + 200
本系统中
曲线模型数据表中存放有
S
数据,即模型中的升频步长为
步
数据越多,相对精度越高,但是占用
量也越大
程已经可以满足要求
自发脉冲选用
5000
5000
。
。
当前频率的计算过程:
( 起始频率
平均频率
=
最高频率)
+
2
5000
个
模型表中的
的内存容
点来模拟升降频过
CPU
。
实际升频步长
当前步长对应模型表中的位置
平均频率
=
×
升频时间
实际的当前步
=
长位置
模型表总步长
实际升频步长
×
所以可以求出当前的频率为:
当前 频 率
起 始 频 率
=
模 型 表 频 率
×
+
最高频率
起始频率
模型表最高频率
-
X
。
模型表中
程序中变量的最大字长定义为
轴代表步长,
Y
率
即为四字节字长,所以变量的最大值为
统所要实现的最高频率为
间为
,则最大的升频步长约为:
轴即为相对应的频
型,
本系
,假设最大升频时
unsigned int
2 ^32。
1MHz
999ms
100000 + 0
2
为保证
最大取值为
高频率可以取
× 999 × 10 - 3 = 499500
字节变量不出现溢出,模型表纵轴的
,所以模型表的最
4
2 ^32 /1000000 = 4294
[
]
9
4000
。
由前述当前频率的计算表达式可以求出当前频
率值,频率的倒数即为输出脉冲的周期值
本系统
],根
中定时器的工作模式设置为
据该数值只要设定好定时器的定时时间即可实现相
应频率脉冲的输出
模式输出[
PWM
。
10
。
—081—
误差也就越小
。
6
6
400kHz
400kHz
为目标频率为
当目标频率为
图
的时候,理论的定时时
,定时器
2. 5μs。
分频的时候的脉冲输出,此时示波器观测到
定时器的时钟
,对应的定
处理的时候会把计数
,所以定时误差为,实际的输出脉冲频
间应为
时钟
的波形周期已经接近理想值
为
时器计数值的理论值为,
值设置为
率为,所以频率误差为
,所以计数基准时间为
2. 5μs。
0. 083μs
12MHz
CPU
30
1. 6kHz。
精度的要求
4 结束语
。
在步进电机的加减速过程中,
S
曲线是常用的
一种较为精确的算法,启动和停止时的平稳性都比
较好,可以根据不同的电机性能调整速度的变化率
。
本文在常用的
曲线基础上提出了一种更加可靠的
实现方法,在低频和高频段都能可靠准确地实现相
应频率脉冲的输出
目前该算法已经成功运用于步
进电机控制系统中
参 考 文 献:
[
] 丛爽,李泽湘
1
北京: 电子工业出版社,
实用运动控制计数[
]
.
。
。
S
M
.
2006.
] 朱海
[
.
2
(
2013
[
]王运
3
12
基于
.
研究[
]
D
.
) :
114 - 115.
]
几种常见步进电机控制方法庶谈[
J
.
科技经济市场,
的运动控制器设计
实现及运动控制算法
、
DSP、CPLD
成都: 电子科技大学,
2005.
图 6 定时器时钟为 12MHz、最高频率 400kHz 脉冲输出
当分频系数较小的时候,精度较高,但无法满足
低频的需求; 当分频系数较大的时候,高频的时候对
所以电机的升降频过程中,定时
应的精度达不到
器的设置要综合考虑高低频不同的需求
。
。
。
最终本系统的解决方案是在低频的时候定时
器的分频系数设置为较大分频值,高频的时候使分
目前采取的是低频时候分频系数为
频系数降低
的
200kHz
72
,即定时器
时候改变分频系数,设置分频系数为
,
的基准时钟为
1 /72μs
经过试验验证无论是低频还是高频完全可以满足
,计一个数的时间为
,即低频可以达到
; 当频率达到
72MHz
15Hz
1
[
] 鲍吉龙,叶平
4
.
]
工业监控系统的网络化发展[
J
.
微计算机信息,
2006
(
,
6
[
] 唐义思
5
.
66 - 68.
) :
1
步进电动机运行电路设计中应注意的问题[
J
],科技创
新导报,
2013
(
27
[
] 蒙博宇
6
. STM32
社,
2012.
57.
) :
自学笔记[
M
]
北京: 北京航空航天大学出版
.
] 紫文才,何邦贵,紫振钦
[
.
7
,
(
36
现代电子技术,
2013
基于
) :
23
FPGA
的步进电机优化控制[
J
],
142 - 144.
[
] 王鸿钰
8
.
步进电机控制技术入门[
]
M
上海: 同济大学出版社,
.
1990.
[
] 史新福
9
. 32
位微型计算机原理接口技术及其应用[
]
M
版
.
西
. 2
北工业大学出版社,
2001
:
243 - 257.
[
] 刘宝廷
10
步进电机及其驱动控制系统[
]
.
M
.
哈尔滨: 哈尔滨工
业大学出版社,
:
[
]袁涛
11
单片机
.
C
空航天大学出版社,
57 - 82.
1997
高级语言程序设计及其应用[
M
责任编辑:
]
.
:
2001
203 - 255.
北京: 北京航
薛慧心
櫀櫀櫀櫀櫀櫀櫀櫀櫀櫀櫀櫀櫀櫀櫀櫀櫀櫀櫀櫀櫀櫀櫀櫀櫀櫀櫀櫀櫀櫀櫀櫀櫀櫀櫀櫀櫀櫀櫀櫀櫀櫀櫀櫀櫀櫀
( 上接第
页)
177
4 结束语
图 6 主机程序流程图
。
。
本文设计了一种基于单片机的家用防盗报警系
统,具备门窗探测和室内探测功能
系统采用本地报
警和短信报警结合,最大程度提高报警及时性,减少
探测器与主机之间采用无线通讯,避免布线的
误报
遥控器与按键配合使用,人机交互性能良好
麻烦
且系统整体成本较低,适合家庭等小型用户使用
参 考 文 献:
[
] 阎石
1
[
]楼然苗,李光飞
2
]
数字电子技术基础[
M
.
系列单片机设计实例[
M
北京: 高等教育出版社,
2006.
北京: 北
]
.
。
。
.
。
. MCS - 51
京航空航天大学出版社,
2006.
[
] 姚彦茹
3
.
术,
热释电红外传感器在防盗系统中的应用[
]
J
.
(
) :
2007
5
87 - 88.
信息技
[
] 刘举庆,刘莲秋
4
.
]
遥控编解码电路的新应用[
J
.
信息技术,
(
2011
] 陌尘
[
.
5
(
2004
) :
46 - 49.
11
编码解码芯片
) :
44 - 46.
8
PT2262 / PT2272
]
工作原理[
J
.
电子制作,
责任编辑: 张荣香
—181—