微型计算机控制技术课程设计 设计题目步进电机控制系统.docx

上传人:b****4 文档编号:4314615 上传时间:2023-05-07 格式:DOCX 页数:14 大小:190.52KB
下载 相关 举报
微型计算机控制技术课程设计 设计题目步进电机控制系统.docx_第1页
第1页 / 共14页
微型计算机控制技术课程设计 设计题目步进电机控制系统.docx_第2页
第2页 / 共14页
微型计算机控制技术课程设计 设计题目步进电机控制系统.docx_第3页
第3页 / 共14页
微型计算机控制技术课程设计 设计题目步进电机控制系统.docx_第4页
第4页 / 共14页
微型计算机控制技术课程设计 设计题目步进电机控制系统.docx_第5页
第5页 / 共14页
微型计算机控制技术课程设计 设计题目步进电机控制系统.docx_第6页
第6页 / 共14页
微型计算机控制技术课程设计 设计题目步进电机控制系统.docx_第7页
第7页 / 共14页
微型计算机控制技术课程设计 设计题目步进电机控制系统.docx_第8页
第8页 / 共14页
微型计算机控制技术课程设计 设计题目步进电机控制系统.docx_第9页
第9页 / 共14页
微型计算机控制技术课程设计 设计题目步进电机控制系统.docx_第10页
第10页 / 共14页
微型计算机控制技术课程设计 设计题目步进电机控制系统.docx_第11页
第11页 / 共14页
微型计算机控制技术课程设计 设计题目步进电机控制系统.docx_第12页
第12页 / 共14页
微型计算机控制技术课程设计 设计题目步进电机控制系统.docx_第13页
第13页 / 共14页
微型计算机控制技术课程设计 设计题目步进电机控制系统.docx_第14页
第14页 / 共14页
亲,该文档总共14页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

微型计算机控制技术课程设计 设计题目步进电机控制系统.docx

《微型计算机控制技术课程设计 设计题目步进电机控制系统.docx》由会员分享,可在线阅读,更多相关《微型计算机控制技术课程设计 设计题目步进电机控制系统.docx(14页珍藏版)》请在冰点文库上搜索。

微型计算机控制技术课程设计 设计题目步进电机控制系统.docx

微型计算机控制技术课程设计设计题目步进电机控制系统

微型计算机控制技术课程设计

 

设计题目:

步进电机控制系统

 

 

班级:

电升本1103

姓名:

何世宁

学号:

29

小型步进电机控制系统

一、课程设计目的

课程设计是本科教学全过程中的重要环节。

《微机应用系统设计与综合实验(实践)》课程设计主要培养我们自动化专业学生,运用所学知识解决计算机应用领域内实际问题能力,进一步提高学生运用计算机编程语言综合编程能力、程序调试技能和微机系统接口综合应用及电路设计能力。

1、学习在PC系统中扩展简单的I/O接口的方法。

2、熟练掌握和运用汇编和C语言编写程序控制8255各口的输入输出,并正确带动数码管及步进电机;能熟练运用汇编和C语言实现8254的定时功能,以确保8255输出的脉冲频率稳定。

3、熟练掌握ISA总线配置方式下硬件实验的调试,并能独立的排除故障,以确保实验的顺利进行。

4、.巩固和加深课堂所学知识;

5、学习掌握一般的软硬件的设计方法和查阅、运用资料的能力;

6、通过步进电机控制系统设计与制作,深入了解与掌握步进电机的运行方式、方向、速度、启/停的控制。

二、设计的题目名称及要求

设计题目:

小型步进电机控制系统设计。

设计要求:

(1)分别用C语言和汇编语言编程完成硬件接口功能设计;

(2)基于80x86微机接口硬件电路设计调试;

(3)控制功能要求:

小键盘给定分段速度,数码管显示当前步进电机启动与停止、方向、速度信息;

(4)具有本地与远程(串行方式下)功能。

三、实验设备

PC机一台(装有TDPIT软件)、唐都AEDK8688ET实验箱。

使用硬件:

8086PC,8255芯片,键盘数码管,步进电机驱动电路,步进电机。

系统设计:

键盘采用实验板提供的4*4键盘,使用4个数码管实时显示系统当前状态。

四、设计的思想和实施方案

4.1.2步进电机的工作原理

步进电机是将电脉冲信号转变为角位移或线位移的开环控制元件。

在非超载的情况下,电机的转速、停止的位置只取决于脉冲信号的频率和脉冲数,而不受负载变化的影响,即给电机加一个脉冲信号,电机则转过一个步距角。

