步进电机控制器1.docx
- 文档编号:1002185
- 上传时间:2023-04-30
- 格式:DOCX
- 页数:13
- 大小:79.15KB
步进电机控制器1.docx
《步进电机控制器1.docx》由会员分享,可在线阅读,更多相关《步进电机控制器1.docx(13页珍藏版)》请在冰点文库上搜索。
步进电机控制器1
基于单片机控制的步进电机控制器
2总体设计方案
2.1设计思路
本系统主要由按键电路、单片机最小系统、AT89S51单片机、步进电机电机电路、驱动电路以及步进电机等几部分组成。
驱动电路可以采用FT5754芯片来实现,芯片内部有四组3A、5W、100V的PNP达林斯顿电路及四个二极管,输出四个管脚
、
、
、
分别与步进电机的四相绕组向连接。
但考虑到所采用的步进电机功率和额定电流都较小,以及经济性方面,本设计直接采用四个NPN型三极管来作为驱动电路。
步进电机的控制主要通过5个按键来实现,这5个按键分别表示“正转”、“反转”、“加速”、“减速”和“停止”。
单片机输出四路脉冲信号触发驱动电路的四个NPN型三极管,其中触发导通的三极管可驱动步进电机的相应绕组得电,即步进电机获得脉冲,而产生一定的角位移。
单片机循序不断的输出时序脉冲,就可以实现步进电机的旋转了。
2.2总体设计框图
总体设计框图如图1所示。
3设计原理分析
图1总体设计框图
各分支电路的理论分析如下:
3.1步进电机
本系统采用25Y48H01型步进电机,其相关参数如表1所示,内部接线图如图2所示。
表125Y48H01型步进电机的相关参数
型号
步距角
相数
电压(V)
电流(A)
电阻(Ω)
最大静止转矩(g·cn)
转子转动惯量(g·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
4
5
6
7
8
9
10
A
1
0
0
1
1
0
0
1
1
0
B
1
1
0
0
1
1
0
0
1
1
C
0
1
1
0
0
1
1
0
0
1
D
0
0
1
1
0
0
1
1
0
0
表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
35
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
100
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.5
SETBP1.7
MOVA,#00110011B
RUN1:
MOVP2,A
JNBP1.1,RERUN
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
SETBP1.6
SETBP1.7
MOVA,#00110011B
RERUN1:
MOVP2,A
JNBP1.0,RUN
JBP1.2,THEN
ACALLSPEEDUP
THEN:
JBP1.3,THEN1
ACALLSPEEDLOW
THEN1:
JNBP1.4,MAIN
ACALLTIME
LOOP2:
JBCTF0,NEXT2
AJMPLOOP2
NEXT2:
RRA
AJMPRERUN1
SPEEDUP:
JNBP1.2,$
ACALLDELAY
PUSHACC
INCR0
CLRC
MOVA,R0
SUBBA,#16
JCNEXT3
MOVR0,#16
NEXT3:
POPACC
RET
SPEEDLOW:
JNBP1.3,$
ACALLDELAY
PUSHACC
MOVA,R0
JZNEXT4
DECR0
NEXT4:
POPACC
RET
TIME:
PUSHACC
MOVA,R0
MOVDPTR,#TABLE1
MOVCA,@A+DPTR
MOVTH0,A
MOVA,R0
MOVDPTR,#TABLE2
MOVCA,@A+DPTR
MOVTL0,A
SETBTR0
POPACC
RET
DELAY:
MOVR7,#10H
DS1:
MOVR6,#0FFH
DS2:
DJNZR6,DS2
DJNZR7,DS1
RET
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
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 步进 电机 控制器