《智能温度检测控制系统的设计.doc》由会员分享,可在线阅读,更多相关《智能温度检测控制系统的设计.doc(25页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、【精品文档】如有侵权,请联系网站删除,仅供学习与交流智能温度检测控制系统的设计.精品文档.智能温度检测控制系统的设计作者:xxx 指导老师:xxx摘要: 在日常生活及工农业生产中,人们经常要用到温度的检测及控制,而目前推广应用的许多温度控制系统多采用电阻式温度传感器,测量精度低,需要A/D转换和比较多的外部硬件支持,电路复杂,离散性大,温度反应缓慢。而新型数字式智能温度传感器DS18B20可以直接读出被测温度值,反应速度快,也可以设定温度上下限,还可以根据实际温度控制外部电路,进行温度补偿等。本文介绍了采用数字式温度传感器作为温度采集单元和用单片机来对它们进行控制,并用DS18B20 和AT8
2、9C51 单片机为核心开发研制了一种自动温度测控系统,该系统具有控制方便、简单、灵活、实用性强、测量精度高、可靠性高等特点。关键词:数字温度传感器 智能温度控制 单片机 1引言温度是一种最基本的环境参数,人民的生活与环境的温度息息相关,在工业生产过程中需要实时测量温度,在农业生产中也离不开温度的测量,因此研究温度的测量方法和装置关键是温度传感器。在众多应用于温室环境监测的元件中,温敏电阻虽然成本低,但后续电路复杂,且需进行温度标定;电流型集成温度传感器AD590也因其输出为模拟信号,且输出信号较弱故需后续放大及A/ D 转换电路,若采用普通运放则精度难以保证,而测量放大器价格偏高,这就使系统的
3、成本升高;目前,国际上新型温度传感器正从模拟式向数字式,从集成化向智能化、网络化的方向飞速发展。自美国DALLAS公司生产单总线、数字式温度传感器系列(如DS1620、DS1820、DS18B20) 以来,相继被广泛应用于计算机与自动化测控领域。改变了传统温度测试方法,能在现场采集温度数据,并直接将温度物理量变换为数字信号并以总线方式传送到计算机进行数据处理,测温度范围为- 55 + 125。本系统采用美国DALLAS 公司的产品可编程单总线数字式温度传感器DS18B20 实现温室内温度信号的采集,进而实现温室内的温度监测及进行温度补偿。智能温度传感器DS18B20 将温度传感器、A/D 传感
4、器、寄存器、接口电路集成在一个芯片中,代替模拟温度传感器和信号处理电路,直接与单片机沟通,完成温度采集和数据处理,具有直接数字化输出、测试及控制功能强、传输距离远、抗干扰能力强、微型化微功耗、便于多点测量且易于扩展的特点。它可应用于各种领域、各种环境的自动化测试和控制系统,使用方便灵活,测试精度高,优于任何传统的温度数字化、自动化测控设备,还可以让我们可以构建适合自己的经济的温控系统2 系统设计分析通过预先对DS18B20可编程温度传感器的编程,完成转换位数,精度,高、低温报警触发器TH、TL 的温度设置。进入测温模式后,DS18B20可编程温度传感器将所测的温度值直接转换成数字量,通过其独有
5、的单总线协议,实现与单片机的数据传输,完成数据采集。再结合软件及相应外围电路进行实时温度监控。2.1 设计任务与要求本文将DS18B20 与其它温度传感器如温敏电阻、AD590 进行比较,介绍了DS18B20 的基本特性。由于DS18B20 具有直接输出数字信号、单总线接口、成本低等优点,将其应用在由AT89C51及各种环境因子检测传感器构成的温室环境监测中作为测温探头,给出了相应的硬件接口电路、软件流程及主要程序代码。系统实现的功能如下:(1)测温检测范围在-55125,误差在0.5以内(2) 在测温模式下,实时测出当前温度并用4位数码管显示当前温度。(3)用户可以通过按键设置允许最高温度1
6、25、允许最低温度-55。(4) 在测温模式下,实时比较当前温度与设定温度,当高于设定温度1度时,系统绿灯亮,并接通继电器1进行制冷。当低于设定温度1度时,系统红灯亮,并接通继电器2进行加热。当温度超过允许温度时,声音警报响。由于实际条件有限,制冷和加热设备作为外围电路在本设计中不予制作。2.2 系统总体方案介绍硬件电路由如下部分组成, 即键盘输入电路、单片机最小系统、时钟电路、复位电路、LED 显示驱动电路、4位LED 显示器、温度检测电路及温度控制电路。硬件电路框图见如图单片机键盘输入电路时钟电路复位电路蜂鸣电路LED显示器驱动电路温度检测电路4位LED显示器温度控制电路图1 硬件电路框图
7、3 系统硬件介绍3.1 DS18B20 单线数字温度传感器3.1.1 DS18B20 引脚分布 数字温度传感器DS18B20 的测温范围为- 55+ 125 ,精度为0.5 ,测量的温度值用912 位数字表示,最大转换时间为750 ms,温度超标报警的上、下限值,DS18B20 的转换分辨率均可由用户设定,并能长期保存。利用Dallas 的单总线控制协议,和单线控制信号在总线上来实现数据的读写。DS18B20 可编程温度传感器有3 个管脚,ground 为接地线,DQ 为数据输入输出接口,通过一个较弱的上拉电阻与单片机相连。DS18B20 的另一特点是在没有外部电源下操作的能力,电源由总线为高
8、电平时DQ 脚上的上拉电阻提供(寄生供电模式) ,此时VDD脚接地。也可用传统方式供电,即将外部电源接在VDD脚上即可,范围3.105.5 V。本设计使用的封装形式如图2所示,采用寄生电源接线方式。 图2 DS18B20 的管脚图 引脚含义如下: DQ:数字信号输入输出端。 GND:电源地。 VDD:外接供电电源输入端(在寄生电源接线方式时接地)。 3.1.2 DS18B20的测温原理DS18B20 测温原理如图3 所示。当DS18B20 接收到温度转换命令后,开始启动转换。转换完成后的温度值就以16 位带符号扩展的二进制补码形式存储在高速暂存存储器的第1 ,2 字节。单片机可通过单线接口读到
9、该数据,读取时低位在前,高位在后,数据格式以0.062 5 / LSB 形式表示。图中低温度系数晶振的振荡频率受温度影响很小,用来向计数器1提供固定频率的脉冲信号。高温度系数晶振的振荡频率受温度影响较大,随温度的变化而明显改变,其产生的信号作为计数器2 的脉冲输入,用于控制闸门的关闭时间。初态时,计数器1 和温度寄存器被预置在与- 55 相对应的一个基值上。计数器1对低温度系数晶振产生的脉冲信号进行减法计数,在计数器2 控制的闸门时间到达之前,如果计数器1 的预置值减到0 ,则温度寄存器的值将作加1 运算,与此同时,用于补偿和修正测温过程中非线性的斜率累加器将输出一个与温度变化相对应的计数值,
10、作为计数器1 的新预置值,计数器1 重新开始对低温度系数晶振产生的脉冲信号进行计数,如此循环,直到计数器2 控制的闸门时间到达亦即计数到0 时,停止温度寄存器值的累加,此时温度寄存器中的数值即为所测温度。在默认的配置中,DS18B20的测温分辨率为0.0625 ,以12 位有效数据表示,其中,高位的S 表示符号位,其数据格式如表1 所示。其中“S”为标志位,对应的温度计算: 当符号位S = 0时,直接将二进制位转换为十进制;当S = 1 时,先将补码变换为原码,再计算十进制值。表2 是对应的一部分温度值。DS18B20 完成温度转换后,就把测得的温度值与TH ,TL 做比较,若T TH 或T
11、1 000 次) FLASH ROM;全静态操作024 MHz;128 8 b 内部RAM。 图6 AT89C51 引脚图该款芯片的超低功耗和良好的性能价格比使其非常适合嵌入式产品应用。3.3 驱动电路 74LS244 74lLS244是TTL八同相三态缓冲器/线驱动器,其coms器件对应为74HC244,常用在单片机MCU系统中,作为单片机的输入输出数据缓冲器,在选通时输入数据送到总线上,在非选通时对总线呈高阻态。3.4 各个模块电路的设计3.4.1 LED 显示电路单片机的并行口不能直接驱动LED 显示器,必须采用专用的驱动电路芯片,使之产生足够大的电流,否则显示器亮度低并且驱动电路长期在
12、超负荷下运行容易坏。应根据所选择的显示方式来确定选择何种驱动器, 在本系统中采用的是动态显示故我们选取的是74LS244,在输入端输入要显示字形的BCD码输出端就可以得到有一定驱动能力的七段显示字形码。显示电路采用4位共阳LED 数码管,从P0口输出段码,列扫描用P3. 0P3. 3来实现,列驱动用9012三极管。图6 LED显示及驱动电路3.4.2 键盘输入电路要输入设定的温度,必须依靠键盘。在单片机组成的测控系统及智能化仪器中, 用的最多的是非编码键盘。本设计中用了四个按键,故选用了独立式键盘。每个独立式键盘单独占用一根I/O口线,每根线上按键的工作状态不会影响其他线上的工作状态,即一个按
13、键对应一个端口输入,每个按键都有一个按键电路来判断其是否按下。上拉电阻确保按键松开时,I/O口线有确定的高电平。设计中定义4个有效键的功能如表1所示。具体原理如图7所示(图中DS18B20采用外接电源工作方式, VCC端用3V5.5V电源供电) 图7 按键电路表3 按键功能表代号接口键名功能K1RST复位犍使系统复位K2P1.1功能转换键键按下时显示设定温度键提升时显示当前温度K3P1.2加键设定温度渐次增加一度K4P1.3减键设定温度渐次减少一度34.3 时钟电路选择石英晶振作为时钟组件, 接至单片机的XTAL1、XTAL2 引脚组成时钟电路。 图8 时钟电路34.4 蜂鸣器电路在系统温度达
14、到上下限温度限制是有提醒信号产生可选择蜂鸣器来实现这一功能。压电式蜂鸣器工作时需要10mA 电流,设计时考虑了相应控制电路。图9 蜂鸣器电路3.4.5 电源电路 本系统采用+5V统一供电。电路图如下: 图10 电源电路3.4.6 温度控制电路 外围加热(制冷)电路采用继电器控制,当单片机输出高电平,三极管截止,继电器两端都为高电平,继电器不吸合。当单片机输出低电平,三极管饱和导通,继电器吸合。 图11 加热(制冷)控制电路4 系统软件设计本系统的运行程序采用C语言编写,采用模块化设计,整体程序由主程序和子程序组成,如图 所示。主机控制DS18B20 完成温度转换必须经过3 个步骤:初始化、RO
15、M 操作指令、存储器操作指令。单片机系统所用的晶振频率为12 MHz,根据DS18B20的初始化时序、写时序和读时序,分别编写5 个子程序:初始化子程序、写(命令或数据) 子程序、读数据子程序、显示子程序、温度控制程序及按键中断处理子程序。4.1 主程序由于51系列单片机没有停机指令,所以可以利用主程序设置死循环反复运行各个任务。把有要求的子程序(显示扫描、按键扫描、温度控制、蜂鸣控制)放在最内层的循环中,计算其运行一次占用的CPU时间,然后根据温度检测定时的间隔时间,计算出循环次数。本文中没运行一次有实时要求的子程序约占用5ms CPU时间,运行测温子程序的时间间隔为0.5S,那么循环次数应
16、为100次。调用按键子程序初始化DS18B20设置参数显示设定温度内部判断结 束NY开 始启动DS18B20测温是否有键按下?系统初始化调用相应的键值处理程序调用读子程序输出显示 图12 主 程 序 流 程 图调用相应的控制程序设置显示测温异常正常调用温度控制函数4.2 测温程序4.2.1 初始化 与DS18B20的所有通信都必须初始化。初始化时,控制器发出复位脉冲,DS18B20跟在其后发出存在脉冲。4.2.2 读出温度子程序读出温度子程序的主要功能是读出RAM中的九字节。在读出时需进行CRC校验,校验有错时不能进行温度数据的改写。读出温度子程序流程图如图所示。发读取温度命令移入温度暂存器发
17、DS18B20复位命令读取操作,CRC校验发跳过ROM命令9字节完?CRC校验正确结 束NYYN图13 读 出 温 度 子 程 序 流 程 图4.2.3 温度转换命令子程序温度转换命令子程序主要是发温度转换开始命令。当采用12位分辨率时,转换时间约为750ms。温度转换命令子程序流程图如图所示。发温度转换开始命令发DS18B20复位命令发跳过ROM命令结束图14 温度转换命令子程序流程图4.2.4 计算温度子程序计算温度子程序将RAM中读取值进行BCD码的转换运算。温度数据的计算处理方法从DS18B20读取的二进制值必须先转换成BCD码,用BCD码来表示十进制数值,才能用于字符的显示。DS18
18、B20的转换精度为912位可选,为了提高精度采用12位。在采用12位转换精度时,温度寄存器里的值是以0.0625为步进的,即温度值为温度寄存器里的二进制值乘以0.0625,就是实际的十进制温度值。通过观察表4.3可以发现,一个十进制与二进制值间有很明显的关系,就是把二进制的高字节的低半字节和第字节的高半字节组成一个字节,这个字节的二进制化为十进制后,就是温度的百、十、个位值,而剩下的低字节的低半字节化为十进制后就是温度的小数部分。因为小数部分是半字节,所以二进制范围是0F,转换成十进制小数就是0.0625的倍数(015倍)。这样需要4位的数码管来显示小数部分。实际应用中不需要这么高的精度,采用
19、一位数码管来显示小数部分,这样误差控制在0.1度范围内。表5 二进制与十进制的近似对应关系表43 显示扫描子程序显示扫描子程序完成4位共阳极数码管的扫描显示任务。以下是显示扫描子程序流程图送显示段码改变位选字赋位选初值选通并显示12MS清除位选完成4位扫描?结 束YN图15 显示扫描子程序流程图开始消隐4.4 按键扫描子程序按键扫描子程序负责逐个扫描功能转换键,加键,减键是否被按下,当按下时,进入温度设定状态,显示设定温度。此时按下加键或减键并作出相应处理。温度加一消抖K4键是否按下?结 束NYYN开 始显示设定温度温度减一图16 按 键 子 程 序 流 程 图消抖K3键是否按下K2键是否按下
20、测温显示程序4.5 温度控制程序温度控制程序用户设定的温度和系统当前的状态,决定是加热或是制冷并点亮相应的指示灯。若有超温标志,还应打开蜂鸣器报警。图所示为温度控制程序流程图温度控制程序通过控制继电器的通断来决定加热和制冷。接通继电器1红灯亮有超温标志?T1-T01结 束NYYN开 始断开继电器蜂鸣报警T0-T11?接通继电器2绿灯亮N 图17 温度控制流程图5 调试及性能分析系统的调试主要以程序调试为主。硬件调试比较简单,首先检查电路的焊接是否正确,然后可用万用表测试或通电检测。软件调试可以先编写显示程序并进行硬件的正确性检测,然后分别进行主程序、读出温度子程序、温度转换命令子程序、计算温度
21、子程序、报警显示及键调程序和显示数据刷新子程序等的编程及调试。由于DS18B20与单片机采用串行数据传送,因此,对DS18B20进行读/写编程时必须严格地保证读/写时序;否则将无法读出测量结果。DS18B20温度计还可以在高低温报警、远距离多点测温控制等方面进行运用开发,但在实际设计中应注意以下问题: ( 1) 较小的硬件开销需要相对复杂的软件进行补偿, 由于DS1820与微处理器间采用串行数据传送, 因此, 在对DS1820 进行读写编程时, 必须严格的保证读写时序, 否则将无法读取测温结果。(2)连接DS18B20 的总线电缆是有长度限制的。试验中, 当采用普通信号电缆传输长度超过50m
22、时, 读取的测温数据将发生错误。当将总线电缆改为双绞线带屏蔽电缆时, 正常通讯距离可达150m, 当采用每米绞合次数更多的双绞线带屏蔽电缆时, 正常通讯距离进一步加长。这种情况主要是由总线分布电容使信号波形产生畸变造成的。因此, 在用DS18B20 进行长距离测温系统设计时要充分考虑总线分布电容和阻抗匹配问题。(3)在DS18B20 测温程序设计中, 向DS18B20 发出温度转换命令后,程序总要等待DS18B20 的返回信号, 一旦某个DS18B20 接触不好或断线, 当程序读该DS18B20 时, 将没有返回信号, 程序进入死循环。这一点在进行DS1820 硬件连接和软件设计时也要给予一定
23、的重视。结论数字单总线温度传感器是目前最新的测温器件, 它集温度测量, A/D 转换于一体, 具有单总线结构, 数字量输出, 直接与微机接口等优点。既可用它组成单路温度测量装置, 也可用它组成多路温度测量装置。该智能温度控制器经测试在- 10-70间测得误差为0。25,80T105时误差为0。5,当T105误差为增大到1左右。本文创新点: 采用当前最先进的智能数字温度传感器DS18B20 并与单片机89C51 一起构成了智能温控系统, 该温度控制器结构简单、测温准确, 具有相当的实际应用价值, 对同类产品的研制也有一定的借鉴意义。致 谢经过几个月的查资料、整理材料、写作论文,最终顺利的完成了论
24、文的制作,在此期间,感谢各位老师的悉心指导,指引我论文的写作方向和架构,并对本论文初稿进行逐字批阅,指正出其中不当之处,使我有了思考的方向,你们的循循善诱的教导和不拘一格的教学品格以及严谨细致、一丝不苟的作风,将是我未来工作、学习中的榜样。另外,要感谢在大学期间所有传授我知识的老师,是他们的悉心教导使我有了良好的专业课知识,这也是论文得以完成的基础。 通过此次的论文,我学到了很多知识,跨越了传统方式下的教与学的体制束缚,在论文的写作过程中,通过查资料和搜集有关的文献,培养了自学能力和动手能力。并且由原先的被动的接受知识转换为主动的寻求知识,这可以说是学习方法上的一个很大的突破。在以往的传统的学
25、习模式下,我们可能会记住很多的书本知识,但是通过毕业论文,我们学会了如何将学到的知识转化为自己的东西,学会了怎么更好的处理知识和实践相结合的问题。 总之,此次论文的写作过程,我收获了很多,即为大学四年划上了一个完美的句号,也为将来的人生之路做好了一个很好的铺垫。再次感谢我的大学和所有帮助过我并给我鼓励的老师,同学和朋友,谢谢你们!参考文献:1 王兆安,杨君,刘进军,等. 谐波抑制和无功功率补偿M .2 版. 北京:机械工业出版社,2006.2 清源计算机工作室. Protel 99SE 原理图与PCB 及仿真M 北京:机械工业出版社,2004.3刘树棠,朱茂林,荣玖. 基于运算放大器和模拟集成
26、电路的电路设计M . 3 版. 西安:西安交通大学出版社,2004.4 DALLAS 公司. DS18B20 Data Sheet EB/ OL . http :/ /www. dalsemi. com.5 DALLAS DS18B20 数据手册Z.6 沙占有,智能化集成温度传感器原理及应用(M),北京:机械工业出版社,20027 李虹,温秀梅,高振天,基于MSP430 单片机和DS18B20 的小型测温系统J微计算机信息J,2006.7- 28 何立民. 单片机应用系统设计 北京:北京航天航空大学出版社9 沈德金. MCS-51系列单片机接口电路与应用程序实例 北京:北京航空航天大学出版社
27、10 王福瑞. 单片微机测控系统设计大全 北京:北京航空航天大学出版社 11 陈章龙. 实用单片机大全 哈尔滨:黑龙江科学技术出版社12 鄢定明. 单片计算机应用技术 北京:人民邮电出版社.13 Philips Semiconductors and Electronics North America Corporation. DATA HANDBOOK 80C51-Based 8-Bit Microcontrollers. USA, 199414 HERRINGTON D R. Ultrasonic range finder uses few cornponentsJ. EDN,199915S
28、HIRLEY P A. An introduction to ultrasonic sensingJ.EDN,1989 Based on 89C51+DS18B20 Temperature Control SystemAbstract: In this paper, Temperature Control System (TCS) is designed. The Single Bus Temperature Sensor DS18B20 of US Semiconductor Company DALLAS and the AT89C51 of ATMEL Company are used i
29、n TCS as kernel and controller respectively. This paper introduces the new single main line structure temperature sensor DSl8B20 structure characteristic, the principle of work and the control method, elaborated take 89C5l as the monolithic integrated circuit and take DSl8B20 as the intelligence tem
30、perature controller electric circuit composition, the principle of work, the programming which the sensor constitutes, explained summarizes the use matters needing attention in the triturating. Moreover, the assembler of communication between AT89C51 and DS18B20 is presented. Comparing with the trad
31、itional temperature control devices, this TCS has the character of more simple structure, stronger anti - jamming ability, higher precision and wider application.This warm controlling may widely apply to peoples daily life, the industry and agriculture production and the scientific research domain,
32、has the certain promoted value. Keywords: temperature sensor system of measure and control MCU附录1附录2 智能温度控制器C程序/ 智能温度控制器C程序/ 2008.5.28通过调试/使用AT89C51单片机,12MHZ晶振,用共阳LED数码管/P1口输出段码,P3口扫描/#pragma src(d:aa.asm)#include reg51.h#include intrins.h /_nop_();延时函数用#define Disdata P1 /段码输出口#define discan P3 /扫描
33、口#define uchar unsigned char#define uint unsigned intunsigned char data ctemp; /当前测得寄存器unsigned char data stemp; /设定温度寄存器unsigned char keyscan(void); /按键扫描处理函数void tempctrl(void); /加热控制函数unsigned char keyscan(void); /按键扫描处理函数void tempctrl(void); /加热控制函数sbit swkey=P10; /功能键sbit upkey=P11; /温度“+”键sbit
34、 downkey=P12; /温度“-”键sbit buzz=P13; /蜂鸣器输出端sbit relay1=P22; /继电器1控制信号输出端sbit relay2=P23; /继电器2控制信号输出端sbit DQ=P37; /温度输入口sbit DIN=P17; /LED小数点控制uint h;bit tempov; /超温标志/*温度小数部分用查表法*/uchar code ditab16=0x00,0x01,0x01,0x02,0x03,0x03,0x04,0x04,0x05,0x06,0x06,0x07,0x08,0x08,0x09,0x09;uchar code dis_712=0
35、xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0xff,0xbf;/* 共阳LED段码表 0 1 2 3 4 5 6 7 8 9 不亮 - */ uchar code scan_con4=0xfe,0xfd,0xfb,0xf7; / 列扫描控制字uchar data temp_data2=0x00,0x00; / 读出温度暂放uchar data display5=0x00,0x00,0x00,0x00,0x00;/显示单元数据,共4个数据,一个运算暂存用/*11微秒延时函数*/void delay(uint t)for(;t0;t-);/*
36、显示扫描函数*/scan()char k; for(k=0;k0; i-) /DQ=1;_nop_();_nop_(); DQ = 0;_nop_();_nop_();_nop_();_nop_();_nop_();/5usDQ = val&0x01; /最低位移出delay(6); /66usval=val/2; /右移一位DQ = 1;delay(1); /*18B20读1个字节函数*/从总线上读取一个字节uchar read_byte(void)uchar i;uchar value = 0;for (i=8;i0;i-)DQ=1;_nop_();_nop_();value=1;DQ =
37、 0; /_nop_();_nop_();_nop_();_nop_(); /4usDQ = 1;_nop_();_nop_();_nop_();_nop_(); /4us if(DQ)value|=0x80;delay(6); /66usDQ=1;return(value);/*读出温度函数*/read_temp()ow_reset(); /总线复位write_byte(0xCC); / 发Skip ROM命令write_byte(0xBE); / 发读命令temp_data0=read_byte(); /温度低8位temp_data1=read_byte(); /温度高8位ow_reset();write_byte(0xCC); / Skip ROMwrite_byte(0x44); / 发转换命令/*温度数据处理函数*/work_temp()uchar n=0; /if(temp_data1127) temp_data1=(256-temp_data1);temp_data0=(256-temp_data0);n=1;/负温度求补码display4=t
限制150内