0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

关于MCU和DSP的步进电机控制技术分析

贸泽电子 来源:djl 作者:贸泽电子 2019-08-16 17:05 次阅读

步进电机已经渗透入我们生活的方方面面,本文介绍了一些重要的步进电机相关技术,为开发人员基本了解步进电机的工作原理提供了足够的信息,同时也介绍了用微控制器数字信号处理器控制步进电机的方法。

关于MCU和DSP的步进电机控制技术分析

步进电机也叫步进器,它利用电磁学原理,将电能转换为机械能,人们早在20世纪20年代就开始使用这种电机。随着嵌入式系统(例如打印机、磁盘驱动器、玩具、雨刷、震动寻呼机、机械手臂和录像机等)的日益流行,步进电机的使用也开始暴增。

不论在工业、军事、医疗、汽车还是娱乐业中,只要需要把某件物体从一个位置移动到另一个位置,步进电机就一定能派上用场。步进电机有许多种形状和尺寸,但不论形状和尺寸如何,它们都可以归为两类:可变磁阻步进电机和永磁步进电机。本文重点讨论更为简单也更常用的永磁步进电机。

步进电机的构造

如图1所示,步进电机是由一组缠绕在电机固定部件--定子齿槽上的线圈驱动的。通常情况下,一根绕成圈状的金属丝叫做螺线管,而在电机中,绕在齿上的金属丝则叫做绕组、线圈、或相。如果线圈中电流的流向如图1所示,并且我们从电机顶部向下看齿槽的顶部,那么电流在绕两个齿槽按逆时针流向流动。根据安培定律和右手准则,这样的电流会产生一个北极向上的磁场。

关于MCU和DSP的步进电机控制技术分析

现在假设我们构造一个定子上缠绕有两个绕组的电机,内置一个能够绕中心任意转动的永久磁铁,这个可旋转部分叫做转子。图2给出了一种简单的电机,叫做双相双极电机,因为其定子上有两个绕组,而且其转子有两个磁极。如果我们按图2a所示方向给绕组1输送电流,而绕组2中没有电流流过,那么电机转子的南极就会自然地按图中所示,指向定子磁场的北极。

再假设我们切断绕组1中的电流,而按图2b所示方向给绕组2输送电流,那么定子的磁场就会指向左侧,而转子也会随之旋转,与定子磁场方向保持一致。

接着,我们再将绕组2的电流切断,按照图2c的方向给绕组1输送电流,注意:这时绕组1中的电流流向与图2a所示方向相反。于是定子的磁场北极就会指向下,从而导致转子旋转,其南极也指向下方。

然后我们又切断绕组1中的电流,按照图2d所示方向给绕组2输送电流,于是定子磁场又会指向右侧,从而使得转子旋转,其南极也指向右侧。

关于MCU和DSP的步进电机控制技术分析

最后,我们再一次切断绕组2中的电流,并给绕组1输送如图2a所示的电流,这样,转子又会回到原来的位置。

至此,我们对电机绕组完成了一个周期的电激励,电机转子旋转了一整圈。也就是说,电机的电频率等于它转动的机械频率。

如果我们用1秒钟顺序完成了图2所示的这4个步骤,那么电机的电频率就是1Hz。其转子旋转了一周,因而其机械频率也是1Hz。总之,一个双相步进电机的电频率和机械频率之间的关系可以用下式表示:

fe=fm*P/2 (1)

其中,fe代表电机的电频率,fm代表其机械频率,而P则代表电机转子的等距磁极数。

从图2中我们还可以看出,每一步操作都会使转子旋转90°,也就是说,一个双相步进电机每一步操作造成的旋转度数可由下式表示:


1 step= 180°/P(2)

由等式(2)可知,一个双极电机每动作一次可以旋转180°/2=90°,这与我们在图2中看到的情形正好相符。此外,该等式还表明,电机的磁极数越多,步进精度就越高。常见的是磁极数在12和200个之间的双相步进电机,这些电机的步进精度在15°和 0.9°之间。

关于MCU和DSP的步进电机控制技术分析

图3给出的例子是一个双相、6极步进电机,其中包含3个永久磁铁,因而有6个磁极。第一步,如图3a所示,我们给绕组1施加电压,在定子中产生一个北极指向其顶部的磁场,于是,转子的南极(图3a中红色的“S”一端)转向了该图的上方。接着,在图3b中,我们给绕组2施加电压,定子中产生一个北极指向其左侧的磁场。

于是,转子的一个距离最近的南极转向了图的左方,即转子顺时针转动了30°。第三步,在图3c中,我们又向绕组1施加一个电压,在定子中产生一个北极指向图下方的磁场,从而又使转子顺时针旋转30°到达图3c所示的位置。而在图3d中,我们给绕组2施加电压,在定子中产生一个北极指向定子右侧的磁场,再一次使转子顺时针旋转30°,到达图3d所示的位置。

