一种控制电机的方法、装置和系统

文档序号:1641225 发布日期:2019-12-20 浏览:28次 >En<

阅读说明:本技术 一种控制电机的方法、装置和系统 (Method, device and system for controlling motor ) 是由 王智玮 王聪 李龙剑 杨庆庆 于 2019-08-13 设计创作,主要内容包括:本发明提供一种控制电机的方法和系统,涉及电子领域。所述方法包括:获得MCU存储的预设脉冲数值,对旋转编码器产生的脉冲数值进行计数,并比较当前计数的脉冲数值和预设脉冲数值是否相等,在当前计数的脉冲数值和预设脉冲数值相等的情况下,同时获得MCU存储的下一预设脉冲值,其中,中断信号用于使MCU对电机进行换相操作。本发明的控制电机的方法和系统,在使用过程中,不用改变已有的电路结构和各个设备自身的结构,简单方便、精确度高,并且可以根据旋转编码器的具体性能,适应性的进行调整,整个方法清晰简洁,可操作性强,适用范围较广。(The invention provides a method and a system for controlling a motor, and relates to the field of electronics. The method comprises the following steps: and obtaining a preset pulse value stored by the MCU, counting the pulse value generated by the rotary encoder, comparing whether the currently counted pulse value is equal to the preset pulse value, and obtaining a next preset pulse value stored by the MCU under the condition that the currently counted pulse value is equal to the preset pulse value, wherein an interrupt signal is used for enabling the MCU to carry out phase change operation on the motor. The method and the system for controlling the motor do not need to change the existing circuit structure and the structure of each device in the using process, are simple, convenient and high in accuracy, can be adjusted adaptively according to the specific performance of the rotary encoder, and have the advantages of clear and concise whole method, strong operability and wider application range.)

一种控制电机的方法、装置和系统

技术领域

本发明涉及电子领域,特别是一种控制电机的方法、装置和系统。

背景技术

无刷直流电机由电动机主体和驱动器组成,是一种典型的机电一体化产品。无刷电机是指无电刷和换向器(或集电环)的电机,又称无换向器电机,十九纪诞生电机的时候,产生的实用性电机就是无刷形式,即交流鼠笼式异步电动机,这种电动机得到了广泛的应用。但是,异步电动机有许多无法克服的缺陷,以致电机技术发展缓慢。上世纪中叶诞生了晶体管,因而采用晶体管换向电路代替电刷与换向器的直流无刷电机就应运而生了,这种新型无刷电机称为电子换向式直流电机,它克服了第一代无刷电机的缺陷。

目前比较广泛应用的直流无刷电机为三相直流无刷电机,而控制三相直流无刷电机转速和转向一般需要检测电机转子的位置,现有技术使用霍尔传感器或者旋转编码器来检测转子的位置,两者之间各有优劣,具体使用哪一个设备来检测转子位置可以根据使用需求来具体决定。

目前使用增量式旋转编码器来检测电机转子位置有较多问题,其中之一是增量式旋转编码器旋转一圈产生的脉冲信号很多,而电机运行过程中随着运行时间的增加,增量式旋转编码器产生的脉冲信号数量是巨大的,这会使得控制设备(例如MCU)的数据处理数量庞大,导致控制设备工作效率很低,严重时可能导致控制设备无法精确控制电机换相,影响电机正常运行,造成用户损失。

发明内容

鉴于上述问题,本发明提供一种控制电机的方法和系统,极大的减少了控制设备所需处理的数据量。

本发明实施例提供了一种控制电机的方法,所述方法应用于MCU中的计数器,所述计数器与旋转编码器连接,所述方法包括:

获得MCU存储的预设脉冲数值,所述预设脉冲数值为对应于所述电机换相点的脉冲数值;

对所述旋转编码器产生的脉冲数值进行计数,并比较当前计数的脉冲数值和所述预设脉冲数值是否相等;

在所述当前计数的脉冲数值和所述预设脉冲值相等的情况下,向所述MCU发送中断信号,同时获得所述MCU存储的下一预设脉冲值,其中,所述中断信号用于使所述MCU对所述电机进行换相操作。

