电动机的正反转.docx
- 文档编号:13134634
- 上传时间:2023-06-11
- 格式:DOCX
- 页数:9
- 大小:90.76KB
电动机的正反转.docx
《电动机的正反转.docx》由会员分享,可在线阅读,更多相关《电动机的正反转.docx(9页珍藏版)》请在冰点文库上搜索。
电动机的正反转
电动机的正反转
一.设计目的
步进电机若加入适当的脉冲信号时,转子则会以一定的步数转动。
如果加入连续的脉冲信号,步进电机就会连续转动,转动的角度与脉冲频率成正比,正、反转可由脉冲的顺序来控制。
本程序通过K1、K2和K3三个按钮开关控制步进电机转动和改变转向,电动机使用1-2相激磁,编程时采用制表的方法。
正转和反转的脉冲信号频率是相通的,但由于使用激磁方式不一样,反转使用了1-2相激磁法,故反转速度为正转的一半。
1.步进电机原理以及原理图
电路设计如图四所示。
K1、K2和K3按钮开关分别接在单片机的P3.2~P3.4
引脚上,作为控制信号的输入端,输入端直接采用ULN2003驱动电路控制步进电机的转向。
图四开关控制步进电机的电路原理图
2.功能说明
单片机的P3.2~P3.4引脚分别接有按钮开关K1、K2和K3,用来控制步进电机的转向。
开始供电时,步进电机停止。
按K1时,电动机正转;按K2时,电动机反转。
按K3时,电动机停止转动。
3.程序设计
3.1编程
编程采用制表的方法,步进电机正转采用二相激磁方式,时序如表所示
2相激磁方式正转时序
步进
P0.3
P0.2
P0.1
P0.0
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相激磁反转时序
步进
P0.3
P0.2
P0.1
P0.0
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
3.2.流程图
程序设计流程如图所示
3.3.程序清单
01K1EQUP3.2;设定P3.2以K1表示
02K2EQUP3.3;设定P3.3以K2表示
03K3EQUP3.4;设定P3.4以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:
将P3.2、P3.3、P3.4引脚分别用K1、K2、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行为正转结束码;第61、62行为反转1-2激磁码;第63行为反转结束码。
65:
程序结束。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 电动机 反转