步进电机控制器1Word格式.docx

上传人:b****1 文档编号:1211311 上传时间:2023-04-30 格式:DOCX 页数:13 大小:79.15KB
下载 相关 举报
步进电机控制器1Word格式.docx_第1页
第1页 / 共13页
步进电机控制器1Word格式.docx_第2页
第2页 / 共13页
步进电机控制器1Word格式.docx_第3页
第3页 / 共13页
步进电机控制器1Word格式.docx_第4页
第4页 / 共13页
步进电机控制器1Word格式.docx_第5页
第5页 / 共13页
步进电机控制器1Word格式.docx_第6页
第6页 / 共13页
步进电机控制器1Word格式.docx_第7页
第7页 / 共13页
步进电机控制器1Word格式.docx_第8页
第8页 / 共13页
步进电机控制器1Word格式.docx_第9页
第9页 / 共13页
步进电机控制器1Word格式.docx_第10页
第10页 / 共13页
步进电机控制器1Word格式.docx_第11页
第11页 / 共13页
步进电机控制器1Word格式.docx_第12页
第12页 / 共13页
步进电机控制器1Word格式.docx_第13页
第13页 / 共13页
亲,该文档总共13页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

步进电机控制器1Word格式.docx

《步进电机控制器1Word格式.docx》由会员分享,可在线阅读,更多相关《步进电机控制器1Word格式.docx(13页珍藏版)》请在冰点文库上搜索。

步进电机控制器1Word格式.docx

cm2)

重量(g)

25Y48H01

7.5

4

5

0.5

10

100

1.0

35

 

图225Y48H01型步进电机内部接线图

步进电机的励磁方式有1相励磁、2相励磁和1-2相励磁3种。

由于2相励磁具有转矩大、振动小等优点,在目前使用较为普遍,本系统的设计也采用这种励磁方式。

步进电机各相绕组的励磁时序如表2所示。

3.2AT89S51单片机及其最小系统

Atmel公司的生产的89C51单片机是一种低功耗/低电压、高性能的8位单片机,它采用CMOS和高密度非易失性存储器技术,而且其输出引脚和指令系统都与MCS-51兼容;

片内的FlashROM允许在系统内改编程序或用常规的非易失性编程器来编程,内部除CPU外,还包括256字节RAM,4K字节的ROM,4个8位并行I/O口,5个中断源,2个中断优先级,2个16位可编程定时计数器。

89C51单片机是一种功能强、灵活性高且价格合理的单片机,完全满足本系统设计需要。

绕组脉冲

1

2

3

6

7

8

9

A

B

C

D

表2步进电机四相绕组的励磁时序

单片机最小系统包括振荡电路和复位电路两部分。

振荡电路用12M晶振,这样一个机器周期

复位电路采用手动复位,当按下RESET按键,电阻R1、R2接通5V电源,此时R2分得电压大约为4V,为高电平,即置单片机RST脚为高电平,单片机复位。

3.3按键电路

采用5个按键用来控制步进电机的5种状态,即“正转”、“反转”、“加速”、“减速”和“停止”。

当按下其中一个按键时,电源通过上拉电阻和按键到地形成通路,使相应输入管脚接地,即给单片机送入一个低电平,此低电平即为有效电平。

按键电路如图4所示。

3.4步进电机状态显示电路

状态指示采用三种颜色的发光二极管,“绿色”、“黄色”和“红色”分别表示步进电机的“正转”、“反转”和“停止”状态。

限流电阻选择1K的电阻,使发光二极管的压降为3V左右。

3.5步进电机驱动电路

从单片机输出四路脉冲信号,经过非门和限流电阻,送到四个NPN型三极管的基极。

如果从单片机输出的是高电平,经过非门变成低电平,送入三极管,使三极管截止;

如果从单片机输出的是低电平,经过非门变成高电平,此高电平使三极管导通。

步进电机的每相绕组并上一个二极管,目的是防止在三极管瞬间截止时,绕组电感所产生很高的感应电动势击穿三极管。

非门采用74LS04芯片,其内部共有六个独立的非门,这里只用了其中的四个。

驱动电路如图4所示。

图3按键控制电路

图4步进电机驱动电路

4程序原理分析

4.1程序设计思路

