付费下载
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、礼匕大学家皇居今哉NortheasternUniversityatQinhuangdao过程控制系统课程设计智能化压力控制系统设计院别专业名称班级学号学生姓名指导教师2014.7.8-2014.7.19一、前言在科技飞速发展的今天,智能化已经成为这个时代的主旋律,大到工业生产,小到手机、家具。其中,压力是不可或缺的一个重要参数。为实现锅炉气压的准确地自动检测与控制,我们基于51单片机,设计了气压自动控制系统。它通过实时采集气压传感器电压进行PID运算,输出PWM从而控制固态继电器对锅炉进行加热,使锅炉气压快速准确的达到设定值。与其它同类系统相比,本系统具有经济、方便等特点,适合小型控制。关键词
2、:锅炉气压、51单片机、自动控制、PID二、任务书1、系统构成:系统主要由压力传感器,单片机控制系统、对象、执行器(查找资料自行选择)等组成。压力传感器、控制器、对象、执行器可查找资料自行选择,控制器选择单片机为控制器。单片机型号自选。2、写出压力测量与控制过程,绘制压力控制系统组成框图。3、(1)系统硬件电路设计自选。(2)编制压力测量控制程序:软件采用模块化程序结构设计,由压力采集程序、压力校准程序、压力控制程序等部分组成。三、选型1、传感器:HL-DQ1气压传感器HL-DQ1气压传感器采用进口高精度压力芯片,测量精度高、稳定性好。精密信号处理电路可根据用户的不同需求将大气压力转换为电压或
3、电流等其它输出信号。具有体积小巧,性能可靠,精度高,负载能力强,传输距离长,抗干扰能力强等特点。可广泛用于气象、海洋、环境、机场、港口、实验室、工农业及交通等领域。产品特点:连接简便、体积小巧、性价比高,专业级大气压力应用范围各类自动气象站的大气压力专业测量测量范围:5001060hPa输出:频率/电压/智能分辨率:0.1hPa2、控制器:51单片机外接串行AD转化芯片ADC0832各传感器电压转换成数字量,通过1602显示屏显示实时数据,第1页使用定时器模拟一路PWM6制执行器。3、被控对象:普通锅炉4、执行器:固态继电器四、主体设计1、系统框图给定值气压M51单片机固态继电器一锅炉111A
4、DC0832M压力传感器说明:本系统根据单闭环自动控制系统的特点,以89C51单片机作为调节器,通过对传感器输出的电压信号进行AD转换,与给定值进行作差比较,单片机程序中进行相应的PID运算,在1602显示屏上显示采集到的电压值,转化后的气压值,输出相应占空比的PWMI号控制固态继电器加热,使锅炉气压快速准确到达并稳定在设定值。2、系统操作说明启动系统之后,显示屏显示默认的PID参数和设定值,通过按键ADD,SUB,NEXT,OKT实现参数加减修改,参数选择,参数确认操作,之后系统进行自动运行,无需人干预,当压力值高于设定值110%勺时候能够自动报警。3、硬件电路设计proteus仿真电路图说
5、明:按键:ADDSUBNEXTO侬键依次接单片机P2.1、P2.2、P2.3、P2.4引脚,低电平触发。ADC0832DI、DO®单片机P3.4弓|脚,CS接P3.5,CLK接P3.3显示屏1602:RS接P2.6,RW接P2.5,LCDENgP2.7,数据口D0D7接P0口,为提高稳定性和引脚驱动能力,P0口接上拉电阻。4、程序设计显示屏显示字符代码init_lcd1602();液晶1602显示初始化write_cmd(0x81);write_date('K');write_date('p');write_date(':');writ
6、e_cmd(0x89);write_date('K');write_date('i');write_date(':');write_cmd(0xc1);write_date('K');write_date('d');write_date(':');write_cmd(0xc9);write_date('A');write_date('i');write_date('m');write_date(':');参数修改代码while(1)(i
7、f(add=0)(delay(10);if(add=0)(while(add=0);switch(choose)(case1:kp+=0.1;break;case2:ki+=0.1;break;case3:kd+=0.1;break;case4:aim+=0.1;break;if(sub=0)delay(10);if(sub=0)(while(sub=0);switch(choose)(case1:kp-=0.1;break;case2:ki-=0.1;break;case3:kd-=0.1;break;case4:aim-=0.1;break;if(next=0)(delay(10);if(
8、next=0)(while(next=0);choose+;if(choose=5)choose=1;if(ok=0)(delay(10);if(ok=0)break;pidshow();)pidshow子程序voidpidshow()(intdt,dt1,dt2,dt3;dt=kp*10;dt1=dt/100+0x30;dt2=dt%100/10+0x30;dt3=dt%10+0x30;write_cmd(0x84);/write_date(dt1);write_date(dt2);write_date('.');write_date(dt3);dt=ki*10;dt1=dt
9、/100+0x30;dt2=dt%100/10+0x30;dt3=dt%10+0x30;write_cmd(0x8c);/write_date(dt1);write_date(dt2);write_date('.');write_date(dt3);dt=kd*10;dt1=dt/100+0x30;dt2=dt%100/10+0x30;dt3=dt%10+0x30;write_cmd(0xc4);/write_date(dt1);write_date(dt2);write_date('.');write_date(dt3);dt=aim*10;dt1=dt/10
10、0+0x30;dt2=dt%100/10+0x30;dt3=dt%10+0x30;write_cmd(0xcd);/write_date(dt1);write_date(dt2);write_date('.');write_date(dt3);switch(choose)case 1:write_cmd(0x80);write_date(0x7e);write_cmd(0x88);write_date(0x20);write_cmd(0xc0);write_date(0x20);write_cmd(0xc8);write_date(0x20);break;case 2:(wri
11、te_cmd(0x80);write_date(0x20);write_cmd(0x88);write_date(0x7e);write_cmd(0xc0);write_date(0x20);write_cmd(0xc8);write_date(0x20);break;)case 3:(write_cmd(0x80);write_date(0x20);write_cmd(0x88);write_date(0x20);write_cmd(0xc0);write_date(0x7e);write_cmd(0xc8);write_date(0x20);break;)case 4:(write_cmd
12、(0x80);write_date(0x20);write_cmd(0x88);write_date(0x20);write_cmd(0xc0);write_date(0x20);write_cmd(0xc8);write_date(0x7e);break;)、串行ADC0832转换程序ucharADC0832(ucharCH)uchardis0,dis1;Clk=0;/拉低时钟DI=1;/初始化_nop_();CS=0;/芯片选定_nop_();Clk=1;/拉高时钟_nop_();if(CH=0)/通道选择Clk=0;/第一次拉低时钟DI=1;/通道0的第一位_nop_();Clk=1;/
13、拉高时钟_nop_();Clk=0;/第二次拉低时钟,ADC0832DI接受数据DI=0;/通道0的第二位_nop_();Clk=1;_nop_();)else(Clk=0;DI=1;/通道1的第一位_nop_();Clk=1;_nop_();Clk=0;DI=1;/通道1的第二位_nop_();Clk=1;_nop_();)Clk=0;/第三次拉低时钟,此前DI两次赋值决定通道DI=1;/DI开始失效,拉高电平,便于DO数据传输for(i=0;i<8;i+)/读取前8位的值(_nop_();dis0<<=1;Clk=1;_nop_();Clk=0;if(DO)dis0|=0
14、x01;else第10页dis0|=0x00;)for(i=0;i<8;i+)/读取后8位的值(dis1>>=1;if(DO)dis1|=0x80;elsedis1|=0x00;_nop_();Clk=1;_nop_();Clk=0;)if(dis0=dis1)/两次结束数据比较,若相等date=dis0;/则赋值给dat_nop_();CS=1;/释放ADC0832DO=1;/拉高输出端,方便下次通道选择DI端有效Clk=1;/拉高时钟returndate;)五、参考文献1邵裕森、戴先中.过程控制工程.北京:机械工业出版社,2000.52004.52萧德云译.过程控制系统一
15、一应用、设计与整定(第3版).清华大学出版社,3金以慧.过程控制.¥#华大学出版社,2002.3六、结束语第11页在本次课设过程中,我主要工作是运用Proteus软件进行连接电路图和仿真。通过这次课设,我对Proteus软件的使用更加熟悉。这次课设是大学最后一个课设了,所以团队成员分工合作、共同讨论疑难点时也都非常积极主动,同时也不乏一些快乐。七、附录1、仿真结果LU奥2用MM叩三皿!为闺小raiukts中仙5pa.jxdjr产.J引1S¥*132£,1P2.1JIAS3皿江咚ElrP2M1IAUL1,=-H2?区工一BTpunzxpiaR”剧MOraafflcT
16、产”而厂时加F9frnP3£jmMT1冠1口至13z4Pl5EErlLEhIAAJ.lT2、完整程序代码#include<reg52.h>#include<intrins.h>#defineuintunsignedint#defineucharunsignedcharsbitlcdrs=P2A6;sbitlcdrw=P2A5;sbitlcden=P2A7;/1602控制端口sbitDI=P3A4;sbitDO=P3A4;DI和DOf单片机共接口sbitClk=P3A3;sbitCS=P3A5;ADC0832控制端口sbitpwm=P2A。;第12页sbitad
17、d=P2A1;sbitsub=P2A2;sbitnext=P2A3;sbitok=P2A4;显示缓冲区电压值显示缓冲区压强值显示缓冲区输出占空比sbitbeep=P1AQ;uchardis3=QxQQ,QxQQ,QxQQ;/uchardis13=QxQQ,QxQQ,QxQQ;/uchardis23=QxQQ,QxQQ,QxQQ;/uchardate=Q;/AD值intpress=Q;/压力值intout=5Q;intchoose=1;uchari;ucharCH;/ADCQ832通道值uchartimer1;floatkp=6;floatki=Q.1;floatkd=Q.2;floataim=
18、5;voidsystem_Ini()TMOD|=Qx11;/PWMTHQ=Qxff;/11.Q592TLQ=Qx9a;第13页TR0=1;IE=0x8A;/*AD0832转换程序*/ucharADC0832(ucharCH)uchardis0,dis1;Clk=0;/拉低时钟DI=1;/初始化_nop_();CS=0;/芯片选定_nop_();Clk=1;/拉高时钟_nop_();if(CH=0)/通道选择Clk=0;/第一次拉低时钟DI=1;/通道0的第一位_nop_();Clk=1;/拉高时钟_nop_();Clk=0;/第二次拉低时钟,ADC0832DI接受数据DI=0;/通道0的第二位
19、_nop_();第14页Clk=1;_nop_();)else(Clk=0;DI=1;/通道1的第一位_nop_();Clk=1;_nop_();Clk=0;DI=1;/通道1的第二位_nop_();Clk=1;_nop_();)Clk=0;/第三次拉低时钟,此前DI两次赋值决定通道DI=1;/DI开始失效,拉高电平,便于DO数据传输for(i=0;i<8;i+)/读取前8位的值(_nop_();dis0<<=1;Clk=1;_nop_();Clk=0;if(DO)dis0|=0x01;elsedis0|=0x00;第15页for(i=0;i<8;i+)/读取后8位的值
20、dis1>>=1;if(DO)dis1|=0x80;elsedis1|=0x00;_nop_();Clk=1;_nop_();Clk=0;if(dis0=dis1)/两次结束数据比较,若相等date=dis0;/则赋值给dat_nop_();CS=1;/释放ADC0832DO=1;/拉高输出端,方便下次通道选择DI端有效Clk=1;/拉高时钟returndate;,*数据转换程序功能:将0-255级换算成0.00-5.00的电压数*voidconvert(uchara)uinttemp;/特别注意这里需定义int型(余数将大于255)dis0=a/51;/取个位temp=a%51;
21、第16页temp=temp*10;dis1=temp/51;/取小数点后第一位temp=temp%51;temp=temp*10;dis2=temp/51;/取小数点后第二位press=(dis0+dis1*0.1+dis0*0.01)*1000/4;dis10=press/100;dis11=press%100/10;dis12=press%10;dis20=out/100;dis21=out%100/10;dis22=out%10;/*LCD1602驱动程序*/voiddelay(ucharz)uintx,y;for(x=z;x>0;x-)for(y=122;y>0;y-);v
22、oidwrite_cmd(ucharcmd)/lcd1602写命令函数lcdrs=0;lcdrw=0;/选择指令寄存器第17页lcden=1;P0=cmd;/写数据delay(5);lcden=0;/使能拉低lcden=1;voidwrite_date(uchardate)/lcd1602写数据函数lcdrs=1;lcdrw=0;/选择数据寄存器lcden=1;P0=date;/写数据delay(5);lcden=0;/使能拉低lcden=1;初始化voidinit_lcd1602()/lcd1602write_cmd(0x01);/清屏write_cmd(0x38);/功能设置write_c
23、md(0x0c);/显示设置write_cmd(0x06);/输入方式从左到右delay(1);/*显示函数*/voiddisplay(void)uchari;第18页write_cmd(0x80);write_date('V');write_date(':');for(i=0;i<3;i+)(if(i=1)write_date('.');/write_date(0x30+disi);delay(5);write_date('V');write_cmd(0x88);write_date('P');write_
24、date(':');for(i=0;i<2;i+)(if(i=1)write_date('.');/write_date(0x30+dis1i);delay(5);write_date('k');write_date('p');write_date('a');第二位显示小数点第二位显示小数点write_cmd(0xc0);write_date('O');write_date('U');write_date('T');write_date(':')
25、;第19页for(i=0;i<3;i+)(write_date(0x30+dis2i);delay(5);voidpidshow()(intdt,dt1,dt2,dt3;dt=kp*10;dt1=dt/100+0x30;dt2=dt%100/10+0x30;dt3=dt%10+0x30;write_cmd(0x84);/write_date(dt1);write_date(dt2);write_date('.');write_date(dt3);dt=ki*10;dt1=dt/100+0x30;dt2=dt%100/10+0x30;dt3=dt%10+0x30;write
26、_cmd(0x8c);/write_date(dt1);write_date(dt2);write_date('.');write_date(dt3);第20页dt=kd*10;dt1=dt/100+0x30;dt2=dt%100/10+0x30;dt3=dt%10+0x30;write_cmd(0xc4);/write_date(dt1);write_date(dt2);write_date('.');write_date(dt3);dt=aim*10;dt1=dt/100+0x30;dt2=dt%100/10+0x30;dt3=dt%10+0x30;writ
27、e_cmd(0xcd);/write_date(dt1);write_date(dt2);write_date('.');write_date(dt3);switch(choose)case 1:write_cmd(0x80);write_date(0x7e);write_cmd(0x88);write_date(0x20);write_cmd(0xc0);第21页write_date(0x20);write_cmd(0xc8);write_date(0x20);break;case 2:write_cmd(0x80);write_date(0x20);write_cmd(0x
28、88);write_date(0x7e);write_cmd(0xc0);write_date(0x20);write_cmd(0xc8);write_date(0x20);break;case 3:write_cmd(0x80);write_date(0x20);write_cmd(0x88);write_date(0x20);write_cmd(0xc0);write_date(0x7e);write_cmd(0xc8);write_date(0x20);break;case 4:第22页(write_cmd(0x80);write_date(0x20);write_cmd(0x88);w
29、rite_date(0x20);write_cmd(0xc0);write_date(0x20);write_cmd(0xc8);write_date(0x7e);break;)voidpidcal()(out=(aim-press/100)*kp+50;/*主函数*/*voidmain(void)beep=0;system_Ini();第23页CH=0;/选择通道0或1init_lcd1602();/液晶1602显示初始化write_cmd(0x81);write_date('K');write_date('p');write_date(':');write_cmd(0x89);write_date('K');write_date('i');write_date(':');write_cmd(0xc1);write_date(
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 食堂厨师菜品考核制度
- 小型水利工程考核制度
- 如何加入绩效考核制度
- 两站两员工作考核制度
- 调整完善绩效考核制度
- 乡镇劳动纪律考核制度
- 商场招商绩效考核制度
- 银行电话客服考核制度
- 五矿证券绩效考核制度
- 集团财务总监考核制度
- 2026天津市嘉瑞投资控股有限公司第一次公开选聘13人考试备考试题及答案解析
- 2026四川广安安农发展集团有限公司第一批次招聘11人笔试备考试题及答案解析
- 投资项目尽职调查报告书范本
- 2026年城市建筑工地安全事故案例汇编
- 2026中央网信办所属部分在京事业单位招聘3人笔试备考题库及答案解析
- 巡察工作培训课件
- GB/T 36132-2025绿色工厂评价通则
- 活动策划助理笔试面试技巧含答案
- 数字经济概论(第二版)-课件全套 戚聿东 第1-13章 数据要素-数据垄断与算法滥用
- 供排水安全生产培训
- 辊道输送线技术方案
评论
0/150
提交评论