最后,我们再向绕组1施加电压,产生一个如图3a所示的北极指向定子上方的磁场,使得转子顺时针旋转30°,结束一个电周期。如此可以看出,4步电激励造成了120°的机械旋转。也就是说,该电机的电频率是机械频率的3倍,这一结果符合等式(1)。此外,我们从图3和等式(2)也能看出,该电机的转子每一步旋转30°。

关于MCU和DSP的步进电机控制技术分析

如果同时向两个绕组输送电流,还能增大电机的扭矩,如图4所示。这时,电机定子的磁场是两个绕组各自产生的磁场的矢量和,虽然这一磁场每一次动作仍然只使电机旋转90°,就象图2和图3中一样,但因为我们同时激励两个电机绕组,所以此时的磁场比单独激励一个绕组时更强。由于该磁场是两个垂直场的矢量和,因此它等于单独每个场的2×1.414倍,从而电机对其负载施加的扭矩也成正比增大。

电机的激励顺序

既然我们知道了一系列激励会使步进电机旋转,接下来就要设计硬件来实现所需的步进序列。一块能让电机动起来的硬件(或结合了硬件和软件的一套设备)就叫做电机驱动器

从图4中可以看出我们怎样激励双相电机的绕组才能使电机转子旋转,图中,电机内的绕组抽头分别被标为1A、1B、2A和2B。其中,1A和1B是绕组1的两个抽头,2A和2B则是绕组2的两个抽头。

首先,要给脚1B和2B施加一个正电压,并将1A和2A接地。然后,给脚1B和2A施加一个正电压,而将1A和2B接地,这一过程其实取决于导线绕齿槽缠绕的方向,假设导线缠绕的方向与上一节所述相符。依次进行下去,我们就得到了表1中总结的激励顺序,其中,“1”表示正电压,“0”表示接地。

关于MCU和DSP的步进电机控制技术分析

电流在电机绕组中有两种可能的流向,这样的电机就叫做双极电机和双极驱动序列。双极电机通常由一种叫做H桥的电路驱动,图5给出了连接H桥和步进电机两根抽头的电路。

H桥通过一个电阻连接到一个电压固定的直流电源(其幅度可根据电机的要求选取),然后,该电路再经过4个开关(分别标为S1、S2、S3和S4)连接到绕组的两根抽头。这一电路的分布看起来有点象一个大写字母H,因此叫做H桥。

从表1中可以看出,要激励该电机,第一步应将抽头2A设为逻辑0,2B设为逻辑1,于是,我们可以闭合开关S1和S4,并断开开关S2和S3。接着,需要将抽头2A设为逻辑1,2B设为逻辑0,于是,我们可以闭合S2、S3,并断开S1和S4。与此类似,第三步我们可以闭合S2、S3并断开S1和S4,第四步则可以闭合S1、S4并断开S2、S3。

对绕组1的激励方法也不外乎如此,使用一对H桥就能产生需要的激励信号序列。表2所示就是激励过程中每一步开关所在的位置。

关于MCU和DSP的步进电机控制技术分析

注意,如果R=0,而开关S1和S3又不小心同时闭合,那么流经开关的电流将达到无穷大。这时,不但开关会被烧坏,电源也可能损坏,因此电路中使用了一个非零阻值的电阻。尽管这个电阻会带来一定的功耗,也会降低电机驱动器的效率,但它可以提供短路保护。

单极电机及其驱动器

前面我们已经讨论了双极步进电机和驱动器。单极电机与双极电机类似,不同的是在单极电机中外部能够接触到的只有每个绕组的中心抽头,如图6所示。我们将从绕组顶部抽出的抽头标为抽头B,底部抽出的标为抽头A,中间的为抽头C。

有时我们会遇到一些抽头没有标注的电机,如果我们清楚步进电机的构造,就很容易通过测量抽头之间的阻值,识别出哪些抽头属于哪根绕组。不同绕组的抽头之间阻抗通常为无穷大。如果经测量,抽头A和C之间的阻抗为100欧姆,那么抽头B和C之间的阻抗也应是100欧姆,而A和B之间的阻抗为200欧姆。200欧姆这一阻抗值就叫做绕组阻抗。

关于MCU和DSP的步进电机控制技术分析

图7给出一个单极电机的单相驱动电路。从中可以看出,当S1闭合而S2断开时,电流将由右至左流经电机绕组;而当S1断开,S2闭合时,电流流向变为由左至右。因此,我们仅用两个开关就能改变电流的流向(而在双极电机中需要4个开关才能做到)。表3所示为单极电机驱动电路中,每一步激励时开关所处的位置。

虽然单极电机的驱动器控制起来相对简单,但由于在电机中使用了中心抽头,因此它比双极电机更复杂,而且其价格通常比双极电机贵。此外,由于电流只流经一半的电机绕组,所以单极电机只能产生一半的磁场。

