打印
[电机控制]

步进电机入门技术

[复制链接]
1707|7
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
步进电机可用于微控制器项目的各个领域,例如制造机器人、机械臂、自动门锁系统等。本教程将向您解释步进电机(单极和双极步进电机)的构造、基本基本、不同的控制类型(半步进和全步进)、接口技术(使用 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桥,因为它允许独立控制所施加电源的极性。这可以如下图所示:


使用特权

评论回复
5
gaoyang9992006|  楼主 | 2023-11-16 09:07 | 只看该作者
假设步进电机在端口 1.0 连接到端口 1.3。调整延迟将增加或减少电机的速度。
#include <REG2051.H>
#define stepper P1

void delay()
{
        unsigned char i,j,k;
        for(i=0;i<6;i++) {
                for(j=0;j<255;j++)
                        for(k=0;k<255;k++);
        }
}

void main()
{
        while (1) {
                stepper = 0x0C;
                delay();
                stepper = 0x06;
                delay();
                stepper = 0x03;
                delay();
                stepper = 0x09;
                delay();
        }
}

        org 0H

        stepper equ P1

main:
        mov stepper, #0CH
        acall delay
        mov stepper, #06H
        acall delay
        mov stepper, #03H
        acall delay
        mov stepper, #09H
        acall delay
        sjmp main

delay:
        mov r7,#4
wait2:
        mov r6,#0FFH
wait1:
        mov r5,#0FFH
wait:
        djnz r5,wait
        djnz r6,wait1
        djnz r7,wait2
        ret
        end


使用特权

评论回复
6
gaoyang9992006|  楼主 | 2023-11-16 09:08 | 只看该作者
半步序列
void main()
{
        while (1) {
                stepper = 0x08;
                delay();
                stepper = 0x0C;
                delay();
                stepper = 0x04;
                delay();
                stepper = 0x06;
                delay();
                stepper = 0x02;
                delay();
                stepper = 0x03;
                delay();
                stepper = 0x01;
                delay();
                stepper = 0x09;
                delay();
        }
}


使用特权

评论回复
7
gaoyang9992006|  楼主 | 2023-11-16 09:09 | 只看该作者
单极步进电机的 2 线连接编程
void main()
{
        while (1) {
                stepper = 0x03;
                delay();
                stepper = 0x01;
                delay();
                stepper = 0x00;
                delay();
                stepper = 0x02;
                delay();
        }
}

使用特权

评论回复
8
gaoyang9992006|  楼主 | 2023-11-16 09:10 | 只看该作者
双极步进电机编程
void main()
{
        while (1) {
                stepper = 0x08;
                delay();
                stepper = 0x02;
                delay();
                stepper = 0x04;
                delay();
                stepper = 0x01;
                delay();
        }
}


使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

认证:西安公路研究院南京院
简介:主要工作从事监控网络与通信网络设计,以及从事基于嵌入式的通信与控制设备研发。擅长单片机嵌入式系统物联网设备开发,音频功放电路开发。

1897

主题

15634

帖子

198

粉丝