良许Linux教程网 干货合集 步进电机驱动基础

步进电机驱动基础

步进电机是一种在输入脉冲信号时,转子会按照一定角度或步长前进的电机。转子输出的角度与输入的脉冲数成正比,转速与脉冲频率成正比。与普通的有刷直流电机相比,步进电机的驱动方式更为复杂。

本节将介绍步进电机最基础的驱动方式。

1)步进电机的内部结构

步进电机主要有两种类型:单极性和双极性。

以下图为例,左侧为单极性电机,右侧为双极性电机。单极性电机的线圈内电流方向只有一个,而双极性电机的线圈内电流可正可负:

(图片无法深度伪原创,请直接参考原文。)

在这两种类型中,分别有两个线圈(A和B)协同工作以产生旋转。通过适当的电流顺序和频率输入到线圈,可以实现步进电机的转动。线圈中电流的变化会产生磁场,从而影响转子的位置和运动。

以上是对步进电机的内部结构的简要介绍。接下来,我们将讨论步进电机的驱动方式。

image-20231013220237687
image-20231013220237687

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

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

image-20231013220240989
image-20231013220240989

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

image-20231013220244631
image-20231013220244631

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

image-20231013220247743
image-20231013220247743

2)步进电机的驱动方法

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

a)单4拍法驱动

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

image-20231013220250436
image-20231013220250436

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

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

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

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

image-20231013220253498
image-20231013220253498

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

b)双4拍法驱动

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

image-20231013220256483
image-20231013220256483

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

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

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

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

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

image-20231013220259294
image-20231013220259294

**
**

c)单双8拍法驱动

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

image-20231013220302370
image-20231013220302370

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

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

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

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

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

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

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

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

image-20231013220305128
image-20231013220305128

3)使用stm32编程驱动电机

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

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

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

image-20231013220316073
image-20231013220316073

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

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

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

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

image-20231013220324381
image-20231013220324381

4)注意事项

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

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

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

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

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

以上就是良许教程网为各位朋友分享的Linu系统相关内容。想要了解更多Linux相关知识记得关注公众号“良许Linux”,或扫描下方二维码进行关注,更多干货等着你 !

137e00002230ad9f26e78-265x300
本文由 良许Linux教程网 发布,可自由转载、引用,但需署名作者且注明文章出处。如转载至微信公众号,请在文末添加作者公众号二维码。
良许

作者: 良许

良许,世界500强企业Linux开发工程师,公众号【良许Linux】的作者,全网拥有超30W粉丝。个人标签:创业者,CSDN学院讲师,副业达人,流量玩家,摄影爱好者。
上一篇
下一篇

发表评论

联系我们

联系我们

公众号:良许Linux

在线咨询: QQ交谈

邮箱: yychuyu@163.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

关注微博
返回顶部