发明内容
本发明的发明目的在于克服现有技术的缺陷,提供一种控制快捷有效,成本低廉的多个二相步进电机的实时控制方法。
为实现上述发明目的,本发明采用如下技术方案:
一种多个二相步进电机的实时控制方法,所述多个二相步进电机的相位端分别与驱动IC连接,驱动IC与控制器连接,将电机的相位端连接在控制器的同一端口,主要是为了节省程序运行时间,所述方法包括以下步骤:
(1)控制器对多个步进电机的固定步距角按顺序进行细分,并根据固定步距角的细分数对控制器的定时器的一个周期进行划分为多个时间片,所述周期为转过一个固定步距角细分的时间;
(2)按顺序对固定步距角的每个细分进行控制,对固定步距角的每个细分的控制根据划分的时间片进行,每一个时间片中具体为:
21)控制器上与驱动IC相位1引脚和相位2引脚连接的端口均设置为输出模式;
22)初始化多个二相步进电机的相位;
23)所述控制器在各个时间片向驱动IC输出不同电平,驱动IC控制步进电机A相和B相的电流变化;
(3)每个时间片的操作完成后,根据定时器判断是否为最后一个时间片,若不是则继续执行下个时间片的操作,若是则结束,进行下个固定步距角的细分的操作。
优选地,所述步骤1)前还包括控制器接收外部控制信号,控制器根据接收到的外部信号进行控制。
进一步地优选,在所述步骤23)中包括多个循环,所述多个循环的次数与步进电机的固定步距角的细分数相对应,所述循环的过程为所述驱动IC在对应各个时间片的电平输出的转变,所述转变为驱动IC的输出按划分的时间片的顺序逐步由全部高电平输出转变为全部是低电平的输出,其中,步进电机的A相和B相的电流相位差为90°。
优选地,对控制器的定时器的一个周期进行划分为多个时间片具体为:根据固定步距角的细分数对控制器的定时器划分时间段,每一细分对应一时间片。
优选地,所述步骤(2)中还包括:完成任一时间片的操作时,定时器先进行计时,若一个时间片的时间过完则进行下个时间片的操作,否则等待直至时间片结束。
优选地,所述步骤23)中,对于控制多个步进电机进行顺时针旋转时:
按划分的时间片的顺序,驱动IC的输出由多个循环组成,每个循环中驱动IC输出的次数与时间片数对应:
第一个子循环,输出全为高电平;
第二个子循环,第一个输出为低电平,其余为高电平;
第三个子循环,第一和第二个输出为低电平,其它输出为高电平;
依此类推直至任一循环中所有输出由高电平转变成低电平。
优选地,所述步骤23)中,对于控制多个步进电机进行逆时针旋转时:
按划分的时间片的顺序,驱动IC的输出由多个循环组成,每个循环中驱动IC输出的次数与时间片数对应:
第一个子循环,输出全为高电平;
第二个子循环,最后一个输出为低电平,其余为高电平;
第三个子循环,最后的两个输出为低电平,其它输出为高电平;
依此类推直至任一循环中所有输出由高电平转变成低电平。
优选地,所述步骤23)中步进电机每次输出时都进行输出步更新。
优选地,所述控制器的输出采用等时输出。
优选地,所述驱动为恒流斩波式驱动。
本发明的有益效果:通过在控制器中的程序来控制驱动器,以软件实现替代硬件实现方法,每多控制一个步进电机,只需要消耗2个控制器端口,同时不需要DA芯片,提高控制效率的同时有效的节约成本。
具体实施方式
下面结合附图和具体实施方式对本发明作进一步详细的说明。应当理解,此处所描述的具体实施例仅仅用于解释本发明,并不用于限定本发明。
如图1~4所示,本发明提供一种多个二相步进电机的实时控制方法,所述多个二相步进电机的相位端分别与驱动IC连接,驱动IC与控制器连接,所述不同的步进电机1相位控制端单独通过驱动IC3与控制器连接,包括以下步骤:
S100对多个步进电机的固定步距角按顺序进行细分,并根据固定步距角的细分数对控制器的定时器的一个周期进行划分为多个时间片,所述周期为转过一个固定步距角细分的时间;
其中,所述控制器设置有I/O接口,用于接收外部的控制信号,可以根据外部的控制信号实时的对整个控制过程进行调节和控制,如对于划分固定步距角的细分数,以及步进电机转动一个细分的时间均可通过外部控制信号进行实时的调节和控制。
进一步地,对控制器的定时器的一个周期进行划分为多个时间片具体为:根据固定步距角的细分数对控制器的定时器划分时间段,每一细分对应一时间片。
所述根据所需要的细分数,设定输出周期循环,在控制器输出控制步进电机的时钟周期里,每次输出更新端口时刻严格同步。
S110按顺序对固定步距角的每个细分进行控制,对固定步距角的每个细分的控制根据划分的时间片进行,如图2所示,每一个时间片中具体为:
S111控制器的定时器执行一个时钟检测是否到该时间片,若是否,则继续等待,若是则进入下一步;
S112控制器上与驱动IC相位1引脚和相位2引脚连接的端口均设置为输出模式;
S113初始化多个二相步进电机的相位,并且重置定时器;
S114所述控制器根据外部输入的控制信号在各个时间片向驱动IC输出不同电平,驱动IC控制步进电机A相和B相的电流变化;
其中,在控制器输出控制步进电机的时钟周期里,每次输出更新端口时刻严格同步;
S115在执行完上述步骤后,同时还计算电机的速度。
S120每个时间片的操作完成后,根据定时器判断是否为最后一个时间片,若不是则转到步骤执行下个时间片的操作,若是则结束,进行下个固定步距角的细分的操作,对于时间片的判断,为定时器根据时间片的顺序或者数量来设定判断规则。
其中,步骤S113中包括多个循环,所述多个循环的次数与步进电机的固定步距角的细分数相对应,所述循环的过程为所述驱动IC在对应各个时间片的电平输出的转变,所述转变为驱动IC的输出按划分的时间片的顺序逐步由全部高电平输出转变为全部是低电平的输出,其中,步进电机的A相和B相的电流相位差为90°。
进一步地,所述步骤S113中,对于控制多个步进电机进行顺时针旋转时:
按划分的时间片的顺序,驱动IC的输出由多个循环组成,每个循环中驱动IC输出的次数与时间片数对应:
第一个子循环,输出全为高电平;
第二个子循环,第一个输出为低电平,其余为高电平;
第三个子循环,第一和第二个输出为低电平,其它输出为高电平;
依此类推直至任一循环中所有输出由高电平转变成低电平。
进一步地,所述步骤S113中,对于控制多个步进电机进行逆时针旋转时:
按划分的时间片的顺序,驱动IC的输出由多个循环组成,每个循环中驱动IC输出的次数与时间片数对应:
第一个子循环,输出全为高电平;
第二个子循环,最后一个输出为低电平,其余为高电平;
第三个子循环,最后的两个输出为低电平,其它输出为高电平;
依此类推直至任一循环中所有输出由高电平转变成低电平。
进一步地,所述步骤S110中还包括:完成任一时间片的操作时,定时器先进行计时,若一个时间片的时间过完则进行下个时间片的操作,否则等待直至时间片结束。
进一步地,所述步骤S113中步进电机每次输出时都进行输出步更新。
其中,所述控制器的输出采用等时输出。
进一步地,所述驱动IC采用恒流斩波式驱动。
具体地,参照图2-4所示,以控制8个步进电机电机1,电机2,….,电机8为例说明本发明所述的控制方法,每个电机都具有A相和B相两个相位端,每个步进电机的相位端分别通过驱动IC UDN2916与控制器端口相连,最佳方式为将所有8个步进电机的相位端分配在同一个控制器端口,所述控制器的CPU运行速度大于32MIPS,所述驱动为恒流斩波式驱动,所述控制器的输出采用等时输出。
以将步进电机固定步距角细分为16细分为例,将步进电机每一固定步距分为16微步。
需要驱动电机1正转时,其驱动步骤如下:
1)将连接驱动IC引脚相位1和相位2的控制器端口设置为输出;
2)初始化电机的相位;
3)根据步进电机步距角的细分数16细分,设定控制器的定时器时间片数为16;
4)要求电机的正转时,输出电平依次为(其中1代表高电平,0代表低电平):
第一个子循环:
1→1→1→1→1→1→1→1→1→1→1→1→1→1→1→1
然后第二个子循环:
0→1→1→1→1→1→1→1→1→1→1→1→1→1→1→1
然后第三个循环:
0→0→1→1→1→1→1→1→1→1→1→1→1→1→1→1
依此类推,直至第十六个循环,对应的输出完成由1à0的转变。
重复上述循环,实现顺时针转动;
B相电流与A相电流相位差为90°。
要求电机1的反转时输出电平依次为(其中1代表高电平,0代表低电平):
第一个子循环:
1→1→1→1→1→1→1→1→1→1→1→1→1→1→1→1
然后第二个子循环:
1→1→1→1→1→1→1→1→1→1→1→1→1→1→1→0
然后第三个循环:
1→1→1→1→1→1→1→1→1→1→1→1→1→1→0→0
依此类推,直至第十六个循环,对应的输出完成由1à0的转变。
B相电流与A相电流相位差为90°。
重复上述循环,实现逆时针转动。
驱动IC的工作流程如下:
如图4所示,控制过程中,控制器输出电平施加在驱动上,步进电机驱动器和自身电感作用下,对应的电流变化如表1:
电机输出步数 |
A相电流变化 |
B相电流变化 |
0à1/2步 |
保持最大 |
从中间à最大 |
1/2à3/2步 |
最大à最小 |
保持最大 |
3/2à5/2步 |
保持最小 |
最大à最小 |
5/2à7/2步 |
最小à最大 |
保持最小 |
7/2à8/2步 |
保持最大 |
从最小à中间 |