武汉理工大学《计算机控制技术》课程设计说明书
目录
摘要..............................................................1
1.设计任务及要求...................................................2
2.方案比较及选择...................................................2
2.1LED显示选择方案.............................................2
2.2按键状态的读取...............................................2
3.系统实现的原理...................................................3
3.1系统设计思路.................................................3
3.2步进电机工作原理.............................................3
3.2.1步进电机的启停控制.....................................3
3.2.2步进电机的控制时序.....................................4
3.3系统整体方框图...............................................6
4.系统硬件设计.....................................................7
4.1总体电路设计.................................................7
4.2电机模块电路设计.............................................8
4.2.1电机控制部分电路.......................................8
4.2.2步进电机驱动电路.......................................9
4.3显示模块电路...............................................10
4.3.1发光二极管显示电路....................................10
4.3.2七段数码管显示电路....................................11
5.系统软件设计....................................................11
5.1系统总体流程图..............................................11
5.2二相步进电机工作方式模块程序设计...........................13
5.2.1四拍方式模块程序设计..................................13
5.2.2八拍方式模块程序设计..................................14
5.3系统显示程序模块设计.......................................15
6系统仿真结果.....................................................16
心得体会...........................................................17
参考文献:..........................................................18
附录本设计所用的C程序清单.......................................19
武汉理工大学《计算机控制技术》课程设计说明书
1
摘要
基于89C51单片机设计二相电机控制系统,实现四拍和八拍方式转动,并能
进行调速和正反转控制。同时由数码管和LED显示电机转动步数和工作状态。首
先需要构建控制信号输入和输出显示器以及核心运算部分构成整个系统,然后画
原理图并且用PROTUES软件仿真。设计过程中用到单片机、双极性H桥驱动电路、
数码管显示电路等模块电路。设计的系统通过循环扫描状态信号,控制电机的运
转同时输出状态。
关键词:单片机,H桥,PROTUES,数码管
Abstract
Bad89C51microcontrollerdesigntwo-phamotorcontrolsystem,
havingfour-beatandeight-beatwaytoturn,andcancontrolthespeed
ametime,ThedigitalcontrolandLEDdisplaymotor
eedtobuildacontrolsignal
inputandoutputdisplaypartsandthecorecomputingsystem,andthen
ontroller
udinthedesignprocess,bipolarH-bridgedrivercircuit,thedigital
roughthesystemdesigncyclestatus
signalstocontrolthemotorrunningwhiletheoutputstate.
Keywords:Single-chip,H-bridge,PROTUES,digital
武汉理工大学《计算机控制技术》课程设计说明书
2
二相步进电机控制系统的设计
1.设计任务及要求
设计一个二相步进电机控制系统,电机有两组带中心抽头的线圈,要求系统
具有如下功能:采用双极性(H桥)控制(不使用线圈的中心抽头),用K0-K1
做为通电方式选择键,K0为四拍,K1为八拍,K2为启动/停止控制;K3方向控
制(正反转);K4速度控制(快慢两档);用4位LED数码管显示工作步数。用3
个发光二极管显示状态:正转时红灯亮,反转时黄灯亮,不转时绿灯亮。
2.方案比较及选择
2.1LED显示方案的选择
方案1:把所要显示的数据通过液晶显示屏显示。其优点是输出简单,可以
简化硬件和程序,但增加了芯片的费用。
方案2:通过软件把所要的数据转化为七段显示的数据,直接通过数码管来
显示,其优点是简化了电路,但增加了软件编写的负担。
通过对方案的比较,选择方案2通过数码管显示信号,比较简单经济。
2.2按键状态读取方案的选择
方案1:把按键接到单片机的中断口,若有按键按下,单片机接收到中断信
号,再通过软件编写的中断服务程序来执行中断,优点是接线简单,简化了电路,
但软件编写较为复杂,不易掌握。
方案2:不使用中断,直接把开关分别接在单片机的接口上,通过查询端口
信号来动作。其优点是程序得到简化。
通过对方案的比较,选择方案2通过查询方式来读取端口信号,相对来说
编程和硬件电路都比较简单。
武汉理工大学《计算机控制技术》课程设计说明书
3
3.系统实现的原理
3.1系统设计思路
本设计是设计一个步进电机控制系统,主要由单片机80C51,二相四线步进
电机,7段数码管,双极性H桥驱动电路设计而成。可以通过单片机P2口读入
开关信号来控制系统的启/停等各种工作,当系统运转时,用开关来控制方向转
速,并使相应的状态指示灯亮起,同样由开关来选择工作模式。运转时,用4位
7段数码管来显示电机转动的步数。根据设计的硬件电路图设计相应的软件完成
各项功能。
3.2步进电机工作原理
3.2.1步进电机的启停控制
步进电机是将电脉冲信号转变为角位移的开关控制元件。电机的转速,
停止的位置指取决于脉冲信号的频率和脉冲数,而不受负载变化的影响,即
给电机加一个脉冲信号,电机则转过一个步距角。如图3-1为二相步进电机
的工作原理图。由图可知,每个绕组都有一个中间抽头。当电机的绕组通电
后,其定子磁极产生磁场,当转子吸合到相应的磁极处。若绕组的控制脉冲
使定子在顺时针方向轮流产生磁场,则电机可顺时针转动;通电方向与上相
反,则电机可逆时针方向转动。控制脉冲每作用一次,通电方向就变化一次,
使电机转动一步,脉冲频率越高,电机转动的也就越快。
图3-1二相步进电机原理图
武汉理工大学《计算机控制技术》课程设计说明书
4
3.2.2步进电机的控制时序
根据步进电机的工作原理,四拍工作方式下,当控制器给驱动器发出脉冲信
号时,驱动器经过环形分配器和功率放大器后,给电动机绕组通电的顺序为
AABBAABB,其4个状态按顺序周而复始变化,电机正转;若通电时
序变为BBAABBAA时,电机就逆向转动。当八拍工作方式时,给电动
机绕组通电的顺序为AABBBAAABBBAA时,电机正
转,反向通电时电机反转。改变通电频率时可相应的改变电机的转速。
3.2.3步进电机的控制方式字
(1)二相四拍工作方式
在这种工作方式下,A、B、
A
、
B
相轮流通电,电流切换四次,磁场旋转
一周,转子向前转过一个齿距角。因此这种通电方式叫做四拍工作方式。这时步
距角θb(度)为ob=mz
360
式中:m──定子相数;z──转子齿数;每次切
换均使转子转动90°角。
四拍方式的控制字如表1所示:
表1四拍工作方式控制字
步序
控制位
工作
状态
控制
模型
P0.7P0.6P0.5P0.4P0.3P0.2P0.1P0.0
100001010
AA
0AH
200001001
BB
09H
300000101AA05H
400000110
BB
06H
武汉理工大学《计算机控制技术》课程设计说明书
5
(2)二相八拍工作方式
在此工作方式下,绕组以AABBBAAABBBAA时
序(或反时序)转换8次,磁场旋转一周,转子前进一个齿距,每次切换均使转子转动
45°角,故这种通电方式称为二相八拍工作方式。
八拍的控制方式字如表2所示:
表2八拍工作方式控制字
步序
控制位
工作
状态
控制
模型
P0.7P0.6P0.5P0.4P0.3P0.2P0.1P0.0
111110010A0f2H
21111010AB0faH
311111000B0f8H
411111001
BA
0f9H
511110001
A
0f1H
611110101
AB
0f5H
711110100B0f4H
811110110
BA
0f6H
武汉理工大学《计算机控制技术》课程设计说明书
6
3.3系统整体方框图
设计的系统的总体方框图如图3-2所示:
由系统的整体方框图可以看出,本系统主要由控制部分、显示部分和执行部
分3大部分组成。这几部分通过89C51组合成整个系统,单片机通过读取系统状
态和控制信号,经过内部的运算把控制命令输出给被控电机,同时把此时的工作
状态通过LED显示,并通过数码管显示电机转动步数。
89c51
单
片
机
整
体
控
制
器
数码管
显示模
块
开关控制
单元模块
LED显示电
机工作状态
H桥驱动
电机模块
图3-2系统的整体方框图
武汉理工大学《计算机控制技术》课程设计说明书
7
4.系统硬件设计
4.1总体电路设计
系统由单片机控制着显示部分和电机的运转。电机由双极性H桥驱动。用
K0-K1做为通电方式选择键,K0为四拍,K1为八拍。K2、K3分别为启动和方向
控制,K4为速度控制键。正转时红色指示灯亮,反转时黄色指示灯亮,不转时
绿色指示灯亮。用数码管显示工作步数。
根据设计要求用PROTEUS画出的硬件连线图如下图4-1所示:
图4-1系统总体硬件电路图
武汉理工大学《计算机控制技术》课程设计说明书
8
4.2电机模块电路设计
4.2.1电机控制部分电路
控制信号输入部分电路图如下图4-2所示
图4-2按键控制部分电路图
K3为电机转动方向控制键。K4为速度控制开关,控制步进电机的转速。K0-K2
为工作模式控制开关,K0接电时,为步进电机四拍工作模式;K1接电时,为步
进电机八拍工作模式;K2启动控制开关,控制整个系统的启动和关闭,它们依
次接单片机的P2.0-P2.3口。
武汉理工大学《计算机控制技术》课程设计说明书
9
4.2.2步进电机驱动电路
二相步进电机的驱动电路,如图4-3所示:
图4-3步进电机驱动电路
电机的驱动电路部分由8个达林顿管来驱动2组相位。当步进电机运转时,
达林顿Q2和Q4导通时,线圈电流方向为AA;当达林顿管Q1和Q3导通时,
线圈中电流方向为AA。可见,步进电机线圈中的电流方向在运转过程中是
不断变化的。双极性驱动电路的绕组线圈每次都有电流通过,产生一个均匀的磁
场,电机运转的稳定性更高。
武汉理工大学《计算机控制技术》课程设计说明书
10
4.3显示模块电路
4.3.1发光二极管显示电路
用3个不同颜色的发光二极管来作为电机工作状态显示灯,正转时红色指
示灯亮,反转时绿色指示灯亮,不转时黄色指示灯亮。各个灯的亮与否不是软件
实现然后通过单片机完成的,而是控制信号通过逻辑电路搭接出来的。发光二极
管显示的部分电路图如图4-4所示:
图4-4状态显示部分电路图
武汉理工大学《计算机控制技术》课程设计说明书
11
4.3.2七段数码管显示电路
由89C51的P1口取出显示码,从89C51的P3.0-P3.3输出位选码,设计中
我们主要用到4位显示步数既可。七段数码管显示部分的电路原理图如图4-5所
示:
图4-5七段数码管显示部分的电路图
5.系统软件设计
5.1系统总体流程图
设计说明:首先要复位单片机,然后从P2口读出开关状态,判断是否启动,
没启动黄灯亮重新确认启动。启动后再次读取P2口数据,判断工作方式并将对
应的用来存储步进电机工作方式字的数组首地址值给另一数组。由P0口的双向
开关来控制步进电机的正反转,如果是正转则红灯亮,反转则绿灯亮。在电机每
走一步后,步数累加1,然后通过数码管把工作步数显示出来。再从P2口把状
态信息读出来,与之前的P2口的状态信息进行比较。如果状态信息没有改变,
电机继续运行。如果状态信息改变了,就需要重新返回程序的开端,对电机的运
行状态进行判断,让电机重新以新的状态运行。由此,开关的状态在电机每走一
步都会查询一遍,做到实时地反映。系统总体流程图如图5-1所示:
武汉理工大学《计算机控制技术》课程设计说明书
12
图5-1系统软件总体流程图
Y
给单片机复位
启动?黄灯亮
N
置快速标志
反转
正
重新启动
快慢K4?
N
置慢速标志
判断转向?
正转
反
红灯亮
绿灯亮
四拍方式?
Y
P0口指向四拍
控制字数组
P0口指向八拍
控制字数组
P0口输出控制字
延时,步数加1,方式字地址加1
数码管动态显示步数
信号变化?
Y
N
Y
N
开始
武汉理工大学《计算机控制技术》课程设计说明书
13
5.2二相步进电机工作方式模块程序设计
设计说明:在此设计中,采用的是二相步进电机,对于步进电机模块的程序
设计采用循环程序设计方法。先把正反转向的控制模型存放在内存单元中,然后
再逐一从单元中取出控制模块并输出。首先启动,选择步进电机的拍数,输入步
数,然后读入正反转的控制模型驱动步进电机转动。
5.2.1四拍方式模块程序设计
二相步进电机四拍工作的流程框图如图5-2所示:
图5-2二相步进电机四拍工作的流程框图
四拍反向控制字数组
电机转动
输出控制模型
延时,模型地址+1
N
Y
N
Y
四拍正转方式控制字数组
是正转吗?
开始
信号变化?
武汉理工大学《计算机控制技术》课程设计说明书
14
5.2.2八拍方式模块程序设计
二相步进电机八拍工作的流程框图如图5-3所示:
图5-3二相步进电机八拍工作的流程框图
八拍反向控制字数组
电机转动
输出控制模型
延时,模型地址+1
N
Y
N
Y
八拍正转方式控制字数组
开始
是正转吗
信号变化?
武汉理工大学《计算机控制技术》课程设计说明书
15
5.3系统显示程序模块设计
设计说明:显示模块是用4位7段数码管来显示工作步数。先将显示码存入
数组中,指向最左边一位,然后取出要显示的数据,指向换码表首地址,取出显
示码,从P0口输出显示码,P3口输入位选码,显示出4位工作步数,最后修改
数组地址,求下一位显示码继续显示。显示程序流程图如图5-4所示:
图5-4显示模块的程序流程图
动态显示子程序
取出要显示的数
据
显示数据的显示码
送位段码到P0口输出
送位显码到P3.0-P3.3输出
延时
求下一位选码
显示数据的显示码
武汉理工大学《计算机控制技术》课程设计说明书
16
6系统仿真结果
当选择电机工作在四拍,正转的模式下,K0、K2置高电平,K1、K4置低
电平,系统启动,K3置高电平,电机开始四拍正转。LED四位显示屏显示工作
步数,LED指示灯红灯亮显示电机正转的状态。仿真图如图6-1所示:
图6-1系统仿真结果截图
武汉理工大学《计算机控制技术》课程设计说明书
17
心得体会
真的很辛苦,不过终于我的设计完成了。这一刻不仅是高兴,更多的是激动。
此刻我也真正的学到了很多东西。已经不知道去过图书馆多少次查阅资料,一次
一次的仿真实验,一次一次的方案设计,一次一次的编制程序。在经历过无数次
的失败,我终于成功了。得到了理想的仿真结果。看着自己的课程设计,真的无
比的高兴,心中充满成就感。
通过本次课程设计,我得到了以往不曾有过的体会与经验。将自己学到的理
论知识通过本次课程设计应用到了实际应用当中,提高了自己各方面的能力。同
时也加深了自己对于相关课程基础理论知识的理解和掌握,学会了综合运用所学
知识。学会了应用所学的知识在实际硬件电路上编程完成所需功能。对单片机的
应用有了进一步的掌握。懂得了如何去发现问题,思考问题,解决问题。通过这
次计算机控制的课程设计,我学会了灵活的运用单片机,更学会了异步电机的原
理和如何去很好的控制异步电机工作。
最后,我最大的收获就是:失败是成功之母,只要努力就会有收获。
武汉理工大学《计算机控制技术》课程设计说明书
18
参考文献:
[1]于海生编著.《计算机控制技术》.北京:机械工业出版社.2005
[2]张义和、王敏男等编著.《例说51单片机》.北京:人民邮电出版社.2008
[3]陈涛编著.《单片机应用及C51程序设计》.北京:机械工业出版社,2010
[4]齐向东、刘立群编著.《单片机控制技术实践》.北京:中国电力出版社,2009
[5]张靖武,周灵彬编著.《单片机系统的PROTEUS设计与仿真》.北京:电子
工业出版社,2007.
[6]余炳雄,陈志玲,黎浩樑编写.《二相步进电机驱动电路的设计》.广州:华南
师范大学学报,2009.
武汉理工大学《计算机控制技术》课程设计说明书
19
附录本设计所用的C程序清单
#include
#definemotorP0
#defineledP1
#definekongzhiP2
#definedengP3
sbitled1=P3^0;
sbitled2=P3^1;
sbitled3=P3^2;
sbitled4=P3^3;
sbitdansi=P2^0;
sbitsudu=P2^1;
sbitba=P2^2;
sbitqidong=P2^3;
sbitfangxiang=P2^4;
chartable[10]={0xc0,0xf9,0xa4,0xb0,
0x99,0x92,0x82,0xf8,0x80,0x90};//共阳极数码管编码
a1[]={0x0a,0x09,0x05,0x06};//四拍正转
a2[]={0x06,0x05,0x09,0x0a};//四拍反转
b1[]={0xf2,0xfa,0xf8,0xf9,0xf1,0xf5,0xf4,0xf6};//八拍正转
b2[]={0xf6,0xf4,0xf5,0xf1,0xf9,0xf8,0xfa,0xf2};//八拍反转
武汉理工大学《计算机控制技术》课程设计说明书
20
unsignedcharaa;
inti,j,qian,bai,shi,ge,temp;
voiddelay(intx)//延时子程序1
{
intc,j;
for(c=0;c
for(j=1;j<=60;j++);
}
voidshumaguan(temp)//数码管动态显示子程序
{
led1=0;
led2=0;
led3=0;
led4=0;
qian=temp/1000;//取千位
bai=temp%1000/100;//取百位
shi=temp%100/10;//取十位
ge=temp%10;//取个位
led4=1;//个位数码管亮
led=table[ge];
delay(1);
led4=0;
led3=1;//十位数码管亮
led=table[shi];
delay(1);
武汉理工大学《计算机控制技术》课程设计说明书
21
led3=0;
led2=1;//百位数码管亮
led=table[bai];
delay(1);
led2=0;
led1=1;//千位数码管亮
led=table[qian];
delay(1);
led1=0;
}
voiddelay1(intx)//延时子程序2
{
intc,j;
for(c=0;c
for(j=1;j<=30;j++)
{
shumaguan(temp);
}
}
voiddspzheng(void)//四拍正转子程序
{
motor=a1[i];
i++;
temp++;
if(i==4)
{i=0;}
武汉理工大学《计算机控制技术》课程设计说明书
22
}
voiddspfan(void)//四拍反转子程序
{
motor=a2[i];
i++;
temp++;
if(i==4)
{i=0;}
}
voidbpzheng(void)//八拍正转子程序
{
motor=b1[i];
i++;
temp++;
if(i==8)
{i=0;}
}
voidbpfan(void)//八拍反转子程序
{
motor=b2[i];
i++;
temp++;
if(i==8)
{i=0;}
}
voidmain(void)//主程序
{
武汉理工大学《计算机控制技术》课程设计说明书
23
inti=0,j=0;
dansi=0;
ba=0;
qidong=0;
sudu=0;
fangxiang=0;
temp=0000;
while(1)
{
while(qidong==0)
{
shumaguan(temp);//调用数码管子程序
}
while(qidong==1&&fangxiang==1&&dansi==1&&ba==0)
{
while(qidong==1&&fangxiang==1&&sudu==1&&dansi==1&&ba==0)
{
dspzheng();
shumaguan(temp);
delay1(40);
}
while(qidong==1&&fangxiang==1&&sudu==0&&dansi==1&&ba==0)
{
武汉理工大学《计算机控制技术》课程设计说明书
24
dspzheng();
shumaguan(temp);
delay1(10);
}
}
temp=0;
while(qidong==1&&fangxiang==0&&dansi==1&&ba==0)
{
while(qidong==1&&fangxiang==0&&sudu==1&&dansi==1&&ba==0)
{
dspfan();
shumaguan(temp);
delay1(40);
}
while(qidong==1&&fangxiang==0&&sudu==0&&dansi==1&&ba==0)
{
dspfan();
shumaguan(temp);
delay1(10);
}
}
temp=0;
while(qidong==1&&fangxiang==1&&dansi==0&&ba==1)
武汉理工大学《计算机控制技术》课程设计说明书
25
{
while(qidong==1&&fangxiang==1&&sudu==1&&ba==1&&dansi==0)
{
bpzheng();
shumaguan(temp);
delay1(40);
}
while(qidong==1&&fangxiang==1&&sudu==0&&ba==1&&dansi==0)
{
bpzheng();
shumaguan(temp);
delay1(10);
}
}
temp=0;
while(qidong==1&&fangxiang==0&&dansi==0&&ba==1)
{
while(qidong==1&&fangxiang==0&&sudu==1&&ba==1&&dansi==0)
{
bpfan();
shumaguan(temp);
delay1(40);
武汉理工大学《计算机控制技术》课程设计说明书
26
}
while(qidong==1&&fangxiang==0&&sudu==0&&ba==1&&dansi==0)
{
bpfan();
shumaguan(temp);
delay1(10);
}
}
temp=0;
}
}
本文发布于:2022-12-08 13:47:51,感谢您对本站的认可!
本文链接:http://www.wtabcd.cn/fanwen/fan/88/66434.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |