步进电机驱动基础

步进电机每输入一个脉冲信号,转子就转动一个角度或前进一步,其输出的角度输入的脉冲数成正比,转速与脉冲频率成正比。它的驱动方式也比普通的有刷直流电机复杂。

本节我们就来讲讲步进电机最基础的驱动方式。

1)步进电机的内部结构

先简单介绍一下主要的两种步进电机:单极性和双极性。

如下图所示,左边是单极性电机;右边是双极性电机。单极性电机线圈内的电流只有一个方向,双极性电机线圈内的电流是双向的:

而相数,则是内部线圈的组数;一般的步进电机都可以看作是两相电机变化而来的。

本文我们使用最简单的五线四相制的电机(28BYJ-48),驱动方法也都是以它来讲的,其他种类的大同小异。就是如下图这种步进电机,以及驱动板:

它内部的接线关系如下图所示,正极是公共的,其他四个端口各对应一组线圈的负极

驱动板的原理图如下,就是一个nln2003的达林顿管驱动器(忽略右下角的灯,基本毫无用处⊙﹏⊙b汗),IN1~IN4处输入高电平,对应的OUT1~OUT4会输出低电平:

2)步进电机的驱动方法

最​基本的方法有3种,单4拍法、双4拍法、单双8拍法。

a)单4拍法驱动

驱动过程如下图所示,4个步骤一个周期,每个时刻只有一相通电:

先给A相通电,其他相断电,则转子的对应极被吸引到A相处,如步骤1;

后续依次给B、C、D相通电,则转子会转到B、C、D处,如步骤2、3、4;

最后再给A相通电,其他相断电,转子又回到A处;周而复始,使得转子不断旋转。

各相的导通过程如下图所示:

这种方法每次都只有一相通电,所以称为单4拍法。

b)双4拍法驱动

驱动过程如下图所示,也是4个步骤一个周期,不同的是每个时刻都有相邻的两相通电:

先给A相、B相通电,其他相断电,则转子的对应极被吸引到A、B相中间处,如步骤1;

后续依次给BC、CD、DA相通电,如步骤2、3、4;

最后再给A、B相通电,其他相断电,转子又回到AB相之间;周而复始,使得转子不断旋转。

双4拍法每个时刻会有两组线圈导通,所以电机的输出力矩比单4拍法更大。

各相的导通过程如下图所示:

c)单双8拍法驱动

驱动过程如下图所示,8个步骤一个周期:

这种方法类似于单4拍和双4拍的组合。

先给A相通电,其他相断电,转子在A处;

再给A、B相通电,其他相断电,则转子来到AB之间;

然后给B相通电,其他相断电,转子来到B处;

再给B、C相通电,其他相断电,转子来到BC之间;

之后类似,一共8个步骤可以完成一个周期的运动。

8拍法驱动时,转子的位置比4拍法多两个中间态,所以转动时的位置控制更加精确一些,但是由于它有时是一相通电,有时是两相通电,所以在不同位置的力矩是不同的

各相的导通过程如下图所示:

3)使用stm32编程驱动电机

先看连接方式,使用PA0、PA1、PA2、PA3驱动A、B、C、D四相。PA0~3连接到驱动板的IN1~IN4;驱动板使用5V供电。

经过上一节了解了上述三种驱动方法后,就很容易写出驱动代码了。

如下是单4拍驱动的主要代码:

定义两个常量数组,F_Rotation存正向旋转的各相导通值,B_Rotation存反向旋转的值;

主循环中,每隔一个周期,去改变接通的相,4个拍一循环,就能实现电机转动了。

双四拍只要将定义的数组值更改一下就可以实现。

如下是8拍驱动的代码,原理是一样的,就不多解释了:

4)注意事项

对于确定的驱动方式,步进电机每拍转过的角度是相同的,所以,如果想要改变转速,只要改变每拍的延时就可以了,也就是改变周期。

但是要注意,不能超过电机参数要求,如我们使用的这个电机(28BYJ-48)的参数:

最大空载牵出频率>900pps,最大空载牵入频率>500pps。

也就是说空载转动时,最快的驱动拍频率最好不要超过900Hz;空载启动时,最快的驱动拍频率最好不要超过500Hz,因为启动时初始转速从零开始,驱动拍太快的话会失步,可能无法转动起来。所以程序里也设计成了500Hz(2ms延时)一拍。

一般情况下,系统最好设计成,启动时慢转速,之后逐渐加快到需要的转速。

好了,本节就讲到这里了,有关步进电机的知识这里只是很基础的一部分,后续有时间再一起深入学习。(本节中多张图片出自野火的《电机应用开发实战指南—基于STM32》,在此感谢!)

欢迎关注我的公众号,可留言“资料”获取相关资料和软件:

猜你喜欢

转载自blog.csdn.net/little_grapes/article/details/121601326