这一线性关系的存在,加上步进电机只有周期性的误差而无累积误差等特点。

使得在速度、位置等控制领域用步进电机来控制变的非常的简单。

步进电机动态指标及术语:

1、步距角精度:

步进电机每转过一个步距角的实际值与理论值的误差。

用百分比表示:

误差/步距角*100%。

不同运行拍数其值不同,四拍运行时应在5%之内,八拍运行时应在15%以内。

2、失步:

电机运转时运转的步数,不等于理论上的步数。

称之为失步。

3、失调角:

转子齿轴线偏移定子齿轴线的角度,电机运转必存在失调角,由失调角产生的误差,采用细分驱动是不能解决的。

4、电机正反转控制:

当电机绕组通电时序为AB-BC-CD-DA或()时为正转,通电时序为DA-CA-BC-AB或()时为反转。

驱动控制系统组成:

使用、控制步进电机必须由环形脉冲,功率放大等组成的控制系统,其方框图如下:

脉冲信号的产生:

脉冲信号一般由单片机或CPU产生,一般脉冲信号的占空比为0.3-0.4左右,

电机转速越高,占空比则越大。

下图步进电机为一四相步进电机,采用单极性直流电源供电。

只要对步进电机的各相绕组按合适的时序通电,就能使步进电机步进转动。

图1是该四相反应式步进电机工作原理示意图。

图1四相步进电机步进示意图

开始时,开关sb接通电源,sa、sc、sd断开,b相磁极和转子0、3号齿对齐,同时,转子的1、4号齿就和c、d相

绕组磁极产生错齿,2、5号齿就和d、a相绕组磁极产生错齿。

当开关sc接通电源,sb、sa、sd断开时,由于c相绕组的磁力线和1、4号齿之间磁力线的作用,使转子转动,1、4号齿和c相绕组的磁极对齐。

而0、3号齿和a、b相绕组产生错齿,2、5号齿就和a、d相绕组磁极产生错齿。

依次类推,a、b、c、d四相绕组轮流供电,则转子会沿着a、b、c、d方向转动。

四相步进电机按照通电顺序的不同,可分为单四拍、双四拍、八拍三种工作方式。

单四拍与双四拍的步距角相等,但单四拍的转动力矩小。

八拍工作方式的步距角是单四拍与双四拍的一半,因此,八拍工作方式既可以保持较高的转动力矩又可以提高控制精度。

单四拍、双四拍与八拍工作方式的电源通电时序与波形分别如图2.a、b、c所示:

a.单四拍b.双四拍c八拍

图2.步进电机工作时序波形图

4.1.28255A的功能简介

 Intel8086/8088系列的可编程外设接口电路(ProgrammablePeripheralInterface)简称PPI,型号为8255(改进型为8255A及8255A-5),具有24条输入/输出引脚、可编程的通用并行输入/输出接口电路。

它是一片使用单一+5V电源的40脚双列直插式大规模集成电路。

8255A的通用性强,使用灵活,通过它CPU可直接与外设相连接。

  8255A在使用前要写入一个方式控制字,选择A、B、C三个端口各自的工作方式,共有三种;

  方式0:

基本的输入输出方式,即无须联络就可以直接进行的I/O方式。

其中A、B、C口的高四位或低四位可分别设置成输入或输出。

  方式1:

选通I/O,此时接口和外围设备需联络信号进行协调,只有A口和B口可以工作在方式1,此时C口的某些线被规定为A口或B口与外围设备的联络信号,余下的线只有基本的I/O功能,即只工作在方式0.

方式2:

双向I/O方式,只有A口可以工作在这种方式,该I/O线即可输入又可输出,

本次设计,对8255的使用是这样的:

8255工作于方式0,A口低四位接键盘及数码管显示单元的X1~X4;C口低四位接键盘及数码管显示单元的Y1~Y4;C口高四位接步进电路的驱动电路,使电机转动起来;B口接数码管的A、B、C、D、E、F、G和DP,以使数码管显示电机的转向和转速。

8255的A口高四位本次课程设计没有用到。

此外,本次设计还用到了实验箱中的键盘及数码管显示单元:

方向键:

控制步进电机运行方向,无论电机处于运行或停止状态,每按下一次,电机转动方向反向;

运行/暂停键:

控制电机运行与否。

电机转动时按下,电机暂停,当前电机

运行参数不变,再次按下时,电机继续按暂停前参数运行;

停止键:

无论电机处于任何状态,按下此键,电机停止转动,电机各运行参数复位,默认参数为:

