[电机控制] 步进电机入门技术

[复制链接]
 楼主| gaoyang9992006 发表于 2023-11-16 09:02 | 显示全部楼层 |阅读模式
步进电机可用于微控制器项目的各个领域,例如制造机器人、机械臂、自动门锁系统等。本教程将向您解释步进电机(单极和双极步进电机)的构造、基本基本、不同的控制类型(半步进和全步进)、接口技术(使用 L293D 或 ULN2003)以及用 C 和汇编编程微控制器以控制步进电机。
步进电机的种类
市场上基本有两种类型的步进电机。

单极步进电机
单极步进电机有五根或六根电线和四个线圈(实际上是两个线圈由每个线圈上的中心连接分隔)。线圈的中心连接连接在一起并用作电源连接。它们被称为单极步进器,因为功率总是来自这一极。

双极步进电机
双极步进电机通常有四根电线从中伸出。与单极步进电机不同,双极步进电机没有公共中心连接。它们有两组独立的线圈。您可以通过测量导线之间的电阻来将它们与单极步进电机区分开来。您应该找到两对电阻相等的电线。如果您的仪表引线连接到两根未连接的电线(即未连接到同一线圈),您应该看到无限电阻(或没有连续性)。
如前所述,我们将主要讨论“单极步进电机”,这是市场上最常见的步进电机类型。下面给出了 6 导联步进电机的简单示例,在 5 导联步进电机中,导线 5 和 6 连接在一起,使 1 导线成为公共导线。

步进电机的工作原理
现在让我们讨论步进电机的操作原理。当我们给步进电机的线圈通电时,步进电机的轴(实际上是永磁体)根据通电线圈的磁极对齐。因此,当电机线圈按特定顺序通电时,电机轴往往会根据线圈的磁极自行对齐并因此旋转。下面给出了通电操作的一个小示例。
步进电机线圈

从示例中可以看出,当线圈“A”通电时,如上图所示,在“A+A\”处产生南北极性,磁轴根据产生的极性自动对准。当下一个线圈通电时,轴再次对齐并迈出一步。因此,工作原则。
步进电机线圈通电时

我们已经看到,要使步进电机工作,我们需要按顺序给线圈通电。
步骤顺序
步进电机可以以两种不同的模式或顺序驱动。即 完整步骤序列
项目符号列表项
半步序列
我们将一一介绍这些序列。

完整步骤序列

在完整的步进序列中,两个线圈同时通电,电机轴旋转。线圈必须通电的顺序如下表所示。

完整模式序列的工作如下图所示。
全模式序列动画
半步序列
在半模式步进序列中,电机步距角减小到全模式下角度的一半。因此,角度分辨率也增加了,即在全模式下,角分辨率增加了一倍。同样在半模式序列中,步数是全模式的两倍。半模式通常优先于全模式。下表显示了线圈通电的模式。
半模序列的工作原理如下图所示。
半模式序列动画









本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
 楼主| gaoyang9992006 发表于 2023-11-16 09:03 | 显示全部楼层
步距角
步进电机的步距角定义为电机在一步内走过的角度。要计算步距角,只需将 360 除以电机完成一圈所需的步数。正如我们所看到的,在半模式下,电机完成一圈所采取的步数增加了一倍,因此步距角减小到一半。

如上例所示,步进电机在全模式下旋转需要 4 个步骤才能完成一圈,因此步距角可以计算为......

步距角 ø = 360° / 4 = 90°

在半模步距角的情况下,步距角减半,因此为 45°。

因此,通过这种方式,我们可以计算任何步进电机的步距角。通常步进角在您使用的步进电机的规格表中给出。了解步进电机的步距角有助于您校准电机的旋转,还可以帮助您将电机移动到正确的角度位置。

单极步进电机2线控制的步进顺序
如上所述,在序列的每一步中,两根导线总是设置为相反的极性。正因为如此,可以只用两根线而不是四根线来控制步进电机,电路稍微复杂一些。步进顺序与两个线圈 A 和 B 的步进顺序相同,并且 A\ 和 B\ 的极性值相反。顺序如下表所示:


双极步进电机的步进顺序
双极电机结构更简单。它有两个绕组,没有中心抽头,中心有一个永磁体,就像单极步进电机一样。由于结构更简单,步进顺序有点复杂,因为两个线圈的功率必须以这样一种方式控制,即磁极的极性被反转。该极性序列如下表所示。




本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
 楼主| gaoyang9992006 发表于 2023-11-16 09:04 | 显示全部楼层
步进电机连接
连接单极步进电机
实际上,您可以通过多种方式将步进电机连接到控制器,其中最常用的接口是:

使用 L293D 的接口 - H 桥电机驱动器
使用 ULN2003/2004 的接口 - 达林顿阵列
我们将一一讨论这两种连接技术。上述方法需要 4 个控制器引脚作为接口。

使用 L293D 连接单极步进电机

如上图所示,四个引脚“控制器引脚 1”、2、3 和 4 将根据控制器中编程的步进顺序控制步进电机的运动和方向。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
 楼主| gaoyang9992006 发表于 2023-11-16 09:05 | 显示全部楼层
使用 ULN2003/2004 连接单极步进电机

正如在 L293D 的情况下已经讨论过的,在这个电路中,四个引脚“控制器引脚 1”、2、3 和 4 将根据控制器发送的步进顺序控制步进电机的运动和方向。

用于单极步进电机的 2 线连接
我们已经看到了连接单极步进电机的常用 4 线连接方法,但我们可以借助 2 线连接方法简化设计,使控制器使用更少的引脚。2线连接电路如下图所示。

连接双极步进电机
正如我们所研究的,双极步进电机有 2 个不同的线圈。双极步进电机的步进顺序与单极步进电机的步进顺序相同。为此,驱动电路需要一个H桥,因为它允许独立控制所施加电源的极性。这可以如下图所示:


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
 楼主| gaoyang9992006 发表于 2023-11-16 09:07 | 显示全部楼层
假设步进电机在端口 1.0 连接到端口 1.3。调整延迟将增加或减少电机的速度。
  1. #include <REG2051.H>
  2. #define stepper P1

  3. void delay()
  4. {
  5.         unsigned char i,j,k;
  6.         for(i=0;i<6;i++) {
  7.                 for(j=0;j<255;j++)
  8.                         for(k=0;k<255;k++);
  9.         }
  10. }

  11. void main()
  12. {
  13.         while (1) {
  14.                 stepper = 0x0C;
  15.                 delay();
  16.                 stepper = 0x06;
  17.                 delay();
  18.                 stepper = 0x03;
  19.                 delay();
  20.                 stepper = 0x09;
  21.                 delay();
  22.         }
  23. }

  1.         org 0H

  2.         stepper equ P1

  3. main:
  4.         mov stepper, #0CH
  5.         acall delay
  6.         mov stepper, #06H
  7.         acall delay
  8.         mov stepper, #03H
  9.         acall delay
  10.         mov stepper, #09H
  11.         acall delay
  12.         sjmp main

  13. delay:
  14.         mov r7,#4
  15. wait2:
  16.         mov r6,#0FFH
  17. wait1:
  18.         mov r5,#0FFH
  19. wait:
  20.         djnz r5,wait
  21.         djnz r6,wait1
  22.         djnz r7,wait2
  23.         ret
  24.         end


 楼主| gaoyang9992006 发表于 2023-11-16 09:08 | 显示全部楼层
半步序列
  1. void main()
  2. {
  3.         while (1) {
  4.                 stepper = 0x08;
  5.                 delay();
  6.                 stepper = 0x0C;
  7.                 delay();
  8.                 stepper = 0x04;
  9.                 delay();
  10.                 stepper = 0x06;
  11.                 delay();
  12.                 stepper = 0x02;
  13.                 delay();
  14.                 stepper = 0x03;
  15.                 delay();
  16.                 stepper = 0x01;
  17.                 delay();
  18.                 stepper = 0x09;
  19.                 delay();
  20.         }
  21. }


 楼主| gaoyang9992006 发表于 2023-11-16 09:09 | 显示全部楼层
单极步进电机的 2 线连接编程
  1. void main()
  2. {
  3.         while (1) {
  4.                 stepper = 0x03;
  5.                 delay();
  6.                 stepper = 0x01;
  7.                 delay();
  8.                 stepper = 0x00;
  9.                 delay();
  10.                 stepper = 0x02;
  11.                 delay();
  12.         }
  13. }

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
 楼主| gaoyang9992006 发表于 2023-11-16 09:10 | 显示全部楼层
双极步进电机编程
  1. void main()
  2. {
  3.         while (1) {
  4.                 stepper = 0x08;
  5.                 delay();
  6.                 stepper = 0x02;
  7.                 delay();
  8.                 stepper = 0x04;
  9.                 delay();
  10.                 stepper = 0x01;
  11.                 delay();
  12.         }
  13. }


您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:如果你觉得我的分享或者答复还可以,请给我点赞,谢谢。

2045

主题

16351

帖子

222

粉丝
快速回复 返回顶部 返回列表