计控课设基于单片机的三相步进电机控制系统设计.docx
- 文档编号:23993211
- 上传时间:2023-05-23
- 格式:DOCX
- 页数:22
- 大小:221.33KB
计控课设基于单片机的三相步进电机控制系统设计.docx
《计控课设基于单片机的三相步进电机控制系统设计.docx》由会员分享,可在线阅读,更多相关《计控课设基于单片机的三相步进电机控制系统设计.docx(22页珍藏版)》请在冰豆网上搜索。
计控课设基于单片机的三相步进电机控制系统设计
课程设计任务书
学生姓名:
专业班级:
指导教师:
工作单位:
题目:
三相步进电机控制系统的设计
初始条件:
设计一个三相步进电机控制系统,要求系统具有如下功能:
用K0-K2做为通电方式选择键,K0为三相单三拍,K1为三相双三拍,K2为三相六拍;K3为启动/停止控制、K4方向控制;用4位LED数码管显示工作步数。
用3个发光二极管显示状态:
正转时红灯亮,反转时黄灯亮,不转时绿灯亮;
要求完成的主要任务:
1.硬件设计:
系统总原理图及各部分详细原理图
2.软件设计:
系统总体流程图、步进电机单三拍,双三拍,三相六拍各模块流程图、显示模块流程图等
3.编写程序:
能够完成上述任务
4.完成符合要求的设计说明书
时间安排:
2012年6月25日~2012年7月3日
指导教师签名:
年月日
系主任(或责任教师)签名:
年月日
目录
摘要2
1设计任务及要求3
2方案论证3
2.1设计思路与方案3
2.2总体设计框图4
3系统实现的原理说明5
3.1步进电机控制工作原理5
3.1.1步进电机的工作原理5
3.1.2步进电机的启停控制5
3.1.3步进电机的转向控制6
3.2步数显示模块原理6
4硬件设计7
4.1系统总原理图7
4.2各部分硬件原理图设计7
4.2.1单片机控制模块7
4.2.2按键选择工作状态模块8
4.2.3步进电机工作模块9
4.2.4工作状态显示模块10
4.2.54位数码管显示步数模块10
5软件设计12
5.1系统总体设计12
5.2步进电机工作模块13
5.2.1步进电机的工作方式说明13
5.2.2设计说明及流程图14
5.3数码管步数显示模块15
6仿真调试记录17
7心得体会18
参考文献19
附录:
程序清单20
摘要
本设计详细介绍了基于单片机的三相步进电机控制系统。
步进电机通过输入脉冲信号进行控制,即电机的总转动角度由输入脉冲总数决定,因此,单片机通过向步进电机发送控制信号就能实现对步进电机的控制。
单片机实现的步进电机控制系统具有成本低、使用灵活的特点,该系统采用80C51单片机作为主控芯片,来完成对步进电机转动及LED显示的控制。
本设计主要由单片机80C51,3相步进电机,7段数码管,及一些其他相关元件设计而成,分为按键选择工作状态模块、步进电机工作模块、LED二极管显示工作状态模块以及4位数码管显示步数模块。
可以通过开关来控制系统的启/停工作,当系统运转时,用开关来控制方向,并使相应的指示灯亮起,同样由开关来选择工作模式。
运转时,用4位7段数码管来输出步数。
最后根据思路所设计出来的硬件图设计相适应的软件。
电路结构简单,设计思路清晰,同时利用KEIL和Proteus进行联调仿真,结果比较直观。
仿真结果收到了预期的效果。
关键字:
三相步进电机、单片机、PROTEUS仿真
三相步进电机控制系统的设计
1设计任务及要求
设计一个三相步进电机控制系统,要求系统具有如下功能:
用K0-K2做为通电方式选择键,K0为三相单三拍,K1为三相双三拍,K2为三相六拍;K3为启动/停止控制、K4方向控制;用4位LED数码管显示工作步数。
用3个发光二极管显示状态:
正转时红灯亮,反转时黄灯亮,不转时绿灯亮。
2方案论证
2.1设计思路与方案
本次设计是一个对于三相步进电机的控制系统,而单片机实现的步进电机控制系统具有成本低、使用灵活的特点,此系统选用51单片机即可。
根据要求整个设计大体可分为四块:
一是5个按键K0~K4将用户所需来选择步进电机的工作状态。
我们将开关连入单片机的P1口,通过按键开关的高低电平状态来读入我们所需的控制信号。
硬件上直接把开关分别接在单片机的接口上,通过查询端口信号来动作,将控制信号处理。
在设计开关部分时,还考虑到机械抖动的影响,采取硬件方式—并联电容来去抖。
二是3个LED发光二极管的显示步进电机工作状态模块。
在设计要求中步进电机正转是红灯亮,反转是黄灯亮,停止不转是绿灯亮。
设计中将3个发光二极管分别接到单片机P3口,受到单片机的输出信号控制。
三是步进电机的工作模块。
要想步进电机按照我们想要的方式运转,将步进电机一端接到+12V的电源,一端接到单片机P3口,受单片机的输出信号控制。
四是4位数码管显示步数的模块。
设计中主要是利用软件编程的算法来实现步数的累计和显示,同样,4位数码管接到单片机的P0口和P2口受单片机输出信号的控制,在硬件上使用的是动态显示的接法。
由此可知所需要设计一个系统,可以通过不同按键来选择步进电机的工作方式,且有LED发光二极管来显示电机对应的工作状态,除此之外还能在数码管上显示出步进电机转动的步数。
2.2总体设计框图
此系统主要由单片机、步进电机、步数显示模块、工作状态控制与显示模块组成。
整体框图如图1。
图1系统整体框图
3系统实现的原理说明
3.1步进电机控制工作原理
3.1.1步进电机的工作原理
步进电机通过输入脉冲信号进行控制,即电机的总转动角度由输入脉冲总数决定,而电机的转速由脉冲信号频率决定。
步进电机的驱动电路是根据单片机产生的控制信号进行工作。
因此,单片机通过向步进电机驱动电路发送控制信号就能实现对步进电机的控制。
如图2所示,U1、V1、W1接电源,分别有三个开关控制,U2、V2、W2分别接地。
如果给处于错齿状态的相通电,则转子在电磁力的作用下,将向磁导率最大(即最小磁阻位置)位置转动,即向趋于对齿的状态转动。
图2步进电机工作原理图
3.1.2步进电机的启停控制
步进电机由于其电气特性,运转时会有步进感,即振动感。
为了使电机转动平滑,减小振动,可在步进电机控制脉冲的上升沿和下降沿采用细分的梯形波,可以减小步进电机的步进角,提高电机运行的平稳性。
在步进电机停转时,为了防止因惯性而使电机轴产生顺滑,则需采用合适的锁定波形,产生锁定磁力矩,锁定步进电机的转轴,使步进电机的转轴不能自由转动。
3.1.3步进电机的转向控制
如果给定工作方式正序换相通电,步进电机正转。
若步进电机的励磁方式为三相六拍,即A-AB-B-BC-C-CA。
如果按反序通电换相,即则电机就反转。
其他方式情况类似。
3.2步数显示模块原理
步数显示模块和工作状态显示模块,都是通过单片机输出信号控制发光二极管LED的亮灭。
其中步数显示模块中LED构成数码管,要求显示4位十进制数,故用到4位数码管。
要控制多位的显示电路,需要有字段控制和字位控制。
控制方式分为静态显示方式和动态显示方式。
静态显示方式,每一位的显示器都需要配一个8位输出口来输出该字位的七段码,需要片外扩展输出口。
而动态显示方式将各数码管的对应字段的引脚都并联在一起,线路简单,减少接口,不需片外扩展。
这里选用动态显示方式。
4硬件设计
4.1系统总原理图
图3系统总原理图
根据设计要求用PROTEUS所做的硬件连线图如图3。
4.2各部分硬件原理图设计
4.2.1单片机控制模块
单片机选用最经典的80C51,其4个I/O口都要用到,P3接步进电机驱动电路及工作状态显示模块,P0和P2分别接步数显示中对数码管的字段控制及数码管片选,P1接工作状态控制电路,,时钟用内部方式需外接晶体振荡器。
硬件图如图4所示。
图4单片机模块原理图
此设计中接的是12MHZ的晶振,故一个机器周期为1/12us。
根据经验数据,与晶振一起的两个电容设为15PF。
单片机的VCC和GROUD都隐藏了,已自动接好,VCC应设为+5V。
4.2.2按键选择工作状态模块
首先我们来考虑所有机械触点式按键在状态输出时的共性问题就是按键抖动问题,由于机械触点的弹性振动,按键在按下时不会马上稳定地接通而在弹起时也不能一下子完全地断开,因而在按键闭合和断开的瞬间均会出现一连串的抖动,这称为按键的抖动干扰。
这种抖动可能会造成按一次键产生的开关状态被CPU误读几次。
为了使CPU能正确地读取按键状态,本次设计中我们采用并联电容消抖法,利用电容的放电延时来实现。
如图5所示,这是唯一的一块输入模块的设计。
5个按键开关一端通过电阻接高电平,另一端全部接到地,其中接高电平的一端对应也接到单片机的P1口分别为P1.0~P1.4。
当开关断开,就是输入到单片机对应端口高电平,而开关闭合,是使端口接地,输入低电平。
所以这个设计中开关断开时才是有效的。
各按键功能:
(1)K0-K2为工作模式控制开关,KO接电时,为步进电机单三拍工作模式;K1接电时,为步进电机双三拍工作模式;K2接电时,步进电机工作模式为三相六拍。
(2)K3为启/停控制开关,控制整个系统的开启和关闭。
(3)K4为正/反转控制开关,控制步进电机的转向。
图5按键模块原理图
4.2.3步进电机工作模块
将三相步进电机三个端口直接接到单片机P3.0~P3.2即可,另三个端口接到+12V的高电平给步进电机供电。
只需在软件编写上控制算法便可以调节这三个端口的高低电平来控制步进电机的开启与停止,正反转以及工作模式。
步进电机硬件接线图如图6所示。
图6步进电机模块原理图
4.2.4工作状态显示模块
LED发光二极管显示步进电机的工作状态,它们分别接到单片机的P3.3~P3.5。
如图7,让单片机输出通过一个反相器再接到LED阴极,LED阳极接VCC。
这样可以提高电流,有利于二极管的导通,我们可以通过控制P3口的数据,实现LED的亮灭。
图7工作状态显示模块原理图
4.2.54位数码管显示步数模块
LED数码管实际上是由七个发光管组成8字形构成的,加上小数点就是8个。
这些段分别由字母a,b,c,d,e,f,g,dp来表示。
当数码管特定的段加上电压后,这些特定的段就会发亮,以形成我们眼睛看到的字样了。
通过分时轮流控制各个LED数码管的COM端,就使各个数码管轮流受控显示,这就是动态驱动。
P0口和P2口的前四个分别接步数显示中对数码管的字段控制及数码管片选,如图8所示,这里主要是由软件算法来实现单片机输出的控制。
图8数码管显示模块原理图
5软件设计
5.1系统总体设计
图9系统总流程图
设计说明:
首先是数码管显示清零,单片机再读入P1口输入的按键状态,先判断是否启动,如果没有启动则是绿灯亮并再判断,如果启动了,就接着判断所需的电机工作模式,再读入P1口状态判断电机的转向,输出控制信号为正转红灯亮,反转黄灯亮,由此可以让步进电机按照指定的方式运转,并且累计步数再显示到数码管上。
最后检验P1口是否状态改变,如果改变则步数清零重新开始判断,不改变则继续转动。
5.2步进电机工作模块
5.2.1步进电机的工作方式说明
(1)三相单三拍工作方式
在这种工作方式下,A、B、C三相轮流通电,电流切换三次,磁场旋转一周,转子向前转过一个齿距角。
因此这种通电方式叫做三相单三拍工作方式。
这时步距角
(度)为:
式中:
m──定子相数;z──转子齿数
表1单三拍的相位控制
步序
控制位
工作
状态
控制
模型
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
(2)三相双三拍工作方式
这种工作方式每次都是有两相导通,两相绕组处在相同电压之下,以AB─BC─CA─AB(或反之)方式通电,故称为双三拍工作方式。
以这种方式通电,转子齿所处的位置相当于六拍控制方式中去掉单三拍后的三个位置。
它的步距角计算公式与单三拍时的公式相同。
表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
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)三相六拍工作方式
在这种工作方式下,绕组以A—AB—B—BC—C—CA—A时序(或反时序)转换6次,磁场旋转一周,转子前进一个齿距,每次切换均使转子转动1.5°,故这种通电方式称为三相六柏工作方式。
其步距角
为:
表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
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
5.2.2设计说明及流程图
设计说明:
在此设计中,采用的是三相步进电机,对于步进电机模块的程序设计采用循环程序设计方法。
先把正反转向的控制模型存放在内存单元中,然后再逐一从单元中取出控制模块并输出。
首先启动,通过P1口读入所需的工作方式,即选择步进电机的拍数,然后读入正反转的控制,再来输出对应的控制模型来驱动步进电机转动。
三相步进电机工作的流程图:
图10三相步进电机工作流程图
5.3数码管步数显示模块
设计说明:
步数显示模块是整个程序里的一个子程序。
其是用4位八段数码管来显示工作步数。
先将要显示的数化为10进制数,每位分别储存,从P0口输出显示码,P2口输入位选码,需要一定的延时,让此位数字显示闪烁出来。
然后修改数组地址,求下一位位选码继续显示,直至输出四位数。
这个扫描过程重复50次,保证人眼能观察到步数显示。
流程图如图11:
图11数码管显示模块流程图
6仿真调试记录
如图12所示,当选择电机工作在单三拍,反转的模式下,K0断开,K1、K2、K4、闭合,系统启动,K3断开,电机开始转动。
LED四位显示屏显示工作步数,LED指示灯黄灯亮显示电机反转的状态。
图12仿真图
如图13所示,此种工作方式下步进电机的旋转角度:
图13步进电机旋转角度
7心得体会
本次课设是在实习之中穿插进行的,所以时间比较紧张,给课设的顺利完成增加了难度。
计算机控制技术是一门应用性很强综合性很强的学科,在这次课设中,我充分感受到了这一点,在老师给的课题之中,是来自于各个方面各个领域的应用,不得不说,计算机控制很强大,确实改变了我们的生活。
课设里最困难的部分就是编写程序和仿真调试,也许硬件连接没问题,程序运行没问题,但是,当把程序导入,发现电动机就是不转,灯就是不亮,数码管就是乱跳,这是很考验耐心的时候,一遍一遍地去调试程序,修改连接部分,有时真的看着很崩溃,但是当你不放弃地调试,才有仿真成功的可能,在这种反复中,对我们自身的能力是提高很多的。
另一个收获就是关于软件的使用了。
PROTEUS,KEIL51,以前好像也用过,但是平时较少接触,这次的课设让我比较熟练的掌握了这两个学习软件强大的功能,而且发现从PROTEUS里导出来的电路图特别漂亮和清晰。
计算机控制技术一直是自己比较喜欢的一门学科,拿到课程设计的题目也想着可以好好检验自己的学习成果,一直认为,期末考试是所谓的应试教育,而课程设计似乎更加地考验所学的知识,所谓实践与理论相结合就是这个道理吧。
课程设计总能让我有一种我站在山面前的感觉,看上去比较陌生高大,但是攀登的技巧早已在平时的学习中习得,不断地去攀登,不断地在回味课堂上老师讲的东西,书本上的东西,这是一种奇妙的体验。
我明白遇到的电路或者课题并不一定在你的知识范围之内,而面对新的东西,我们要冷静地去寻求解决之道,去搜寻网络资源,图书馆资源以及和同学们的讨论之中,再结合自己所学过的知识来吃透理解那些未知的东西,扩宽知识面,这样就会觉得学到了远远超过课堂的东西,但是却源于课堂,想必这就是课设的意义吧,很有收获。
参考文献
[1]谭浩强.C程序设计.北京:
清华大学出版社.2005.[2]于海生.《计算机控制技术》.北京:
机械工业出版社,2007.[3]潘新民.《微型计算机控制技术》.北京:
电子工业出版社,2003.[4]魏立峰,王宝兴.单片机原理与应用技术.北京:
北京大学出版社.2006.[5]陈明荧.8051单片机课程设计实训教材.北京:
清华大学出版社.2004[6]张靖武,周灵彬编著.《单片机系统的PROTEUS设计与仿真》.北京:
电子工业出版社,2007.
附录:
程序清单
#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,0x00},done3[14]={0x01,0x03,0x02,0x06,0x04,0x05,0x00,0x01,0x05,0x04,0x06,0x02,0x03,0x00};
L:
a=P1;
while(!
(a&0x08))//判断是否启动,若没启动则重新判断
{P3=0x08;
delay1();
a=P1;}
//...............................................判断工作模式
if(a&0x01)//方式1模型
q=done1;
elseif(a&0x02)//方式2模型
q=done2;
elseif(a&0x04)//方式3模型
q=done3;
//...............................................判断电机转向
if(a&0x10)//判断电机是否要正转
{P3=0x10;//P1.4口为1,电机正转,红灯亮
b=0;}
else
{P3=0x20;//P1.4口为0,电机反转,黄灯亮
if(a&0x04)b=7;//反转时将b置数,使指针指到数组反相序部分
elseb=4;}
//....................................................
d=b;
while
(1)
{c=*(q+b);//判断电机步数是否走完
if(c==0)b=d;//步数走完,电机重新再走
else
{P3=c;//从P3输出电机控制信号
b++;
bs++;//总步数加1
display(bs);//显示步数
j=a;
a=P1;
if(a!
=j)//判断P1口状态信号是否改变
{if(!
(a&0x08))bs=0;//若为停止信号,总步数清零
gotoL;}//状态信号改变,返回到开始,重新对电机控制
}
}
}
voiddelay1()//延时5ms子程序
{inti,j;
for(i=0;i<200;i++)
for(j=0;j<300;j++);
}
voiddelay2()//延时50us子程序
{inti,j;
for(i=0;i<10;i++)
for(j=0;j<60;j++);
}
voiddisplay(intn)
{unsignedchartab[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x67};
unsignedchari,k,t,num[4];
num[0]=n%10;//将总步数的各位分别存在num数组中
num[1]=(n/10)%10;
num[2]=(n/100)%10;
num[3]=(n/1000)%10;
for(t=0;t<50;t++)//扫描50次
{k=0x08;//位选码指向最左一位,第四位
for(i=0;i<4;i++)
{P2=k;//从P2口输入位选码
P0=~(tab[num[i]]);//取出显示码,并从P0口输出显示码
k=k>>1;//求下一个位选码
delay2();
}
}
}
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 计控课设 基于 单片机 三相 步进 电机 控制系统 设计