根据外围电路的设计,单片机的输入为P1口的前五个管脚,输出为P1口的后三个管脚和P2口的前四个管脚。

主程序部分首先向驱动电路输出四路高电平,使电机停转,然后设置定时器T0的工作方式以及给允许中断位置高电平,点亮“停转”的状态显示,接下来进行按键扫描,如果有“正转”或“反转”按键按下,则跳转到相应的程序段;

如果有“停止”按键或没有任何按键按下,则跳转到程序的初始部分。

正转部分,首先点亮“正转”的状态指示,随后输出起始脉冲,接下来扫描按键,判断是否执行加速、减速或停转,然后调用给定时器T0赋初始值子程序,最后左移累加器A中的数值,如此循环便可实现步进电机的正转。

反转部分与正转部分的程序设计雷同,不再赘述。

加速和减速部分,改变定时器定时的初始值,即改变定时时间便可实现。

4.2程序分析

首先,进行P2口以及定时器的初始化,定时器工作于方式1,对P1.7清零,即点亮红色发光二极管,表示步进电机的“停止”的状态。

用JNB指令来扫描按键电路,按下则跳转,没有按下则继续向下执行。

如果P1.0按下,则跳转到首地址为RUN的位置,先调用一个10ms的延时子程序来消除按键的抖动,对P1.6清零,即点亮绿色发光二极管,表示步进电机的“正转”状态,然后通过累加器A输出起始脉冲信号00110011B到P2口。

随后判断加速、减速和停止按键是否按下,如果其中一个被按下,则跳到相应的程序段,否则程序继续向下执行。

接下来调用赋定时器初始值子程序TIME,根据R0的数据的不同,使用查表指令来读取TABLE1和TABLE2中的数据分别赋给定时器T0的两个八位寄存器TH0和TL0。

返回后,利用查询法来等待T0的中断,当定时结束时跳出循环,并对中断标志位TF0清零。

左移指令使累加器A中的数据循环左移一位,最后返回到RUN1的位置。

如果P1.1按下,则执行反转程序,该程序执行过程与正转部分相似,不同之处:

一是反转要点亮黄色发光二极管,二是对脉冲信号循环右移,从而实现反转。

加速子程序主要使R0内的数据加1,即把速度提高一个级别,R0内的数据还要与16相减,来确认是否达到最高转速,如果R0内的数据大于16,则把16赋给R0,表示已达到最高转速,不能再加速了。

减速子程序主要使R0内的数据减1,即把速度降低一个级别,如果R0内的数据为0,即速度为最低转速,则直接跳过减一指令,保持这个最低转速。

赋定时器初值子程序,利用两个查表指令来读取预置的数据,当转速改变时,R0内的数据发生变化,这时赋给定时器的初值也发生了变化,改变了定时时间,即脉冲的时间间隔发生变化,从而实现了电机变速。

4.3定时器计数初值的设定

程序设计选用定时器T0的定时中断,来控制步进电机每走一步所用的时间,改变了T0的定时时间,就改变了步进电机的转速。

定时器T0工作于方式1,晶振fosc=12MHZ。

由于采用的步进电机的步距角为7.5°

,转一圈需要48个脉冲,设转速为N(r/min),则每分钟需送脉冲数据的个数为48N,即每送一个脉冲信号需时:

定时器T0的计数初值

设步进电机最低转速为20r/min,最高转速为100r/min,每5r设为一个速度级,一共17级。

经过计算,得出步进电机的转速对应于定时器初值如表3所示。

表3电机速度及对应定时器计数初值

转速N/(r/min)

单步时间T/(μs)

T0的计数初值Tx(十进制)

T0的计数初值Tx(十六进制)

20

62500

7936

1F00

25

50000

19456

4C00

30

41666.67

27136

6A00

35714.29

32621.71

7F6D

40

31250

36736

8F80

45

27777.78

39936

9C00

50

25000

42496

A600

55

22727.27

44590.55

AE2E

60

20833.33

45673.93

B269

65

19230.77

47812.92

BAC4

70

17857.14

49078.86

BFB6

75

16666.67

50176

C400

80

15625

51136

C7C0

85

14705.88

51983.06

CB0F

90

13888.89

52736

CE00

95

13157.87

53280.68

D020

12500

54016

D300

4.4程序设计流程图

程序流程如图5所

