步进电机控制系统设计.docx
《步进电机控制系统设计.docx》由会员分享,可在线阅读,更多相关《步进电机控制系统设计.docx(18页珍藏版)》请在冰点文库上搜索。
步进电机控制系统设计
课程设计
课程名称微机接口与接口技术
题目步进电机控制系统设计
专业计算机科学与技术(网络)
班级
学号
姓名
成绩_________________
指导教师
2010年6月25日
课程设计任务书
设计题目:
步进电机控制系统设计
设计目的:
1.巩固和加深课堂所学知识;
2.学习掌握计算机控制系统的软硬件的设计方法和查阅、运用资料的能力;
3.通过步进电机控制系统设计与制作,深入了解与掌握步进电机的运行原理和控制方式。
设计任务:
1.画出硬件原理图(接口芯片和外设部分)和实验连线图;
2.用1个开关控制步进电机起停,1个开关控制正反转,1个开关控制速度的快与慢(电机正转→停→反转;反之相同);
3.送电时和步进电机停止时,彩灯全部点亮;步进电机正转时,彩灯正向循环点亮。
步进电机逆转时,彩灯反向循环点亮;
*4.步进电机转速较快时,彩灯循环速度也较快。
时间安排:
6月21日
布置题目,确定任务、查找相关资料
6月22日~6月24日
功能分析,硬件设计,拟定实验电路,编写程序,调试程序、运行系统;
6月25日
答辩后撰写设计报告。
具体要求:
设计报告撰写格式要求(按提供的设计报告统一格式撰写)
具体内容如下:
①设计任务与要求
②总体方案与说明
③硬件原理图与说明
④实验电路图与说明
⑤软件主要模块流程图
⑥源程序清单与注释
⑦问题分析与解决方案(包括调式记录、调式报告,即在调式过程中遇到的主要问题、解决方法及改进设想);
⑧小结与体会
附录:
①源程序(必须有简单注释)
②使用说明
③参考资料
指导教师签名:
10年6月21日
教研室主任(或责任教师)签名:
10年6月21日
目录
设计任务与要求4
设计目的4
设计任务4
总体方案与说明4
步进电机4
总体方案5
实验电路图和原理图5
程序设计6
程序流程图6
分段功能子程序(参考)7
实验操作与调试9
实验小结与体会10
参考文献10
附录10
源程序代码10
设计任务与要求
设计目的
1.巩固和加深课堂所学知识;
2.学习掌握计算机控制系统的软硬件的设计方法和查阅、运用资料的能力;
3.通过步进电机控制系统设计与制作,深入了解与掌握步进电机的运行原理和控制方式。
设计任务
1.画出硬件原理图(接口芯片和外设部分)和实验连线图;
2.用1个开关控制步进电机起停,1个开关控制正反转,1个开关控制速度的快与慢(电机正转→停→反转;反之相同);
3.送电时和步进电机停止时,彩灯全部点亮;步进电机正转时,彩灯正向循环点亮。
步进电机逆转时,彩灯反向循环点亮;
*4.步进电机转速较快时,彩灯循环速度也较快。
总体方案与说明
步进电机
步进电机是一种将电脉冲转化为角位移的执行机构。
当步进驱动器接收到一个脉冲信号,它就驱动步进电机按设定的方向转动一个固定的角度(及步进角)。
您可以通过控制脉冲个数来控制角位移量,从而达到准确定位的目的;同时您可以通过控制脉冲频率来控制电机转动的速度和加速度,从而达到调速的目的。
实验室给定步进电机为4相,为了使步进电机转动更加稳定,设计为双8拍脉冲,即:
AB—ABC—BC—BCD—CD—CDA—DA—DAB—AB反转就从右到左。
如果给步进电机发一个控制脉冲,它就转一步,再发一个脉冲,它会再转一步。
2个脉冲的间隔越短,步进电机就转得越快。
调整送给步进电机的脉冲频率,就可以对步进电机进行调速。
总体方案
此次我们所设计的是一个步进电机控制系统并行输入/输出接口8255A,4相步进电机,8位发光二极管,及一些其他相关元件设计而成。
可以通过一个开关来控制系统的启/停工作,当系统运转时,再用一个开关来控制方向,并使相应的指示灯亮起,另外一个开关控制步进电机的转速。
步进电机为4拍,可以利用8255的输出口提供给电机4根线路,给与不同的脉冲,脉冲的设计可以事先做一个相序表,8255的C口的0位作为步进电机的A相,1作为B相,2作为C相,3作为D相,相序表如表1.
绕组与数据线的连接
运行方式
相序表
查表方向
D
C
B
A
双八拍
加电代码
地址代码
正转
反转
D7
D6
D5
D4
D3
D2
D1
D0
0
0
0
0
0
0
1
1
AB
03H
400H
0
0
0
0
0
1
1
1
ABC
07H
401H
0
0
0
0
0
1
1
0
BC
06H
402H
0
0
0
0
1
1
1
0
BCD
0EH
403H
0
0
0
0
1
1
0
0
CD
0CH
404H
0
0
0
0
1
1
0
1
CDA
0DH
405H
0
0
0
0
1
0
0
1
DA
09H
406H
0
0
0
0
1
0
1
1
DAB
0BH
407H
表1
那么8相的脉冲可以计算出分别为:
0000001100000111000001100000111000001100000011010000100100001011
换成汇编语言中常中的16进制,则为:
03H07H06H0EH0CH0DH09H0BH
将这8种数字信号按正或反序输给步进电机就能实现步进电机的转动了
8255的B口0位接K1开关,控制延时,延时长则步进电机转速慢,延时短则步进电机转速快。
1位接K2开关,通过控制输出相序表的方向达到控制步进电机正反转的目的。
2位按K3开关,控制步进电机和LED灯的启动与停止。
8255的A口的0到7位作为输出接口接8个LED灯。
8255的C口的0到3位作为输出接口接步进电机的四相。
实验电路图和原理图
实验中主要用到8255芯片,利用汇编程序设计芯片A口和C口为输出,B口为输入,用到了A口的PA0,PA1,PA2,PA3,用到了B口的PB0,PB1,PB2,用到C口PC0-PC7;PB0对应开关K0控制启动开关,PB1对应开关K1控制电机的旋转方向,PB2对应开关K2控制电机的旋转快慢。
图1
软件设计
软件流程图
图2
分段功能子程序(参考)
1.测试开关,读取步进电机旋转参数和LED灯点亮参数
分别检测PB口读入的开关的数值,PB0=0,步进电机开始转动,灯开始循环点亮;PB1=1步进电机开始逆向转动,灯循环向左点亮;PB1=0步进电机开始正向转动,灯循环向右点亮;PB2=1步进电机开始慢速转动;PB2=0步进电机开始快速转动。
JIANCE:
MOVDX,61H
INAL,DX
TESTAL,01H;B0开。
则继续做
JZJIANCE
TESTAL,04H;检测快慢
JZMAN
KUAI:
MOVAH,01H
JMPZF
MAN:
MOVAH,00H
ZF:
TESTAL,02H;检测B1的值,为后面的正反转设定跳转
JZBEGIN2;为1是逆时针
2.控制正向转动
BEGIN1:
XORAL,AL
ZHENG:
MOVDX,PORT_A
MOVBX,OFFSETTABLE1
ZHUAN1:
PUSHAX;逆时针
XLAT
OUT60H,AL
POPAX
INCAL
CALLLIANG1
TESTAH,01H
JZMANSU1
CALLDELAY1
MANSU1:
CALLDELAY3
CMPAL,07H
JNZZHUAN1
MOVAL,00H
JMPJIANCE
3.控制逆向转动
BEGIN2:
MOVAL,07H
ZHUAN2:
PUSHAX;顺时针
XLAT
OUT60H,AL
POPAX
DECAL
CALLLIANG2
TESTAH,01H
JZMANSU2
CALLDELAY1
MANSU2:
CALLDELAY3
CMPAL,00H
JNZZHUAN2
MOVAL,07H
JMPJIANCE
4.两段延时子程序
分别用两个loop循环作为软延时
DELAY1:
MOVCX,0FFFFH
DELAY2:
LOOPDELAY2
RET
DELAY3:
MOVCX,5FFFH
DELAY4:
LOOPDELAY4
RET
5.两个点亮LED灯的子程序
通过循环左移和右移来使LED灯循环点亮
LIANG1:
PUSHAX
MOVAL,CANSHU
ROLAL,1H
OUT62H,AL
MOVCANSHU,AL
POPAX
RET
LIANG2:
PUSHAX
MOVAL,CANSHU
RORAL,1H
OUT62H,AL
MOVCANSHU,AL
POPAX
RET
实验操作与调试
1根据连线图连好线,确认连线正确。
2打开电源,运行程序。
3打开开关k2(即将k0置为1),步进电机开始转动,LED灯开始循环点亮
4打开开关k1(即将k1置为1),步进电机开始逆向转动,灯循环向左点亮
5关闭开关k1(即将k1置为0),步进电机开始正向转动,灯循环向右点亮
6打开开关k0(即将k2置为1),步进电机开始慢速转动
7关闭开关k0(即将k2置为0),步进电机开始快速转动
实现了步进电机的转速与正反向转动的控制
表4.1各开关对应的步行电机状态表
开关
步进电机运行状态
K2
K2
K0
0
0
0
停止
1
0
0
正向慢转
1
0
1
正向快转
1
1
0
反向慢转
1
1
1
反向快转
实验小结与体会
通过这一星期的课程设计,使我更加懂得理论是为实践做基础的,带着目标在实践中学习,远比单纯的课本知道灌输式学习更加有效率,而且实践中也可以应证理论知识的正确性,知识印象更加深刻,更重要的是从而提高自己的实际动手能力和独立思考的能力。
通过实践,进一步掌握了8255A各引脚的功能,8255A和系统总线之间的连接,8255A和CPU之间的数据交换,以及8255A的内部逻辑结构;掌握了软件设计和调试的基本方法和技巧
参考文献
[1]周佩玲,彭虎,傅忠谦《微机原理与接口技术》北京,电子工业出版社2005
[2]沈美明,温东婵《IBM-PC汇编语言程序设计》北京,清华大学出版社1993
附录
源程序代码
STACKSEGMENTSTACK
DW64DUP(?
)
STACKENDS
DATASEGMENT
TABDB03H,07H,06H,0EH,0CH,0DH,09H,0BH;进步电机的控制字
CANSHUDB0FEH
DATAENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA,SS:
STACK
START:
MOVAX,DATA
MOVDS,AX
moval,82h
OUT63H,AL
MOVBX,OFFSETTAB
moval,01h
out62h,al
MAIN:
MOVAL,0ffH
out60h,al;A口控制灯
inal,61h;B口控制开关
ANDAL,04H
CMPAL,00H
JZMAIN
inal,61h
ANDAL,03H
CMPAL,00H
JZZMan
CMPAL,01H
JZZKuai
CMPAL,02H
JZNMan
CMPAL,03H
JZNKuai
ZMan:
MOVAL,[BX];正向慢转子程序
CMPAL,0BH;检查是不是最后一个加电代码
JNZXH1;不等于时,跳转到XH1
SUBBX,8;BX-8
XH1:
INCBX;指针作加1运算,及实现向后移动
MOVAL,[BX]
out62h,al;从a口输出
CALLDeng2
CALLDELAY1;调用长延时
JMPMAIN
ZKuai:
MOVAL,[BX];正向快转子程序
CMPAL,0BH;比较
JNZXH2;不等时跳转
SUBBX,8
XH2:
INCBX
MOVAL,[BX]
out62h,al
CALLDeng2
CALLDELAY2;调用短延时
JMPMAIN
NMan:
MOVAL,[BX]
CMPAL,03H
JNZFXH1
ADDBX,8
FXH1:
DECBX
MOVAL,[BX]
out62h,al
CALLDeng1
CALLDELAY1
JMPMAIN
NKuai:
MOVAL,[BX];检查是不是第一个加电码
CMPAL,03H
JNZFXH2
ADDBX,8;若是第一个加电码,则指针加8跳到最后一个加电码
FXH2:
DECBX;指针减1,实现向前移动
MOVAL,[BX]
out62h,al
CALLDeng1
CALLDELAY2;调用短延时子程序
JMPMAIN
DELAY1:
PUSHCX
MOVCX,0D300H;通过修改CX的值来提高旋转的速度
ADD1:
PUSHAX
POPAX
LOOPADD1
POPCX
RET
DELAY2:
PUSHCX
MOVCX,03300H;CX的值就为循环的次数,通过循环来达到延时
ADD2:
PUSHAX
POPAX
LOOPADD2
POPCX
RET
Deng1:
PUSHAX;循环左移使LED灯循环点亮
MOVAL,CANSHU
ROLAL,1H
out60h,al
MOVCANSHU,AL
POPAX
RET
Deng2:
PUSHAX;循环右移使LED灯循环点亮
MOVAL,CANSHU
RORAL,1H
out60h,al
MOVCANSHU,AL
POPAX
RET
CODEENDS
ENDSTART
设计过程中质疑(或答辩)记载:
1.如何进行使进步电机正转和反转的?
答:
正向输入进步电机控制字和反向输入进步电机控制字来控制进步电机正转和反转。
2.8255芯片是如何进行输入输出的?
答:
A口输出控制LED灯,B口输入接受开关的信号,C口输出控制进步电机旋转。
指导教师评语:
评分:
签名:
年月日