基于单片机的流量控制系统设计_第1页
基于单片机的流量控制系统设计_第2页
基于单片机的流量控制系统设计_第3页
已阅读5页,还剩8页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

过程控制系统

课程设计学生姓名:专 业:测控技术与仪班级学号:指导教师设计时间:2010。6.28-2008。7。11《过程控制系统》课程设计任务书专业 测控技术与仪器 班级 姓名设计题目:基于单片机的流量控制系统设计一、设计实验条件过程控制系统实验室实验系统二、设计任务1、设计电磁流量计为流量传感器,单片机为核心流量控制系统。系统主要由水泵、水泵电机、流量传感器、电动阀门、阀门电机、单片机控制系统等组成.2、写出流量控制过程,绘制控制系统组成框图3、利用单片机对流量进行控制(1)系统硬件电路设计单片机采用89S52;设计键盘及显示电路,电机控制电路(可控硅,光电耦合器)。(2)编制流量控制程序三、设计说明书的内容1、设计题目与设计任务(设计任务书)2、前言绪论(设计的目的、意义等)3、主体设计部分4、参考文献5、结束语四、设计时间与设计时间安排1、设计时间: 2周2、设计时间安排:熟悉实验设备、实验、收集资: 4天设计计算、绘制技术图: 4天编写课程设计说明: 5天答辩: 1天一,流量控制系统设计意义.【】储存、运输和分配过程中,需要数以百万计的流量计,其中有些流量计涉及到的结算金额数字巨大,,人们为了控制大气污染,必须对污染大气的烟气以及其他温室气体排放量进行监测;废液和污水的排放,于是数以百万计的烟气排放点和污水排放口都成了流量测量对象。同时在科学试验领域,需要大量的流量控制系统进行仿真与试验。流量计在现代农业、水利建设、生物工程、管道输送、航天航空、军事领域等也都有广泛的应用。二,系统方案1、方案整体思路随着计算机进入控制领域,以及新型的电力电子功率元器件的不断出现,使采用全控制的开关功率元件进行脉宽调制(pulsewidthmodulation,简称PWM)控制方式得到了广泛的应用。这种控制方式偏差的比例proportio、积分(integral)、微分(differential)通过线性组合构成数字控制量,构成数字PID控制器,它具有非常强的灵活性,可以根据试验和经验在线调整参数,因此可以得到更好的控制性能。C5189S5289S52PWM波【2PID算法对PWM变量的值进行修改,从而达到对流量的闭环精确控制。2、实现流程组成部分有:控制器、执行器、被控对象和测量变送单元,其框图如图1设定值设定值流量输出直流电机PID 控制阀门图1流量过程控制组成框图电磁流量计:对输出流量进行检测,并与设定值比较,差值作为控制器的输入。PID控制器:对差值进行P、、D控制阀门开度增大或减小。阀门:直接控制流量的执行机构。所以3、控制器算法与PWM波形输出采用PIDPID90%以上的控制系统回路具有PID图2PID控制原理框图PID调节器的离散化表达式为比例调节的作用是使调节过程趋于稳定,但会产生稳态误差;积分作用可消除被调量的稳态误差,但可能会使系统振荡甚至使系统不稳定;微分作用能有效的减小动态偏差.PWM:89S5201,产生连续的与偏差大小有关的占PWM0定时时间到,产生中断,置位PWM1,1定时期间PWM,1与偏差的PIDPWM波,控制电机转动,进而控制阀门开度和流量。三、系统硬件设计1、总体设计框图及说明本系统是一个简单的单回路控制系统。为了实现流量的自动测量和控制,采用了89S52为系统的控制中心,由数据采集模块检测到的流量信号传入单片机,并根据接收到的数据进行处理和控PID运算以及PWM输出控制电机转速,最终由CPU,便于用户与系统之间的对话。系统的硬件结构较简单,由若干个功能模块组成。具体结构图图3,键盘键盘直流电机89S52单片机数据采集数据显示阀门图3功能模块结构图键盘设定:设定控制系统要求的流量大小.数据采集:用滑动变阻器分压模拟流量大小。直流电机:接收单片机的控制信号进行正反转和转速调节,带动阀门转动。2、部分外部电路设计2。1数码管显示电路采用四联排共阴极数码管进行显示,具有四位数码管,这四个数码管的段选a、bc、、、gP3口控制数码管的点亮情况。因为单片机的IO74LS374R—PACK8来保护LED.、直流电机控制电路直流电机以其良好的线性特性、优异的控制性能等特点成为大多数变速运动控制和闭环位置伺服(GTR、GTOMOSFETIGBT等)的发展,以及脉宽调制H桥【3PWM单片机的P10引脚输出高低电平控制电机的正反转,P11输出PWM波形控制电机转速。具体为:①当P10为高电平时,三极管Q3、Q2导通,所以Q4导通,而Q2导通钳制电位为0.9V,所以不论P11是高还是低,Q1、Q7都不导通,即电机电流从左向右流,电机正转.②当P10为低电平,Q3Q2不导通,所以Q4不导通。当P11为高电平时电机反转,当P11为低电平是,电机停转。四系统软件设计1、程序结构说明任何一个系统的软件设计都离不开硬件电路的连接,所以本课题硬件设计的高度模块化决定了软件PID算法子程序、电机驱动与控制子程序和显示等子程序几个部分。结构图如下:键数数PID盘码据运输管采算入显集示主程序直流电机主程序直流电机主控程序模块在整个结构中充当管理者,管理所有子程序的调用,就相当于个人计算机的操作系统。它主要负责初始化各个I/O据采样程序,并将采样到的数据与键盘设定值比较。再通过PID2、程序流程图及部分程序2。1主程序说明2。1.1主程序流程图开始开始系统初始化NYSW=1?键盘设定AD转换键盘设定键盘设定YNDR=1?电机正转电机反转图5主程序流程图2。1。2主程序具体程序:/********************主函数**************************/main() //主程序{ TMOD=0x21; //0b00100001timer0模式16位,timer1自动重装TH0=0xfc; //1ms延时常数12MTL0=0x18; //低电平时间调节TH1=0x7f; //1TL1=0;EA=1;ET0=1;ET1=1; //while(1){if(sw==1) //循环判断开关状态,并执行相应的程序{AD_val(); //TCL549display(uuu);}else{KB_Scan1();display(sc);}PID();} 每个循环的最后执行一次PID运算,实时控制电机},反应。然后进行一系列子程序,进行A/D转换和PID计算,将其结果用来控制直流电机。2。2键盘程序2。2。1键盘扫描及键值识别的原理【4】下。对于键值识别,我们用一条switch语句,把按键的编码和键值对应起来.2。2。2键盘具体程序voidKB_Scan1(void){uchar tmp,line,i,flag,press; //定义局部变量if(lie1==0|lie2==0|lie3==0)return; //判断是否有键按下,如,返回。消除重键问line=0xFE;for(i=1;i〈=4;i++){P2=line; //依次给P2口低四位送低电平,读高四位判断是否有键按tmp=P2; 读取键盘口数据寄存器tmp&=0x70;if(tmp!=0x70){else line=(line<1)|0x01;}if(i==5){tmp=0xFF;flag=0; }switch(tmp) //switch语句把编码转换为对应的键值。{case0xEE:press=1; break;case0xDE:press=2; break;case0xBE:press=3; break;case0xED:press=4; break;case0xDD:press=5; break;case0xBD:press=6; break;case0xEB:press=7; break;case0xDB:press=8; break;case0xBB:press=9; break;case0xD7:press=0; default:break;}if(flag==1) //如果有键按下,把每次的值存放到buf[]方便以后调用。bu[1]=bu[;buf[0]=press;}}PID及电机控制程序由于单片机控制是一种采样控制,它只能根据采样时刻的偏差值计算控制量【5】,所以一般使用增量型控制,它控制稳定,误动作影响小。其算式如下:这个计算的过程可用一个简单的程序来实现。/***************PID服务程序voidPID( ){doublee0,e1,e2;uchardu,out1;ucharkp=16,kd=0,ki=0; //ts=1;e0=e1;e1=e2;e2=(sc-uuu);///10; //if(e2〉=0){direction=1; //设定值>0开大阀门。if(e2〉=20) //测得偏差值与设定偏差值进行比,若不在设定范围内则满功率正.{TR0=PWM=}else{du=10*e2;//(e2-e1)+ki*e2+kd*(e2—2*e1+e0); //PIDout1=du;//+out0;TR0=1; //若到达设定范围则调用PID程序,进行有效功率转动。}}elseif(e2〈0){direction=0; //0,关小阀门。if(e2〈—20) //测得偏差值与设定偏差值进行比较,若不在设定范围内则满功率反转。{TR0=0;PWM=}else{du=10*e2;//(e2—e1)+ki*e2+kd*(e2-2*e1+e0); //PIDout1=—du;//+out0;TR0=1; //若到达设定范围则调用PID.}}out0=out1;}五、结束语和调节阀的功能、过程控制仪表的PID行设计,粗略的构思了一个单回路控制系统:即偏差运算用PID,输出PWM波形控制电机,电机驱动阀门AD转换芯片还是串行ADPID的理论、PWM这次课设使我对过程控制系统有了更深的理解,同时对模块设计有了自己的思考和思路,对以后自己设计开发控制系统有很好的铺垫作用。参考文献1】任彦硕等.自动控制系统M200,157【2】张家生。电机原理与拖动基础[M].北京:北京邮电大学出版社,2006,136【3】马斌等.单片机原理及应用--—C语言程序设计与实现[M2009,284--290【4】王宜怀等。嵌入式系统[M].北京:北京航空航天大学出版社,2008,132【5】顾德英,张健,马淑华。计算机控制技术[M].北京:北京邮电大学出版社,2006,106附页1:流量控制系统总程序#include〈REG51。H>#defineucharunsignedchar#defineuintunsignedintucharout0=0x7f; //赋初值ucharbuf[3]={0,0,0};//全局数组ucharp[={0x5,0x6,0x50x3E,0x6,0x50x3D,0x6B,0x50x3;uchardiscod[={0x3f,0x0,0x50x4,0x60x6,0x7d,0x00x7,0x6;int;//转换结果,十六进制intuuu,sc=0;intInt_result, //标度变换后的结sbitDataout=P1^0; //数据线sbitcs=P1^1; //片选sbitsclk=P1^2; //io口时钟sbitdx=P1^3; //断码显示控制锁存sbitwx=P1^4; //sbitsw=P1^7;sbitPWM=P1^5;sbitvoiddelay1ms(ucharT) //1ms延时{uchartime;while(T-—)fo(time=;time<12;time+;}/***********显示程序*************/voiddisplay(uintnum){ucharqian,bai,shi,ge;qian=num/1000; //bai=num/100%10;shi=num/10%10;ge=num%10;wx=0;P0=0xf7;wx=1;dx=0;P0=discode[ge]; //显示个位dx=1;delay1ms(1);if(num>0){wx=0;P0=0xfb;wx=1;dx=0;P0=discod[sh;//|0x80; /显示十位dx=1;delay1ms(1);wx=0;P0=0xfd;wx=1;dx=0;P0=discode[bai]; 显示百位dx=1;delay1ms(1);}}/*************AD转换程序AD_val() //TLC549处理{uchari,temp=0;cs=1; //sclk=0;cs=0;_nop_;for(i=0;i〈8;i++)//读取采集数据,读取的是上一次采集数据{sclk=1;temp=temp<<1;if(Dataout)temp|=0x01;sclk=0;}cs=1;for(i=0;i〈5;i++) //延时17us以,进行复位_nop_();Int_result=AD*100/256; //uuu=Int_result;/****************键盘扫描程序*************/voidKB_Scan1(){uchar line=0x7E;for(i=1;i<=4;i++){P3=line;tmp=P3;tmp&=0x70;if(tmp!=0x70){else line=(line<<1)|0x01;}if(i==5){tmp=0xFF;flag=0;}for(j=0;j<10;j++){if(tmp==pr[j])press=j;}if(flag==1){delay1ms(10;bu1]=buf[;delay1m(100;buf[0]=press;delay1ms(10;sc=bu[2*100+buf[]*10+bu[;}}/***************PIDvoidPID(){doublee0,e1,e2;uchardu,out1;ucharkp=10,kd=0,ki=0;//ts=1;e0=ee1=e2;e2(suuu;; /if(e2>=0){direction=1; //>0,电机正转if(e2=20) //测得偏差值与设定偏差值进行比较,若不在设定范围内则满功率运.{TR0=0;PWM=}else{ du=kp*e2;//(e2-e1)+ki*e2+kd*(e2-2*e1+e0); //PIDout1=du;//+out0;TR0=1; //若到达设定范围则调用PID程序}}elseif(e2〈0){direction=0; 设定值0,电机反转if(e2〈—20) //测得偏差值与设定偏差值进行比较,若不在设定范围内则满功率反转。{TR0=0;PWM=}else{du=10*e2;//(e2—e1)+ki*e2+kd*(e2-2*e1+e0); //PIDout1=-du;//+out0;TR0=1; //若到达设定范围则调用PID程序。}}out0=out1;}/************

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论