直流电机速度控制课程设计.docx
- 文档编号:3902118
- 上传时间:2022-11-26
- 格式:DOCX
- 页数:16
- 大小:473.07KB
直流电机速度控制课程设计.docx
《直流电机速度控制课程设计.docx》由会员分享,可在线阅读,更多相关《直流电机速度控制课程设计.docx(16页珍藏版)》请在冰豆网上搜索。
直流电机速度控制课程设计
直流电机速度控制
1设计内容及要求
1.1设计目的
设计制作和调试一个由MCS51单片机组成的直流测控系统。
通过这个过程学习熟悉键盘控制和七段数码管的使用,掌握直流电机的速度控制和测试方法。
1.2预习和参考
MCS51单片机汇编程序语言、计算机控制技术、自动控制原理、
1.3设计(设计)要求设计指标
1.在显示器上显示任意四位十进制数
2.将8个键定义键值为0~7,按任意键在显示器上显示对应键值
3.实现功能:
(1)定义键盘按键:
5个为数字键0~4;3个功能键:
设置SET、清零CLR、开始START;
(2)显示器上的四位可显示每分钟的速度;
(3)通过键盘的按键,设置直流电机每分钟的速度值;
(4)按START键启动电机开始转动,按SET键停止;按CLR键清零。
2控制芯片选择
根据实验要求选择80C31芯片。
选择该芯片可以根据控制开关按钮的开关状态,控制数码管的数字显示以及变频直流电动机的转速。
80C31单片机,是8位高性能单片机,具有40根引脚。
属于标准的MCS-51的HCMOS产品。
它结合了HMOS的高速和高密度技术及CHMOS的低功耗特征,标准MCS-51单片机的体系结构和指令系统。
80C31内置中央处理单元、128字节内部数据存储器RAM、32个双向输入/输出(I/O)口、2个16位定时/计数器和5个两级中断结构,一个全双工串行通信口,片内时钟振荡电路。
40根引脚按其功能可分为四类:
1.电源线2根
VCC:
编程和正常操作时的电源电压,接+5V。
VSS:
地电平。
2.晶振:
2根
XTAL1:
振荡器的反相放大器输入。
使用外部震荡器是必须接地。
XTAL2:
振荡器的反相放大器输出和内部时钟发生器的输入。
当使用外部振荡器时用于输入外部振荡信号。
3.I/O口有p0、p1、p2、p3共四个8位口,32根I/O线,其功能如下:
P0.0~P0.7(AD0~AD7)是I/O端口O的引脚,端口O是一个8位漏极开路的双向I/O端口。
在存取外部存储器时,该端口分时地用作低8位的地址线和8位双向的数据端口(在此时内部上拉电阻有效)。
P1.0~P1.7端口1的引脚,是一个内部上拉电阻的8位双向I/O通道,专供用户使用。
P2.0~P2.7(A8~A15)端口2的引脚。
端口2是一个带内部上拉电阻的8位双向I/O口,在访问外部存储器时,它输出高8位地址A8~A15
P3.0~P3.7端口3的引脚。
端口3是一个带内部上拉电阻的8位双向I/O端口,该口的每一位均可独立地定义第一I/O口功能或第二I/O口功能。
作为第一功能使用时,口的结构和操作和P1口完全相同,第二功能如下示:
P3.0RXD(串行输入口)
P3.1TXD(串行输出口)
P3.2(外部中断)
P3.3(外部中断)
P3.4T0(定时器0外部输入)
P3.5T1(定时器1外部输入)
P3.6(外部数据存储器写选通)
P3.7(外部数据存储器读选通)
图2-18031管脚图
3方案选择和结构设计
3.1矩阵式键盘
3.1.1矩阵式键盘设计
根据实验要求通过按键开关可以控制数码管的显示,并且可以通过80C31芯片控制变频直流电动机的转速,所以设计一种键盘式的按钮开关矩阵。
矩阵式键盘的按键识别方法,确定矩阵式键盘上何键被按下介绍一种“行扫描法”。
行扫描法行扫描法又称为逐行(或列)扫描查询法,是一种最常用的按键识别方法,介绍过程如下。
1、判断键盘中有无键按下将全部行线置低电平,然后检测列线的状态。
只要有一列的电平为低,则表示键盘中有键被按下,而且闭合的键位于低电平线和行线相交叉的按键之中。
若所有列线均为高电平,则键盘中无键按下。
2、判断闭合键所在的位置在确认有键按下后,即可进入确定具体闭合键的过程。
其方法是:
依次将行线置为低电平,即在置某根行线为低电平时,其它线为高电平。
在确定某根行线位置为低电平后,再逐行检测各列线的电平状态。
若某列为低,则该列线和置为低电平的行线交叉处的按键就是闭合的按键。
在这次课程设计中要求有8个按键,其中包过0-4这5个数字按键,以及3个功能键:
设置SET、清零CLR、开始START。
所以我们将这些键按照两行三列来排列。
其中的数字键我们可以按照基本的逐行扫描查询法经行按键识别。
其中的0-3数字键的一端和80C51的P1.0,其余的另一端分别连接80C51单片机的P1.4,P1.5,P1.6,P1.7相连。
设置SET功能键分别连接P1.2和P1.6,开始START功能键分别连接P1.3,P1.4,而剩下的功能键CLR则分别连接P1.2,P1.7,这样就可以利用按钮开关和80C51芯片构成简单的矩阵式键盘。
图3-1矩阵式键盘
3.1.2矩阵式键盘程序及程序流程图
在80C51单片机的程序编写上,采用C语言的程序编写方法。
键盘设计部分的程序流程图如下:
C语言编写的使用于80C31控制数字键盘使其实现功能的程序如下:
voidkey()
{
uchari,temp,lie,hang,shu;
for(i=0;i<4;i++)//求出按键值
{
P1=~chose[i];
temp=P1;
temp=temp&0xf0;
if(temp!
=0xf0)
{
hang=i;
if(temp==0xe0)
lie=1;
elseif(temp==0xd0)
lie=2;
elseif(temp==0xb0)
lie=3;
elseif(temp==0x70)
lie=4;
break;
}
}
shu=hang*4+lie;//数为对应的按键
switch(shu)
{
case1:
if(!
flag)yishu(0);break;
case2:
if(!
flag)yishu
(1);break;
case3:
if(!
flag)yishu
(2);break;
case4:
if(!
flag)yishu(3);break;
case5:
if(!
flag)yishu(4);break;
case6:
flag++;flag1++;break;
case7:
sv=0;miaoshu=0;flag=0;flag1=0;break;
case8:
flag1++;break;
default:
break;
}
while(temp!
=0xf0)//放键检测
{
temp=P1;
temp=temp&0xf0;
for(i=0;i<10;i++)
display(sv,miaoshu);
}
}
//按键检测程序
voidkeyscan()
{
uchartemp;
P1=0xf0;
temp=P1;
temp=temp&0xf0;
if(temp!
=0xf0)
{
delay(5);//消除抖动
P1=0xf0;
temp=P1;
temp=temp&0xf0;
if(temp!
=0xf0)
key();
}
}
voidpid(void)//PID计算输出量
{
ek=sv-miaoshu;
uk=uk_1+q0*ek+q1*ek_1+q2*ek_2;
ek_2=ek_1;
ek_1=ek;
uk_1=uk;
if(uk>501)
uk=501;//限定输出上限
if(uk<1):
uk=1;//限定输出下限
}
3.2数码管转速显示
LED数码管(LEDSegmentDisplays)是由多个发光二极管封装在一起组成“8”字型的器件,引线已在内部连接完成,只需引出它们的各个笔划,公共电极。
图3-2数码管
数码管要正常显示,就要用驱动电路来驱动数码管的各个段码,从而显示出我们要的数字,因此根据数码管的驱动方式的不同,可以分为静态式和动态式两类。
静态驱动也称直流驱动。
静态驱动是指每个数码管的每一个段码都由一个单片机的I/O端口进行驱动,或者使用如BCD码二-十进制译码器译码进行驱动。
静态驱动的优点是编程简单,显示亮度高,缺点是占用I/O端口多,如驱动5个数码管静态显示则需要5×8=40根I/O端口来驱动,要知道一个89S51单片机可用的I/O端口才32个呢:
),实际使用时必须增加译码驱动器进行驱动,增加了硬件电路的复杂性。
数码管动态显示接口是单片机中使用最为广泛的一种显示方式之一,动态驱动是将所有数码管的8个显示笔划"a,b,c,d,e,f,g,dp"的同名端连在一起,另外为每个数码管的公共极COM增加位选通控制电路,位选通由各自独立的I/O线控制,当单片机输出字形码时,所有数码管都接收到相同的字形码,但究竟是那个数码管会显示出字形,取决于单片机对位选通COM端电路的控制,所以我们只要将需要显示的数码管的选通控制打开,该位就显示出字形,没有选通的数码管就不会亮。
通过分时轮流控制各个数码管的COM端,就使各个数码管轮流受控显示,这就是动态驱动。
在轮流显示过程中,每位数码管的点亮时间为1~2ms,由于人的视觉暂留现象及发光二极管的余辉效应,尽管实际上各位数码管并非同时点亮,但只要扫描的速度足够快,给人的印象就是一组稳定的显示数据,不会有闪烁感,动态显示的效果和静态显示是一样的,能够节省大量的I/O端口,而且功耗更低。
在本次课程设计中需要用到4个数码管在静态显示的工作状态下工作,用80C31来驱动数码管正常工作。
为了使数码管显示数据的时候稳定准确,一般是接在80C31单片机的P0口上接一个RESPACK-8排阻,因为P0口内部没有上拉电阻,不能输出高电平,所以要接上拉电阻。
排阻就是好多电阻连载一起,他们有一个公共端。
在用80C31控制4个7位数码管的时候后我们还要用到74HC240。
74HC240是一款高速CMOS器件,引脚兼容低功耗双八线反响缓冲线路驱动器,具有三态输出,该三台输出有时能断控制,任意NOE上的高电平将使输出端呈现高阻态。
74HC240在电路中起缓冲保护作用。
数码管显示流程图:
数码管显示子程序:
voiddisplay(uinta,uintb)
{
chari;
shu[0]=a/100;
shu[1]=a%100/10;
shu[2]=a%10;
shu[3]=b/100;
for(i=0;i<4;i++)
{
P2=chose[i];
P0=table[shu[i]];
delay(3);
}
}
3.3电动机驱动电路设计
直流电动机调速的驱动电路部分,选择采用基于L298的直流电动机PWM调速方法。
PWM调速装置是利用大功率晶体管的开关特性来调制固定电压的直流电源,按一个固定的频率来接通和断开,并根据需要来调节一个周期内接通和断开的时间的长短,通过改变直流电动机上电枢电压的占空比来改变平均电压的大小,从而控制电动机的转速。
在整个PWM调速器中,CPU既是运算处理中心,又是控制中心,是最关键的器件。
本系统中选用和MCS一5l系列完全兼容的80C31单片机,它是一种低功耗、高性能、CMOS八位微处理器。
3.3.1驱动电路程序流程图
流程图如下:
3.3.2驱动电路子程序
voidt0(void)interrupt1using0//定时T0中断服务函数
{
tcnt++;//每过250usttcnt加一
if(tcnt==40)//计满40次(1/100秒)时
{
tcnt=0;//重新再计
sec++;
if(sec==10)//定时0.1秒,在从零开始计时
{
sec=0;
TH0=0x06;//对TH0TL0赋值
TL0=0x06;
miaoshu=count;
count=0;
}
}
}
voidsdf(void)interrupt2using0//计数T1中断服务函数
{
count=count+1;
}
//左移一位
voidyishu(ucharnum)
{
ucharbai,shi,ge;
bai=sv%100/10;
shi=sv%10;
ge=num;
sv=bai*100+shi*10+ge;
}
3.4芯片80C31在电路中的控制
80C31芯片是整个电路中最重要的部分,它需要读取矩阵式键盘按钮开关的信息,并通过编码程序进行一定的数字编码,然后输出控制直流电动机和八位数码管显示,达到完整控制直流电动机调速。
控制编码部分子程序:
main()
{
q0=Kp*(1+T/Ti+Td/T);//先算出PID的计算参数
q1=-Kp*(1+2*Td/T);
q2=Kp*Td/T;
p30=0;
EX0=1;
IT1=1;
TMOD=0x02;//定时器T0工作在方式2自动重装方式,计数器T1工作在方式2自动重装方式
TH0=0x06;//对TH0TL0赋值
TL0=0x06;
TR0=1;//开始定时
ET0=1;//允许T0产生中断
EA=1;
EX1=1;
EA=1;
sec=0;
SCON=0x90;//MODER1,REN=1;
PCON=0x00;
miaoshu=0;tcnt=0;count=0;sv=0;
flag=0;
while
(1)
{
eleyscan();
if(flag==2)
p30=0;
if(flag1==2)
{
uinti;
pid();
if(ek>100)
{
p30=1;
}
elseif(ek>=0)
{
p30=1;
display(sv,miaoshu);
p30=0;
delay(50-uk/10);
}
elseif(ek<0)
p30=0;
}
display(sv,miaoshu);
}
}
4直流电动机调速控制电路仿真
本次课程设计采用proteus7.7软件进行仿真电路的设计和制作。
Proteus软件是英国Labcenterelectronics公司出版的EDA工具软件。
它不仅具有其它EDA工具软件的仿真功能,还能仿真单片机及外围器件。
它是目前最好的仿真单片机及外围器件的工具。
此次课程设计主要用到proteus软件的原理图布局和电器电路仿真。
4.1原理图布局
此次设计的完整电路图包括矩阵式键盘部分,数码管数字显示,电动机的PWM调速控制以及整个电路设计中的核心芯片80C31芯片。
图4-1直流电动机速度控制原理图布局
图4-2直流电动机速度控制仿真效果
5结束语
通过本次课程设计,加深了对计算机控制技术中的51系列单片机的认识和理解,对其使用有了更深沉的了解,特别是在51系列单片机的编程和数字控制方面的学习。
在对电路进行原理图布局和仿真的过程中,了解并学会使用了仿真软件proteus,对其基本用法和一些扩展功能有所了解。
在以后的电路仿真中或用到此次课程设计所积累的经验。
其次就是在对电路进行连接的过程中,加强了实际动手操作能力,和应对突发问题的处理能力。
矩阵式键盘设计方面,通过网络和书籍基本了解了矩阵式键盘的设计方法和原理,对矩阵式键盘有了一定的了解。
可以连接比较简单的数码管显示电路,通过80C31单片机可以达到对数码管的控制显示输出,在这方面获得了更多的知识。
再就是直流电动机转速控制方案的选择以及电路图的设计,结合电力电子技术方面的知识,达到多种知识的相互结合运用,对以后的学习将会有更多的帮助!
参考文献
【1】张波《计算机控制技术》中国电力出版社,2010年版
【2】孙增圻《计算机控制理论及使用》清华大学出版社1989年版
【3】于海生《微型计算机控制技术》清华大学出版社1999年版
【4】黄一夫《微型计算机控制技术》机械工业出版社1988年版
【5】戴冠中《计算机控制原理》国防工业出版社2005年版
【6】王兆安黄俊《电力电子技术》西安交通大学出版社,2005年版
【7】郭天祥《51单片机C语言教程》
【8】王兆安刘进军《电力电子技术》机械工业出版社2009年版
【9】Binmalk.bose《powerelectronicsandmotordriver》ElsevierScience
【10】JohnG《Principlesofpowerelectronics》AddisonWesleypublishingcompany
【11】HuaGuiChao《soft-switchingtechniquesinPWMconverters》IEEETrans.onIndustrialElectronics,1995
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 直流电机 速度 控制 课程设计