范文一:PLC步进电机课程设计报告
1 课程设计任务与要求
1.1 课程设计任务
利用PLC 构成三相步进电机控制系统,完成主电路的接线,并编写三拍、六拍、单步和连续控制的程序并调试。
1.2 课程设计要求
①当钮子开关拨到单步时,必须每按一次起动,电机才能旋转一个角度;
②当钮子开关拨到连续时,按一次起动,电机旋转,直到按停止; ③当钮子开关拨到三拍时,旋转的角度为3度; ④当钮子开关拨到六拍时,旋转的角度为1.5度; ⑤当钮子开关拨到正转时,旋转按顺时针旋转; ⑥当钮子开关拨到反转时,旋转按逆时针旋转;
⑦当单步要转到连续,可以通过停止也可以直接转换;(通过编程) ⑧当连续要单步连续,可以通过停止也可以直接转换;(通过编程) ⑨当三拍要转到六拍,可以通过停止也可以直接转换;(通过编程) ⑩当六拍要转到三拍,可以通过停止也可以直接转换;(通过编程) ?当正转要转到反转,可以通过停止也可以直接转换;(通过编程) ?当反转要转到正转,可以通过停止也可以直接转换;(通过编程)
2 步进电机的工作原理及其控制要求
2.1 设计思路
本次设计的是一个三相步进电机控制系统,主要由步进电机及一些其他相关元件设计而成。本设计采用自顶向上的设计思想。先确定了系统的格局,再分模块实现发的方案。首先对步进电机的实际要求进行逻辑抽象,确定这个系统的输入与输出,输入有启动与停止、单步与连续、三拍与六拍、正转与反转,输出有A 、B 、C 三相。可以通过开关来控制系统的启/停工作,当系统运转时,用开关来控制方向,并使相应的指示灯亮起,同样由开关来选择工作模式。最后根据思路所设计出来的硬件图设计相适应的软件。
2.2 控制系统的工作原理
2.2.1 步进电机的工作原理
步进电机是纯粹的数字控制电动机,它将电脉冲信号转换成角位移,即给一个脉冲信号,步进电机就转动一个角度,一般电动机都是连续旋转,而步进电动却是一步一步转动的,故叫步进电动机。每输入一个脉冲信号,该电动机就转过一定的角度(有的步进电动机可以直接输出线位移,称为直线电动机)。因此步进电动机是一种把脉冲变为角度位移(或直线位移)的执行元件。
步进电机分为转子和定子两部分。定子是由硅钢片叠成,定子上有六个磁极(大极),每两个相对的磁极(N 、S 极)组成一对。共有3对。每对磁极都绕有同一绕组,也即形成1相,这样三对磁极有3个绕组,形成三相。可以得出,三相步进电机有3对磁极、3相绕组;四相步进电机有4对磁极、四相绕组,依此类推。
反应式步进电动机的动力来自于电磁力。在电磁力的作用下,转子被强行推动到最大磁导率(或者最小磁阻)的位置,如图2-1所示,定子小齿与转子小齿对齐的位置,并处于平衡状态。对三相异步电动机来说,当某一相的磁极处于最大导磁位置时,另外两相相必处于非最大导磁位置,即定子小齿与转子小齿不对齐的位置。
把定子小齿与转子小齿对齐的状态称为对齿,把定子小齿与转子小齿不对齐的状态称为错齿。错齿的存在是步进电机能够旋转的前提条件,所以,在步进电机的结构中必须保证有错齿的存在,也就是说,当某一相处于对齿状态时,其它绕组必须处于错齿状态。
模块中用到的45BC340型步进电机为三相反应式步进电机,下面介绍它单三
拍、六拍及双三拍通电方式的基本原理。
图2-1 反应式步进电动机的结构示意图
2.2.2 单三拍通电方式的基本原理
设A 相首先通电(B 、C 两相不通电),产生A-A′轴线方向的磁通,并通过转子形成闭合回路。这时A 、A′极就成为电磁铁的N 、S 极。在磁场的作用下,转子总是力图转到磁阻最小的位置,也就是要转到转子的齿对齐A 、A′极的位置(图2a );接着B 相通电(A 、C 两相不通电),转了便顺时针方向转过30°,它的齿和C 、C′极对齐(图2c )。不难理解,当脉冲信号一个一个发来时,如果按A→C→B→A→…的顺序通电,则电机转子便逆时针方向转动。这种通电方式称为单三拍方式。
图2-2 单三拍通电方式时转子的位置
2.2.3 六拍通电方式的基本原理
如A 相通电,B ,C 相不通电时,由于磁场作用,齿1与A 对齐,(转子不受任何力以下均同)。如B 相通电,A ,C 相不通电时,齿2应与B 对齐,此时转子向右移过1/3て,此时齿3与C 偏移为1/3て,齿4与A 偏移(て-1/3て)=2/3て。如C 相通电,A ,B 相不通电,齿3应与C 对齐,此时转子又向右移过1/3て,此时齿4与A 偏移为1/3て对齐。如A 相通电,B ,C 相不通电,齿4与A 对齐,转子又向右移过1/3て这样经过A 、B 、C 、A 分别通电状态,齿4(即
齿1前一齿)移到A 相,电机转子向右转过一个齿距,这样,如果按A→A、B→B→B、C→C→C、A→A…的顺序轮流通电,则转子便顺时针方向一步一步地转动,步距角15°。电流换接六次,磁场旋转一周,转子前进了一个齿距角。如果按A→A、C→C→C、B→B→B、A→A…的顺序通电,则电机转子逆时针方向转动。这种通电方式称为六拍方式。
a.A 相通电 b.A、B 相通电 c.B相通电 d.B、C 相通电
图2-3 六拍通电时转子的位置
2.3 设计方法
由于程序实现的功能比较多,为了能够更清晰的体现设计思路,编写合理规范的程序;同时也是为了更好的综合三部分模块的功能,提高程序的执行效率,所以一般先画出主程序的流程图,然后在主程序的流程图结构的指导下完成三部分功能的转换,这种设计方法充分体现了自顶向上和模块化的设计思想,使得编写的程序在以后的修改和调试过程中显得比较容易。
2.4 设计流程
3 系统的I/O分配表及程序的详细说明
3.1 步进电机I/O分配表
表3-1 I/O分配表
3.2 I/O端子接线图
图3-1 I/O端子接线图
3.3 控制梯形图
图3-2 控制梯形图
3.4 语句表
表3-2语句表
4 实验问题及解决方案
在本次课设实验中我们遇到两大问题,有很多原因会引起调试运行的失败,分为硬件问题和软件问题。比如硬件方面的线路连接错误,线路接法的不同也会导致实验结果不理想,诸如把三拍、六拍和单步、连续的接线接错了。软件方面可能由于软件版本的不同造成编写的PLC 语句表不能转换或者运行的结果不佳。我们这次课设中对于计数器T (0~5)的设置K 由K20改为K10、K2、K5,最终选择K2,单步运行时不会出现抖动,实验结果最理想
心得体会
为期两周的课程设计让我收获颇多,本次课设以小组为形式,我们小组有六名成员,在两周的共同努力下完成了任务。本次课程设计的内容是步进电机的三拍、六拍,单步、连续和正反转控制程序的设计与调试,针对现在的PLC 技术,实现一些设计。我们还应该加强PLC 语句的练习,要能够运用自如, 此外还应掌握PLC 的外部接线方法。我觉得课程设计是培养学生运用所学知识、发现、分析和解决问题,锻炼实践能力的重要环节。
本次课设过程中让我明白,PLC 并不仅仅只是狭隘的一项编程技术,它是一门独立的专业学科, PLC 可以广义的认为是一台背嵌入操作系统的高可靠性PC 机。首先需要精深PLC 本身的编程语言梯形图、语句表语言。平时课堂上梅老师给我们讲解了PLC 的基础知识,使得我们有良好的基础读懂程序,了解一个程序所能实现的功能和应用。但是像课程设计这种把三部分内容综合起来写成一个完整的控制程序就需要我们查找资料,需要我们组员之间相互分工,把零散的内容整合起来,就能完成课设的要求。
课设过程中也让我知道做事要细心、认真,几百条的语句只要有一点错误就会运行失败,有时候即使看起来是正确的,也要经过多次修改才能达到理想的实验结果,比如计数器的时间设定到底多长时间较为合适,比如哪些语句可以省略,哪些必须加进去。接线时也是如此,必须一一对应,不可大意。
本次课程设计是为了检验我们PLC 相关知识的学习状况和熟悉程度,提升了我们对所学知识能综合运用和综观思考的能力,培养了我们的团队精神以及编写程序的能力。
参考文献
[1] 马小军. 可编程控制器及其应用. 南京:东南大学出版社,2007.
[2] 姚锡禄. 变频器技术应用. 北京:电子工业出版社,2009.
[3] 巫莉. 电气控制与PLC 应用. 北京:中国电力出版社,2008.
[4] 王兆义. 小型可编程控制器实用技术. 北京:机械工业出版社,2013.
[5] 史国生. 电气控制与可编程控制器技术. 北京:化学工业出版社,2010.
[6] 廖常初.FX 系列PLC 编程及应用. 北京:机械工业出版社,2009.
[7] 李朝青. 单片机及其接口技术. 北京:北京航空航天大学出版社,2005.
[8] 宋伯生.PLC 编程理论、算法及技巧. 北京:机械工业出版,2005.
范文二:步进电机课程设计报告
题目名称步进电机控制系统
一、设计内容
1(步进电动机简介。(略)
2. 在PC系统机里,设计总线接口电路以及功率驱动电路控制X、Y两台三
相反应式步进电机55BF004,用软件完成脉冲分配任务,由LED显示X、
Y两台步进电机的实际转数。
3. 具体控制要求为:使步进电机X和Y以每分钟6转的速率正向旋转10min、
停3S;然后,使步进电机X以每分钟30转的速率反向旋转10min,同时
使Y以每分钟50转的速率反向旋转。
4. 典型的步进电机控制系统如下图所示
步 驱 负 接进
CPU 动 电 口 载
器 机 图1.微机控制步进电机系统原理框图
5. 55BF004步进电机主要技术数据
相数:三相 0 步距角:1.5
每相静态电流:3A
电压:27V
脉冲分配方式:三相六拍
最高空载起动频率:2200Hz
二、设计任务:
1. 利用Intel 8088CPU及其相应的外围扩展电路及接口电路,设计系统硬件原理图,并绘制于,号工程图纸。
2. 给出程序的设计思路,设计系统软件流程框图,并绘制于3号工程图纸。
3. 完成设计说明书(总结报告)。具体内容包括:
? 课题名称、班级、学号、姓名、指导教师;
? 摘要、关键词、目录;
? 设计任务书;
? 硬件系统说明(硬件设计思路、系统构成框图、芯片选择、存储空间
与I/O地址分配);
? 软件系统说明(软件设计思路、程序清单及必要的注释);
? 主要单元电路的设计及参数计算;
? 列出所用元器件及集成芯片型号;
? 指出所设计电路的创新点和方案的优缺点;
? 总结体会;
? 参考文献。
三、课程设计总结报告要求
课程设计总结报告是对学生写科学科研总结报告的能力训练,通过写报告不仅把设计,组装,调试的内容进行全面总结,而且把实践间内容上升到理论高度。总结报告应包括以下几点:
1、课题名称;
2、设计内容及要求;
3、比较和选定设计的系统方案,画出系统框图;
4、画出完整的硬件电路图,并说明电路的工作原理;
5、画出软件流程框图,写出程序清单并加必要注释; 6、总结所设计电路的特点和方案的优缺点;
7、列出系统需要的元器件;
8、列出参考文献;
9、收获、体会。
指导教师签名:jiang qing
设计内容及要求
在PC系统机里,设计总线接口电路以及功率驱动电路控制X、Y两台三相反应式步进电机55BF004,用软件完成脉冲分配任务,由LED显示X、Y两台步进电机的实际转数。要求使步进电机X和Y以每分钟6转的速率正向旋转10min、停3S;然后,使步进电机X以每分钟30转的速率反向旋转10min,同时使Y以每分钟50转的速率反向旋转。
设计原理
AT89C51芯片简介:AT89C51是一种带4K字节闪烁可编程可擦除只读存储器(FPEROM—Falsh Programmable and Erasable Read Only Memory)的低电压,
高性能CMOS8位微处理器,俗称单片机。
该器件采用ATMEL高密度非易失存储器制
造技术制造,与工业标准的MCS-51指令集
和输出管脚相兼容。由于将多功能8位CPU
和闪烁存储器组合在单个芯片中,ATMEL
的AT89C51是一种高效微控制器,
AT89C2051是它的一种精简版本。AT89C
单片机为很多嵌入式控制系统提供了一种
灵活性高且价廉的方案。外形及引脚排列
如图1。
XTAL1:振荡器反相放大器及内部时钟发生器的输入端。
XTAL2:振荡器反相放大器的输出端。
时钟振荡器:AT89C51中有一个用于构成内部振荡器的高增益反相放大器,引起XTAL1和XTAL2分别是该放大器的输入端和输出端。这个放大器与作为反馈元件的片外石英晶体或陶瓷谐振器一起构成自激振荡器。外接石英晶体及电容C1、C2接在放大器的反馈回路中构成并联振荡电路。对外接电容C1、C2虽然没有十分严格的要求,但电容容量的大小会轻微影响振荡频率的高低、振荡器工作
的稳定性、起振的难易程序及温度稳定性,如果使用石英晶体,推荐使用30pF左右,如果使用陶瓷谐振器建议选择40pF左右。
芯片主要特性
?与MCS-51 兼容 ,4K字节可编程闪烁存储器,寿命:1000写/擦循环,数据保留时间:10年
-24Hz?三级程序存储器锁定,128*8位内部RAM ?全静态工作:0Hz
?32可编程I/O线,两个16位定时器/计数器,5个中断源
?可编程串行通道,低功耗的闲置和掉电模式,片内振荡器和时钟电路 设计原理框图
时钟 振荡 正转 器及 AT89c51 RST 反转 信号
1正转2反转
1反转2正转
单片机
停止
加速
电机 减速
显示速度
设计程序代码及流程图
org 00h
jmp disp ;显示初始速度为0 stop:orl p1,#0ffh ; 步进电机停止 loop:jnb p0.0,for2 ; 如果p0.0按下正转
jnb p0.1,rev2 ; 如果p0.1按下反转
jnb p0.2,stop1 ; 如果p0.2按下停止
jmp loop ;反复监测键盘
for:mov r0,#00h ;正转到tab取码指针初值 for1:mov a,r0 ;取码
mov dptr,#table ;
movc a,@a+dptr
jz for ;是否到了结束码00h
cpl a ;把acc反向
mov p1,a ;输出到p1开始正转
jnb p0.2,stop1 ; 如果p0.2按下停止
jnb p0.1,rev2 ; 如果p0.1按下反转
call delay ;转动的速度
inc r0 ;取下一个码
jmp for1 ;继续正转
rev:mov r0,#05h ;反转到tab取码指针初值 rev1:mov a,r0
mov dptr,#table ;取码
movc a,@a+dptr
jz rev ;是否到了结束码00h
cpl a ;把acc反向
mov p1,a ;输出到p1开始反转
jnb p0.2,stop1 ; 如果p0.2按下停止
jnb p0.1,rev2 ; 如果p0.1按下反转
call delay ;转动的速度
inc r0 ;取下一个码
jmp rev1 ;继续反转
stop1:call delay ; 按p0.2的消除抖动
jnb p0.2,$ ; p0.2放开否?
call delay ;放开消除抖动
jmp stop
for2:call delay ; 按p0.0的消除抖动
jnb p0.0,$ ; p0.0放开否?
call delay ;放开消除抖动
jmp for
rev2:call delay ; 按p0.1的消除抖动
jnb p0.1,$ ; p0.0放开否?
call delay ;放开消除抖动
jmp rev
delay:jnb p0.3,fast ;判断p0.3是否按下
jnb p0.4,slow ;判断p0.4是否按下
mov r1,#250 ;步进电机的转速20ms
d1:mov r2,#248
djnz r2,$
djnz r1,d1
mov a,#5 显示速度
mov dptr,#tab
movc a,@a+dptr
mov p2,a
mov a,#4
mov dptr,#tab
MOVC A,@A+DPTR
MOV P3,A
ret
fast:mov r5,#150 ;加速
d2:mov r6,#148
djnz r6,$
djnz r5,d2
mov a,#9 ;显示速度
mov dptr,#tab
movc a,@a+dptr
mov p2,a
mov a,#7
mov dptr,#tab
MOVC A,@A+DPTR
MOV P3,A
ret
slow:mov r3,#75 ;减速
d3:mov r4,#48
djnz r4,$
djnz r3,d3
mov a,#1 ;显示速度
mov dptr,#tab
movc a,@a+dptr
mov p2,a
mov a,#8
mov dptr,#tab
MOVC A,@A+DPTR
MOV P3,A
ret
table:
db 03h,09h,0ch,06h ;正转表
db 00 ;正转结束
db 03h,06h,0ch,09h ;反转
db 00 ;反转结束 disp:mov a,#0 ;显示子程序
mov dptr,#tab
movc a,@a+dptr
mov p2,a
mov a,#0
mov dptr,#tab
MOVC A,@A+DPTR
MOV P3,A
jmp loop
tab: db 0c0h,0f9h,0a4h,0b0h,99h;数码表
db 092h,082h,0f8h,080h,090h;
end
仿真截图
正反转(速度54r/min)
电机停止转动
加速(速度97r/min)
减速(速度18r/min)
停止(速度显示保持停止为前的速度)
PCB图
生成3D图
所用器件清单
电阻若干
LED数码显示管
芯片AT89C51
按键开关
电容
晶振
参考文献
《单片机原理与应用》
人民邮电出版社
《单片机原理及应用技术》
电子工业出版社
收获及体会
这次课程设计我初步学会了单片机的使用。也是第一次将编程与仿真结合在一起。
经过多次修改才做到了最后的结果。
出现的问题:
在第一次答辩时主要的问题是电机抖动和无法显示。在改变延时程序后抖动大为减少,使用静态显示方法也将显示问题解决了。
缺陷及改进的想法:
这次的设计还有许多需要完善的地方
如:变速是只能实现3种速度的变化。速度显示是计算值,并不是电机实际值。 改进的想法:速度的变化是通过改变延时程序来实现的。若以一个变量来控制延时,在每按一下加速或减速键时变量相应增加或减少一个值,这样就可以实现速度的连续变化。
速度的显示可以加一个速度传感器,将电机的真实速度传到芯片,再通过程序将此速度显示出来。若能采用动态数码管显示的方法,就可以实现一组端口显示多位数值,便可解决端口不够的问题。
范文三:步进电机专业课程设计报告
西安文理学院物理与机械电子工程学院
课程设计报告
专业班级
课 程
题 目
学 号 学生姓名 指导教师
微机原理及单片机接口技术应用 步进电机控制系统设计
2014年12月
西安文理学院物理与机械电子工程学院
课程设计任务书
学生姓名
指导教师 专业班级 职 称 学 号 教研室 自动化教研室 课 程 微机原理及单片机接口技术应用
题 目
步进电机控制系统设计
任务与要求
1)利用STAR 系列实验箱上的步进电动机搭建电路图,用单片机产生步进电机的控制脉冲设计合适的外围驱动电路,经过功率驱动装置,控制步进电机运行。
2)用软件完成脉冲分配任务,由 LED 显示步进电机的实际转数;
3)使步进电机以每分钟 6 转的速率正向旋转 10min 、停 3S ;然后,使步进电机以每分钟30 转的速率反向旋转 10min 。
4)画出典型的步进电机控制系统框图, 给出程序的设计思路和软件流程框图。
5)能在实验箱直接按要求演示。
开始日期 2014年11月18日 完成日期 2014年12月8日
2014年12月8日
目录
设计目的…………………………………………… 1 设计任务和要求…………………………………… 1 总体设计方案……………………………………… 1 功能模块设计与分析……………………………… 2 电路的安装与调试………………………………… 9 实验仪器及元器件清单…………………………… 12 心得体会…………………………………………… 12 附录 系统电路图.. ………………………………… 14
一、设计目的
1、通过做此设计,要求掌握步进电机的基本原理以及工作方式。
2、了解影响转速的因素有哪些。
3、学会用软件来控制电机的转动方向、转速,并用LED 显示出来。
4、进一步了解51单片机的程序编写以及一个课题的构思,设计,仿真,实现的全过程。
二、设计要求和任务
1、利用STAR 系列实验箱上的步进电动机搭建电路图,用单片机产生步进电机的控制脉冲设计合适的外围驱动电路,经过功率驱动装置,控制步进电机运行。
2、用软件完成脉冲分配任务,由 LED 显示步进电机的实际转数;
3、使步进电机以每分钟 6 转的速率正向旋转 10min、停 3S;然后,使步进电机以每分钟30 转的速率反向旋转 10min。
4、画出典型的步进电机控制系统框图, 给出程序的设计思路和软件流程框图。
5、能在实验箱直接按要求演示。
三、总体设计方案
3.1方案的论证与比较
3.1.1总方案的论证与比较
方案一:利用8086CPU 与8255A 可编程并行I/O芯片的组合。转速利用8253的工作方式2(分频工作方式)来进行调速,时间通过计算的步数来设置,来达到要求。但是实验箱上的步进电机不知道型号,所以我们无法得到它的具体参数。如果要用分频来调速,只能大致估算。那采用设置步数来定时就更不准确了。
方案二:利用专用芯片驱动电机的转动,通过利用STC89C52单片机结合专用芯片驱动,自行设计电路,应用单片机的内部定时来设置时间,通过延时函数来控制电机速的转速,并改变方向。这种方法用的芯片少,接线简单,不容易出错。并且能精确控制转速和时间。
通过比较,选择第二种方案。
3.1.2驱动电源的选择
方案一:使用多个功率放大器件。使用多个功率放大器件驱动电机,通过使用不同放大电路和不同参数的器件,可以达到不同控制要求,放大后能够得到较大频率;但由于使用的是四相步进电机,就需要对四路信号分别放大,由于放大电路很难做到完全一致,当电机功率较大时运行起来会不稳定,而且电路的制作也比较复杂。
方案二:专用驱动芯片。专用驱动芯片针对性强,简单高效和可以直接用单片机的I/O口提供信号的优点。此处选用ULN2003为高压大电流达林顿晶体管阵列,由功率电路来扩展输出电流以满足被控元件的电流电压,具有电流增益高,工作电压高,温度范围宽,带负载能力强等特点,适用于各类要求高速大功率驱动,尤其步进电机。
通过比较,选择方案二。
3.1.3输出显示的选择
方案一:用七段LED 数码管显示。若是直接选用一位的七段LED 数码管,占
用I/O口较多,浪费资源,故考虑应用四位一体共阴极七段LED 数码管,这样只需要占用P0和P2口,简单,易于编程。
方案二:16*16点阵显示。8* 8点阵可以显示数字、字母、图形、曲线等, 要显示一个汉字需要4块点阵即16*16点阵。点阵汉字显示其组成方式灵活、 显示稳定、功耗低、寿命长、技术成熟、成本低廉,但是由于不清楚实验箱上 的点阵接线,以及编程方式。
通过比较,选择方案一。
3.2系统总体框图
图1 系统原理框图
3.3原理图分析及说明
根据前面所做的方案设计,画出如图1所示的原理框图。由于STC89C52的资源丰富,并且内部含有定时器,对于我们也不陌生;但STAR 实验箱的内部构造我们并不是很清楚,所以考虑自己搭建电路。由于实验箱上的步进电机模块带有ULN2003A 电机专用驱动芯片,所以我们考虑直接用单片机的I/O口连接驱动芯片的驱动口,这样可以轻松地利用实验箱上的步进电机模块。
四、功能模块设计与分析
4.1总电路设计
电路中单片机的管脚P0.0~P0.7、P2.0~P2.3口分别接数码管的段选口(a~dp)和片选口(1~4);P1.7口接自锁按钮;P3.0~P3.3接驱动芯片ULN2003A 的A 、B 、C 、D 四相驱动口,通过P0.0~0.7的信号, 控制LED 数码管的段位的亮灭来显示所需要的数字; 通过P2.0~P2.3的信号, 控制哪一位的LED 数码管被选中显示; 通过P1.7的信号, 如果当开关按下时, 有一个脉冲信号, 单片机检测到此信号后, 开始运行编好的程序即电机开始运行且LED 开始显示电机的转速及方向,如“R-06”, “-”, “L-30”;当在运行中随时将开关弹起, 电机也随即停止,LED 显示“-”;通过P3.0~P3.3的信号,有序的写入控制字,将信号传送给ULN2003A ,然后ULN2003A 便用收到的信号来控制电机按规定转速运转,由于端口所给的控制字的不同,可以控制电机的正反转。
仿真电路图如图2所示,实际搭建电路图如图3所示:
图2 仿真电路图
图3 实际电路
系统工作过程:
本设计采用STC89C52单片机(晶振频率为12MHZ )对四相步进电机进行控制。通过I/O口输出的具有时序的方波作为步进电机的控制信号,信号经过芯片ULN2003A 驱动步进电机。用四位一体共阴极LED 数码管来显示步进电动机的转向和转速,通过设置的时间不同来自动变换。使用串行接法可以节约I/O口资源;用一个自锁开关来控制步进电机的启动与停止,当开关按下时,电机开始按要求以每分钟 6 转的速率正向旋转 10min、停 3S;然后以每分钟30 转的速率反向旋转 10min。如果开关没有弹起,就继续做循环运行,若在运行中开关弹起,电机立即停止运行。
4.2单元电路的设计
4.2.1晶振复位电路
①晶振电路:典型的晶振取11.0592MHz(因为可以准确地得到9600波特率和19200波特率, 用于有串口通讯的场合) ;12MHz(产生精确的方波便于12分频, 方便定时操作) 。本设计选择12MHz 晶振,便于定时。
②复位电路:由电容串联电阻构成,由图并结合“电容电压不能突变”的性质,可以知道,当系统一上电,RST 脚将会出现高电平,并且这个高电平持续的时间由电路的RC 值来决定。典型的51单片机当RST 脚的高电平持续两个机器周期以上就将复位,所以适当组合RC 的取值就可以保证可靠的复位。
复位输入高电平有效,当振荡器工作是,RST 引脚出现两个机器周期以上的高电平,使单片机复位。此电路除具有上电复位功能外,若要复位只需按“RST ”键,此电源Vcc 经电阻分压,在RST 端产生一个复位高电平。
电路如图4所示:
图4 晶振复位电路
4.2.2开关电路
本实验通过P1.7口用一个自锁开关来控制电机的运行和停止,当开关按下时,电机开始按要求以每分钟 6 转的速率正向旋转 10min、停 3S;然后以每分钟30 转的速率反向旋转 10min。如果开关没有弹起,就继续做循环运行,若在运行中开关弹起,电机立即停止运行。电路如图5所示:
图5 开关电路
4.2.3数码管显示电路
首先数码管有共阴极和共阳极之分,区别他们的方法是若公共端接地,其他端接电源,若各段测试能亮,说明是共阴的,反之共阳的;若公共端接电源,其他端分别接地,测得各端亮,则说明是共阳的,反之为共阴的。
本实验使用四位一体共阴极数码管,数码管引脚分布图如图6所示:a 、b 、c 、d 、e 、f 、g 、dP 为段引脚,1、2、3、4分别表示四个数码管的位。
图6 四位一体共阴极数码管引脚图
电路中单片机的管脚P0.0~P0.7、P2.0~P2.3口分别接数码管的段选口(a~dp)和片选口(1~4);通过P0.0~0.7的信号, 控制LED 数码管的段位的亮灭来显示所需要的数字; 通过P2.0~P2.3的信号, 控制哪一位的LED 数码管被选中显示。电路如图7所示:
图7 LED数码管显示电路
4.2.4电机控制电路
4.2.4.1专用驱动芯片ULN2003A
ULN2003A 是高耐压、大电流达林顿陈列,由七个硅NPN 达林顿管组成。ULN2003A 的每一对达林顿都串联一个2.7K 的基极电阻, 在5V 的工作电压下它能与TTL 和CMOS 电路直接相连,可以直接处理原先需要标准逻辑缓冲器来处理的数据。ULN2003A 工作电压高,工作电流大,灌电流可达500mA ,并且能够在关态时承受50V 的电压,输出还可以在高负载电流并行运行。通过ULN2003A 构成步进电机的驱动电路;
4.2.4.2步进电机
步进电机是将电脉冲信号转变为角位移或线位移的开环控制元步进电机件。在非超载的情况下,电机的转速、停止的位置只取决于脉冲信号的频率和脉冲数,而不受负载变化的影响,当步进驱动器接收到一个脉冲信号,它就驱动步进电机按设定的方向转动一个固定的角度,称为“步距角”,它的旋转是以固定的角度一步一步运行的。可以通过控制脉冲个数来控制角位移量,从而达到准确定位的目的;通俗一点讲:当步进驱动器接收到一个脉冲信号,它就驱动步进电机按设定的方向转动一个固定的角度(及步进角)。您可以通过控制脉冲个数来控制角位移量,从而达到准确定位的目目的;同时您可以通过控制脉冲频率来控制电机转动的速度和加速度,从而达到调速的目的。
四相步进电机按照其通电方式,可分为单四拍,双四拍和双八拍,三种工作方式。单四拍与双八拍的步距角相等,均为11.25度,而八拍的步距角则是单四拍与双四拍的一半,即5.625度。单(单相绕组通电)四拍(A-B-C-D ), 双(双向绕组通电)四拍(AB-BC-CD-DA-AB-?), 八拍(A-AB-B-BC-C-CD-D-DA-A-?)或(A-AD-D-DC-C-CB-B-BA-A-?)。
本实验选用四相八拍的运行方式来控制步进电机转动。这是一种将一相通电和两相通电结合起来的运行方式,其具体通电方式为:A-AB-B-BC-C-CD-D-DA 或A-AD-D-DC-C-CB-B-BA ,即一相通电和两相通电间隔轮流进行,八种不同的通电状态组成一个循环,实验所用的电机为星研实验箱上所带的步进电机模块,带有ULN2OO3A 专用驱动芯片(2,3,6,7脚做输入端,10,11,14,15脚做相对应的输出端,起到放大的作用,以驱动电机)以及四相步进电机。
电路图如图8所示,实际模块如图9所示:
图8 步进电机模块电路图
图9 实际步进电机模块
4.3软件设计
本设计主要用软件来控制步进电机的转速、转向和定时。转速用延时函数来控制,根据延时函数循环次数的不同来设置不同的转速。定时采用51单片机的内部定时端口T0定时。单片机的晶振频率为12MHz, 所以得出一个机器周期为12*1/12M=1us。
关于转速,由于要求为6r/min,即1r/10s。四相八拍的步距角为5.625度。因为360°/5.625°=64步,所以电机转一圈需要64步,而按要求一圈需要10s ,而机器周期为1us ,故延时函数Delay()中,括号中的数值应为(10*1000)/64=156。同理30r/min,即1r/2s,故括号中的数值应为(2*1000)/64=31。所以程序中的“Delay(156);Delay(31);”是用来控制转速的。
关于转向,是由对单片机P3.0~P3.3的端口写的控制字所决定的。 正转时控制字为:
“code F_Rotation[8]={0x0e,0x0c,0x0d,0x09,0x0b,0x03,0x07,0x06}”, 反转时控制字为:
“code B_Rotation[8]={0x06,0x07,0x03,0x0b,0x09,0x0d,0x0c,0x0e}” 实验总流程图如下图10所示:
图10 总流程图
定时通过设置51单片机的T0工作方式来定不同的时间,执行一次程序定时1ms ,当正转和反转都要定时10min 时,只需循环3840(10*60*1000/156)次和19355(10*60*1000/31)次就可以了,应为要考虑转速的延时程序,所以不能单纯的只是延长时间600000次。当停止定时3s 时,只需要循环3000(3*1000)次就能达到要求,定时子程序如图11所示。
显示子程序利用的是LED 数码,显示数字需要相应的控制字,选中相应的数码管即可。刚开始需要清显示屏,然后写控制字,然后延时消隐。当整个程序结束后就再次清显示屏。显示子程序如图12所示。
图11定时子程序 图12 显示子程序
五、电路的安装与调试
5.1 电路的安装
图13 实际电路接线图
5.2电路的测试
由于要求时间较长,步进电机正反转均由10min 缩短为10s ,时间改变不影响实验效果。正转10s 内是以6r/min的速度转了1圈,即10s 转一圈;中间停3s ;之后反转10s 按照30r/min的速度转了5圈,即2s 转一圈;总耗时23s 。 电机不同运行状态时,LED 如下图显示:
图14 电机正转时LED 显示
图15电机停止时LED 显示
图16 电机反转时LED 显示
6 设计中存在的问题及解决方案
(1)由于使用实验箱自带步进电机,不能直接看到电机型号,镶嵌在PCB 电路元件板下面,故齿数和步进角不容易得到,所以频率的计算有些难度,在规定时间内按照规定速度转过正确的圈数就不容易控制。所以我们利用单片机内部
七、心得体会
为期两周的课程设计已经进入了收尾阶段。我在和同组同学的奋斗中,充实地渡过了这忙碌的时光。实践,是检验真理的唯一标准。经过这辛苦的四周,我深刻体会到了这句话的真谛。理论知识很了解,但一动起手来就不知所措了。这就是所谓的读书人不一定会工作的实例吧!
课程设计,是完全由我们学生自己动手动脑的一次尝试。因此,团队合作就相当重要了。从找材料(资料)到设计电路、从仿真到实际焊接、从失败到成功,这都需要合理分配团队中的每个人,从而达到省时、省力、省心的效果。在尝试仿真发送部分时,电路连接都是正确的,程序也没问题,但就是再按下按钮时,步进电机反应不是按照规定的方式转动,经过我们反复的尝试,发现是控制语句的问题,把控制语句全部改写,终于出现了相应的结果。通过这事,让我们重新找到了信心,只要大家都努力、细心,任何难题都能迎刃而解。
通过这次实训,使我对单片机的应用感到惊讶。记得去年做课程设计的时候,是运用模电和数电的知识,所需要实现的功能完全是用硬件电路搭建起来,电路图相当的复杂,而今年,我们的电路图都比较简单,重点主要是在对单片机的编程。同时也要我意识到,运用单片机,可以做到简化电路,所做好的电路板,还可以重复利用,比如我们的题目是步进电机的控制,这样,如果以后用做像是电机之类的课题的话,这块电路板还可以继续使用,这样不会造成元器件的浪费,节省我们的课题经费,同时还可以锻炼我们的“变废为宝”的能力。
在实际动手开始焊接电路之前,我们都习惯用仿真软件进行仿真,因为我们也不能保证设计出来的电路图能够毫无差别的实现我们需要的功能。如果仿真结果正确的话,能够大大增加我们对于所做实物的信心;但如果错误的话,我们也可以及时修改我们的设计,防止因元器件已焊接到电路板上改变很难,而且我们都是一次性统一购买一定数量的元器件,如果我们弄坏,就不保证实验室的元件库中还有足够的期间供我们替换。
四周恍然即逝,就像大学时光一样。所以,我要珍惜这一阶段的努力,好好充实一下自己。团队给了我动力和帮助,使我学习到很多书本中没有的知识。同样,我也学习到了许多实践和理论结合起来的东西,这些都是无价之宝。
八、参考文献
[1] <单片机原理及接口技术. 第二版="">> 北京:高等教育出版社 [2] 《控制电机及其应用. 修订版》 北京:电子工业出版社 [3]《微型计算机原理(第二版)》 西安电子科技大学出版社 [4]《微机原理实验指导书》
附录 系统电路图:
源程序:
/******************************************************************** * 文件名 : 步进电机 * 描述 : 数码管显示
***********************************************************************/ #include #define uchar unsigned char #define uint unsigned int uchar code table[10] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; unsigned char code F_Rotation[8]={0x0e,0x0c,0x0d,0x09,0x0b,0x03,0x07,0x06}; //顺时针转表格 unsigned char code B_Rotation[8]={0x06,0x07,0x03,0x0b,0x09,0x0d,0x0c,0x0e}; //逆时针转表格 sbit KEY=P1^7; bit FB_flag = 0; int flag,flag1,l,m,n; int i,j,k; /******************************************************************** * 名称 : Delay_1ms() * 功能 : 延时子程序,延时时间为 1ms * x * 输入 : x (延时一毫秒的个数) * 输出 : 无 ***********************************************************************/ void Delay(uint i) { uchar x,j; for(j=0;j<> for(x=0;x<=148;x++);>=148;x++);> /*------------------------------------------------ 定时器0初始化子程序 ------------------------------------------------*/ void Init_Timer0(void) { TMOD |= 0x11; TH0=(65536-1000)/256; TL0=(65536-1000)%256; ET0=1; TR0=1; } /******************************************************************** * 名称 :主函数 ***********************************************************************/ void Main(void) Init_Timer0(); //定时器初始化 EA=1; //总中断 flag=4; KEY=1; while(1) { if(n==0) { if(flag==0) { for(i=0;i<8;i++)>8;i++)> P3 = B_Rotation[i]; Delay(156); j++; if(j==3840) //3840 正转时间调节理论是3840 { j=0; flag=1; } } } if(flag==2) { for(i=0;i<8;i++)>8;i++)> P3 = F_Rotation[i]; Delay(31); k++; if(k==19354) //反转时间调节理论是19354 { flag=0; k=0; } } } } } } /********************************/ /* 定时0中断 */ /********************************/ void Timer0_isr(void) interrupt 1 using 1 TH0=(65536-500)/256; TL0=(65536-500)%256; if(KEY==1) //停止按键 { n=1; P2 = 0XF7; P0 = 0x40; Delay(1); P0 = 0; flag=0; j=0; k=0; } if(KEY==0) { n=0; } if(flag==1) { m++; P2 = 0XF7; P0 = 0x40; Delay(1); P0 = 0; if(m==3000) // { m=0; flag=2; } } l++; if(l==40) { l=0; if(n==0) { if(flag==0) { P2 = 0XFE; P0 = 0x77; Delay(3); P0 = 0; P2 = 0XFD; P0 = 0X40; 延时3s 显示正转R-06 // Delay(3); P0 = 0; P2 = 0XFB; P0 = table[0]; Delay(3); P0 = 0; P2 = 0XF7; } } } P0 = table[6]; Delay(3); P0=0; } if(flag==2) { P2 = 0XFE; P0 = 0x38; Delay(3); P0 = 0; P2 = 0XFD; P0 = 0X40; Delay(3); P0 = 0; P2 = 0XFB; P0 = table[3]; Delay(3); P0 = 0; P2 = 0XF7; P0 = table[0]; Delay(3); P0=0; } 显示反转L-30 第18 页 // 西安文理学院物理与机械电子工程学院 自动化专业课程设计评分表 学生姓名: 班 级: 学 号: 题 目: 步进电机控制系统设计 页 第19 步进电机控制 应教061 崔亚伟 摘 要:随着现代科技的发展,越来越多的电子设备需要达到精确控制。比如说影碟机中的伺服系统,电脑硬盘中的磁头控制系统等等。对于这种系统要求较精确度高的运动控制系统必须采用步进电机来进行控制。 关键词:AT89S51单片机;步进电机;步进电机驱动 1 引言 随着单片机技术的不断发展,单片机在日用电子产品中的应用越来越广泛,自六十年代初期以来, 步进电机的应用得到大大提高。人们用它来驱动时钟和其他采用指针的仪器,打印机、绘图仪、磁盘光盘驱动器、各种自动控制阀、各种工具,还有机器人等机械装置。此外作为执行元件,步进电机是机电一体化的关键产品之一,被广泛应用在各种自动化控制系统中,随着微电子和计算机技术的发展,它的需要量与日惧增,在各个国民经济领域都有应用。步进电机是机电数字控制系统中常用的执行元件,由于其精度高、体积小、控制方便灵活,因此在智能仪表和位置控制中得到了广泛的应用,大规模集成电路的发展以及单片机技术的迅速普及,为设计功能强、价格低的步进电机控制驱动器提供了先进的 技术和充足的资源。 2 总体设计方案 2.1 设计思路 本系统主要由按键电路、单片机最小系统、AT89S51单片机、步进电机状态显示电路、驱动电路以及步进电机等几部分组成。本系统采用四个独立按键,分别进行启动、停止、正反转以及加减速的控制。驱动电路采用分离元件组成,采用光耦进行信号隔离,利用三极管的开关作用实现步进电机的驱动。步进电机的供电采用独立12V供电。显示电路采用两个发光二极管和一个数码管,一个显示步进电机的启停控制、一个显示步进电机的正反转的状态。数码管用于显示步进电机速度的快慢。 2.2 总体设计框图 总体设计框图如图1所示。 3 设计原理分析 1 89S51 按键控制电单 步进电机状态 路 显示电路 片 单片机 步进电机驱步进电机 机 最小系统 动电路 图1 总体设计框图 3.1 步进电机原理 本文先介绍该步进电机的工作原理,然后介绍了其驱动器的软、硬件设计。 步进电机在控制系统中具有广泛的应用。它可以把脉冲信号转换成角位移,并且可用作电磁制动轮、电磁差分器、或角位移发生器等。本文先介绍该步进电机的工作原理,然后介绍了其驱动器的软、硬件设计。该步进电机为一四相步进电机,采用单极性直流电源供电。只要对步进电机的各相绕组按合适的时序通电,就能使步进电机步进转动。 四相步进电机按照通电顺序的不同,可分为单四拍、双四拍、八拍三种工作方式。单四拍与双四拍的步距角相等,但单四拍的转动力矩小。八拍工作方式的步距角是单四拍与双四拍的一半,因此,八拍工作方式既可以保持较高的转动力矩又可以提高控制精度。单四拍、双四拍与八拍工作方式的电源通电时序与波形分别如图2.a、b、c所示: a单四拍 b双四拍 c八拍 图2步进电机的工作方式时序图 步进电机的驱动电路根据控制信号工作,控制信号由单片机产生。其基本原理作用如下: (1)控制换相顺序 通电换相这一过程称为脉冲分配。例如:三相步进电机的三拍工作方式,其各相通电顺序为A-B-C,D,通电控制脉冲必须严格按照这一顺序分别控制A,B,C,D相的通断。 (2)控制步进电机的转向 如果给定工作方式正序换相通电,步进电机正转,如果按反序通电换相,则电机就反转。 (3)控制步进电机的速度 如果给步进电机发一个控制脉冲,它就转一步,再发一个脉冲,它会再转一步。两个脉冲的间隔越短,步进电机就转得越快。调整单片机发出的脉冲频率,就可以对步进电机进行调速。 2 3.2 AT89S51单片机及其最小系统 Atmel公司的生产的89S51单片机是一种低功耗/低电压、高性能的8位单片机,它采用CMOS和高密度非易失性存储器技术,而且其输出引脚和指令系统都与MCS-51兼容;片内的Flash ROM允许在系统内改编程序或用常规的非易失性编程器来编程,内部除CPU外,还包括256字节RAM,4K字节的ROM,4个8位并行I/O口,5个中断源,2个中断优先级,2个16位可编程定时计数器。89S51单片机是一种功能强、灵活性高且价格合理的单片机,且支持在线编程,完全满足本系统设计需要。 单片机最小系统包括振荡电路和复位电路两部分。振荡电路用12M晶振,这样一个机器周期 1212T,,,1,s。 f12Mosc 复位电路采用手动复位,当按下RESET按键,电阻R1、R2接通5V电源,此时R2分得电压大约为4V,为高电平,即置单片机RST脚为高电平,单片机复位。 3.3 按键电路 采用4个按键用来控制步进电机的6种状态,即“正转”、“反转”、“加速”、“减速”、“启动”和“停止”。当按下其中一个按键时,电源通过上拉电阻和按键到地形成通路,使相应输入管脚接地,即给单片机送入一个低电平,此低电平即为有效电平。按键电路如图3所示。 VCC R20R19R22R21 S5 S4S2P10 S3P11 P12 P13 图3按键电路 3.4 步进电机状态显示电路 状态指示采用2种颜色的发光二极管,“绿色”、“红色”分别表示步进电机的“正转”、“反转”、“停止”和“启动”状态。限流电阻选择220的电阻。采用一个数码管用来显示步进电机的档数,即显示步进电机速度的快慢。 3.5 步进电机驱动电路 步进电机的驱动电路如图四所示,驱动电路采用光耦进行电气隔离和信号传输。采用三极管 3 进行驱动,图中二极管起保护作用。 vcc VCCU1R7R17 R8U2 U3VCCR9U12D4D3U10U4R10R20 U5R11 直流电机U6R12R19 U9U7U11R13D2D1 U8R14R18 图四 步进电机的驱动电路 4 程序原理分析 4(1 程序设计思路 根据单片机外围电路的设计,单片机的P10、P11、P12、P13为按键输入。P01、P04、P05、P06为输出。P2为数码管显示。P32、P34为LED输出显示。51单片机采用T0进行定时扫描键盘子程序,主程序根据键盘扫描的结果进行相应的操作。步进电机的正反转利用给步进电机送入与原来相反的脉冲即可,步进电机的加减速控制是主要控制步进电机送脉冲的时间。 4(2程序设计流程图 程序流程图如图五所示。 4 初始化 扫描键盘 N W 有未按键 Y 延时程序(等抖合 过去) 找到按键 逐步扫描程序 N 有未按键 Y 取键号 键盘处理程序 显示序 图5 程序流程图 5 总结与体会 通过这三周的单片机实习,在指导老师和同学的帮助下,使我学习到了许多课本上学不到的东西,同时也使我对单片机的有关知识有了更加全面的理解。这次实习使我在各个环节的能力都有了很大的提高。 总之,通过这次实习,我真正学到了不少东西,真正体会到了理论联系实际的重要性。经过这些实习可以使我们能更快更准确的掌握专过实践,又证明了我们所学理论知识的科学性和正确业方面的理论知识。 5 参考文献: [1] 周航慈著.单片机应用程序设计基础,M,.北京:电子工业出版社,1997年7月 [2] 朱承高.电工及电子技术手册,M,.北京:高等教育出版社,1990 [3] 阎石.数字电子技术基础,M,(第三版). 北京:高等教育出版社,1989 [5] 李广弟编著.单片机应用程序设计基础,M,.北京:北京航空航天大学出版社,1994年6月 6 附录1 vccVCCU1R7R17 R8U2 VCCU3R9U12D4D3U10U4R10R20 U5R11 直流电机U6R12R19 U9U7U11R13D2D1 U8R14R18 U18051_1VCCVCC140S1P10VCC239P11P00338L1SW-PBP12P01437C1P13P02R18536L2P14P03635L3P15P04200734R?R?P16P05833L4D3D2220220P17P06932VCCRESTRESTL1RESETP071031RXDEA/VP1130TXDALE/PR17D11229DS1INT0PSEN1K13284XSH5DPYaINT1P27R20R19R22R2114275aXSH7XSH4bT0P2615269XSH6XSH3LEDcfbT1P25g16257XSH5XSH23dWRP2417246XSH4XSH1eecRDP2318232S5X2XSH3XSH6dfX2P2219221S4S2P10X1XSH2XSH7dpgX1P212021S3P11X1XSH110dpGNDP20P12C3P13DIP10Y1GNDCRYSTALC2X2 7 附录2 8 附录3 #include"reg52.h" #include"reg52.h" #include"intrins.h" #define uint unsigned int #define uchar unsigned char uchar code table[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f}; uchar code dis[]={0xff,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}; uchar code table1[]={0x9f,0xaf,0x6f,0x5f}; //反转 uchar code table2[]={0x9f,0x5f,0x6f,0xaf}; //正转 sbit p10=P1^0; //启停控制 sbit p11=P1^1; //正反转控制 sbit p33=P1^2; //加速控制 sbit p31=P1^3; //减速控制 sbit p32=P3^2; sbit p34=P3^4; uint z=20; uint qtflag=1,zfflag=1,jiasflag,jiansflag; delay(uint x) { uint i,j; for(i=0;i for(j=0;j<110;j++)>110;j++)> ; } keyscan() { if(p10==0) { delay(10); if(p10==0) qtflag++; } if(p11==0) { delay(10); if(p11==0) zfflag++; } 9 if(p33==0) { delay(10); if(p33==0) jiasflag=1; else jiasflag=0; } if(p31==0) { delay(10); if(p31==0) jiansflag=1; else jiansflag=0; } if(jiasflag==1) {z=z+10; jiasflag=0; if(z>90) z=10;} if(jiansflag==1) {z=z-10; jiansflag=0; if(z<10) z="90;}">10)> while(p10==0|p11==0|p33==0|p34==0); } show() { P3=dis[z/10]; P1=0x1f; delay(1); } main() { uint i; TMOD=0X01; TH0=(65536-500000)/256; TL0=(65536-500000)%256; EA=1; ET0=1; TR0=1; while(1) { if(qtflag%2==0) 10 { p32=~p32; if(zfflag%2==0) {p34=~p34; for(i=0;i<4;i++)>4;i++)> { P2=table1[i]; delay(z); } } else { for(i=0;i<4;i++)>4;i++)> { P2=table2[i]; delay(z); } } } } } void timer0() interrupt 1 {TR0=0; keyscan(); show(); TH0=(65536-10000)/256; TL0=(65536-10000)%256; TR0=1; } 11 步进电机控制电路的设计 目录 第一章 系统概述 ............................................................................................................. 2 1.1步进电机控制工作原理 ....................................................................................... 2 1.1.1步进电机的启停控制 ................................................................................ 2 1.1.2步进电机的转向控制 ................................................................................ 3 1.1.3步进电机的速度控制 ................................................................................ 3 1.1.4步进电机的换向控制 ................................................................................ 3 1.2系统设计思路 ..................................................................................................... 3 第二章 系统硬件软件设计 ............................................................................................... 3 2.1最小系统介绍 ..................................................................................................... 4 2.1.1 8086CPU构成的最小模式系统 .................................................................. 4 2.1.2 8086最小系统配置模拟图 ........................................................................ 4 2.2接口电路设计 ..................................................................................................... 5 2.2.1接口芯片的片选信号的产生 . ..................................................................... 5 2.2.2接口电路设计 . .......................................................................................... 6 2.3关键模块实现 ..................................................................................................... 7 2.3.1 8253定时用计数初值的确定 .................................................................... 7 2.3.2 延时程序的设计 ....................................................................................... 7 2.3.3键盘与计数初值的关联程序设计 . .............................................................. 8 2.3.4步进电机驱动程序设计 . ............................................................................ 9 第三章 完整的汇编源程序 ............................................................................................. 10 第四章 课程设计体会 .................................................................................................... 13 参考文献 ........................................................................................................................ 14 致谢 ............................................................................................................................... 15 附录一:步进电机课程设计任务书 ................................................................................. 16 附录二:步进电机原理图 ................................................................................................. 0 步进电机控制电路的课程设计 摘要 步进电机是将电脉冲信号转变为角位移或线位移的开环控制元件。 在非超载 的情况下, 电机的转速、 停止的位置只取决于脉冲信号的频率和脉冲数, 而不受 负载变化的影响,即给电机加一个脉冲信号,电机则转过一个步距角。 步进电机控制系统以 8086作为控制的核心元件, 利用 8255的 C 口控制步进 电机,同时获取控制转动方向(即正转和反转) , A 口连接键盘,以选取不同档 的移动速度, B 口连接 LED 显示器, 以显示当前的速度档, 8253作为定时器, 提 供必要的时钟信号。 本课程设计报告通过步进电机的基本介绍、系统的软硬件设计(包括最小 系统介绍、 接口电路设计、 延时程序设计、 步进电机的驱动程序设计等几个主要 模块) 、完整的汇编语言程序等,我们完成了对步进电机系统的设计,并完成了 相应的任务, 如正转、 反转、 显示步数及设定速度等, 使我们进一步掌握了汇编 语言, 也使我们能很好的把书本上的知识与实践相结合, 大大提高了我们的动手 能力。 关键字:步进电机; 8086CPU ; 8255可编程 I/O接口芯片; 8253可编程定时 /计 数器; 74LS138译码器;汇编语言 第一章 系统概述 1.1步进电机控制工作原理 步进电机实际上是一个数字 \角度转换器, 也是一个串行的数 \模转换器。 步 进电机的基本控制包括启停控制、转向控制、速度控制、换向控制 4 个方面。 从结构上看 ,步进电机分为三相、 四相、 五相等类型 ,常用的则以三相为主。 本 次课程设计我们选用四相步进电机进行系统设计。 步进电机控制工作原理系统流 程图如图 1: 图 1 步进电机控制工作原理系统流程图 1.1.1步进电机的启停控制 步进电机由于其电气特性 , 运转时会有步进感 ,即振动感。为了使电机转动 平滑 ,减小振动 ,可在步进电机控制脉冲的上升沿和下降沿采用细分的梯形波 ,可以减小步进电机的步进角 ,提高电机运行的平稳性。 在步进电机停转时 ,为了 防止因惯性而使电机轴产生顺滑 ,则需采用合适的锁定波形 ,产生锁定磁力矩 ,锁定步进电机的转轴 ,使步进电机的转轴不能自由转动。 1.1.2步进电机的转向控制 如果给定工作方式正序换相通电 ,步进电机正转。 若步进电机的励磁方式为 四相八拍 ,即 A-AB-B-BC-C-CD-D-DA-A。如果按反序通电换相 ,即则电机就反 转。其他方式情况类似。 1.1.3步进电机的速度控制 如果给步进电机发一个控制脉冲 ,它就转一步 ,再发一个脉冲 ,它会再转 一步。 2 个脉冲的间隔越短 ,步进电机就转得越快。 调整送给步进电机的脉冲频 率 ,就可以对步进电机进行调速。 1.1.4步进电机的换向控制 步进电机换向时 ,一定要在电机减速停止或降到突跳频率范围之内再换向 ,以免产生较大的冲击而损坏电机。 换向信号一定要在前一个方向的最后一个脉冲 结束后以及下一个方向的第 1 个脉冲前发出。对于脉冲的设计主要要求要有一 定的脉冲宽度 (一般不小于 5μs) 、脉冲序列的均匀度及高低电平方式。在某一 高速下的正、反向切换实质包含了减速→换向→加速 3 个过程。 1.2系统设计思路 系统总体设计思路:本次设计采用 8086作为控制的核心元件,利用 8255的 C 口控制步进电机, 同时获取控制转动方向 (即正转和反转) , A 口连接键盘, 以 选取不同档的移动速度, B 口连接 LED 显示器, 以显示当前的速度档, 8253作为 定时器,提供必要的时钟信号。 系统对 8255的 A 口进行查询,确定用户设置的速度档,并通过 8255的 B 口 显示速度档。延迟时间通过 8255的 C 口的第四位循环送节拍信号来驱动步进电 机工作。 循环送节拍信号的方向有 C 口高四位中的第 5位确定, 此第 5位在硬件 上与控制转动方向开关相连。 第二章 系统硬件软件设计 本设计利用 8086系统为主要控制芯片和可编程计数器 /定时器 8253及可编 程外围接口芯片 8255A 设计的一个步进电机的控制系统,主要包括接口电路设 计、 延时程序设计、 开关与计数初值的关键程序设计、 步进电机驱动程序设计等 模块。 2.1最小系统介绍 2.1.1 8086CPU构成的最小模式系统 根据使用目的的不同, 8086系统可以有最小模式和最大模式两种系统配置, 两种方式的选择主要取决于硬件,当 CPU 引脚 MN/MX端接高电平 +5V时,构成最 小系统,最小系统结构示意图如图 2: 图 2 最小系统结构示意图 2.1.2 8086最小系统配置模拟图 在最小模式系统中,除了 8086CPU ,存储器及 I/O接口芯片外,还加入了一 片 8284A 作为时钟发生器,三片 8282/8283或 74LS373作为地址锁存器,二片 8286/8287或 74LS245作为双向数据总线收发器, 数据总线和地址总线分时复用。 最小系统配置模拟图如图 3: 2.2接口电路设计 2.2.1接口芯片的片选信号的产生 在此系统的接口电路中, 8255的端口地址从 80H 开始,因此 8255的 A 、 B 、 C 和控制口的地址分别是 80H , 82H , 84H 和 86H ; 8253的端口地址从 88H 开始, 而 8253的通道 0、通道 1、通道 2和控制口的地址分别是 88H 、 8AH 、 8CH 、 8EH 。 地址总线信号和端口地址之间的关系如下表 1: 表 1 地址总线信号和端口地址之间的关系 从表格我们可以看出, A 7始终为 1,即高电平,所以其应该接 74LS138的 G 1端, 74LS138的 G 1、 G 2A (E 2端) 、 G 2B (E 3端)为控制端,组合为 100时输 出才有效 (输出为低电平有效) 。 此时 E 2端连接 M/IO 为 0, 原因是因为 M/IO 为 0即低电平时, 此时 CPU 正在访问 I/O端口。 因此我们可以根据此设计译码电 路, 本次采用部分译码电路, 译码器的 Y 0和 Y 1分别接 8255的片选信号和 8253的片选信号。 2.2.2接口电路设计 图 4 CPU与 8255和 8253接口电路 2.3关键模块实现 2.3.1 8253定时用计数初值的确定 因为主动轮直径为 0.5m, 步距角为 0.9度,则步进的弧长是半径乘步剧角之 积,即 m m l 04. 0180/9. 0*5. 0*5. 0≈∏*=? 如果移动的速度为 V ,则节拍频率为: l v f ?=/ 采用 8253通道 0进行定时,其时钟输入端是 kHZ fclko 2=时,其计数初始 值 N 可由下式确定:f fclko N = 这样我们就可以得出速度档、 速度、 节拍频率 f 和计数初值 N 之间的数值对 应关系 , 如表 2所示: 表 2 速度档等参数和计数初始值 N 之间的关系 2.3.2 延时程序的设计 在驱动步进电机的程序中,每对 8255的 C 口送一个节拍信号,就要延时一 段时间, 然后再送 C 口的下一个节拍信号, 从而确定两次节拍之间的间隔即延迟 时间,值实际上就是确定了节拍频率 f 。 可以采用软件延时来实现延时要求, 但由于 CPU 工作频率的影响, 不易做到 精确的延时。 这里我们采用软硬件结合的方法实现延时程序, 具体思路是:8253的某个通道 0的输出与 8255的 C 口的第四位 PC4相连接, 程序通过对 8253的编 程时通道 0输出一定宽度的脉冲,这个宽度就是对步进电机两次节拍之间的间 隔。 程序对 PC4进行循环检测, 当发现 8253通道 0输出的脉冲发生跳变的时候, 结束检测,这循环检测的时间就是所需要的延迟时间。 8253通道 0的工作方式选择程序如下: ; 延时程序,入口 CX ;计数值 DELAY PROC MOV AL,00110000B ;通道 0工作在方式 0 OUT 8253_CTRL,AL MOV AL,CL ;送时间常数 OUT 8253_COUNT0,AL MOV AL,CH OUT 8253_ COUNT0,AL DELAY1 IN AL,8255_CPORT ;输入 OUT 0信号 TEST AL,00010000B JZ DELAY1 ;循环检测 OUT 0信号 RET ;定时时间到,返回 DELAY ENDP 2.3.3键盘与计数初值的关联程序设计 在延时子程序中, CX 为入口参数, 表示 8253通道 0计数初值。 CX 的内容应 该与键盘的输入量有关, 当键盘输入数字 1时, 就相应选择了速度档 1, 这时 CX 应为 80即 50H ,以此类推等。这里我们把通过键盘确定 CX 值的程序称为键盘与 计数初值的关联程序。 关联程序的设计可以直接用比较语句来实现, 但是比较语 句使得响应时间比较慢, 我们可以通过建表来改善。 我们通过查表的办法编写的 关联程序如下: COUNT_TAB DB 80,40,16,10,8,7,5,4 ; 建立计数初值表格 ...... COUNT_DAT PROC IN AL,8255_APORT ;取开关量 OUT 8255_BPORT,AL ;B口显示速度档 ;把开关量转化为二进制数 MOV CX,8 ;建立循环结构 MOV AH,0 ;转化初值为 0 COUNT1: SHR AL,1 ;右移 JC COUNT2 ;对应开关位合,退出循环 INC AH ;转换变量加 1 LOOP COUNT1 ;循环 ;查表确定计数初值 COUNT2: LEA BX, COUNT_TAB ;表的首地址送 BX MOV AL,AH XLAT ;查表 MOV CL,AL ;结果送 CL MOV CH,0 RET COUNT_DAT ENDP 2.3.4步进电机驱动程序设计 本设计用 8255C 口的 PC0、 PC1、 PC2和 PC3分别通过驱动电路接步进电机。 我们可以看出第一个节拍 PC3~PC0送 0111B 信号,延时一段时间后第二个节拍 送 0011B 信号 ...... 循环到第八个节拍送 0110B 信号, 再从第一个节拍重复这个 过程, 这样就可以驱动步进电机转动了。 如果反方向重复这个过程, 步进电机就 会反方向转动。 从第一个节拍到第八个节拍, PC3~PC0分别送出的逻辑信号如表 3: 表 3 节拍信号 为了简化驱动程序,我们也使用查表的方案设计驱动程序。步进电机驱动程 序如下: DRIVE_TAB DB 7,3,0BH,9,0DH,0CH,8,6 ;建立节拍信号表格 ...... DRIVE_MOT PROC MOV AL,[DI+DRIVE_TAB] ;取节拍信号 OUT 8255_CPORT,AL ;发节拍信号到 C 口 IN AL,8255_CPORT ;取 PC 7-PC 4信息 TEST AL,20H ;判断方向位 PC 5 JNZ DRIVE_MOT1 INC DI ;方向位为 0,正转 JMP DRIVE_MOT2 DRIVE_MOT1: DEC DI ;方向位为 1,反转 DRIVE_MOT2: AND DI,07H ;实现指针循环计数 RET DRIVE_MOT ENDP ; 根据开关量确定计数初值,并对 8255的 B 口进行设置出口 CX :计数初值 COUNT_DAT PROC IN AL,8255_APORT ;取量开关 OUT 8255_BPORT,AL ;B口显示速度档 ;把开关量转化为二进制数 MOV CX,8 ;建立循环结构 MOV AH,0 ;转化初值为 0 COUNT1: SHR AL,1 ;右移 JC COUNT2 ;对应开关位合,退出循环 INC AH ;转换变量加 1 LOOP COUNT1 ;循环 ;查表确定计数初值 COUNT2: LEA BX, COUNT_TAB ;表的首地址送 BX MOV AL,AH XLAT ;查表 MOV CL,AL ;结果送 CL MOV CH,0 RET COUNT_DAT ENDP 利用步进电机节拍驱动程序, 很容易实现对步进电机运动的控制。 方法如下: (1) 调用步进电机节拍驱动程序; (2) 调用延时程序。 循环重复以上两步即可。 第三章 完整的汇编源程序 经过以上几步,就可以方便的编写出 8086程序。下图是总流程图,其中通 过 8255的 C 口发节拍表格指针加 1或减 1的系列操作由子程序 DRIVE-MOT 完成。 通过 8255A 口的取速度档信息设置 8253计数初值 COUNT -DAT 完成, 延时操作由 子程序 DELAY 完成。软件总体流程图如图 5: 完整的汇编源程序: 8255_APORT EQU 80H ;定义 8255各端口名字 8255_BPORT EQU 82H 8255_CPORT EQU 84H 8255_CTRL EQU 86H 8253_COUNT0 EQU 88H ;定义 8253各端口名字 8253_COUNT1 EQU 8AH 8253_COUNT2 EQU 8CH 8253_CTRL EQU 8EH ; 定义数据段 DATA SEGMENT COUNT_TAB DB 80,40,16,10,8,7,5,4 ; 建立计数初值表格 DRIVE_TAB DB 7,3,0BH,9,0DH,0CH,8,6 ;建立节拍信号表格 DATA ENDS ; 定义代码段 CODE SEGMENT ASSUME CS:CODE,DS:DATA START: MOV AX,DATA MOV DS,AX MOV AL,10011000B ;8255初始化 OUT 8255_CTRL,AL LEA DI,DRIVE_TAB ;置节拍信号表格指针 ;步进电机驱动主程序 AGAIN: CALL DRIVE_MOT ;发一个节拍信号 CALL COUNT_DAT ;取开关设定延迟时间 CALL DELAY ;以设定时间延时 JMP AGAIN ;发下一个节拍信号 ; 下面是子程序—步进电机节拍驱动程序,入口 DI:节拍信号表格指针 DRIVE_MOT PROC MOV AL,[DI+DRIVE_TAB] ;取节拍信号 OUT 8255_CPORT,AL ;发节拍信号到 C 口 IN AL,8255_CPORT ;取 PC 7-PC 4信息 TEST AL,20H ;判断方向位 PC 5 JNZ DRIVE_MOT1 INC DI ;方向位为 0,正转 JMP DRIVE_MOT2 DRIVE_MOT1: DEC DI ;方向位为 1,反转 DRIVE_MOT2: AND DI,07H ;实现指针循环计数 RET RIVE_MOT ENDP ; 根据开关量确定计数初值,并对 8255的 B 口进行设置出口 CX :计数初值 COUNT_DAT PROC IN AL,8255_APORT ;取量开关 OUT 8255_BPORT,AL ;B口显示速度档 ;把开关量转化为二进制数 MOV CX,8 ;建立循环结构 MOV AH,0 ;转化初值为 0 COUNT1: SHR AL,1 ;右移 JC COUNT2 ;对应开关位合,退出循环 INC AH ;转换变量加 1 LOOP COUNT1 ;循环 ;查表确定计数初值 COUNT2: LEA BX, COUNT_TAB ;表的首地址送 BX MOV AL,AH XLAT ;查表 MOV CL,AL ;结果送 CL MOV CH,0 RET COUNT_DAT ENDP ; 延时程序,入口 CX ;计数值 DELAY PROC MOV AL,00110000B ;通道 0工作在方式 0 OUT 8253_CTRL,AL MOV AL,CL ;送时间常数 OUT 8253_COUNT0,AL MOV AL,CH OUT 8253_ COUNT0,AL DELAY1 IN AL,8255_CPORT ;输入 OUT 0信号 TEST AL,00010000B JZ DELAY1 ;循环检测 OUT 0信号 RET ;定时时间到,返回 DELAY ENDP CODE ENDS END START 第四章 课程设计体会 通过这次综合实验, 我对微机原理与接口技术有了更深一步的理解, 提高了 自己的动手能力。 在实验过程中, 我会遇到各种问题, 我觉得除了向老师和同学 请教外,我更应该学会自己解决问题。 在整个过程中, 查阅了不少资料, 例如步进电机如何工作, 速度及方向的控 制等是通过自学完成。知道如何尽快读懂别人写的源程序 , 从中借鉴好的地方来 完善自己的程序。 刚开始时, 我们先熟悉了实验板上那些可用的器件, 初步打算是完成实验要 求的基本功能即电机的启动、停转、正反转、有级调速。感觉上是挺容易的,但 是到后来才发现编程是存在一些问题。 在老师的悉心指导和严格要求下,我们终于完成了四相步进电机设计课程。 从书本上的知识到自己亲手的课程设计, 每一步对我们来说无疑是巨大的尝试和 挑战, 也成就了我们目前在大学期间独立完成的最大的项目。 记得在刚接到这个 课题时, 由于对相关知识不是很了解, 我们都有些茫然不知所措。 设计好一个步 进电机需要什么专业知识?带着这个疑问我们开始了地学习和实验:去查阅相关 资料、 上网去了解相关的内容, 渐渐头脑中的概念清晰了起来。 在具体设计的过 程中,我们遇到了更大的困难。我们不断地给自己提出新的问题,然后去论证、 推翻, 再接着提出新的问题。 在这个循环往复的过程中, 我们这篇稚嫩的设计日 臻完善。 虽然我们的设计作品不是很成熟, 即使借鉴前人的很多资料仍然还有很 多不足之处, 但我仍然心里有一种莫大的幸福感, 因为我们实实在在地走过了一 个完整的设计所应该走的每一个过程,并且享受了每一个过程。 最后我们获得收获的同时也要感谢老师和同学给予我们的帮助,没有他们, 我们遇到的一些问题不可能很快的解决。 参考文献 [1] 彭虎, 周佩玲, 傅忠谦 . 微机原理与接口技术 [Z].北京:电子工业出版社 ,2008 [2] 张齐,朱宁西 . 单片机应用系统设计技术——基于 C51的 Proteus 仿真 [Z].北京:电子工业出版社 ,2009 [3] 周荷琴,吴秀清 . 微型计算机原理与节后技术 [Z].合肥:中国科技大学出版 社 ,2008 [4] 彭虎,周佩玲,傅忠谦 . 微机原理与接口技术学习指导 [Z].北京:电子工业 出版社 ,2008 致谢 本次设计是在王敬生老师的亲切关怀和悉心指导下完成的。 王老师渊博的专 业知识, 严谨的治学态度, 精益求精的工作作风, 诲人不倦的高尚师德, 严以律 己、 宽以待人的崇高风范, 朴实无华、 平易近人的人格魅力对我们影响深远。 不 仅使我们树立了远大的学术目标、 掌握了基本的研究方法, 还使我们明白了许多 待人接物与为人处世的道理。 本次设计从选题到完成, 每一步都是在王老师的指 导下完成的, 倾注了老师大量的心血。 在此, 谨向王老师致以诚挚的谢意和崇高 的敬意。 在此,我们还要感谢学校为为我们提高良好的实验环境和性能优异的设备, 正是因为学校提供软件和硬件的支持才使我们的设计得以展现出来。 最后再一次 感谢所有在这次设计中曾经帮助过我们的良师益友, 以及在设计中被我们引用或 参考的论文作者。 万重阳、唐 玮、潘 涛 2010年 12 月于合肥学院 附录一:步进电机课程设计任务书 附录二:步进电机原理图 转载请注明出处范文大全网 » PLC步进电机课程设计报告范文四:步进电机控制课程设计报告
范文五:步进电机课程设计报告