可选地,所述计数器包括输入捕获通道;在获得MCU存储的预设脉冲数值之前,所述方法还包括:

通过所述输入捕获通道捕获所述旋转编码器发出的第一个零位脉冲;

在通过所述输入捕获通道捕获到所述第一个零位脉冲时,对所述旋转编码器产生的脉冲数值的计数值清零,并设定所述旋转编码器当前所处位置为所述旋转编码器的零度位置;

在所述MCU通过驱动电路对所述电机的每一相通电时,对所述旋转编码器以所述零度位置为起始位置,从旋转状态变为停止状态的过程中产生的脉冲数值进行计数,得到所述电机的换相点的脉冲数值。

可选地,所述预设脉冲数值的数量是多个;所述计数器还包括:脉冲计数通道和比较寄存器,所述脉冲计数通道用于对所述旋转编码器产生的脉冲数值进行计数,所述比较寄存器用于保存所述获得MCU存储的预设脉冲数值;在向所述MCU发送中断信号之后,所述方法还包括:

通过所述脉冲计数通道触发直接存储器访问,获得所述MCU存储的下一预设脉冲数值,并保存在所述比较寄存器中。

可选地,所述预设脉冲数值对应的所述旋转编码器以所述零度位置为起始位置,从旋转状态变为停止状态的过程中产生的脉冲数值即为所述电机的换相点。

本发明实施例还提供了一种控制电机的装置,所述装置应用于MCU中的计数器,所述计数器与旋转编码器连接,所述装置包括:

获得模块,用于获得MCU存储的预设脉冲数值,所述预设脉冲数值为对应于所述电机换相点的脉冲数值;

计数比较模块,用于对所述旋转编码器产生的脉冲数值进行计数,并比较当前计数的脉冲数值和所述预设脉冲数值是否相等;

发送中断获得模块,用于在所述当前计数的脉冲数值和所述预设脉冲值相等的情况下,向所述MCU发送中断信号,同时获得所述MCU存储的下一预设脉冲值,其中,所述中断信号用于使所述MCU对所述电机进行换相操作。

可选地,所述计数器包括输入捕获通道;所述装置还包括:

捕获模块,用于通过所述输入捕获通道捕获所述旋转编码器发出的第一个零位脉冲;

清零模块,用于在通过所述输入捕获通道捕获到所述第一个零位脉冲时,对所述旋转编码器产生的脉冲数值的计数值清零,并设定所述旋转编码器当前所处位置为所述旋转编码器的零度位置;

确定换相点脉冲数值模块,用于在所述MCU通过驱动电路对所述电机的每一相通电时,对所述旋转编码器以所述零度位置为起始位置,从旋转状态变为停止状态的过程中产生的脉冲数值进行计数,得到所述电机的换相点的脉冲数值。

可选地,所述预设脉冲数值的数量是多个;所述计数器还包括:脉冲计数通道和比较寄存器,所述脉冲计数通道用于对所述旋转编码器产生的脉冲数值进行计数,所述比较寄存器用于保存所述获得MCU存储的预设脉冲数值;所述装置还包括:

触发获得模块,用于通过所述脉冲计数通道触发直接存储器访问,获得所述MCU存储的下一预设脉冲数值,并保存在所述比较寄存器中。

本发明实施例还提供了一种控制电机的系统,所述系统包括:MCU、旋转编码器以及电机,所述MCU包括:计数器,所述旋转编码器与所述MCU和所述电机分别连接,所述计数器用于执行以上任一所述的方法。

与现有技术相比,本发明提供的一种控制电机的方法,获得MCU存储的预设脉冲数值,对旋转编码器产生的脉冲数值进行计数,并比较当前计数的脉冲数值和预设脉冲数值是否相等,在当前计数的脉冲数值和预设脉冲数值相等的情况下,向MCU发送中断信号,以使得MCU对电机进行换相操作,在向MCU发送中断信号的同时获得MCU存储的下一预设脉冲数值。本发明的方法不用改变已有的电路结构和各个设备自身的结构,简单方便、精确度高,并且可以根据旋转编码器的具体性能,适应性的进行调整,整个方法清晰简洁,可操作性强,适用范围较广。

附图说明

通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本发明的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:

图1是本发明实施例一种控制电机的方法的流程图;

图2是本发明实施例旋转编码器与计数器的示意图;

图3是本发明实施例一种控制电机的装置的框图。

具体实施方式

为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本发明作进一步详细的说明。应当理解,此处所描述的具体实施例仅用以解释本发明,仅仅是本发明一部分实施例,而不是全部的实施例,并不用于限定本发明。

发明人发现,目前增量式旋转编码器检测直流无刷电机的转子位置时主要有以下3个技术问题:

1、一般增量式旋转编码器所产生的信号只是位置的增量,举个例子:电机启动后顺时针转动了10°转到了90°的位置,但增量式旋转编码器只能检测到电机转子转动了10°却不知道电机转子当前的绝对位置,而要确定电机转子的位置必须知道其绝对位置。

2、一般增量式旋转编码器安装在电机外部,通过编码器获得的电机转子位置与电机换相点位置的对应关系不清楚,并不知道转子转到多少度时该给电机换相。

3、一般增量式旋转编码器的精度高,其将360°分成上千份,但这也导致了电机每转一圈增量式旋转编码器会产生上千个脉冲信号,而电机运行起来之后这个脉冲信号的数量是极为巨大的,自然对于控制设备的工作造成了很大的压力。

基于以上问题,发明人经过深入研究,结合MCU的特点,经过大量实地测试和仿真计算,大胆地、创造性的提出本发明的控制电机的方法,利用计数器来完成脉冲信号的处理,MCU只需要执行电机换相,解决了上述问题,并且该方法不用改变已有的电路结构和各个设备结构,简单方便、精确度高。以下对发明人提出的解决方案进行详细解释和说明。

参照图1,示出了本发明实施例一种控制电机的方法的流程图,控制电机的方法包括:

步骤101:获得MCU存储的预设脉冲数值,预设脉冲数值为对应于电机换相点的脉冲数值。

本发明实施例中,参照图2示出了本发明实施例旋转编码器与计数器的示意图,计数器为MCU中的一个模块,其内嵌于MCU中,计数器有三个通道,其中两个是脉冲计数通道,其分别与旋转编码器的输出A相和B相连接,另一个是输入捕获通道,其与旋转编码器的输出Z相连接;脉冲计数通道用于对旋转编码器的输出A相和B相的脉冲数值进行计数;输入捕获通道用于捕获旋转编码器的输出Z相发出的零位脉冲。计数器中还有一个比较寄存器,用于保存预设脉冲数值。

MCU中存储有预设脉冲数值,该预设脉冲数值为旋转编码器确定的对应于电机换相点的脉冲数值。在电机正式运行之前,MCU将根据电机所需的转向,将第一个换相点对应的预设脉冲数值写入计数器的比较寄存器,计数器自身拥有通道比较功能,所谓通道比较功能为:计数器中的脉冲计数通道中的数值与比较寄存器中的数值进行比较的功能。

作为一个示例:假设使用的MCU芯片为:GD32F303RCT6,其包括计数器,增量式旋转编码器与电机转子刚性连接,其旋转一圈产生3600个脉冲信号,其对应的电机转子角度为360°,即每10个脉冲信号对应的旋转编码器转过的角度为电机转子角度1°,预设脉冲数值为300、1500以及2700,假设电机需要正转,在电机正式运行前,MCU将第一个预设脉冲数值300写入计数器的比较寄存器中。

可选地,在获得MCU存储的预设脉冲数值之前,首先需要确定出预设脉冲数值,即,需要确定出旋转编码器以零度位置为标准,转过多少度到达电机的换相点,也即旋转编码器以零度位置为标准产生多少脉冲数值到达电机的换相点。其中,确定零度位置和确定预设脉冲数值的方法包括:

步骤S1:通过输入捕获通道捕获旋转编码器发出的第一个零位脉冲;

本发明实施例中,首先需要确定旋转编码器的零度位置,通过“延时换向”的方式先驱动电机转动起来,直到通过输入捕获通道捕获到旋转编码器Z相上第一个零位脉冲信号。

步骤S2:在通过输入捕获通道捕获到第一个零位脉冲时,对旋转编码器产生的脉冲数值的计数值清零,并设定旋转编码器当前所处位置为旋转编码器的零度位置;

本发明实施例中,在通过输入捕获通道捕获到旋转编码器Z相上第一个零位脉冲信号时,此时计数器将脉冲计数通道的计数值清零,并设定当前位置为旋转编码器的零度位置:0°,这样旋转编码器的0°就对应脉冲计数通道的计数值的0,旋转编码器每个脉冲信号都计数一次,旋转编码器每转360°会产生3600个脉冲,即,计数值10对应旋转编码器编码器的1°。采用此方法精确的定位出旋转编码器的零度位置。

步骤S3:在MCU通过驱动电路对电机的每一相通电时,对旋转编码器以零度位置为起始位置,从旋转状态变为停止状态的过程中产生的脉冲数值进行计数,得到电机的换相点的脉冲数值。

本发明实施例中,在确定了零度位置后,需要确定电机换相点对应的脉冲数值,即预设脉冲数值,首先MCU通过驱动电路为电机AB相进行较长时间的通电,强制电机转子停在换相点的位置上,然后读取旋转编码器以零度位置为起始位置,旋转到停止位置时转过的角度对应产生的脉冲数值,就可以得到电机换相点的绝对位置,假若旋转编码器相对于零度位置转过的角度为10°,其对应产生的脉冲数值为100,此即为第一个预设脉冲数值,然后对BC相采用同样方式得到第二个预设脉冲数值1300,对CA相采用同样方式得到第三个预设脉冲数值2500。得到了所有的预设脉冲数值后,将这些预设脉冲数值存储在MCU中。采用此方法精确的定位出电机换相点对应的旋转编码器的脉冲数值。

步骤102:对旋转编码器产生的脉冲数值进行计数,并比较当前计数的脉冲数值和预设脉冲数值是否相等。

本发明实施例中,在电机正式运行开始后,计数器通过脉冲计数通道对旋转编码器产生的脉冲数值进行计数。电机在运行时,对电机的每一相按照顺序通电,通过电机转子带动旋转编码器旋转,因为是刚性连接,所以电机转子转过的角度与旋转编码器旋转的角度是相同的,在旋转编码器旋转的过程中,其输出A相和B相同时产生脉冲信号,两者相位相差90°,脉冲计数通道对A相和B相同时产生脉冲信号进行计数,得到脉冲数值。计数器的脉冲计数通道在进行计数的同时,还通过通道比较功能,对脉冲计数通道中的当前脉冲数值与比较寄存器中的预设脉冲数值进行比较,比较两者数值是否相等。

沿用上述示例:增量式旋转编码器的输出A相和B相与脉冲计数通道分别连接,假设增量式旋转编码器旋转1°,那么增量式旋转编码器的输出A相和B相产生10个脉冲信号,脉冲计数通道会对这10个脉冲信号进行计数,得到脉冲数值:10。随着电机转动,脉冲计数通道会对旋转编码器产生的脉冲信号进行实时计数,得到脉冲数值,假设为100,比较寄存器中的预设脉冲数值为300,计数器的通道比较功能实时比较两者数值,随着旋转编码器旋转,其脉冲信号的脉冲数值随之增加,直到当前计数的脉冲数值与预设脉冲数值300相等。

步骤103:在当前计数的脉冲数值和预设脉冲值相等的情况下,向MCU发送中断信号,同时获得MCU存储的下一预设脉冲值,其中,中断信号用于使MCU对电机进行换相操作。

本发明实施例中,在脉冲计数通道的当前计数的脉冲数值和预设脉冲数值相等的情况下,计数器向MCU发送中断信号,MCU接收到该中断信号,中断所有操作,MCU控制驱动电路按照电机转动方向所需的相序,为电机下一相通电,使得电机换相,电机继续运行。在计数器向MCU发送中断信号的同时,计数器通过直接存储器访问(DMA)技术,触发DMA从MCU中获得下一个预设脉冲数值,并保存在比较寄存器中。

沿用上述示例:假设电机为单级电机,且正转,电机在运行时,电机的AB相首先通电,在脉冲计数通道对旋转编码器产生的脉冲信号实时计数的数值达到300时,与预设脉冲数值300相等,计数器向MCU发送中断信号,MCU控制驱动电路按照电机正转通电相序,为电机BC相通电,那么电机继续转动运行。在计数器向MCU发送中断信号的同时,计数器触发DMA从MCU中获得下一个预设脉冲数值:1500,并将1500保存在比较寄存器中。

综上所述,假设电机为单级电机,并且需要反转,旋转编码器转一圈产生1800个脉冲信号,首先需要确定旋转编码器的零度位置,通过“延时换向”的方式先驱动电机转动起来,直到检测到旋转编码器Z相上有零位脉冲信号产生,此时将计数器中脉冲计数通道的计数值清零,并设定当前位置为旋转编码器的零度位置:0°,这样旋转编码器的0°就对应脉冲计数通道的计数值的0,旋转编码器每个脉冲信号都计数一次,旋转编码器每转360°会产生1800个脉冲,即,计数值50对应旋转编码器编码器的1°。

确定旋转编码器的零度位置之后,确定电机换相点对应的脉冲数值,即预设脉冲数值,首先MCU通过驱动电路为电机AB相进行较长时间的通电,强制电机转子停在换相点的位置上,然后读取当前旋转编码器相对于零度位置转过的角度对应产生的脉冲数值,就可以得到电机换相点的绝对位置,假若旋转编码器相对于零度位置转过的角度为6°,其对应产生的脉冲数值为300,此即为第一个预设脉冲数值,然后对BC相采用同样方式得到第二个预设脉冲数值1500,对CA相采用同样方式得到第三个预设脉冲数值2700。将这三个预设脉冲数值存储在MCU中。

假设前次电机停止时,脉冲计数通道对旋转编码器产生的脉冲信号实时计数的数值达到1000,那么本次在电机正常开始正常运行时,首先将第一个预设脉冲数值1500写入计数器中的比较寄存器,再对BC相通电,随着电机的运行,旋转编码器持续产生脉冲信号,脉冲计数通道对该脉冲信号以1000开始进行实时计数,计数器实时对脉冲计数通道中的计数值与比较寄存器中的预设脉冲数值进行比较。

当脉冲计数通道对旋转编码器产生的脉冲信号实时计数的数值达到1500时,与预设脉冲数值1500相等,计数器向MCU发送中断信号,MCU控制驱动电路按照电机正转通电相序,为电机CA相通电,那么电机继续转动运行。在计数器向MCU发送中断信号的同时,计数器触发DMA从MCU中获得下一个预设脉冲数值:2700,并将2700保存在比较寄存器中。当脉冲计数通道对旋转编码器产生的脉冲信号实时计数的数值达到2700时,与预设脉冲数值2700相等,计数器向MCU发送中断信号,MCU控制驱动电路按照电机反转通电相序,为电机AB相通电,那么电机继续转动运行。在计数器向MCU发送中断信号的同时,计数器触发DMA从MCU中获得下一个预设脉冲数值:300,并将300保存在比较寄存器中。

随着电机继续运行,旋转编码器继续产生脉冲信号,当脉冲计数通道对旋转编码器产生的脉冲信号实时计数的数值达到3600时,由于此时旋转编码器转过了一圈360°,因此旋转编码器的输出Z相发出零位脉冲,计数器通过输入捕获通道捕获到该零位脉冲时,对脉冲计数通道的计数值清零,脉冲计数通道对旋转编码器产生的脉冲数值从0开始重新计数。

当脉冲计数通道对旋转编码器产生的脉冲信号实时计数的数值达到300时,与预设脉冲数值300相等,计数器向MCU发送中断信号,MCU控制驱动电路按照电机反转通电相序,为电机BC相通电,那么电机继续转动运行。在计数器向MCU发送中断信号的同时,计数器触发DMA从MCU中获得下一个预设脉冲数值:1500,并将1500保存在比较寄存器中。

重复以上步骤,如此保证电机正常反转运行,直到电机停止运行。

需要说明的是,如果旋转编码器因为各方面原因松动,不能保证其旋转与电机转子的旋转是同步的,或者,MCU失电,那么在旋转编码器重新固定好,达到与电机转子的旋转同步,或者在MCU重新得电后,都需要重新对旋转编码器进行确定零位位置和确定换相点操作,这样做是为了保证旋转编码器可以精确的检测到电机转子的绝对位置,以达到MCU精确控制电机换相的目的。

如图3示出了本发明实施例一种控制电机的装置的框图,该装置应用于MCU中的计数器,计数器与旋转编码器连接,控制电机的装置包括:

获得模块310,用于获得MCU存储的预设脉冲数值,预设脉冲数值为对应于电机换相点的脉冲数值;

计数比较模块320,用于对旋转编码器产生的脉冲数值进行计数,并比较当前计数的脉冲数值和预设脉冲数值是否相等;

发送中断获得模块330,用于在当前计数的脉冲数值和预设脉冲值相等的情况下,向MCU发送中断信号,同时获得MCU存储的下一预设脉冲值,其中,中断信号用于使MCU对电机进行换相操作。

可选地,计数器包括输入捕获通道;控制电机的装置还包括:

捕获模块,用于通过输入捕获通道捕获旋转编码器发出的第一个零位脉冲;

清零模块,用于在通过输入捕获通道捕获到第一个零位脉冲时,对旋转编码器产生的脉冲数值的计数值清零,并设定旋转编码器当前所处位置为旋转编码器的零度位置;

确定换相点脉冲数值模块,用于在MCU通过驱动电路对电机的每一相通电时,对旋转编码器以零度位置为起始位置,从旋转状态变为停止状态的过程中产生的脉冲数值进行计数,得到电机的换相点的脉冲数值。

可选地,预设脉冲数值的数量是多个;计数器还包括:脉冲计数通道和比较寄存器,脉冲计数通道用于对旋转编码器产生的脉冲数值进行计数,比较寄存器用于保存获得MCU存储的预设脉冲数值;控制电机的装置还包括:

触发获得模块,用于通过脉冲计数通道触发直接存储器访问,获得MCU存储的下一预设脉冲数值,并保存在比较寄存器中。

本发明实施例还提供了一种控制电机的系统,该系统包括:MCU、旋转编码器以及电机,MCU包括:计数器,旋转编码器与MCU和电机分别连接,计数器用于执行以上任一所述的方法。

综上所述,本发明的控制电机的方法、装置和系统,在使用过程中,不用改变已有的电路结构和各个设备自身的结构,简单方便、精确度高,并且可以根据旋转编码器的具体性能,适应性的进行调整,整个方法清晰简洁,可操作性强,适用范围较广。

尽管已描述了本发明实施例的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例做出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明实施例范围的所有变更和修改。

最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者终端设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者终端设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者终端设备中还存在另外的相同要素。

上面结合附图对本发明的实施例进行了描述,但是本发明并不局限于上述的具体实施方式,上述的具体实施方式仅仅是示意性的,而不是限制性的,本领域的普通技术人员在本发明的启示下,在不脱离本发明宗旨和权利要求所保护的范围情况下,还可做出很多形式,这些均属于本发明的保护之内。

12页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:一种高动态性的无刷直流电机内功角控制方法

网友询问留言

已有0条留言

还没有人留言评论。精彩留言会获得点赞!

精彩留言,会给你点赞!