“顺时针,停止状态,1档”;

档位键:

无论电机处于任何状态,均可设定电机档位。

数码管显示信息:

左起第一个数码管显示当前电机的运行状态:

S(Stop)表示当前电机为停止状态;E(Enable)表示当前电机为运行状态;P(Pause)表示当前电机为暂停状态。

第二个数码管未使用,只有小数点点亮。

第三个数码管显示电机运行方向:

C(Clockwise)表示电机运行方向为顺时针;A(Anti-clockwise)表示电机运行方向为逆时针。

第四个数码管显示电机的档位:

1、2、3、4分别表示1、2、3、4档。

键盘数码管内部连线如下图:

五、硬件电路原理图

图步进电机控制系统硬件电路原理

如上图示:

该原理图涉及到系统总线、可编程外围接口芯片8255、键盘及数码管显示单元和步进电机及其驱动电路.8255的D0~D7依次接系统总线的XD0~XD7,A1和A0依次接系统总线的XA3和XA2;WR和RD依次接系统总线上的XIOW和XIOR;8255的CS接系统总线的IOY0,8255

的A口低四位PA0~PA4依次接小键盘的X1~X4(列);C口低四位PC0~PC3分别接小键盘的Y1~Y4(行);C口高四位PC4~PC7依次接驱动电路的A、B、C和D;B口PB0~PB7分别接数码管的A、B、C、D、E、F、G和DP;A口高四位没用到。

图步进电机模块

此模块的主要功能是通过接收8255的C口输入信号来控制步进电机的转动,A,B,C,D分别代表不同的四个相位,分别接入到PC0,PC1,PC2和PC3,实现转动控制。

图LED模块

六、课程设计中遇到的问题及解决方法

在本次课程设计过程中,我遇到了一下问题:

首先,在显示模块中,在做数码管显示时,每次可以输出四位信息,而且要输出的字符须转化为相应的ASCII才行,否则就不能输出想要的东西。

显示模块的调试一般是程序问题,硬件连接很简单,一般不会出错,我在调试时,开始没有初始化8255,导致结果不能输出。

再就是相应的端口一定不能定义错误。

这在显示模块调试中应该多注意。

在刚开始编程时,各种功能大部分是由主程序来完成的。

由于主程序过于复杂,可读性不高。

使得在以后的程序的调试中遇到了很大的麻烦。

后来把主程序的部分功能转化成子程序来实现,并在一些重要的地方增加了注释,使的程序的可读性大大加强。

调试也变的比较简单了。

其次,在使用小键盘时容易死机。

出现死机的原因有很多,有时候同一个程序换台机子运行就会死机,有时候同一台机子同一个程序运行多次就会死机,不过总的来看死机的出现多少是和所编写的程序有关,记得我以前用小键盘时就是很容易就死机了,不过在这次的课程设计中我把所有的和小键盘有关的程序都用了子函数代替,大大简化了主程序的结构,这样就基本再也没发生过死机现象了。

再者,当小键盘按下不松时电机也停止转动这种情况出现在电机的加速、减速和改变转向中,这主要是在原有的keyscan程序中有一段判断按键是否弹起的程序,将此段换成一个合适的软件延时便可以起到很好的效果(按键不松时可以连续的加速和减速)。

再就是寄存器的使用问题。

在编程时,子程序的调试也是相当重要,由于子程序不可避免的使用AX\BX\CX\DX通用寄存器一个或几个。

使得原主程序中的通用寄存器的内容很容易被覆盖,对子程序中所有的通用寄存器出入栈即可以避免上诉的问题,不用考虑使用的是哪几个寄存器,使用起来又比较简单方便。

数码转换问题,首先查找许多相关的典型程序,例如:

十六位二进制数转换为10进制BCD码,可将AX中的二进制数先后除以1000,100,10,每次除法所得的商,即是BCD的千位、百位和十位数,余数是个位。

TRAN:

PUSHCXSHLDX,CL

PUSHDXXCHGAL,AH

SUBDX,DXSUBAH,AH

MOVCX,1000MOVCL,10

DIVCXDIVCL

XCHGAX,DXADDDL,AL

MOVCL,4MOVCL,4

SHLDX,CLSHLDX,CL

MOVCL,100ADDDL,AH

DIVCLMOVAX,DX

ADDDL,ALPOPDX

MOVCL,4POPCX

而在算术运算方面也遇到了不少的问题,由于设计过程中存在着小数所以很多时候总会出现算术方面错误,具体表现为结果的溢出或者结果小数点位置错

