步进电机控制.docx
《步进电机控制.docx》由会员分享,可在线阅读,更多相关《步进电机控制.docx(23页珍藏版)》请在冰豆网上搜索。
步进电机控制
微机接口技术课程设计说明书
课题名称:
步进电机控制
学院:
机械设计制造及其自动化
组员:
卢佐政梁振振陈烨波
邵超凡林言丕向唐倚天
指导老师:
孔敏王万强
日期:
2015年9月23日
目录
1.课程设计任务书2
一、任务要求2
二、主要技术要求2
三、主要完成任务2
四、提交成果3
五.时间安排3
六.注意事项3
2.说明书正文4
2.1前言4
2.2现状4
2.3任务分析与方案设计6
(1)、任务分析6
(2)、方案设计7
2.4系统设计与开发9
(1)、接口电路设计9
(2)、软件设计开发13
2.5元器件参数选择及清单15
2.6软硬件调试15
3.心得体会16
4.参考文献17
5.附录:
17
1.课程设计任务书
一、任务要求
在Dais实验台基础上设计并调试一个外接口电路,能够显示所对应的电机状态。
且具有一定的控制功能,编程并调试完成整个开发系统。
每组一题,分别由五位同学合作完成。
二、主要技术要求
实现步进电机转速和正反转控制。
控制四相步进电机是采用编程方法实现四相八拍环形分配运行方式,改变激励脉冲频率的大小来实现调制。
变换步进电机的其中两相相序,就能实现步进电机的正反转。
扩展一:
用三个发光二极管亮灭表示三个速度开关的状态。
再用一个发光二极管亮灭表示正反转状态。
扩展二:
用数码管显示速度状态。
三、主要完成任务
1、查找相关资料,确定课程设计方案;
2、微机接口电路硬件的焊接、装配、逐步排除故障及调试:
3、用Protel2004绘制微机最小系统配置原理图;
4、用Protel2004绘制相关项目的接口原理图;
5、编写相关项目的程序,并进行调试;
6、按照相关项目内容要求,上级进行调试;
7、编写课程设计报告。
四、提交成果
1)课程设计说明书一本(电子文档和打印稿各一份)
要求:
内容完整,图表完备,条理清晰,分析有据。
所附电路图布局合理,清晰完备,图形和符号要规范。
2)所用元器件清单
3)电路实体一套。
要求:
该电路实体必须是经过自己安装调试通过并达到性能指标要求的电路实体。
5.时间安排
9月16号~9月26号地点:
机械学院微机原理实验室
9月16日上午分组及分配课程设计任务
下午查找资料,初拟总体方案
9月17日分发参考资料,讨论确定总方案,上机熟悉protel2004软件
9月17日~9月20日完成微机最小系统配置原理图,相关项目接口电路原理图及各项接口,借领工具,pcb板及相关器件。
9月24日~9月25日答辩及验收课程设计成果(归还所借工具,上交课程设计成果)
9月25日~9月26日提交修改后的最终报告及成果
六.注意事项
1.按时上下机,严禁玩游戏,注意公共卫生。
2.爱护实验室内一切实验设施,违者按零分计算。
3爱护借用的工具,丢失工具按原价赔偿。
估计损坏工具者按零分记,并原价赔偿。
4注意安全。
下课时关闭总闸与空调,拔掉电烙铁,关好门窗。
5.不准用笔在实验室桌上乱写乱画。
2.说明书正文
2.1前言
本次的微机原来与接口技术课程设计主要涉及到微机原理,微机接口技术,汇编语言或者c语言,电工学(数电,模电)等学科。
其中,电工学是硬件电路的基础,必须有相应的基础才能看懂电路,分析电路的功能。
其次,语言则是软件基础,要实现微机控制,就必须有相应的软件程序。
因此,必须具备读并编写程序的能力。
而微机原理和微机接口技术则是本次课程设计所需要的理论核心。
只有具备相应理论知识之后才能分析软硬件的实际控制过程。
2.2现状
步进电动机已成为除直流电动机和交流电动机以外的第三类电动机。
传统电动机作为机电能量转换装置,在人类的生产和生活进入电气化过程中起着关键的作用。
可是在人类社会进入自动化时代的今天,传统电动机的功能已不能满足工厂自动化和办公自动化等各种运动控制系统的要求。
为适应这些要求,发展了一系列新的具备控制功能的电动机系统,其中较有自己特点,且应用十分广泛的一类便是步进电动机。
步进电动机的发展与计算机工业密切相关。
自从步进电动机在计算机外围设备中取代小型直流电动机以后,使其设备的性能提高,很快地促进了步进电动机的发展。
另一方面,微型计算机和数字控制技术的发展,又将作为数控系统执行部件的步进电动机推广应用到其他领域,如电加工机床、小功率机械加工机床、测量仪器、光学和医疗仪器以及包装机械等。
任何一种产品成熟的过程,基本上都是规格品种逐步统一和简化的过程。
现在,步进电动机的发展已归结为单段式结构的磁阻式、混合式和爪极结构的永磁式三类。
爪极电机价格便宜,性能指标不高,混合式和磁阻式主要作为高分辨率电动机,由于混合式步进电动机具有控制功率小,运行平稳性较好而逐步处于主导地位。
最典型的产品是二相8极50齿的电动机,步距角1.8°/0.9°(全步/半步); 还有五相10极50齿和一
些转子100齿的二相和五相步进电动机,五相电动机主要用于运行性能较高的场合。
到目前,工业发达国家的磁阻式步进电动机已极少见。
步进电动机最大的生产国是日本,如日本伺服公司、东方公司、SANYO DENKI和MINEBEA及NPM公司等,特别是日本东方公司,无论是电动机性能和外观质量,还是生产手段,都堪称是世界上最好的。
现在日本步进电动机年产量(含国外独资公司)近2亿台。
另外的结论是HB型电动机更适合于低速大转矩用途;RM型适用于平稳运行以及转速大于1000r/min的用途;而PM型成本低,在低转速时的振动和高转速时的大转矩方面,三相PM型电动机比两相电动机的性能要好。
因此,当前最有发展前景的当属混合式步进电动机,而混合式电动机又向以下四个方向发展:
发展趋势之一,是继续沿着小型化的方向发展。
随着电动机本身应用领域的拓宽以及各类整机的不断小型化,要求与之配套的电动机也必须越来越小,在57、42机座号的电动机应用了多年后,现在其机座号向39、35、30、25方向向下延伸。
瑞士ESCAP公司最近还研制出外径仅10mm的步进电动机。
发展趋势之二,是改圆形电动机为方形电动机。
由于电动机采用方型结构,使得转子有可能设计得比圆形大,因而其力矩体积比将大为提高。
同样机座号的电动机,方形的力矩比圆形的将提高30%~40%。
发展趋势之三,对电动机进行综合设计。
即把转子位置传感器,减速齿轮等和电动机本体综合设计在一起,这样使其能方便地组成一个闭环系统,因而具有更加优越的控制性能。
发展趋势之四,向五相和三相电动机方向发展。
目前广泛应用的二相和四相电动机,其振动和噪声较大,而五相和三相电动机具有优势性。
而就这两种电动机而言,五相电动机的驱动电路比三相电动机精密且复杂,因此三相电动机系统的价格比要比五相电动机更低一些。
——摘自上海昀研自动化科技有限公司官网
2.3任务分析与方案设计
(1)、任务分析
任务与功能分析:
A:
步进电机正反转控制。
四相步进电机是采用编程方法实现四相八拍环形分配运行方式。
可以通过软件改变步进电机输出的相序(由8255A芯片的A口的四位作为输出口),就能实现步进电机的正反转。
如果正转为A-AB-B-BC-C-CD-D-DA的相序循环,那么反转为DA-D-CD-C-BC-B-AB-A的相序循环。
B:
步进电机速度控制。
步进电机的转速是由脉冲频率的大小来控制的。
实际可以由软件不同时长的延时程序来控制频率。
可以采用8255A的B口作为开关量输入口。
由程序选择不同延时时间。
C:
用发光二极管亮灭显示速度及正反转状态。
经过讨论,决定用8255A的C口低四位作为输出,控制发光二极管的亮灭。
D:
可以采用调用子程序的方式,实现不同速度的数码管显示。
关键是要协调步进电机脉冲的延时和显示的刷新问题。
组内分工:
卢佐政,向唐倚天:
软件编程,软硬件联合调试以及故障排除。
陈烨波,梁振振:
负责硬件接口电路的焊接和硬件的初步故障排除。
邵超凡,林言丕:
图纸原理分析,电路原理图,最小模式图绘制。
(2)、方案设计
步进电机是按照一定顺序和规律向电机四相输入脉冲来实现电机的运转。
控制频率和输出顺序实现速度和正反转控制。
硬件方案:
因为我们采用微机来控制步进电机。
所以实际需要的的硬件组成主要有以下两部分,一部分是8088最小系统,另一部分是步进电机接口电路。
由于采用的是8255A可编程控制器来实现外部输入输出。
所以具体电路应该如下:
首先是最小系统利用三八译码器连接一片8255A用来片选。
然后8255A芯片的A口连接步进电机接口电路的输入端,步进电机接口电路的输出端连步进电机。
最后8255A的B口按照方案是用来作为输入口的,因此,跟开关电路连接。
为了实现发光二极管功能,我们再利用了8255A的C口低四位作为输出端,因此要把低四位管脚分别跟四个发光二极管电路连接。
由于还用到数码管的显示,因此微机系统还要扩展数码管电路。
由于Dais实验台已经内部连好微机的最小系统和数码管扩展电路,所以实际不需要连接。
软件方案:
软件最根本的是实现电机的转动,也就是要输出一个脉冲信号。
因此程序的核心是一个循环体。
因此,软件的结构是初始化部分和循环体部分。
(这里指程序主体部分,即代码段,整个程序还包含变量设定等。
)
初始化部分:
初始化部分主要包含以下几个内容。
1.8255A芯片的初始化。
2.发光二极管全灭程序。
3.使步进电机首先转到一个初始位置。
循环体部分:
1.电机运转。
实现脉冲输出四相的规律变化有多种方式,比如利用移位指令。
(对于单拍或者双拍方式十分方便,不过本实验是单双拍混合方式。
)还有利用查表方式(这种方式每一轮八拍结束后,又要让他跳回,至少用到2个寄存器,一个放偏移地址,一个计数。
)我最终选择了dais实验平台自带的步进电机程序的循环方式。
即直接给立即数,每八拍结束后程序重新开始循环。
缺点是每八拍结束后的延时时间会相对较长,延时不相等。
考虑到本次实验精度要求不高,并且有利于程序简单化,我选用了这种循环方式。
2.开关控制。
因为需要速度转向控制,那必须检测开关量信息。
因此,决定在程序循环体开头部分加上从8255A的B口取数据并比较指令。
首先判断速度开关后,然后跳转到对应速度控制的程序段,存延时程序需要的数据来控制脉冲频率。
接着判断正反转开关,再跳转到正反转对应的八拍输出的程序段。
当没开关打开时,则只要跳回循环体开头,重新检测开关信息,电机停止转动。
3.发光二极管控制。
在速度开关检测结束后的对应速度控制程序段内加上指令分别送对应的数据到8255A的C口来控制对应的二极管发光。
然后在正反转输出程序段开头可以加上指令来实现正反转指示灯的亮灭。
4.数码管显示。
由于数码管显示和电机延时程序都要由cpu实现,而cpu只有一个。
因此采用数码管显示程序来代替步进电机控制频率的延时程序。
让原本的延时阶段的cpu去处理显示。
这样就可以处理好两者的冲突问题。
由于此时寄存器重复使用较多,要注意有用数据的保护。
显示程序可以参考dais实验平台自带的数码管显示程序。
5.对于高级模块的软件编写思考。
我认为,在我这样的软件结构上,很好实现通过温度,位移,重量的测量来控制步进电机。
只要把原本程序中从8255A的B口取开关量改成从A/D转换器中取数据量,再加上数据转换的指令。
然后,修改一下判断开关的那段程序。
要实现数据实时显示,则只要把转化好的数据代替原本我自己设定的一个立即数送去显示即可。
2.4系统设计与开发
(1)、接口电路设计
微机最小模式系统:
微机最小模式系统是单机系统,系统中所需要的控制信号全部由8086cpu本身直接提供。
基本配置包括:
存储器、I/O芯片、基本时钟发生器、地址锁存器、数据缓冲器。
(a)图中的串口电路主要用来实现通讯,连接dais实验台和计算机的就是串口线。
8255A则是本课程设计要需要而连接的芯片。
CPU是核心,控制所有指令操作。
而扩展的外部存储器,8255A,计时器,可编程串行通讯器都连接在74LS138的输出口。
利用三八译码器来片选。
数据锁存器则是所存地址用的。
因为数据总线和地址总线是同一根,采用分时复用的方式。
所以必须要有地址锁存器。
时钟脉冲发生器产生的脉冲则是为CPU工作的前提。
步进电机接口电路:
步进电机需要有对应的步进电机驱动器才能工作。
而步进电机驱动器要求的输入信号和接口实际输入的信号是相反的,因此在每相加上一个三极管来起到取反作用。
如(b)图的jp1中的管脚1输出高电平,对应Q1导通,在R5上有较大的压降。
则步进电机驱动器的输入管脚IN1为低电平。
反之,如果管脚输出低电平,则Q1截止,在R5上的压降很小。
因此,管脚IN1的输入就为高电平。
最小系统配置参考原理图的修正:
1.74LS138的A、B、C三个管脚是用来片选的,必须要接cpu的三个地址线。
否则,cpu就不能控制该芯片,也就不能正常的片选。
2.最小系统模式则管脚MN/-M-X必须要给高电平。
3.外部存储器和8255A之间不能直接传数据。
都必须通过总线把数据先送到cpu寄存器后才能传输。
所以必须跟总线连。
4.两个总线收发器应该是OE管脚和OE管脚相连。
T管脚和T管脚相连。
互连是错误的。
5.cpu的-B-H-E管脚不应该连地址寄存器的地址线。
它是高位使能引脚。
6.图中只有4根地址线用来寻址,寻址范围很小,且外部存储器地址分配不连续,因此如(a)图重新连接。
7.计时器需要设置工作方式,即初始化。
因此,必然有数据总线与之连通。
由于空间问题,并没有在(a)图中画出。
(a)微机8986最小模式系统配置原理图
(b)步进电机接口原理图
(2)、软件设计开发
软件设计流程图:
(c)主程序流程图
(d)延时显示程序流程图
2.5元器件参数选择及清单
(1)元器件的选择
表1元器件清单
元件名称
图纸上的标号
参数或备注
数量
输入输出接口
JP1
信号输入插口
1
JP2
信号输出插口
1
H1
电源正极连线端
1
H2
电源负极连线端
1
电阻
R1~R8
1K
8
三极管
Q1~Q4
C2655
4
步进电机驱动器
ULN2003A
1
(2)参数选择
电源:
5V
电机转速要求:
0~1500r/min
2.6软硬件调试
由于本课程接口电路比较简单,负责焊接的两位组员也有焊接电路板的经验,硬件焊接质量比较好。
只是在之后试验的时候,我和许孝华发现有一处跳线没焊接,导致电机的其中一相输入电路不通,导致电机不能正常运转,并及时焊上解决问题。
软件调试首先由我解决编译错误。
接着由于最初试验不能运转,由孝华进行了单步运行调试,发现软件运行到一个循环嵌套后不能跳出。
然后我们直接采用单个循环的方式替换原方案。
接着软硬件联合试验的时候,由于电机只能振动,不能运转。
经过我和孝华比较长时间的讨论研究并排除脉冲频率过快,电路板焊接问题,接线问题等原因后,最后发现是由于两相接线之间裸露部分有干扰后,顺利实现实验的基本要求。
在原来的程序基础上加上发光二极管的控制程序后,试验一次成功。
在加显示程序的时候,由于A,B,C,D寄存器都已经多次使用并且已都入栈过,为了避免混乱,我不得已采用了DI存数据,导致显示时,出现乱码。
最后重新分配协调了一下寄存器的使用,并解决了此问题。
这样,本次课程设计顺利完成任务目标。
3.心得体会
本次课程设计,是一次理论联系实际的综合训练,包含软件,硬件,还有原理图。
大家合理分配,各施所长,不但成功解决了问题,而且让我对理论知识有了更直观的理解。
虽然上个学期对于步进电机有过一定了解,但是再次面对时仍然觉得很陌生,遇到了不少阻碍,但是在老师的指导下,还是被完美地解决了。
这次实践让我对最小系统的工作方式,步进电机的控制,汇编语言的编写有了更深层次的理解。
同时,我也对软硬件的结合有了更清晰的认识。
我相信,再次遇到此类课题,我不会再像之前那样手足无措。
4.参考文献
1.周佩玲,彭虎,傅忠谦编。
微机原理与接口技术(基于16位机)。
电子工业出版社。
2.李国栋,汪新中,陆志平,周盛华编。
微机原理与接口技术课程设计。
浙江大学出版社。
3.邹逢兴,滕秀梅,徐晓红编。
微型计算机原理与接口技术实验指导。
清华大学出版社。
5.附录:
参考源程序
参考了DAIS实验台内置实验的步进电机驱动程序和数码管显示程序。
具体程序可以自行查阅。
主要是借鉴了步进电机程序八拍一循环的方式。
采用了显示程序的子程序调用方式,并修正使其与本课程设计的程序相兼容。
软件源程序:
CODESEGMENT
ASSUMECS:
CODE,DS:
CODE,ES:
CODE
P55AEQU0FFD8H;8255A口地址
P55BEQU0FFD9H;8255B口地址
P55CEQU0FFDAH;8255C口地址
P55CTLEQU0FFDBH;8255控制口地址
ZXKEQU0FFDCH;字形口地址
ZWKEQU0FFDDH;字位口地址
ORG3620H
START:
MOVDX,P55CTL;8255A初始化
MOVAL,82H
OUTDX,AL
NOP
NOP
NOP
MOVAL,0FFH;C口置高位,低电平亮。
MOVDX,P55C
OUTDX,AL
MOVAL,03H
MOVDX,P55A
OUTDX,AL
MOVBUF,00H
MOVBUF+1,08H
MOVBUF+2,03H
MOVBUF+3,02H
IOLED1:
MOVDX,P55B;输入开关信息
INAL,DX
IN1:
TESTAL,03H
JZSTOP
TESTAL,05H
JZSTOP
TESTAL,06H
JZSTOP
TESTAL07H
JZSTOP
TESTAL,01H;检测各速度开关
JZK0
TESTAL,02H
JZK1
TESTAL,04H
JZK2
STOP:
MOVBX,0FFH
CALLLIGHT
JMPIOLED1;若没速度控制开关打开,则停止。
K0:
MOVBX,0FEH;第一盏灯亮
CALLLIGHT
MOVSI,0050H;用来控制延时时间
MOVBL,0AAH;AA存入BL显示用。
SAM:
TESTAL,08H;检测开关K3有无打开,控制正反转。
JZZX0
JMPNX0
K1:
MOVBX,0FDH;第二盏灯亮
CALLLIGHT
MOVSI,090H;用来控制延时时间
MOVBL,0BBH;BB存入BL显示用。
JMPSAM
K2:
MOVBX,0FBH;第三盏灯亮
CALLLIGHT
MOVSI,0120H;用来控制延时时间
MOVBL,0CCH;CC存入BL显示用。
JMPSAM
ZX0:
PUSHBX
MOVBX,0F7H
CALLLIGHT1
POPBX
CALLJDAS
MOVDX,P55A;正转八拍
MOVAL,02H
OUTDX,AL
CALLXDELAY
MOVAL,06H
OUTDX,AL
CALLXDELAY
MOVAL,04H
OUTDX,AL
CALLXDELAY
MOVAL,0CH
OUTDX,AL
CALLXDELAY
MOVAL,08H
OUTDX,AL
CALLXDELAY
MOVAL,09H
OUTDX,AL
CALLXDELAY
MOVAL,01H
OUTDX,AL
CALLXDELAY
MOVAL,03H
OUTDX,AL
CALLXDELAY
JMPIOLED1
NX0:
PUSHBX
MOVBX,0FFH
CALLLIGHT1
POPBX
CALLJDAS
MOVDX,P55A;反转八拍
MOVAL,01H
OUTDX,AL
CALLXDELAY
MOVAL,09H
OUTDX,AL
CALLXDELAY
MOVAL,08H
OUTDX,AL
CALLXDELAY
MOVAL,0CH
OUTDX,AL
CALLXDELAY
MOVAL,04H
OUTDX,AL
CALLXDELAY
MOVAL,06H
OUTDX,AL
CALLXDELAY
MOVAL,02H
OUTDX,AL
CALLXDELAY
MOVAL,03H
OUTDX,AL
CALLXDELAY
JMPIOLED1
XDELAY:
CALLDIS;延时程序
RET
JDAS:
MOVBH,BL;拆字程序
ANDBL,0FH
MOVBUF+5,BL
ANDBH,0F0H
MOVCL,4
SHRBH,CL
MOVBUF+4,BH
RET
DIS:
MOVCL,20H;显示程序
MOVBX,OFFSETBUF
DIS1:
MOVAL,[BX]
PUSHBX
MOVBX,OFFSETLED
XLAT
POPBX
PUSHDX
MOVDX,ZXK
OUTDX,AL
MOVAL,CL
MOVDX,ZWK
OUTDX,AL
POPDX
PUSHCX
MOVCX,SI
DELAY:
LOOPDELAY
POPCX
CMPCL,01H
JZEXIT
INCBX
SHRCL,1
JMPDIS1
EXIT:
MOVAL,00H
PUSHDX
MOVDX,ZWK
OUTDX,AL
POPDX
RET
LIGHT:
PUSHDX;控制不同速度对应的灯亮
PUSHAX
MOVDX,P55C
MOVAL,BL
OUTDX,AL
POPAX
POPDX
RET
LIGHT1:
PUSHDX;控制正反转灯亮灭
PUSHAX
MOVDX,P55C
INAL,DX
ANDAL,BL
OUTDX,AL
POPAX
POPDX
RET
BUFDB?
?
?
?
?
?
LEDDB0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H
DB88H,83H,0C6H,0A1H,86H,8EH,0FFH,0CH,0DEH,0F3H
CODEENDS
ENDSTART