摘要:本节介绍步进电机T型加减速的控制方法,分2个小节,本小节主要内容为该控制方法的推导与计算,第二节对T型加减速进行了简化计算
一.加速阶段计算
1.1 计算时间与步数关系
根据位移公式可得:
a
n
g
l
e
0
=
n
∗
s
t
e
p
…
…
①
angle_{0} =n*step……①
angle0=n∗step……①
a n g l e 0 = 1 2 a 0 t n 2 … … ② angle_{0} =\frac{1}{2} a_{0}t_{n}^{2} ……② angle0=21a0tn2……②
由①②得:
t n = 2 ∗ n ∗ s t e p a 0 … … ③ t_{n}=\sqrt{\frac{2*n*step}{a_{0} } } ……③ tn=a02∗n∗step……③
t_n:时间(s)
n:步数
step:步距角(°)
a_0:加速度(°/s^2)
angle_0:加速角度(°)
计算t1
t
1
=
2
∗
s
t
e
p
a
0
…
…
④
t_{1}=\sqrt{\frac{2*step}{a_{0} } } ……④
t1=a02∗step……④
由③④得:
t
n
=
t
1
n
…
…
⑤
t_{n}=t_{1}\sqrt{n } ……⑤
tn=t1n……⑤
1.2 计算时间与步数关系
由⑤得:
Δ
t
n
+
1
=
t
n
+
1
−
t
n
=
t
1
(
n
+
1
−
n
)
…
…
⑥
\Delta t_{n+1}=t_{n+1}-t_{n}=t_{1}(\sqrt{n+1} -\sqrt{n} )……⑥
Δtn+1=tn+1−tn=t1(n+1−n)……⑥
Δ
t
n
=
t
n
−
t
n
−
1
=
t
1
(
n
−
n
−
1
)
…
…
⑦
\Delta t_{n}=t_{n}-t_{n-1}=t_{1}(\sqrt{n} -\sqrt{n-1} )……⑦
Δtn=tn−tn−1=t1(n−n−1)……⑦
⑥/⑦得:
Δ t n + 1 Δ t n = n + 1 − n n − n − 1 \frac{\Delta t_{n+1}}{\Delta t_{n}} =\frac{\sqrt{n+1}-\sqrt{n}}{\sqrt{n}-\sqrt{n-1}} ΔtnΔtn+1=n−n−1n+1−n
Δ t n + 1 Δ t n = 1 + 1 n − 1 1 − 1 − 1 n … … ⑧ \frac{\Delta t_{n+1}}{\Delta t_{n}} =\frac{\sqrt{1+\frac{1}{n} }-1}{1-\sqrt{1-\frac{1}{n} }} ……⑧ ΔtnΔtn+1=1−1−n11+n1−1……⑧
将Sqrt(1±x)麦克劳林展开:
f
(
x
)
=
1
±
x
=
f
(
0
)
±
f
′
(
0
)
+
f
"
(
0
)
2
+
0
(
x
2
)
f(x)=\sqrt{1±x} =f(0)±f'(0)+\frac{f"(0)}{2} +0(x^{2} )
f(x)=1±x=f(0)±f′(0)+2f"(0)+0(x2)
=
1
±
1
2
x
−
1
8
x
2
+
0
(
x
2
)
=1±\frac{1}{2}x -\frac{1}{8}x^{2} +0(x^{2} )
=1±21x−81x2+0(x2)
令
x
=
1
n
令x=\frac{1}{n}
令x=n1
1
±
1
n
=
1
±
1
2
n
−
1
8
n
2
+
0
(
1
n
2
)
…
…
⑨
\sqrt{1\pm \frac{1}{n} } =1\pm\frac{1}{2n} -\frac{1}{8n^{2} } +0(\frac{1}{n^{2} } )……⑨
1±n1=1±2n1−8n21+0(n21)……⑨
将⑨带入⑧:
△
t
n
+
1
△
t
n
=
1
+
1
2
n
−
1
8
n
2
+
0
(
1
n
2
)
−
1
1
−
(
1
−
1
2
n
−
1
8
n
2
+
0
(
1
n
2
)
)
\frac{\bigtriangleup t_{n+1} }{\bigtriangleup t_{n} } =\frac{1+\frac{1}{2n} -\frac{1}{8n^{2} } +0(\frac{1}{n^{2} } )-1}{1-(1-\frac{1}{2n} -\frac{1}{8n^{2} } +0(\frac{1}{n^{2} } ))}
△tn△tn+1=1−(1−2n1−8n21+0(n21))1+2n1−8n21+0(n21)−1
△
t
n
+
1
△
t
n
≈
4
n
−
1
4
n
+
1
…
…
⑩
\frac{\bigtriangleup t_{n+1} }{\bigtriangleup t_{n} } ≈\frac{4n-1}{4n+1} ……⑩
△tn△tn+1≈4n+14n−1……⑩
1.3误差分析
△
t
n
+
1
△
t
n
与
4
n
−
1
4
n
+
1
之间存在误差
\frac{\bigtriangleup t_{n+1} }{\bigtriangleup t_{n} } 与\frac{4n-1}{4n+1} 之间存在误差
△tn△tn+1与4n+14n−1之间存在误差
为消除该误差,在计算过程中需乘上一个误差系数K
取
K
=
0.676
取K=0.676
取K=0.676
1.4计算定时器初值
Δ
t
1
=
2
∗
s
t
e
p
a
0
\Delta t_{1} =\sqrt{\frac{2*step}{a_{0} } }
Δt1=a02∗step
校正后:
Δ
t
1
=
K
2
∗
s
t
e
p
a
0
\Delta t_{1} =K\sqrt{\frac{2*step}{a_{0} } }
Δt1=Ka02∗step
定时时间递推关系:
Δ
t
n
+
1
=
4
n
−
1
4
n
+
1
Δ
t
n
\Delta t_{n+1} =\frac{4n-1}{4n+1} \Delta t_{n}
Δtn+1=4n+14n−1Δtn
定时器采用16位溢出模式:
C
n
=
65536
−
Δ
t
n
∗
X
t
a
l
12
C_{n} =65536-\Delta t_{n} *\frac{Xtal}{12}
Cn=65536−Δtn∗12Xtal
Xtal:晶振频率
Cn:定时器初值
二. 加速+减速过程计算
根据基本运动定理:
- w m a x = a 0 ∗ t n 0 … … ⑪ w_{max} =a_{0} *t_{n0} ……⑪ wmax=a0∗tn0……⑪
- w m a x = a 2 ∗ t n 2 … … ⑫ w_{max}=a_{2} *t_{n2} ……⑫ wmax=a2∗tn2……⑫
- a n g l e 0 = 1 2 a 0 ∗ t n 0 2 … … ⑬ angle_{0}=\frac{1}{2} a_{0} *t_{n0}^{2} ……⑬ angle0=21a0∗tn02……⑬
- a n g l e 2 = 1 2 a 2 ∗ t n 2 2 … … ⑭ angle_{2}=\frac{1}{2} a_{2} *t_{n2}^{2} ……⑭ angle2=21a2∗tn22……⑭
- a n g l e = a n g l e 0 + a n g l e 2 … … ⑮ angle=angle_{0}+angle_{2}……⑮ angle=angle0+angle2……⑮
由⑪~⑮得:
a
n
g
l
e
0
=
a
n
g
l
e
a
2
a
0
+
a
2
…
…
⑯
angle_{0}=angle\frac{a_{2}}{a_{0}+a_{2}}……⑯
angle0=anglea0+a2a2……⑯
w_max:角速度(°/s)
a0:加速度(°/s^2)
tn0:加速时间(s)
angle0:加速角度(°)
a2:减速度(°/s^2)
tn2:减速时间(s)
angle2:减速角度(°)
angle:总角度(°)
三. 判断匀速阶段是否存在
3.1 假设存在匀速阶段,运动图像如下
3.2 假设不存在匀速阶段,运动图像如下
如下四个变量由用户设定:(配套程序角速度单位均换算为RPM)
angle:转动角度(°)
a0:加速度(°/s^2)
a0:减速度(°/s^2)
w:角速度上限(°/s)
3.3判断angle_max与angle0的大小,即可判断出是否存在匀速阶段
angle_max:不存在匀速阶段情况下,加速角度(°)
angle0:存在匀速阶段情况下,加速角度(°)
由⑯得:
a
n
g
l
e
m
a
x
=
a
n
g
l
e
a
2
a
0
+
a
2
angle_{max}=angle\frac{a_{2}}{a_{0}+a_{2}}
anglemax=anglea0+a2a2
由位移定理得:
a
n
g
l
e
0
=
w
2
2
a
0
angle_{0}=\frac{w^{2} }{2a_{0}}
angle0=2a0w2
如果angle_max>angle0,则存在匀速阶段
- 加速角度 a n g l e 0 = w 2 2 a 0 加速角度angle_{0}=\frac{w^{2} }{2a_{0}} 加速角度angle0=2a0w2
- 加速角度 a n g l e 2 = w 2 2 a 2 加速角度angle_{2}=\frac{w^{2} }{2a_{2}} 加速角度angle2=2a2w2
-
匀速角度
a
n
g
l
e
1
=
a
n
g
l
e
−
a
n
g
l
e
0
−
a
n
g
l
e
2
匀速角度angle_{1}=angle-angle_{0}-angle_{2}
匀速角度angle1=angle−angle0−angle2
将转动角度换算为电机步数: - 加速步数 a n g l e 0 s t e p = w 2 2 a 0 ∗ 5 X 9 = 5 X w 2 18 a 0 = K 3 a 0 加速步数angle_{0step}=\frac{w^{2} }{2a_{0}}*\frac{5X }{9}=\frac{5Xw^{2} }{18a_{0}}=\frac{K_{3} }{a_{0}} 加速步数angle0step=2a0w2∗95X=18a05Xw2=a0K3
- 减速步数 a n g l e 2 s t e p = w 2 2 a 2 ∗ 5 X 9 = 5 X w 2 18 a 2 = K 3 a 2 减速步数angle_{2step}=\frac{w^{2} }{2a_{2}}*\frac{5X }{9}=\frac{5Xw^{2} }{18a_{2}}=\frac{K_{3} }{a_{2}} 减速步数angle2step=2a2w2∗95X=18a25Xw2=a2K3
- 匀速步数 a n g l e 1 s t e p = a n g l e s t e p − a n g l e 0 s t e p − a n g l e 2 s t e p 匀速步数angle_{1step}=angle_{step}-angle_{0step}-angle_{2step} 匀速步数angle1step=anglestep−angle0step−angle2step
- 其中 K 3 = 5 X w 2 18 其中K_{3}=\frac{5Xw^{2} }{18} 其中K3=185Xw2
angle_max≤angle0,则不存在匀速阶段
- 加速角度 a n g l e 0 = a n g l e m a x = a n g l e a 2 a 0 + a 2 加速角度angle_{0}=angle_{max}=angle\frac{a_{2}}{a_{0}+a_{2}} 加速角度angle0=anglemax=anglea0+a2a2
-
减速角度
a
n
g
l
e
2
=
a
n
g
l
e
−
a
n
g
l
e
0
减速角度angle_{2}=angle-angle_{0}
减速角度angle2=angle−angle0
将转动角度换算为电机步数: - 加速步数 a n g l e 0 s t e p = a n g l e s t e p a 2 a 0 + a 2 加速步数angle_{0step}=angle_{step}\frac{a_{2} }{a_{0}+a_{2}} 加速步数angle0step=anglestepa0+a2a2
- 减速步数 a n g l e 2 s t e p = a n g l e s t e p − a n g l e 0 s t e p 减速步数angle_{2step}=angle_{step}-angle_{0step} 减速步数angle2step=anglestep−angle0step
- 其中 a n g l e s t e p = 5 X a n g l e 9 其中angle_{step}=\frac{5Xangle }{9} 其中anglestep=95Xangle
四、程序流程如下
五、测试
烧录hex文件后,单片机上电,步进电机经历T型加减速过程,总共转动360°
六、功能扩展
扩展1:(实测视频见文末百度网盘)
① 增加4个按键,控制电机启动、转角、加速度、减速度、速度上限
② 增加数码管,显示信息
七、总结
上述内容对T型加减速的过程进行了推导与计算,可以实现常规的T型加减速运动。但是其中有两个缺陷:
- 起始速度从0开始,在步进电机实际使用过程中,起始速度没有必要从零开始,如果速度不从0开始,上述递推过程是不成立的
- ∆t(n+1)=(4n-1)/(4n+1)∆tn递推公式对51单片机而言,计算量很大,12MHz晶振频率下,计算一次需要约0.8ms,导致脉冲频率上限很低,在驱动器细分为2的情况下,步进电机速度上限约为200RPM,如采用更大细分,速度上限会进一步降低
对此两个问题点,对T型加减速进行了优化,请见下一节内容
八、附件
Hex测试程序+测试视频请见百度网盘
链接: https://pan.baidu.com/s/1j70qb8vVxGnXTfHf4T4qhg
提取码: fnre
Keil源码请见某宝,搜索:【皮皮黄步进电机】
↓↓↓点击下方【目录】,查看本系列全部文章