电动机的正反转.docx
《电动机的正反转.docx》由会员分享,可在线阅读,更多相关《电动机的正反转.docx(8页珍藏版)》请在冰点文库上搜索。
电动机的正反转
电动机的正反转
一.设计目的
步进电机若加入适当的脉冲信号时,转子则会以必然的步数转动。
若是加入持续的脉冲信号,步进电机就会持续转动,转动的角度与脉冲频率成正比,正、反转可由脉冲的顺序来控制。
本程序通过K一、K2和K3三个按钮开关控制步进电机转动和改变转向,电动机利用1-2相激磁,编程时采用制表的方式。
正转和反转的脉冲信号频率是相通的,但由于利用激磁方式不一样,反转利用了1-2相激磁法,故反转速度为正转的一半。
1.步进电机原理和原理图
电路设计如图四所示。
K一、K2和K3按钮开关别离接在单片机的~
引脚上,作为控制信号的输入端,输入端直接采用ULN2003驱动电路控制步进电机的转向。
图四开关控制步进电机的电路原理图
2.功能说明
单片机的~引脚别离接有按钮开关K一、K2和K3,用来控制步进电机的转向。
开始供电时,步进电机停止。
按K1时,电动机正转;按K2时,电动机反转。
按K3时,电动机停止转动。
3.程序设计
编程
编程采用制表的方式,步进电机正转采用二相激磁方式,时序如表所示
2相激磁方式正转时序
步进
0FCH
1
1
1
0
0
0F9H
2
1
0
0
1
0F3H
3
0
0
1
1
0F6H
4
0
1
1
0
步进电机反转采用1-2相激磁方式,时序如表
1-2相激磁反转时序
步进
0F7H
1
0
1
1
1
0F3H
2
0
0
1
1
0FBH
3
1
0
1
1
0F9H
4
1
0
0
1
0FDH
5
1
1
0
1
0FCH
6
1
1
0
0
0FEH
7
1
1
1
0
0F6H
8
0
1
1
0
.流程图
程序设计流程如图所示
开始
按键扫描
按K1
正转
按K2
反转
按K3
停止
读取表格
输出
结束
.程序清单
01K1EQU;设定以K1表示
02K2EQU;设定以K2表示
03K3EQU;设定以K3表示
04
05STOP:
MOVP0,#OFFH;步进电机停止
06LOOP:
JNBK1,Z_M2;是不是按K1,是则正传
07JNBK2,F_M2;是不是按K2,是则反转
08JNBK3,STOP1;是不是按K3,时则停止
09JMPLOOP;跳转至LOOP处
10
11STOP1:
ACALLDELAY;按K3的消除抖动
12JNBK3,$;K3放开否
13ACALLDELAY;放开消除抖动
14JMPSTOP;电机停止
15
16Z_M2:
ACALLDELAY;按K1的消除抖动
17JNBK1,$;K1放开否
18ACALLDELAY;放开消除抖动
19JMPZ_M;转至Z_M处
20
21F_M2:
ACALLDELAY;按K2的消除抖动
22JNBK2,$;K2放开否
23ACALLDELAY;放开消除抖动
24JMPF_M;转至F_M处,循环
25;正转子程序
26Z_M:
MOVR0,#00H;正转到TABLE取码指针初值
27Z_M1:
MOVA,R0;到TABLE取码
28MOVDPTR,#TABLE;存表
29MOVCA,@A+DPTR;取表代码
30JZZ_M;是不是取到结束码?
31MOVP0,A;输出至P0,正转
32JNBK3,STOP1;是不是按K3,是则停止运转
33JNBK2,F_M2;是不是按K2,是则反转
34ACALLDELAY;步进电机转速
35INCR0;取下一个码
36JMPZ_M1;转至Z_M处,循环
37RET
38;反转子程序
39F_M:
MOVR0,#05;反转到TABLE取码指针初值
40F_M1:
MOVA,R0;到TABLE取码
41MOVDPTR,#TABLE;存表
42MOVCA,@A+DPTR;取表代码
43JZF_M;是不是取到结束码?
44MOVP0,A;输出至P0,反转
45JNBK3,STOP1;是不是按K3,是则停止运转
46JNBK1,Z_M2;是不是按K1,是则正转
47ACALLDELAY;步进电机转速
48INCR0;取下一个码
49JMPF_M1;转至F_M1处,循环
50RET
51
52DELAY:
MOVR6,#40;延不时刻20ms
53D1:
MOVR7,#248
54DJNZR7,$
55DJNZR6,D1
56RET
57;控制码表
58TABLE
59DB0FCH,OF9H,0F3H,0F6H;正转
60DB00H;反转结束码
61DB0F7H,0F3H,0FBH,0F9H;反转
62DB0FDH,0FCH,0FEH,0F6H
63DB00H;反转结束码
64
65END;程序结束
4.代码详解
主要标号说明
LOOP:
按键扫描
STOP1:
K3键消除抖动
Z_M2:
K1键消除抖动
F_M2K2键消除抖动
Z_M:
反转子程序
F_M:
正转子程序
DELAY:
延时子程序
TABLE:
控制码表
5.程序分析
01~03:
将、、引脚别离用K一、K二、K3表示。
05:
使步进电机停止转动。
06~09:
对按键扫描。
当按键开关未按下时,相应引脚为高电平;当开关按下时,相应引脚为低电平。
所以通过循环检测按键开关所连接的引脚电平的高低,就可以够判断出开关状态。
11:
按K3时,调延时子程序,延时一小段时刻来消除按键时的抖动。
12:
按键未开放时,程序将在此等待,只有按键开放后,程序才会向下运行。
13:
按键放开时,调延时子程序,延时一小段时刻来消除按键放开时的抖动。
14:
当肯定K3按键被按下又被放开后,才认定是一次有效按键,程序将跳转到STOP处,执行停机语句,使电机停止转动。
16~19:
与上述11-14行语句原理相同,是对K1键按下和放开时消除抖动的处置,并跳转到Z_M处,执行正传子程序。
21~24:
对按K2键时消除抖动的处置,并跳转到Z_M处,执行反转子程序。
26:
正转子程序开始,将R0赋值为0,使取表指针指向表TABLE的第一个码位置。
27:
将R0值送入累加器A。
28:
将编制的电机控制码表TABLE存入特殊寄放器DPTR。
29:
从特殊寄放器DPTR中掏出第一个控制码。
30:
检查是不是取到结束码,结束码为00H。
若是取到结束码00H,JZ指令会使程序跳转到标号Z_M处,从第一个码开始读取;若是取到的不是结束码00H,程序向下运行。
31:
将取到的数据由P0端输出。
32:
检查是不是按K3,是则停止运转。
33:
检查是不是按K2,是则反转。
34:
挪用延时子程序。
此处挪用延时子程序与前边挪用的不同,前边挪用延时子程序是为了消除按键的抖动。
此处挪用延时子程序是电机运转两步之间的距离时刻,决定电机的转速,延不时刻长,送入电机的脉冲信号频率低,电机转速慢;延不时刻短,送入电机的脉冲信号频率高,电机转速快。
所以在此处改变延不时刻就可以够改变电机转速。
35:
使R0的值为1,取下一个码。
36:
跳转到Z_M处,开始新的循环。
37:
正转子程序返回。
39~50:
反转子程序。
其中,第39行语句将R0赋值为5,是为了取码时从反转控制码中第一个码开始读取。
52~56:
延时子程序,延时的时刻为20ms。
58~63:
步进电机激磁信号编码表。
其中第59行为电机正转两相激磁码;第60行为正转结束码;第6一、62行为反转1-2激磁码;第63行为反转结束码。
65:
程序结束。