已阅读5页,还剩25页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
锅炉水温自动控制系统摘要本设计采用一块单片机(STC89C52)作为涡炉水温闭环控制系统的控制核心,实现人工设定温度,自动控制温度,显示水的实时温度等功能。水温测试方式采用数字温度传感器DS18B20感知器皿中水的温度,通过单片机STC89C52与数字温度传感器DS18B20通讯获得实时温度,并通过程序实现闭环控制。采用键盘扫描方式对目标温度(080或2060)进行人工设定,并用LCD1602显示水的实时温度、给定温度及温度范围。同时系统还通过继电器电路控制加热器件的导通与关闭,达到保持设定温度基本不变的目的,并起到强弱点隔离作用,安全可靠。水温控制算法通过程序对给定温度与实时温度的判断,实现温度调节,其精确度可达1。并设有一定的保护措施,当实时温度不在设定的安全温度范围时系统将报警。关键词:单片机(STC89C52 ),自动控制,闭环控制目录1.系统设计41.1设计要求41.1.1基本要求41.1.2发挥部分41.2系统基本方案41.2.1各模块的方案选择和论证52.单元电路设计92.1 水温测量电路的设计92.1.1DS18B20单线数字温度传感器92.1.2 DS18B20单线数字温度传感器电路122.2 STC89C52控制电路132.2.1STC89C52单片机管脚图132.2.2 STC89C52单片机最小系统及外围电路接口图132.3LCD1602液晶显示屏电路142.3.1 LCD1602液晶显示屏14152.3.2LCD1602液晶显示屏显示电路图172.4继电器电路172.4.1继电器主要技术参数172.4.2HK4100F继电器驱动电路原理182.5键盘电路192.5.1键盘电路图192.5.2按键说明192.6蜂鸣器报警电路202.6.1蜂鸣器报警电路图203.软件设计213.1软件框图213.2各模块主要程序213.2.1LCD1602程序213.2.2DS18B20程序244.系统整体电路图304.1系统整体电路图305.结束语31参考文献32附录一33附录二361.系统设计1.1设计要求1.1.1基本要求(1)要求采用直接数字控制(DDC)对锅炉水温进行控制,使其温度稳定在给定的值上;(2)具有键盘输入温度给定值,能显示当前温度值;(3)温度达到极限时提醒操作人员注意的功能。1.1.2发挥部分(1)具有设定温度范围的功能,并显示给定值、当前值及温度范围;(2)温度控制精度达到1;(3)采用软件实现闭环控制,降低成本;(4)通过继电器实现对加热器件的控制,起到隔离保护作用。1.2系统基本方案根据题目要求,系统可以划分为控制器模块,温度测量模块,水温加热模块,显示模块。最终选定的整体系统框图如图1.2.1所示。为了实现各模块的功能,分别做了几种不同的设计方案并进行了论证。图1.2.11.2.1各模块的方案选择和论证(1) 控制器模块采用STC公司的STC89C52作为系统的控制器。单片机算术运算功能强,软件编程灵活,自由度大,可用软件编程实现各种算法,并且具有功耗低,体积小,技术成熟,成本低廉等有点,使其在各个领域应用广泛。(2)水温探测模块水温探测模块用于测量器皿中水的温度。系统需要利用测温传感器检测出水的实时温度,是控制模块做出正确的反应,控制水的温度。采用单总线可编程温度传感器测温度。DS18B20数字可编程温度传感器可测温范围55125,在-10+85时精度为 0.5。可编程的分辨率为912位,对应的可分辨温度分别为0.5、0.25、0.125和0.0625,可实现高精度测温。在9位分辨率时最多在93.75ms内把温度转换为数字,12位分辨率时最多在750ms内把温度值转换为数字,速度更快。测量结果直接输出数字温度信号,以一线总线串行传送给CPU,同时可传送CRC校验码,具有极强的抗干扰纠错能力。并且其所需辅助电路简单,依靠程序直接读取温度,总费用低。(3)显示模块使用LCD1602液晶显示屏显示水温。液晶显示屏(LED)具有轻薄短小,低耗电量,无辐射危险,平面直角显示以及影像稳定不闪烁等优势,可视面积大,画面效果好,分辨率高,抗干扰能力强等特点,且显示更为人性化,电路焊接更为简单。(4)水温控制模块水温控制模块用来控制加热器件的导通与关闭,从而达到控制加热时间,控制水温的目的。采用继电器驱动电路控制。继电器是一种电子控制器件,它具有控制系统(又称输入回路)和被控制系统(又称输出回路),通常应用于自动控制电路中,它实际上是用较小的电流去控制较大电流的一种“自动开关”。故在电路中起着自动调节、安全保护、转换电路等作用。电磁式继电器一般由铁芯、线圈、衔铁、触点簧片等组成的。只要在线圈两端加上一定的电压,线圈中就会流过一定的电流,从而产生电磁效应,衔铁就会在电磁力吸引的作用下克服返回弹簧的拉力吸向铁芯,从而带动衔铁的动触点与静触点(常开触点)吸合。当线圈断电后,电磁的吸力也随之消失,衔铁就会在弹簧的反作用力返回原来的位置,使动触点与原来的静触点(常闭触点)吸合。这样吸合、释放,从而达到了在电路中的导通、切断的目的。对于继电器的“常开、常闭”触点,可以这样来区分:继电器线圈未通电时处于断开状态的静触点,称为“常开触点”;处于接通状态的静触点称为“常闭触点”。2.单元电路设计2.1 水温测量电路的设计2.1.1DS18B20单线数字温度传感器序号名称引脚功能描述1GND地信号2DQ数据输入/输出引脚。开漏单总线接口引脚。当被用着在寄生电源下,也可以向器件提供电源。3VDD可选择的VDD引脚。当工作于寄生电源时,此引脚必须接地。DS18B20的使用方法由于DS18B20采用的是1Wire总线协议方式,即在一根数据线实现数据的双向传输,而对AT89S51单片机来说,硬件上并不支持单总线协议,因此,我们必须采用软件的方法来模拟单总线的协议时序来完成对DS18B20芯片的访问。由于DS18B20是在一根I/O线上读写数据,因此,对读写的数据位有着严格的时序要求。DS18B20有严格的通信协议来保证各位数据传输的正确性和完整性。该协议定义了几种信号的时序:初始化时序、读时序、写时序。所有时序都是将主机作为主设备,单总线器件作为从设备。而每一次命令和数据的传输都是从主机主动启动写时序开始,如果要求单总线器件回送数据,在进行写命令后,主机需启动读时序完成数据接收。数据和命令的传输都是低位在先。(1) DS18B20的复位时序 DS18B20单线数字温度传感器复位时序图(2)DS18B20的读时序对于DS18B20的读时序分为读0时序和读1时序两个过程。对于DS18B20的读时隙是从主机把单总线拉低之后,在15秒之内就得释放单总线,以让DS18B20把数据传输到单总线上。DS18B20在完成一个读时序过程,至少需要60us才能完成。DS18B20单线数字温度传感器读时序图(3)DS18B20的写时序对于DS18B20的写时序仍然分为写0时序和写1时序两个过程。对于DS18B20写0时序和写1时序的要求不同,当要写0时序时,单总线要被拉低至少60us,保证DS18B20能够在15us到45us之间能够正确地采样IO总线上的“0”电平,当要写1时序时,单总线被拉低之后,在15us之内就得释放单总线。 DS18B20单线数字温度传感器写时序图(4)DS18B20单线数字温度传感器温度/数据转换关系图表 12.1.2 DS18B20单线数字温度传感器电路 DS18B20单线数字温度传感器电路2.2 STC89C52控制电路2.2.1STC89C52单片机管脚图2.2.2 STC89C52单片机最小系统及外围电路接口图STC89C52单片机最小系统及外围电路接口图2.3LCD1602液晶显示屏电路2.3.1 LCD1602液晶显示屏(1)LCD1602液晶显示屏主要技术参数(2) LCD1602液晶显示屏引脚说明LCD1602液晶显示屏引脚图1602采用标准的14脚接口,其中: 第1脚:VSS为地电源 第2脚:VDD接5V正电源 第3脚:V0为液晶显示器对比度调整端,接正电源时对比度最弱,接地电源时对比度最高,对比度过高时会产生“鬼影”,使用时可以通过一个10K的电位器调整对比度第4脚:RS为寄存器选择,高电平时选择数据寄存器、低电平时选择指令寄存器。 第5脚:RW为读写信号线,高电平时进行读操作,低电平时进行写操作。当RS和RW共同为低电平时可以写入指令或者显示地址,当RS为低电平RW为高电平时可以读忙信号,当RS为高电平RW为低电平时可以写入数据。 第6脚:E端为使能端,当E端由高电平跳变成低电平时,液晶模块执行命令。 第714脚:D0D7为8位双向数据线。 另外引脚A和K为背光引脚,A接正,K接负便会点亮背光灯。这两个管脚可以不接置空。(3) LCD1602液晶显示屏指令说明LCD1602液晶显示屏指令表它的读写操作、屏幕和光标的操作都是通过指令编程来实现的。(说明:1为高电平、0为低电平) 指令1:清显示,指令码01H,光标复位到地址00H位置 指令2:光标复位,光标返回到地址00H 指令3:光标和显示模式设置 I/D:光标移动方向,高电平右移,低电平左移 S:屏幕上所有文字是否左移或者右移。高电平表示有效,低电平则无效 指令4:显示开关控制。 D:控制整体显示的开与关,高电平表示开显示,低电平表示关显示 C:控制光标的开与关,高电平表示有光标,低电平表示无光标 B:控制光标是否闪烁,高电平闪烁,低电平不闪烁 指令5:光标或显示移位 S/C:高电平时移动显示的文字,低电平时移动光标 指令6:功能设置命令 DL:高电平时为4位总线,低电平时为8位总线 N:低电平时为单行显示,高电平时双行显示 F: 低电平时显示5x7的点阵字符,高电平时显示5x10的点阵字符 指令7:字符发生器RAM地址设置 指令8:DDRAM地址设置 指令9:读忙信号和光标地址 BF:为忙标志位,高电平表示忙,此时模块不能接收命令或者数据,如果为低电平表示不忙。 指令10:写数据 指令11:读数据2.3.2LCD1602液晶显示屏显示电路图LCD1602液晶显示屏与STC89C52连接显示电路图2.4继电器电路2.4.1继电器主要技术参数HK4100F电磁继电器主要技术参数:型 号 : HK4100F-DC5V-SH外形尺寸(mm): 10.5*15.5*11.8mm(W*L*H)触点形式:1C(SPDT) 触点负载:3A 220V AC/30V DC阻 抗: 100m 额定电流:3A电气寿命:10万次 机械寿命:1000万次阻值(士10%): 120 线圈功耗:0.2W 额定电压:DC 5V 吸合电压:DC 3.75V 释放电压:DC 0.5V 工作温度:-25+70 绝缘电阻:100M 线圈与触点间耐压:4000VAC/1分钟 触点与触点间耐压:750VAC/1分钟 2.4.2HK4100F继电器驱动电路原理HK4100F继电器驱动电路原理图如下图所示,三极管Q1的基极B接到单片机的P3.6,三极管的集电极极C接到继电器线圈的一端,线圈的另一端接到5V电源VCC上;继电器线圈两端并接一个二极管IN4148,用于吸收释放继电器线圈断电时产生的反向电动势,防止反向电势击穿三极管Q1及干扰其他电路;R6和发光二极管LED1组成一个继电器状态指示电路,当继电器吸合的时候,LED1点亮,这样就可以直观的看到继电器状态了。HK4100F继电器驱动电路原理图(1)当STC89C52单片机的P3.6引脚输出低电平时,三极管Q1饱和导通,5V电源加到继电器线圈两端,继电器吸合,同时状态指示的发光二极管也点亮,继电器的常开触点闭合,相当于开关闭合。(2)当STC89C52单片机的P3.6引脚输出低电平时,三极管Q1截止,继电器线圈两端没有电位差,继电器衔铁释放,同时状态指示的发光二极管也熄灭,继电器的常开触点释放,相当于开关断开。注:在三极管截止的瞬间,由于线圈中的电流不能突变为零,继电器线圈两端会产生一个较高电压的感应电动势,线圈产生的感应电动势则可以通过二极管IN4148释放,从而保护了三极管免被击穿,也消除了感应电动势对其他电路的干扰,这就是二极管D1的保护作用。2.5键盘电路2.5.1键盘电路图键盘电路图2.5.2按键说明S2调小给定温度值,每按一下给定温度值减一;S3调大给定温度值,每按一下给定温度值加一;S4切换温度范围,每按一下切换一次,默认为(080),还可切换为(2060);S6闭合则启动温度自动控制,断开则扫描按键。2.6蜂鸣器报警电路2.6.1蜂鸣器报警电路图当STC89C52的P3.7端输出为高电平时,蜂鸣器则报警;当P3.7输出为低电平时,则属于正常情况,蜂鸣器不响。3.软件设计3.1软件框图软件框图3.2各模块主要程序3.2.1LCD1602程序#include #include #include LCM1602.h#define lcd_rs P2_7#define lcd_rw P2_6#define lcd_e P2_5#define lcd_bus P0 /数据指令的输入/输出端口sbit P2_5=P25;sbit P2_6=P26;sbit P2_7=P27;void del_nop();void del_1ms(uint timecounter) /更好的延时程序 1709 uint j;register i; j=timecounter; while(1) for(i=71;i0;i-); j-; if(j=0)break; /*判断忙标志,返回的是一个位BF*/bit lcd_busy(void) register bflag; /*bflag is the busy flag BF*/ lcd_rs=0; lcd_rw=1; _nop_(); lcd_e=1; del_nop(); bflag=lcd_bus; lcd_e=0; return(bit)(bflag&0x80); /*return the BF flag bit */*写命令,有两个参数,第一个是要写的命令控制字, 第二个是用来控制是否进行忙标志的判断。 busyflag=1:判断;为 0:不判断*/void lcd_wrcmd(uchar cmd,bit busyflag) if (busyflag=1) while(lcd_busy(); lcd_bus=cmd;lcd_rs=0; lcd_rw=0; del_nop(); lcd_e=1; del_nop(); del_nop(); lcd_e=0; lcd_bus=0xff; /*needed ?*/*指定要显示的位置*/void moveto(uchar position) uchar const cmd=0x80; position-=1; if(position32) /*如果大于32,则光标移回上一行*/ position=0; if (position=16) /*如果大于16,则光标移到下一行*/ position+=0x30; /cmd=cmd|position; /*指定初始的位置*/ /lcd_wrcmd(cmd,1); lcd_wrcmd(position|cmd,1);/*向液晶片写数据*/void lcd_wrdata( uchar lcddata) while(lcd_busy(); lcd_bus=lcddata; lcd_rs=1; lcd_rw=0; del_nop(); lcd_e=1; del_nop(); del_nop(); lcd_e=0; lcd_bus=0xff;/*液晶片初始化*/void lcd_init(void) lcd_wrcmd(0x38,0); /*two lines ,5x7,8 bit*/ del_1ms(5); lcd_wrcmd(0x38,0); /*two lines ,5x7,8 bit*/ del_1ms(5); lcd_wrcmd(0x38,0); /*two lines ,5x7,8 bit*/ del_1ms(5); lcd_wrcmd(0x38,1); lcd_wrcmd(0x0c,1); lcd_wrcmd(0x06,1); lcd_wrcmd(0x01,1);/*向液晶片写字符串*/void lcd_wrstr(uchar *str,uchar position)register i,j;j= position;moveto(j);for(i=0;j32,stri!=0;i+) if(j+=17) moveto(17); lcd_wrdata(stri); 3.2.2DS18B20程序#include #include #include LCM1602.h#define BUSY1 (DQ1=0) sbit DQ1 = P10; /sbit DOWN_30=P30;/sbit UP_31=P31;sbit ON_OR_OFF_35=P35;/sbit RANGE_34=P34;sbit CONTROL_36=P36;sbit ALARM_37=P37;unsigned char idata TMP=0; void wr_ds18_1(char dat);unsigned char rd_ds18_1();/*延时程序,单位us,大于10us*/void time_delay(unsigned char time) time=time-10; time=time/6; while(time!=0)time-; /*/* reset ds18b20 */*/void ds_reset_1(void) unsigned char idata count=0; DQ1=0; time_delay(240);time_delay(240); DQ1=1; return; void check_pre_1(void) while(DQ1); while(DQ1); time_delay(30); void read_ROM(void) int n;int ROM8;ds_reset_1(); check_pre_1(); wr_ds18_1(0x33); for(n=0;n8;n+)ROMn=rd_ds18_1(); /*/* Read a bit from 1820 位读取 */*/bit tmrbit_1(void) idata char i=0; bit dat; DQ1=0;_nop_(); DQ1=1; _nop_(); _nop_(); _nop_();_nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); dat = DQ1; time_delay(50); return dat; /*/* read a bety from ds18b20 字节读取 */*/unsigned char rd_ds18_1() unsigned char idata i,j,dat=0; for(i=1;i=8;i+) j=tmrbit_1(); dat=(j(i-1)|dat; return dat; /*/* write a bety from ds18b20 写字节 */*/void wr_ds18_1(char dat) signed char idata i=0; unsigned char idata j; bit testb; for(j=1;j1; if(testb) DQ1=0; _nop_(); _nop_(); DQ1=1; time_delay(60); else DQ1=0; time_delay(50); DQ1=1; _nop_(); _nop_(); int get_temp(void) unsigned char idata a=0,b=0; unsigned char idata i; EA=0; ds_reset_1(); check_pre_1(); wr_ds18_1(0xcc); wr_ds18_1(0x44); while(BUSY1); ds_reset_1(); check_pre_1(); wr_ds18_1(0xcc); wr_ds18_1(0xbe); a=rd_ds18_1(); b=rd_ds18_1(); i=b; /*若b为1则为负温 */ i=(i4); if(i=0) TMP=(a4)|(b8)TMP=TMP+1; else ALARM_37=1; del_1ms(3000);ALARM_37=0; EA=1; return(TMP); 附录一主程序:void main(void) /unsigned char show; unsigned int count_temp,count_temp_h,count_temp_l,given,given_h,given_l,range_h=80,range_l=20,bit_i=0,bit_j=0,time_delay; unsigned char code table110=0123456789; while(1) P3=0xff; CONTROL_36=0;ALARM_37=0; lcd_ini
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- GB/T 13471-2025节能项目经济效益计算与评价方法
- 2025年劳动关系协调员高级理论考试题库附答案
- 高中三年自我鉴定150字怎么写
- 张北2019年事业编招聘考试真题及答案解析
- 微专题探究类主观题专题专项训练(有答案)
- 感控知识考核试题及答案
- 教资考试笔试模拟试题及答案解析
- 新版(煤矿防突作业)煤矿特种作业人员考试题库及答案
- 旅游市场监管措施试题及答案
- 智能建造师继续教育专题考核试卷
- 《发票发票知识培训》课件
- 2024年秋季新版苏科版八年级上册物理课件 跨学科实践 乐器的调查与制作
- 民兵潜力数据调查培训
- 辽海版综合实践活动七年级上册同步课件教案81用好电子小帮手之活动一电子产品走近你我他
- 离职员工不损害公司声誉保证书
- 3.8 第1课时弧长的计算 浙教版数学九年级上册课件
- 初中语+文+第9课《从百草园到三味书屋》课件+统编版语文七年级上册
- 2024年共青团入团积极分子团校结业考试试题库及答案
- 高标准农田改造提升建设项目投标方案(技术标)
- 市政设施养护维修服务规范(TZSZX002-2022)
- MOOC 创业团队建设与管理-首都经济贸易大学 中国大学慕课答案
评论
0/150
提交评论