新闻中心

EEPW首页>嵌入式系统>设计应用> 基于DS18B20的多路温度监测系统设计与仿真

基于DS18B20的多路温度监测系统设计与仿真

作者: 时间:2013-10-29 来源:网络 收藏
2.1 测温电路设计
采用8片组成多路测温电路。内部均有一个全球惟一的64位产品序列号,单片机通过序列号可对一条总线上的多路DS18 B20进行控制,读取其温度。但仅由单总线采集多路温度数据时,软件设计算法复杂,读取速度慢,无法适用于实时性要求高的测温场合。特别是当单总线上挂接的DS18B20传感器个数大于8个时,采用寄生电源供电方式亦存在总线驱动能力不足等问题。为此,本设计采用“单总线结构+并行I/O口输入”相结合的方式,实时巡回采集多路DS18B20的温度信息。具体做法是:硬件上将8片DS18B20的单总线分别连到单片机的并行P1口引脚,同时各片DS18B20的电源端采用外部电源供电方式,且每个单总线另接一个4.7 kΩ的上拉电阻到5 V电源以保证达到足够的工作电流;软件上读取多路温度与读取单路温度的操作类似,不需读取读出所用DS18B20的序列号,而只需通过参数传递来循环读取各路温度数据(软件设计中介绍)。
2.2 键盘与LED显示电路设计
LED显示电路设计:P0口输出显示代码经74LS245驱动后接到8位LED数码管的段选线,P2口输出接到LED的位选线。正常情况下,8位LED数码管用于循环显示通道号及该通道的温度值。
键盘输入设计:采用独立式键盘P3.2~P3.4用来修改温度报警的上限与下限值。系统默认的温度报警上限为50℃,下限为-10℃。系统上电后,LED数码管将先后显示温度报警上/下限值。若按P3.2键报警值加1;若按P3.3键报警值减1;P3.4为确定键,用于保存修改值。
此外,当系统检测到当前通道温度值超过设定的上、下限时,将通过P3.6,P3.7进行闪光报警提示。
2.3 串行通信设计
检测系统可通过串行口与上位机进行通信,向上位机传送温度值及相应的通道号。实物中通过RS 232串行接口与上位机连接,上位机的控制界面由VB 6.0编写。当运行软件时,可以从虚拟终端看到上位机接收到的8个通道的温度数据及相应的通道号。

3 软件设计
3.1 软件总体设计
如图3所示,系统上电复位后,程序主要包括:

c.JPG


(1)系统初始化设置。
(2)按键处理子程序:LED数码管显示上限报警温度值并闪烁,若10 s中之内有按键输入修改温度值,则进行键盘操作直至修改完成,并保存温度上限值;若10 s之内无按键输入或按P3.4“确定”键,则保存上限温度;接着显示下限报警温度值并闪烁,重复上述操作后保存下限报警温度值。
(3)温度报警值设置子程序:实现将8路的报警温度写入DS18B20中,流程图详见图4所示。
(4)读取温度子程序:在对显示路数初始化后,进行温度值读取,这是软件设计的关键,下面将单独介绍。
(5)温度报警处理:读取某路DS18B20温度值及报警上下限值后,进行比较,若超出范围则启动定时器0,驱动上/下限报警提示单元。
(6)显示当前通道温度子程序:取得当前通道号后,根据读取的2字节温度值(温度暂存器格式参考DS18B20技术手册),判断其符号位并分别读取其整数部分和小数部分,通过运算后保存到显示缓冲区,进行动态显示,并刷新显示若干时间。
(7)上位机通信子程序:每采集一路温度数据,通过RS 232串口,将其通道号、温度值发送给上位机,完成相应通道的温度数据采集处理。
(8)循环修改:修改通道号,进行下一路温度数据采集,直至8路温度处理完成,如此循环往复。
3.2 读取温度子程序设计
采用DS18B20进行单路测量时,可直接与单片机相连,不需读取读出器件的64位产品序列号。当采用DS18B20进行多路测温时,在初始化操作后,通常的做法是需要在线逐个地搜索64位ROM编码以确认各个DS18B20所在位置,并需对ROM编码进行冗余校验,算法设计复杂。且等待多路搜索是否完成需要消耗大量的时间,使程序执行的效率和系统实时性受到了影响。
本设计采用“单总线结构+并行I/O口输入”结合的方式巡回读取多路温度。DS18B20作为单总线芯片,进行信息交换时有严格的读/写时序要求。读取温度子程序流程如图5所示。首先通过参数传递将通道号传给读取温度子程序,接着对DS18B20进行初始化,然后直接执行跳过ROM命令(CCH),即不读取64位ROM编码而直接向DS18B20发出功能命令,节约了时间。之后,再向DS18B20发送温度转换命令(44H),DS18B20启动温度采样与A/D转换,并将转换数据存储在暂存器中。
然后再次初始化DS18B20,并在再一次跳过ROM命令后,执行单片机读暂存器命令(BEH),根据传递参数确定的通道号,可将通道号对应的DS18B20高速暂存存储器的9个字节数据读入单片机中,其中第0,1字节分别是温度值低位(LS byte)和高位(MS byte),第2,3字节分别是高温限值(TH)和低温限值(TL),从而完成某通道DS18B20的温度采集。

热电偶相关文章:热电偶原理


评论


相关推荐

技术专区

关闭