误。

解决的方法通常是先将所要计算的数值乘以10、100等使得数值为整数,然后再进行计算,而在结果输出时再除以相映的数值从而实现小数的算术运算功能,而不需要采用定义浮点型去计算小数以避免出现数值定义的错误。

另一个常见的错误就是自定义存储空间之间的数值存放,因为在许多时候总是需要将结果保存在某一段存储空间里面,由于对存储空间的定义使得其大小范围各有不同,所以对其赋值时总是会出现溢出或数值转换的错误。

而在子程序调用以循环方面存在的问题是指针的计数以及标志位清零或置1搞错从而使子程序运算错误或者进入死循环等。

所采取的解决方法是对指针计数值在各个部分运算结束后进行清零以保证指针初值的正确。

最后的问题就是DOS系统功能调用和BIOS中断调用,因为本课题设计中要实现软件时钟,所以需要对软件延迟以及中断调用有一定的了解,对此在设计时查阅了一些相关的软件中断命令。

当个模块都调试成功后,即可合成到一起运行。

本系统电机的速度可以通过速度增减键来控制。

通过验证各按键是否被有效采用,来检验该系统是否正确的完成了指定的功能。

七、收获与体会

通过本次微机应用系统的课程设计,我对这学期学习的《微型计算机原理》有了一个良好的、整体的认识。

同时对微机原理相关知识进行了一次系统总结。

还挺高了自己的动手能力,和运用理论来指导实践的能力。

本次是微机原理的实践学习阶段,通过查阅相关资料,我对理论的认识加深不少。

在整个过程中,查阅了不少资料,例如数码管的显示原理及编程方法等是通过自学完成.知道如何尽快读懂别人写的源程序,从中借鉴好的地方来完善自己的程序。

同时,我对利用汇编语言设计程序有了一定的认识。

平时在书本学习的都是一条一条的指令,没有很清楚地理解指令的真正含义。

在这次课程设计中我们在老师的指导下学习了很多课堂上没有学习到的知识也体会到同学之间合作的重要性,体会到只有平时多练习,多看程序才能自己编写程序,自己调试程序。

通过这次的课程设计使我对汇编语言有了更加深入的学习,通过几天的设计,我掌握了DOS和BIOS各个功能调用的同时,还对子程序的调用有了很深的理解,也学到了自己以前从没学过的东西。

通过这次实验我学会了灵活应对实验中突发的各种错误和故障(比如:

死机),始终保持大脑的清醒和敏捷,冷静地分析和排除出现错误的各种原因(当然有时也离不开老师的认真指导),并最终顺利地完成了实验。

再有以前对C语言的一些标准库函数不太了解,通过实践,使我在这个方面的认识有所提高。

通过实践的学习,我认识到学好计算机要重视实践操作,不仅仅是学习汇编和C语言。

通过这次课程设计也让我懂得了学习的乐趣。

这一段时间恰好是期末考试与课程设计同时进行,因此需要既复习好专业知识,又完成课程设计。

但我并不觉得辛苦,因为我发现当自己动手让那些芯片完成自己想要的功能是一件很兴奋的事。

虽然有时候我们会遇到很棘手的问题,但是,慢慢地我发现思考也成了我的一种兴趣,还记得有一天我为了解决数码管为什么不能很好地显示转速信息,而呆在实验室不断调试。

我排出了很多原因,最后还是发现了错误的原因。

正是这种深刻的体验让我更加爱思考解决问题了。

这次,我还在网上也找了不少的资料,主要是一些芯片资料,虽然有一些芯片在实验中未能使用,但掌握此类资料对微机系统的认识是有作用的。

认识到网络资源的共享能给我们开拓解决问题的思路。

因此,学会如何使用互联网帮助自己的研究,是非常有必要。

总之,此次课程设计,让我明白模块化编程的重要性,运用子程序编程的方法可使程序更加简洁方便,运行更加可靠,并且还要多与同学交流,互相探讨,吸取优点,互补不足,这才能把事情做的更加出色。

八、参考文献

1.陆庭恕.《电动机的微型计算机控制》.南京工学院出版社.1986

2.吴秀清,周荷琴.《微型计算机原理与接口技术》(第二版).中国科学技术大学出版社.2003

3.《32位微机原理与接口技术实验教程》.安唐都科教仪器公司.2005

4.彭鸿才.《电机原理及拖动》.机械工业出版社.2005

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

当前位置:首页 > 自然科学 > 物理

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

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