计算机控制技术课程设计.docx
《计算机控制技术课程设计.docx》由会员分享,可在线阅读,更多相关《计算机控制技术课程设计.docx(17页珍藏版)》请在冰豆网上搜索。
计算机控制技术课程设计
目录
1设计任务及要求1
2方案比较及选择1
2.1电机驱动选择方案1
2.2LED显示选择方案1
2.3按键状态的读取2
3系统实现的原理2
3.1步进电机控制工作原理2
3.1.1步进电机的启停控制2
3.1.2步进电机的转向控制2
3.2系统设计思路2
3.3系统的整体框图3
4系统的硬件设计4
4.1总体设计4
4.2步进电机控制电路5
4.2.1启/停控制、正/反转控制、工作模式控制电路分析5
4.2.2步进电机控制电路5
4.3显示电路6
4.3.1发光二极管显示电路6
4.3.2八段数码管显示电路7
5系统软件设计8
5.1总体设计8
5.1.1步进电机的工作方式8
5.1.2系统总体流程图9
5.2关键模块设计11
5.2.1.三相步进电机模块设计11
5.2.2显示模块设计12
6小结及体会13
附录:
14
参考文献16
三相步进电机控制系统的设计
1设计任务及要求
设计一个三相步进电机控制系统,要求系统具有如下功能:
用K0-K2做为通电方式选择键,K0为三相单三拍,K1为三相双三拍,K2为三相六拍;K3为启动/停止控制、K4方向控制;用4位LED数码管显示工作步数。
用3个发光二极管显示状态:
正转时红灯亮,反转时黄灯亮,不转时绿灯亮。
2方案比较及选择
2.1电机驱动选择方案
方案1:
使用功率三极管等电子器件搭建成功率驱动电路来驱动电机的运行。
优点是电路简单,但信号不够稳定,器件较大而不便电路的集成。
方案2:
使用专门的电机驱动芯片ULN2004A来驱动电机运行。
其优点是便于电路的集成,且驱动简单,驱动信号稳定,不受外部干扰。
通过对方案的比较,我选择使用电机驱动芯片来作为驱动。
2.2LED显示选择方案
方案1:
把所要显示的数据通过专用的七段显示芯片的转换输出给LED显示屏。
其优点是输出简单,可以简化程序,但增加了芯片的费用。
方案2:
通过软件把所要的数据转化为七段显示的数据,直接通过单片机接口来显示,其优点是简化了电路,但增加了软件编写的负担。
通过对方案的比较,我选择通过软件编写来输出显示信号。
2.3按键状态的读取
方案1:
把按键接到单片机的中断口,若有按键按下,单片机接收到中断信号,再通过软件编写的中断程序来执行中断,优点是接线简单,简化了电路,但软件编写较为复杂,不易掌握。
方案2:
不使用中断,直接把开关分别接在单片机的接口上,通过查询端口信号来动作。
其优点是程序得到简化,可读性加强。
通过对方案的比较,我选择通过查询方式来读取端口信号。
3系统实现的原理
3.1步进电机控制工作原理
3.1.1步进电机的启停控制
步进电机由于其电气特性,运转时会有步进感,即振动感。
为了使电机转动平滑,减小振动,可在步进电机控制脉冲的上升沿和下降沿采用细分的梯形波,可以减小步进电机的步进角,提高电机运行的平稳性。
在步进电机停转时,为了防止因惯性而使电机轴产生顺滑,则需采用合适的锁定波形,产生锁定磁力矩,锁定步进电机的转轴,使步进电机的转轴不能自由转动。
3.1.2步进电机的转向控制
如果给定工作方式正序换相通电,步进电机正转。
若步进电机的励磁方式为三相六拍,即A-AB-B-BC-C-CA。
如果按反序通电换相,即则电机就反转。
其他方式情况类似。
3.2系统设计思路
此次我们所设计的是一个步进电机控制系统,主要由单片机80C51,3相步进电机,7段数码管,及一些其他相关元件设计而成。
可以通过开关来控制系统的启/停工作,当系统运转时,用开关来控制方向,并使相应的指示灯亮起,同样由开关来选择工作模式。
运转时,用4位7段数码管来输出步数。
最后根据思路所设计出来的硬件图设计相适应的软件。
3.3系统的整体框图
图1系统的整体框图
4系统的硬件设计
4.1总体设计
设计一个单片机三相步进电机控制系统要求系统具有如下功能:
(1)用K0-K2做为通电方式选择键,K0为单三拍,K1为双三拍,K2为三相六拍;
(2)K3、K4分别为启动和方向控制;
(3)正转时红色指示灯亮,反转时黄色指示灯亮,不转时绿色指示灯亮;
(4)用4位LED显示工作步数。
根据设计要求用PROTEUS所做的硬件连线图如下图1:
图2总体硬件连线
4.2步进电机控制电路
4.2.1启/停控制、正/反转控制、工作模式控制电路分析
原理图如下:
图3按键控制图
(1)K3为启/停控制开关,控制整个系统的开启和关闭。
(2)K4为正/反转控制开关,控制步进电机的转向。
(3)K0-K3为工作模式控制开关,KO接电时,为步进电机单三拍工作模式;K1接电时,为步进电机双三拍工作模式;K2接电时,步进电机工作模式为三相六拍。
4.2.2步进电机控制电路
将80c51的P1.0-P1.3作为步进电机的输出控制口。
原理图如下:
图4步进电机的输出控制口
4.3显示电路
4.3.1发光二极管显示电路
用3个不同颜色的发光二极管来作为指示灯显示,将P3.5接红灯,P3.6接黄灯,P3.7接绿灯,正转时红色指示灯亮,反转时黄色指示灯亮,不转时绿色指示灯亮,并加上3个保护电阻。
原理图如下:
图5指示灯接线图
4.3.2八段数码管显示电路
由80c51的P0口取出显示码,从80c51的P2.0-P2.3输出位选码,设计中我们主要用到4位显示步数既可。
原理图如下:
图6LED接线图
5系统软件设计
5.1总体设计
5.1.1步进电机的工作方式
(1)三相单三拍工作方式
在这种工作方式下,A、B、C三相轮流通电,电流切换三次,磁场旋转一周,转子向前转过一个齿距角。
因此这种通电方式叫做三相单三拍工作方式。
这时步距角θb(度)为
θb=360/mz(公式1)
式中:
m──定子相数;z──转子齿数
单三拍的数学模型:
步序
控制位
工作
状态
控制
模型
P1.7
P1.6
P1.5
P1.4
P1.3
P1.2
C相
P1.1
B相
P1.0
A相
1
0
0
0
0
0
0
0
1
A
01H
2
0
0
0
0
0
0
1
0
B
02H
3
0
0
0
0
0
1
0
0
C
04H
表1
(2)三相六拍工作方式
在这种工作方式下,绕组以A—AB—B—BC—C—CA—A时序(或反时序)转换6次,磁场旋转一周,转子前进一个齿距,每次切换均使转子转动1.5°,故这种通电方式称为三相六柏工作方式。
其步距角θb为:
θb=360/2mz=180/mz(公式2)
六拍的数学模型:
步序
控制位
工作
状态
控制
模型
P1.7
P1.6
P1.5
P1.4
P1.3
P1.2
C相
P1.1
B相
P1.0
A相
1
0
0
0
0
0
0
0
1
A
01H
2
0
0
0
0
0
0
1
1
AB
03H
3
0
0
0
0
0
0
1
0
B
02H
4
0
0
0
0
0
1
1
0
BC
06H
5
0
0
0
0
0
1
0
0
C
04H
6
0
0
0
0
0
1
0
1
CA
05H
表2
(3)双三拍工作方式
这种工作方式每次都是有两相导通,两相绕组处在相同电压之下,以AB─BC─CA─AB(或反之)方式通电,故称为双三拍工作方式。
以这种方式通电,转子齿所处的位置相当于六拍控制方式中去掉单三拍后的三个位置。
它的步距角计算公式与单三拍时的公式相同。
极分度角/齿距角=R+k·1/m
进一步化简得齿数z:
z=q(mR+k)(公式3)
式中:
m──相数;q──每相的极数;k──≤(m-1)的正整数;
R──正整数,为0、1、2、3……。
双三拍的数学模型:
步序
控制位
工作
状态
控制
模型
P1.7
P1.6
P1.5
P1.4
P1.3
P1.2
C相
P1.1
B相
P1.0
A相
1
0
0
0
0
0
0
1
1
AB
03H
2
0
0
0
0
0
1
1
0
BC
06H
3
0
0
0
0
0
1
0
1
CA
05H
表3
5.1.2系统总体流程图
设计说明:
首先复位单片机,然后从P3口读出开关状态,判断是否启动,没启动绿灯亮重新确认启动。
启动后再次读取P3口数据,判断工作方式并将对应的用来存储步进电机工作方式字的数组首地址值给q。
由P3.4口的双向开关来控制步进电机的正反转,如果是正转则红灯亮,反转则绿灯亮。
在电机每走一步后,步数记数加1,然后通过LED显示把工作步数显示出来。
再从P3口把状态信息读出来,与之前的P3口的状态信息进行比较。
如果状态信息没有改变,电机继续运行。
如果状态信息改变了,就需要重新返回程序的开端,对电机的运行状态进行判断,让电机重新以新的状态运行。
由此,开关的状态在电机每走一步都会查询一遍,做到实时地反映。
图7总体流程图
5.2关键模块设计
5.2.1.三相步进电机模块设计
设计说明:
在此设计中,采用的是三相步进电机,对于步进电机模块的程序设计采用循环程序设计方法。
先把正反转向的控制模型存放在内存单元中,然后再逐一从单元中取出控制模块并输出。
首先启动,选择步进电机的拍数,输入步数,然后读入正反转的控制模型驱动步进电机转动。
三相步进电机的流程框图:
图8三相步进电机的流程框图
5.2.2显示模块设计
设计说明:
显示模块是用4位八段数码管来显示工作步数。
先将显示码存入数组中,指向最左边一位,然后取出要显示的数据,指向换码表首地址,取出显示码,从P0口输出显示码,P2口输入位选码,显示出4位工作步数,最后修改数组地址,求下一位位选码继续显示。
图9显示模块的程序框图
6小结及体会
经过这个学期对微机的学习,我们对计算机这一以后会经常接触的现代化工具有了更深的认识,在本次课程设计中,通过老师的指导和从网上查阅资料,和同学相互交流,我们从起初对课题的陌生开始一步步走向了完成的这一刻,在本次课设中,我们接触并了解了Proteus的应用方法,并顶着程序随时可能崩溃的风险及时保存并顺利完成了布置的任务,对三相步进电机的原理及其控制方法有了更多的了解,相信在这次课设学到的东西会对未来的工作起到很大的作用。
此外在此次课设中暴露了我单独处理问题的能力有所欠缺,在以后的学习中我会尽力克服这种缺陷当好合格的大学生。
附录:
C语言程序:
#include
#include
voiddelay1(void);
voiddelay2(void);
voiddisplay(int);
intbs=0;
main()
{
chara,b,c,d,j,*q,
done1[8]={0x01,0x02,0x04,0x00,0x01,0x04,0x02,0x00},
done2[8]={0x03,0x06,0x05,0x00,0x03,0x05,0x06,