实则为步进电机的控制
只是简单记录一下个人认为重要的控制原理。
知识点
电机转动
通过__HAL_TIM_SET_COMPARE(&htim1, TIM_CHANNEL_4, tmp);不停的设置比较值来实现,这个值决定了管脚下一次翻转电平的时间。如设置定时器频率为20M,若此值设置为500,输出脉冲频率为20*106/500 / 2 = 20K.为什么要除2,是因为一高一低两个电平变化才构成一个完整驱动脉冲。
要是步进电机转动一圈需要4K个脉冲的话,那么这个驱动频率可以让电机每秒转5圈。
控制
这个操作一般都是在定时器中断中完成的,也就是定时器中断完成比较值的更新,根据不同加速度状态,可设置不同的值和状态。以此完成梯形或s形速度的设置。
加减速原理
加减速,都是由基础频率(低于电机启动频率)与跳变频率(在基础频率上逐渐提高的频率)
加减速曲线,一般为梯形,指数或s形曲线,对不同的负载,不同转速,需要选择合适的基础频率与跳变频率,才能达到最佳的控制效果。
完成步进电机的加减速时间为300ms以上,过短的时间,对绝大多数步进电机来说,很难实现高速旋转。
梯形加速度的实现原理
一个非常重要的步骤就是计算电机转动所需要定时器输出的脉冲频率;它的大小决定着电机的转速。如下图所示:

加速的过程就是将脉冲的发送间隔时间逐渐变短。减速可直观理解成加速的逆过程。
精确计算时间间隔
脉冲时间间隔表达
δ t = c t t = c f t \delta t=ct_t=\frac{c}{f_t} δt=ctt=ftc
ft:表示定时器的频率,倒数的话,就是定时器的计数周期,也就一个时间,如定时器频率采用3分频,那么就是80M/(3+1)=20M
c:以tt为单位的完整的脉冲,所代表的定时器的计数值。如:设定定时器计到500次,才翻转一下电平,c=500.
步距角
α = 2 π s p r \alpha= \frac{2\pi}{spr} α=spr2π
spr:步进电机转一圈的脉冲数,这个其实是常数。确定好细分数之后,这个就定了。
步距角对应的控制含义为:转1o弧度所需要的脉冲数。步数的确定要看电机,如电机标定一步为1.8o,那么转一圈所需要步数为360/1.8=200步。200步X控制器细分数=转一圈所需要脉冲数。
位置
Θ = n α \Theta= n\alpha Θ=nα,也可以由速度来表示: θ ( t ) = ∫ τ = 0 t ω ( t ) d τ = 1 2 ω ˙ t 2 = n α \theta(t)=\int_{\tau=0}^{t} \omega(t) d \tau=\frac{1}{2} \dot{\omega} t^{2}=n \alpha θ(t)=∫τ=0tω(t)dτ=21ω˙t2=nα
一定时间内,电机所转过角度,也就是电机的位置
变形后,可以求得到当前位置,电机所需要的时间: t n = 2 n α ω ˙ t_{n}=\sqrt{\frac{2 \mathrm{n} \alpha}{\dot{\omega}}} tn=ω˙2nα,两边平方,得到 n = ω ˙ t n 2 2 α \mathrm{n}=\frac{\dot{\omega} t_{n}^{2}}{2 \alpha} n=2αω˙tn2,又因为tn=速度/加速度,将tn代入公式,可得: n ω ˙ = ω n 2 2 α \mathrm{n} \dot{\omega}=\frac{\omega_{n}^{2}}{2 \alpha} nω˙=2αωn2
用运动到n+1个脉冲位置所花时间减去tn,就可以得到第n个脉冲的时间间隔,cn*tt。(cn是定时器比较值,tt为定时器计数间隔)
n:脉冲数: c n t t = t n + 1 − t n = 2 α ω ˙ ( n + 1 − n ) c_{n} t_{t}=t_{n+1}-t_{n}=\sqrt{\frac{2 \alpha}{\dot{\omega}}}(\sqrt{n+1}-\sqrt{n}) cntt=tn+1−tn

最低0.47元/天 解锁文章
5万+