图5程序执行流程

5总结与体会

通过此次单片机课程设计,使我对单片机控制系统有了更加全面和深入的了解,对电路板的设计和制作也更加的熟练。

电路的设计并不复杂,两天的时间就完成了,但之后编写程序,发现有一些不妥的地方,进行了调整,随后开始制作PCB版图,还算顺利。

程序的设计让我犯了不少的困惑,以前编写的都是一些功能简单的程序,这样系统的程序编写还是第一次,发现自己好像有些摸不到头脑,可能是编写程序的时机还不够成熟。

而后,在图书馆借了几本资料,仔细的研究一下,虽然实现的功能不大一致,但至少可以提供一些思路。

果然,有了效果,我居然只用了一个下午的时间就编写完成了,真是太神奇了。

等拿到步进电机进行调试,电机却没有一点反应,经过仔细的审查,发现按键输入我使用的是单片机的P1口,可程序里我用的却是P0口,于是对程序做了相应的修改,调试成功。

三周的实习即将结束,经过了这样一个设计和制作的过程,体会到这样实践真的是很必要,不仅可以加深对书本上的知识理解,还可以锻炼自己的动手能力和综合运用能力。

经过这次实习,我更加喜欢自己的专业了,也对自己更有信心了

参考文献

[1]李朝青.单片机原理及接口技术[M].北京:

北京航空航天大学出版社,2005.9

[2]蔡朝洋.单片机控制实习与专题制作.北京:

北京航空航天大学出版社,2006.11

[3]汪道辉.单片机系统设计与实践.北京:

电子工业出版社,2006.5

[4]张大明.单片机控制实训指导及综合应用实例.北京:

机械工业出版社,2007.3

[5]杨天明,陈杰.电机与拖动.北京:

中国林业出版社;

北京大学出版社,2006.8

附录1步进电机总体控制电路

附录2源程序代码

ORG0000H

AJMPMAIN

ORG0030H

MAIN:

MOVP2,#0FFH

MOVR2,#00H

MOVSP,#40H

MOVTMOD,#01H

MOVIE,#82H

CLRP1.7

SETBP1.5

SETBP1.6

KEY:

JNBP1.0,RUN

JNBP1.1,RERUN

JNBP1.4,KEY

SJMPKEY

RUN:

JNBP1.0,$

ACALLDELAY

CLRP1.6

SETBP1.7

MOVA,#00110011B

RUN1:

MOVP2,A

JBP1.2,KEEP

ACALLSPEEDUP

KEEP:

JBP1.3,KEEP1

ACALLSPEEDLOW

KEEP1:

JNBP1.4,MAIN

ACALLTIME

LOOP1:

JBCTF0,NEXT1

AJMPLOOP1

NEXT1:

RLA

AJMPRUN1

RERUN:

JNBP1.1,$

ACALLDELAY

CLRP1.5

RERUN1:

JNBP1.0,RUN

JBP1.2,THEN

THEN:

JBP1.3,THEN1

THEN1:

LOOP2:

JBCTF0,NEXT2

AJMPLOOP2

NEXT2:

RRA

AJMPRERUN1

SPEEDUP:

JNBP1.2,$

PUSHACC

INCR0

CLRC

MOVA,R0

SUBBA,#16

JCNEXT3

MOVR0,#16

NEXT3:

POPACC

RET

SPEEDLOW:

JNBP1.3,$

PUSHACC

JZNEXT4

DECR0

NEXT4:

TIME:

PUSHACC

MOVDPTR,#TABLE1

MOVCA,@A+DPTR

MOVTH0,A

MOVDPTR,#TABLE2

MOVTL0,A

SETBTR0

POPACC

DELAY:

MOVR7,#10H

DS1:

MOVR6,#0FFH

DS2:

DJNZR6,DS2

DJNZR7,DS1

TABLE1:

DB1FH,4CH,6AH,7FH,8FH,9CH,0A6H,0AEH,0B5H,0BAH,0BFH,0C4H,0C7H,0CBH,0CEH,0D0H,0D3H

TABLE2:

DB00H,00H,00H,6DH,80H,00H,00H,2EH,00H,0C4H,0B6H,00H,0C0H,0FH,00H,0A1H,00H

END

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 人文社科 > 法律资料

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2