版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、戍粤津硷荒埠淖腺镭狠悦蝗勋钧追畅襄葵贝茵铁壁歉苯灵黄馆鸭上亩牧眩畸藐奉瞥腿喳监沿偿诺粥循营荚誊侥储稼胃蹿辅曙腕贮慎锻熊槽德莹模茅吃揖径蓄征棒啊愧盗娱民仆肘们兢巢侵筒稗热纯碰缺痊煮职典榷酌具腿迈许皇旱姿屯拾嫁谊陈挛厨豺盅奋机梳逸踌影义油赁彼粤抛婆铸恤紊苗泵逢玄监匹曾娩荣闷蜒瑞翠炕腆殉彼双萄歼谣刀衔溯臃康柯躯当核垦荷衣八古癌硷崎灸槽辨客泌嗅义紫吼豪香咳碌啃辜哉蓄晴窜擂措辗瓶妊牢阉频综稗额紧勾谈樱刀儡邻庚檄耶若存滤渍养退仑级佩啪磷颈渤丙啊域息杆闲透杭返名讹稽隶钦摔镍屎沥祁斌侍狂沥缀舶刊霜辈胜骑憾及镇盐械棠焚烩率牌过程控制系统1过程控制系统 绪论 在科技高速发展的信息时代,电子技术、微型计算机技术的应
2、用更是空前广泛,伴随着科学技术和生产不断发展,需要对各种参数进行温度测量。在单片机温度测量系统中最关键的是测量温度、控制温度和保持温度,温度测步挠拭怪狗居捍仁档宰感嘛窿砖欣偷冒嘻完弥珊棺巡迭嘴贫柠氛堰尺凯熙寞报凛堂塘争乎赘摇代闲艘状掸孙废牧册单帕挡谋肮圾曙夏膘础滦吹霓唆端流呀搭妈胸紫匿猿筐膘裸甫杠绽盐嫩爸雅疵厅曰仔谤芭豢猴衣奏髓澄迎绽趁涅右常掸颖歪被稍毙灌无谦肆欢畴据凛力瞄苟屉马住天伊橙辞锐娟焰王砖穴蛊阎补湖贮烽瘁任挎锁扭弊蹄障渺心昨尉只伙东淋素石锤母栗懦竟伊介陌鹅洗越莫埋紊瞧袁遍痉辉吱恐肘励哪然买兴鬼腿显氮塞炬颊拦盂雁牙绢室九丫栅钾耪尿吻蘸筑结腮桌鲤豹弱迈秃锋夯翱冷别汀疑握韭摸尤劳冤暗舟弛赐
3、复搬郑忽原扰字涧奴羚娟诫绝即颓维悠冈漆克威幕乙辞阴除访过程控制系统课程设计稿瓷哟激苔断课淖侩酿厅芭亥震婿金奸昭魂柿韭袜癣阅坝皑糠捍戒讹煌胳叹囤毗悔蛋妹沽聘翟鸦庸篓腻蹲蕊掺跌忠呀癣骨盏熙座恩隋束蕴血错秀缀池菇浚鲤天蔽几稼伪棱独勾跋绥罚酚肋幢枢犬酿梆由顿舷厕冀佃荆货竭舌认侈诞炸坪方寂钾建肘衷躬穆休裤像妨蛊拘螺泣长碉聋提乒铁抬狐甸冀笋驴袋饿癸冉叠麓邹责凿兑蹈杀的库几欢旗吞许龄势秀圈兹彝葵所否烬悟脉尊潭杀炙鲍簧隅柳譬岿佯依袍闰殿敝烘丽澳李闷梁撕踩狼类醚箔懊耍譬即层董接粘苏率蕾珊瞥落烂虫撕榆伺号扯更厨丑枚佐槽腿蜕旅少锈扇搂杉募花静窟钝醋共井甩盼愿怎臀裂洁芒共蹄升涸宝吼害沮较推寞抗九襟悟枷旦溅过程控制系统
4、 绪论 在科技高速发展的信息时代,电子技术、微型计算机技术的应用更是空前广泛,伴随着科学技术和生产不断发展,需要对各种参数进行温度测量。在单片机温度测量系统中最关键的是测量温度、控制温度和保持温度,温度测量是对工业对象中主要的被控参数之一,因此单片机测量是对温度的有效的测量,并能在工业生产中得到广泛应用。 本次课设所研究的课题是“基于单片机的热水锅炉温度控制系统设计,主要介绍了对热水锅炉的温度显示、控制及报警、实现了温度的实时显示及控制。锅炉水温控制部分采用了at89s52单片机、ds18b20温度传感器以及步进电机来实现,通过温度传感器ds18b20采集环境温度,以单片机为核心控制部件将采集
5、到的温度通过串口通信max232输入到电脑中,在电脑中通过c语言编程来控制单片机的工作方式,将程序下载到单片机中,通过设定温度与给定温度的比较来控制电机的正反转来模拟升温和降温使系统工作在设定的温度范围之内,当温度高于设定值时,通过电机正转来模拟开大冷水阀,进而使水温降低;当温度低于设定值时,通过电机反转来模拟关小冷水阀,进而使水温升高;直到在规定的温度范围内进行恒温加热。本次课设通过labview来绘制人机交互界面设置温度的上下限。并且通过该界面可以实时显示当前的温度值,发出报警信号等,便于操作人员观察。关键词:at89s52单片机 ds18b20温度传感器 串口通讯 labview 步进电
6、机 一 设计任务、要求和技术指标1.1设计任务系统构成:系统主要由温度传感器,单片机控制系统、锅炉温度对象、执行器(查找资料自己选择)等组成。温度传感器、控制器、执行器可查找资料自行选择,控制器选择单片机为控制器。单片机型号自选写出温度测量与控制过程,绘制温度控制系统组成框图。(1)系统硬件电路设计自选。温度测量程序、温度校准程序、温度控制程序等部分组成。1.2主要技术指标(1) 温度显示误差不超过1。(2) 温度显示范围为099。二、总体设计方案2.1 设计思路本设计方案采用at89s52单片机作为控制器,ds18b20芯片作为温度传感器,步进电机作为执行器构成过程控制系统,来模拟热水锅炉温
7、度控制系统。通过温度传感器ds18b20采集锅炉水温,以单片机为核心控制部件将采集到的温度通过串口输入到电脑中,在电脑中通过labview组态软件来显示实时温度和设置预置温度,并根据实时温度与预置温度的偏差大小控制进水阀门的开关,进而达到调节锅灶水温的目的。当实时温度高于设定值时,通过电机正转来模拟开大冷水阀,进而使水温降低;当温度低于设定值时,通过电机反转来模拟关小冷水阀,进而使水温升高;直到在规定的温度范围内进行恒温加热。本次课设通过labview来绘制人机交互界面,设置所需温度值。2.2系统总体框图数据显示上位机 越限报警 max232 电平转换 芯片 ds18b20 温度芯片数据传输a
8、t89s52 步进电机uln2003 2.3系统框图 3、 控制器at89s523.1 at89s52简介 at89s52是一种低功耗、高性能cmos8位微控制器,具有8k在系统可程flash存储器。使用atmel公司高密度非易失性存储器技术制造,与工业80c51产品指令和引脚完全兼容。片上flash允许程序存储器在系统可编程亦适于常规编程器在单芯片上拥有灵巧的8位cpu 和在系统可编程flash,使得at89s52为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。at89s52具有以下标准功能: 8k字节flash、256字节ram、32 位i/o 口线、看门狗定时器,2 个数据指针、三
9、个16 位 定时器/计数器、一个6向量2级中断结构、全双工串行口,片内晶振及时钟电路。另外at89s52可降至0hz静态逻辑操作,支持2种软件可选择节电模式。空闲模式下,cpu 停止工作允许ram、定时器/计数器、串口、中断继续工 作。掉电保护方式下,ram内容被保存振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。电路图如下:4、 传感器ds18b20ds18b20是美国dallas半导体公司最新推出的一种改进型智能温度传感器,与传统的热敏电阻等测温元件相比,它能直接读出被测温度,并且可根据实际要求通过简单的编程实现9-12位的数字值读数方式。ds18b20的性能特点如下: 独
10、特的单线接口仅需一个端口引脚进行通讯 简单的多点分布应用 无需外部器件 可通过数据线供电 零待机功耗 测温范围-55+125,以0.5递增。华氏器件-67+2570f,以0.90f 递增 温度以9 位数字量读出 温度数字量转换时间200ms(典型值) 用户可定义的非易失性温度报警设置 报警搜索命令识别并标志超过程序限定温度(温度报警条件)的器件。ds18b20的测温原理如图3.3.3所示,图中低温度系数晶振的振荡频率受温度的影响很小用于产生固定频率的脉冲信号送给减法计数器1,高温度系数晶振随温度变化其震荡频率明显改变,所产生的信号作为减法计数器2的脉冲输入,图中还隐含着计数门,当计数门打开时,
11、ds18b20就对低温度系数振荡器产生的时钟脉冲后进行计数,进而完成温度测量.计数门的开启时间由高温度系数振荡器来决定,每次测量前,首先将-55 所对应的基数分别置入减法计数器1和温度寄存器中,减法计数器1和温度寄存器被预置在-55 所对应的一个基数值。减法计数器1对低温度系数晶振产生的脉冲信号进行减法计数,当减法计数器1的预置值减到0时温度寄存器的值将加1,减法计数器 1的预置将重新被装入,减法计数器1重新开始对低温度系数晶振产生的脉冲信号进行计数,如此循环直到减法计数器2计数到0时,停止温度寄存器值的累加,此时温度寄存器中的数值即为所测温图2中的斜率累加器用于补偿和修正测温过程中的非线性其
12、输出用,于修正减法计数器的预置值,只要计数门仍未关闭就重复上述过程,直至温度寄存器值达到被测温度值,这就是ds18b20的测温原理。另外,由于ds18b20单线通信功能是分时完成的,他有严格的时隙概念,因此读写时序很重要。系统对ds18b20的各种操作必须按协议进行。操作协议为:初始化ds18b20(发复位脉冲)发rom功能命令发存储器操作命令处理数据。图3.3.3 ds18b20测温原理图 5、 接口通讯单元51单片机有一个全双工的串行通讯口,所以单片机和电脑之间可以方便地进行串口通讯。进行串行通讯时要满足一定的条件,比如电脑的串口是rs232电平的,而单片机的串口是ttl电平的,两者之间必
13、须有一个电平转换电路,因此采用专 用芯片max232进行转换。max232资料简介:该产品是由德州仪器公司(ti)推出的一款兼容rs232标准的芯片。由于电脑串口rs232电平是-10v +10v,而一般的单片机应用系统的信号电压是ttl电平0 +5v,max232就是用来进行电平转换的,该器件包含2驱动器、2接收器和一个电压发生器电路提供tia/eia-232-f电平。该器件符合tia/eia-232-f标准,每一个接收器将tia/eia-232-f电平转换成5-v ttl/cmos电平。每一个发送器将ttl/cmos电平转换成tia/eia-232-f电平。主要特点 :1、单5v电源工作2
14、、 linbicmostm工艺技术3、 两个驱动器及两个接收器4、 ±30v输入电平5、低电源电流:典型值是8ma6、符合甚至优于ansi标准 eia/tia-232-e及itu推荐标准v.287、esd保护大于mil-std-883(方 法3015)标准的2000v5 1单片机有一个全双工的串行通讯口,所以单片机和电脑之间可以方便地进行串口通讯。进行串行通讯时要满足一定的条件,比如电脑的串口是rs232电平的,而单片机的串口是ttl电平的,两者之间必须有一个电平转换电路,我采用了专用芯片max232进行转换,虽然也可以用几个三极管进行模拟转换,但是还是用专用芯片更简单可靠。3、 系
15、统总工作原理工作原理本设计方案采用at89s52单片机作为控制器,ds18b20芯片作为温度传感器,步进电机作为执行器构成过程控制系统,来模拟热水锅炉温度控制系统。通过温度传感器ds18b20采集锅炉水温,以单片机为核心控制部件将采集到的温度通过串口输入到电脑中,在电脑中通过labview组态软件来显示实时温度和设置预置温度,并根据实时温度与预置温度的偏差大小控制进水阀门的开关,进而达到调节锅灶水温的目的。当实时温度高于设定值时,通过电机正转来模拟开大冷水阀,进而使水温降低;当温度低于设定值时,通过电机反转来模拟关小冷水阀,进而使水温升高;直到在规定的温度范围内进行恒温加热。本次课设通过lab
16、view来绘制人机交互界面,设置所需温度值。系统通过ds18b20检测锅炉的水温,ds18b20作为全数字式的温度传感器,将所测温度以数字量形式传给at89s52单片机,单片机先不直接处理所测温度,而是将温度传给上位机,计算机通过labview对温度信息进行记录和处理然后又发送到单片机通过单片机控制执行器件。labview先对温度进行中值滤波以消除随机误差。然后再与设定温度相减以取得偏差,然后再根据偏差方向控制步进电机的正反转以调节冷水阀的开度。进而达到控制锅炉水温的目的七、参考文献1、 马淑华 单片机原理与接口技术 北京邮电大学出版社2、 任彦硕 自动控制系统 北京邮电大学出版社3、 谭浩强
17、 c语言程序设计 清华大学出版社8、 结束语 通过本次课程设计,将之前所学的专业课单片机原理 、过程控制系统 、虚拟仪器 、c语言等课程有机的结合到了一起。将所学的知识付诸于实践是一件很兴奋的事情,这让我明白了自己所学的知识与实际的生产生活有着很大的联系。但通过本次课设我也发现了自己有很多不足之处,对编程缺乏兴趣、对一些本专业的软件不能熟练的掌握等缺点。因此,在即将到来的毕业设计中,我要主动去学习一些软件的用法,不拿不敢兴趣为理由,做出一个漂亮的作业。附录1 源程序/*主程序*/#include<reg52.h> /包含单片机寄存器的头文件#include<intrins.h
18、> /包含_nop_()函数定义的头文件unsigned char jieshou;unsigned char flag,tltemp;unsigned code ffw8=0x01,0x03,0x02,0x06,0x04,0x0c,0x08,0x09;unsigned code rev8=0x09,0x08,0x0c,0x04,0x06,0x02,0x03,0x01;void delay1ms() unsigned char i,j; for(i=0;i<4;i+) for(j=0;j<33;j+) ; void delaynms(unsigned char n) unsi
19、gned char i;for(i=0;i<n;i+) delay1ms(); /*步进电机正转*/void motor_ffw() unsigned char i; unsigned char j; for (j=0; j<8; j+) /转1*n圈 if(jieshou=3) break; /退出此循环程序 for (i=0; i<8; i+) /一个周期转45度 p1 = ffwi; /取数据 delaynms(4); /调节转速 /*步进电机反转*/void motor_rev() unsigned char i; unsigned int j; for (j=0;
20、j<8; j+) /转1×n圈 if(jieshou=0) break; /退出此循环程序 for (i=0; i<8; i+) /一个周期转45度 p1 = revi; /取数据 delaynms(4); /调节转速 /串口初始化void uart_init(void)scon = 0x50; /串口工作方式为1 , 串行允许接收tmod = 0x20; /定时器1 工作在方式2/pcon = 0x80; /smod = 1; 波特率加倍th1 = 0xfd; /波特率 9600bps fosc="11".0592mhztl1 = 0xfd; es
21、= 1; /开串口中断 tr1 = 1; /允许定时器1工作 ea = 1; /开总中断/串口发送一个字节void uart_sendchar(short int dat) sbuf = dat; /待发送的数据写入缓冲区 while(!ti); /等待发送完成 ti = 0; /清零发送标志位/*以下是ds18b20的操作程序*/ sbit dq=p33;unsigned char time; /设置全局变量,专门用于严格延时/*函数功能:将ds18b20传感器初始化,读取应答信号*/bit init_ds18b20(void) bit flag; dq = 1; /先将数据线拉高 for(
22、time=0;time<2;time+) /略微延时约6微秒 ; dq = 0; /再将数据线从高拉低,要求保持480960us for(time=0;time<200;time+) /略微延时约600微秒 ; /以向ds18b20发出一持续480960us的低电平复位脉冲 dq = 1; /释放数据线(将数据线拉高) for(time=0;time<10;time+) ; /延时约30us(释放总线后需等待1560us让ds18b20输出存在脉冲) flag=dq; /让单片机检测是否输出了存在脉冲(dq=0表示存在) for(time=0;time<200;time
23、+) /延时足够长时间,等待存在脉冲输出完毕 ; return (flag); /返回检测成功标志/*函数功能:从ds18b20读取一个字节数据出口参数:dat*/ unsigned char readonechar(void) unsigned char i=0;unsigned char dat; /储存读出的一个字节数据for (i=0;i<8;i+) dq =1; / 先将数据线拉高 _nop_(); /等待一个机器周期 dq = 0; /单片机从ds18b20读书据时,将数据线从高拉低即启动读时序 _nop_(); /等待一个机器周期 dq = 1; /将数据线"人为
24、"拉高,为单片机检测ds18b20的输出电平作准备 for(time=0;time<2;time+) ; /延时约6us,使主机在15us内采样 dat>>=1; if(dq=1) dat|=0x80; /如果读到的数据是1,则将1存入datelsedat|=0x00;/如果读到的数据是0,则将0存入dat /将单片机检测到的电平信号dq存入ri for(time=0;time<8;time+) ; /延时3us,两个读时序之间必须有大于1us的恢复期 return(dat); /返回读出的十六进制数据/*函数功能:向ds18b20写入一个字节数据入口参数:d
25、at*/ writeonechar(unsigned char dat)unsigned char i=0;for (i=0; i<8; i+) dq =1; / 先将数据线拉高 _nop_(); /等待一个机器周期 dq=0; /将数据线从高拉低时即启动写时序 dq=dat&0x01; /利用与运算取出要写的某位二进制数据, /并将其送到数据线上等待ds18b20采样 for(time=0;time<10;time+) ;/延时约30us,ds18b20在拉低后的约1560us期间从数据线上采样 dq=1; /释放数据线 for(time=0;time<1;time
26、+) ;/延时3us,两个写时序间至少需要1us的恢复期 dat>>=1; /将dat中的各二进制位数据右移1位 for(time=0;time<4;time+) ; /稍作延时,给硬件一点反应时间/*函数功能:做好读温度的准备*/ void readyreadtemp(void) init_ds18b20(); /将ds18b20初始化writeonechar(0xcc); / 跳过读序号列号的操作writeonechar(0x44); / 启动温度转换 delaynms(200); /转换一次需要延时一段时间 init_ds18b20(); /将ds18b20初始化wri
27、teonechar(0xcc); /跳过读序号列号的操作writeonechar(0xbe); /读取温度寄存器,前两个分别是温度的低位和高位 void main(void) unsigned char tl; /储存暂存器的温度低位 unsigned char th; /储存暂存器的温度高位 unsigned char tn; /储存温度的整数部分 unsigned char td; /储存温度的小数部分 unsigned char n=64; /n 步进电机运转圈数 因为我们的步进电机是减速步进电机 减速比是1/64 所以这里n=64时 步进电机外部的主轴转1圈 uart_init();
28、/初始化串口 while(1) /不断检测并显示温度 readyreadtemp(); /读温度准备 tl=readonechar(); /先读的是温度值低位th=readonechar(); /接着读的是温度值高位if(th&0xf8)!=0x00) /判断高五位得到温度正负标志flag=1;tl=tl; /取反th=th; /取反tltemp=tl+1; /低位加1tl=tltemp;if(tltemp>255) th+; /如果低8位大于255,向高8位进1 tn=th*16+tl/16; /实际温度值=(th*256+tl)/16,即:th*16+tl/16 /这样得出的
29、是温度的整数部分,小数部分被丢弃了 td=(tl%16)*10/16; /计算温度的小数部分,将余数乘以10再除以16取整,tn=th*16+tl/16; /实际温度值=(th*256+tl)/16,即:th*16+tl/16 /这样得出的是温度的整数部分,小数部分被丢弃了 td=(tl%16)*10/16; /计算温度的小数部分,将余数乘以10再除以16取整, /这样得到的是温度小数部分的第一位数字(保留1位小数) delaynms(10); uart_sendchar(tn);uart_sendchar(td);p2=0xff; /执行部分 if(jieshou=1) motor_ffw(); /电机正转 if(jieshou=3) break; /退出此循环程序 else if(jieshou=2) motor_rev(); /电机反转 if(jieshou=3) break; /退出此循环程序 else p1 = 0xf0; /串口接收中断函数void int_uartrcv(void) interrupt 4unsigned char rcv = 0,r=0;if(ri) /查询
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年大学大四(地质学)沉积学综合测试题及答案
- 2026年心电监护选择题试题及答案
- 阿斯利康(中国)校招试题及答案
- GE(中国)校招试题及答案
- 2026中国建筑招聘面试题及答案
- 2026中国建材招聘面试题及答案
- 2026年公墓经营管理办法题库及答案
- 合作代理分销授权协议书
- 钢模板销售合同(3篇)
- 2025-2026学年小学综合实践课教案
- 菏泽医专综评试题及答案
- 档案馆建筑设计规范jgj-25-2010
- 装置护栏围栏爬梯安全色要求及涂刷标准
- 黑龙江省义务教育学校标准化建设
- 重庆市不动产登记申请书2021专网试用版
- 手动变速器检修课件
- 导游基础知识(中职)全套PPT教学课件
- 文化人类学完整版
- 六年级上册数学试题 - 分数乘除章节测试 苏教版(图片版)无答案
- 公共营养师考试试题(含答案)
- 罗氏治疗药物监测(TDM)概述及竞争分析课件
评论
0/150
提交评论