在知道了单极电机和双极电机的构造原理之后,当我们遇到一个没有标示抽头也没有数据手册的电机时,我们就能自己推导出抽头和绕组的关系。带4个抽头的电机就是一个双相双极电机,我们可以通过测量导线之间的阻抗来分辨哪两个抽头属于同一个绕组。带6个抽头的电机可能是一个双相单极电机,也可能是一个三相双极电机,具体情况可以通过测量导线之间的阻抗来确定。

电机控制

本文前面讨论的电机控制理论可以采用全硬件方案实现,也可以用微控制器或DSP实现。图8说明了如何用晶体管作为开关来控制双相单极电机。每个晶体管的基极都要通过一个电阻连接到微控制器的一个数字输出上,阻值可以从1到10M欧姆,用于限制流入晶体管基极的电流。每个晶体管的发射极均接地,集电极连到电机绕组的4个抽头。电机的中心抽头均连接到电源电压的正端。

每个晶体管的集电极均通过一个二极管连接到电压源,以保护晶体管不被旋转时电机绕组上的感应电流烧坏。转子旋转时,电机绕组上会出现一个感应电压,如果晶体管集电极没有通过二极管连接到电压源,感应电压造成的电流就会涌入晶体管的集电极。

举个例子,假设数字输出do1为高而do2为低,于是do1会使晶体管T1导通,电流从+V流经中心抽头和T1的基极,然后由T1的发射极输出。但此时do2处于断开状态,因此电流无法流经T2。这样推理下去,我们就能将表3改为驱动电机所需的微控制器数字输出的改变顺序。

一旦清楚了驱动电机所需的硬件和数字输出的顺序,我们就可以对最顺手的微控制器或DSP编写软件,实现这些序列。

固件控制

我本人在一块Microchip PIC16F877上,利用1N4003二极管和2SD1276A达灵顿晶体管实现了以上谈到的电机控制器。PIC的PortA第0位到第3位用来做数字输出。电机采用在Jameco购买的5V双相单极电机(Airpax [Thomson]生产,型号为M82101-P1),并且用同一个5V电源为PIC和电机供电。但在真正应用时,为避免给微控制器的电源信号引入噪声,建议大家还是分别用不同的电源为电机和微控制器供电。

关于MCU和DSP的步进电机控制技术分析

关于MCU和DSP的步进电机控制技术分析

列表1给出了控制程序的汇编源代码,该程序每50毫秒旋转电机一次。首先,程序会将微控制器的数字输出初始化为表4中第一步的值,然后每隔50毫秒(此时间常数由程序中的常量waitTime定义)按照正确的顺序循环输出数字信号。若需使电机反向旋转,只需按与表4所示相反的顺序输出数字信号即可。

本人所用的电机为24极电机,即每一步输出可以控制电机旋转180°/24=7.5°。电机每50毫秒旋转7.5°,也就是每2.4秒转一周。如果将常量waitTime减小一半,电机转速会加快一倍。但因为转子受惯性、摩擦力和其他机械限制,所以电机转速有一个上限,当定子磁场旋转过快时,转子的转速无法跟上,导致电机的旋转也无法跟上,开始跳动(skipping)。如果这时再降低欧姆aitTime,电机很可能干脆就停止旋转。

除了本文重点讨论的双相电机以外,步进电机还有其他类型,如三相步进电机或四相步进电机。另外还有一些双相步进电机,它们只有一个中心抽头,同时连接到两个绕组的中心点,这类步进电机外部有5个抽头引出。

同样,步进电机也不是电机家族中的唯一成员,最古老也最简单的电机是直流(DC)电机。早期的直流电机使用电刷,现在已经不再流行。如今常见的无刷直流电机,就是利用电子线路代替电刷进行换向的直流电机,这类电机中不存在电刷老化问题,因此其寿命比有刷直流电机长很多。

还有一种感应电机,其工作原理与步进电机或直流电机完全不同。直流电机采用的是直流电压源,而感应电机则采用交流(AC)电压源,并且步进电机和直流电机中转子与定子磁场的旋转是同步的,而感应电机中转子的转速滞后于定子磁场的转速。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 驱动器
    +关注

    关注

    51

    文章

    7303

    浏览量

    142910
  • 电机控制
    +关注

    关注

    3464

    文章

    1700

    浏览量

    264393
  • 步进电机
    +关注

    关注

    149

    文章

    2929

    浏览量

    146043
收藏 人收藏

    评论

    相关推荐

    如何调整二相步进电机步进角度,控制步进角度的功能?

    在当今的自动化设备中,二相步进电机作为一种常见的驱动元件,其精确控制步进角度的功能尤为重要。那么,博扬智能如何调整二相步进
    的头像 发表于 03-25 17:49 713次阅读
    如何调整二相<b class='flag-5'>步进</b><b class='flag-5'>电机</b>的<b class='flag-5'>步进</b>角度,<b class='flag-5'>控制</b><b class='flag-5'>步进</b>角度的功能?

    什么是步进电机的细分控制步进电机为什么要细分,如何细分?

    什么是步进电机的细分控制步进电机为什么要细分,如何细分? 步进
    的头像 发表于 02-18 09:39 1601次阅读

    arduino控制步进电机代码

    Arduino是一种开放源代码的电路板平台,它可以用于控制各种不同的电子设备,包括步进电机步进电机是一种电动机,可以通过下达特定的指令来
    的头像 发表于 02-14 16:29 603次阅读

    步进电机控制方法 步进电机和伺服电机的区别

    步进电机控制方法 步进电机是一种将电信号转化为机械转动的电动机,其输出转角是按照电脉冲控制信号的
    的头像 发表于 01-22 17:18 407次阅读

    步进电机控制方法 步进电机控制器参数设置

    步进电机是一种在控制系统中常见的电机类型,它以步进角度为单位进行旋转,并且可以精确控制位置和速度
    的头像 发表于 01-19 10:50 783次阅读

    步进电机控制方法及需要哪些控制信号

    步进电机是一种将电子信号转化为机械运动的电动机,广泛应用于机器人、打印机、数码相机等领域。步进电机由于其精度高、固有扭矩大、容易控制等特点,
    的头像 发表于 12-20 11:21 1081次阅读

    基于MCU+DSP的运动控制硬件平台设计

    基于MCUDSP的运动控制系统由于结构紧凑、环境适应性好而有良好的发展前景。由于PC机与MCUDSP资源环境差异较大, 进行
    的头像 发表于 10-31 17:01 449次阅读

    步进电机定位控制的常用方法

    步进系统=步进驱动器+步进电机步进电机步进驱动器
    发表于 10-30 11:30 1289次阅读
    <b class='flag-5'>步进</b><b class='flag-5'>电机</b>定位<b class='flag-5'>控制</b>的常用方法

    步进电机开环控制与闭环控制有什么区别?

    步进电机开环控制和闭环控制的区别概述:步进电机是一种特殊的
    的头像 发表于 10-28 08:07 1612次阅读
    <b class='flag-5'>步进</b><b class='flag-5'>电机</b>开环<b class='flag-5'>控制</b>与闭环<b class='flag-5'>控制</b>有什么区别?

    基于PLC S7-200与步进电机的运动控制

      步进电机的运行要有一电子装置进行驱动,这种装置就是步进电机驱动器,它是把控制系统发出的脉冲信号,加以放大以驱动
    发表于 10-19 10:59 331次阅读
    基于PLC S7-200与<b class='flag-5'>步进</b><b class='flag-5'>电机</b>的运动<b class='flag-5'>控制</b>

    步进驱动器+步进电机+西门子PLC控制案例

    步进系统=步进驱动器+步进电机步进电机步进驱动器
    发表于 08-25 11:15 794次阅读
    <b class='flag-5'>步进</b>驱动器+<b class='flag-5'>步进</b><b class='flag-5'>电机</b>+西门子PLC<b class='flag-5'>控制</b>案例

    plc如何控制步进电机的速度和方向?

    那些在运行过程中移动距离和速度均确定的具体设备,认为采用PLC通过步进电机驱动器来控制步进电机的运转也是一种
    的头像 发表于 08-07 08:09 1190次阅读
    plc如何<b class='flag-5'>控制</b><b class='flag-5'>步进</b><b class='flag-5'>电机</b>的速度和方向?

    步进电机控制原理是什么?如何实现步进电机控制

    先来看一下硬件原理图,可看到控制步进电机的管脚分别为:GPIO6[2]、GPIO6[3]、GPIO6[4]和GPIO1[15]。使用的是一路四相五线步进
    发表于 08-04 14:45 2849次阅读
    <b class='flag-5'>步进</b><b class='flag-5'>电机</b>的<b class='flag-5'>控制</b>原理是什么?如何实现<b class='flag-5'>步进</b><b class='flag-5'>电机</b>的<b class='flag-5'>控制</b>?

    基于MCUDSP步进电机控制技术

    基于MCUDSP步进电机控制技术
    发表于 06-10 22:35

    步进电机控制器原理 步进电机控制器的应用设置

    步进电机控制器是一种能够发出均匀脉冲信号的电子产品,它发出的信号进入步进电机驱动器后,会由驱动器转换成
    发表于 05-05 14:16 4次下载
    <b class='flag-5'>步进</b><b class='flag-5'>电机</b><b class='flag-5'>控制</b>器原理 <b class='flag-5'>步进</b><b class='flag-5'>电机</b><b class='flag-5'>控制</b>器的应用设置