DS18B20

2024-06-28

DS18B20(共9篇)

DS18B20 篇1

摘要:以温度的采集处理和显示为目的,研究了基于AT89S51单片机的温度检测及显示的设计方法,给出了硬件和软件系统设计,包括温度传感器芯片的选取、单片机与温度传感器的接口设计以及实现温度采集和数据传输的软件设计。该系统结构简单,成本较低,体积小,测温范围为-55℃~125℃,可以应用在很多温度检测领域。

关键词:DS18B20传感器,AT89S51单片机,测温系统

1 引言

随着工业和人们日常生活要求的提高,现在已由点测量发展到线、面测量。在环境保护、家用电器上都需要各种各样的测温仪表。因此能否有效地对这些领域的环境温度实时监测,是一个摆在我们面前急需解决的重要问题。为此,本文利用51单片机制作了一个简便但精度较高的数字测量系统;它是利用一个温度传感器作为测温元件;温度测量范围在-55℃~125℃;具备温度显示功能。主要原理是:通过温度传感器将非电量的温、湿度值转换为电量输出并由A/D转换器对模拟信号进行数字化,然后通过单片机读取温度传感器转换的温度值,再将其所读取的十六进制数转换成十制数,通过静态显示,最后在L C D显示出温度数值。

2 系统设计

温度测量系统主要包括MCS-51单片机、温度采集及信号转换模块和显示模块,系统结构图如图1所示。

3 硬件系统设计

3.1 MCS-51单片机

本系统的单片机选用AT89S51单片机[1],AT89S51是一个低功耗,高性能CMOS 8位单片机,片内含4k Bytes ISP(In-system programmable)的可反复擦写1000次的Flash只读程序存储器,器件采用ATMEL公司的高密度、非易失性存储技术制造,兼容标准MCS-51指令系统及80C51引脚结构,芯片内集成了通用8位中央处理器和ISP Flash存储单元,功能强大的微型计算机的AT89S51可为许多嵌入式控制应用系统提供高性价比的解决方案。

AT89S51具有如下特点:40个引脚,4k Bytes Flash片内程序存储器,128 bytes的随机存取数据存储器(RAM),32个外部双向输入/输出(I/O)口,5个中断优先级2层中断嵌套中断,2个16位可编程定时计数器,2个全双工串行通信口,看门狗(WDT)电路,片内时钟振荡器。此外,AT89S51设计和配置了振荡频率可为0Hz并可通过软件设置省电模式。AT89S51在空闲模式下,CPU暂停工作,而RAM定时计数器,串行口,外中断系统可继续工作,掉电模式冻结振荡器而保存RAM的数据,停止芯片其它功能直至外中断激活或硬件复位。同时该芯片还具有PDIP、TQFP和PLCC等三种封装形式,以适应不同产品的需求。

3.2 温度采集及信号转换模块

温度传感器的选择是本设计方案的重要一环,目前市场上温度传感器的类型有很多,比较常用有AD590,它是电流输出型的测温组件,温度每升高1摄氏度K(凯式温度),电流增1 U A,温度测量范围在-55℃~150℃;之间。其所采集到的数据需经A/D转换,才能得到实际的温度值;还有LM35D,他是一种电压型集成温度传感器。它的测温范围是4-100℃,输出电压直接与摄氏温度成正比,灵敏度为10mV/℃。LM35D输出电压与温度的线性关系较好,其精确度为±1℃。但这些传感器还需要其它辅助电路,线路复杂,不利于功能的扩展。所以本设计方案选用DS18B20,这是因为其性能参数符合要求,接口简单,内部集成了AD转换,测温更简便,精度也较高,反应速度快,且经过市场考察,该芯片易购买,使用方便。

DSl8820是美国DALLAS公司继DSl820之后推出的增强型单总线数字温度传感芯片。它在测温精度、转换时间、传输距离、分辨率等方面较DSl820有了很大的改进,给用户使用带来了更多方便。温度测量范围为-55℃—125℃,可编程9位—1 2位A/D转换精度,测温分辨率可达0.0625℃,被测温度用符号扩展的16位数字量方式串行输出,DS18B20非常适用于远距离多点温度检测系统。由于DS18B20采用的是1Wire总线协议方式,即在一根数据线实现数据的双向传输,而对AT89S51单片机来说,硬件上并不支持单总线协议,因此,我们必须采用软件的方法来模拟单总线的协议时序以完成对DS18B20芯片的访问。

另外,DS18B20芯片是在一根I/O线上读写数据,因此,对读写的数据有着严格的时序要求。DS18B20芯片的一线工作协议流程是:初始化一R0M操作指令一存储器操作指令一数据传输。因此,DS18B20新篇读温度流程是:复位一发CCH SKIP ROM命令一发44H开始转换一延时一复位一发CCH SKIP ROM命令一发读存储器命令一连续读出两个字节数据(即温度)一结束。DS18B20的系统结构图如图2所示。

3.3 显示模块

通过单片机读取温度传感器转换的温度值,再将其所读取的十六进制数转换成十制数,通过静态显示,最后在L C D显示出温度数值。本设计选用L C D l 6 0 2,将将单片机输出的数据进行动态显示。

3.4 电路原理及电路图

本设计进行温度显示控制主要的控制器件是AT89S51单片机,而DS18B20芯片是单总线结构的电子元件。单线总线是一种具有一个总线主机和一个或若干个从机(从属器件)的系统。DS18S20芯片在电路中起从机的作用。单线总线只有一根线,即线上的第一个器件能在适当的时间驱动该总线。为了做到这一点,第一个连接到单线总线上的器件必须具有漏极开路或三态输出。另外,单线总线的空闲状态是高电平。不管任何原因,如果执行需要被挂起,那么,若要重新恢复执行,总线必须保持在空闲状态。如果不满足这一点且总线保持在低电平时间大于480us,那么总线上所有器件均被复位。由此,DS18B20芯片的DQ接单片机I/O口P3.3,通过温度传感器采样的数据送入单片机,单片机依据预先写好的程序,通过静态显示,最后在LCD1602显示出了温度数值。电路原理如图3所示。

4 软件设计

DS18B20是单线器件,在一根数据线上实现数据的双向传输,一次需要一定的协议来对读写数据提出严格的时序要求。

4.1 DS18820的单线协议和命令

总线控制器发出(TX)一个复位脉冲(一个最少保持480 tts的低电平信号),然后释放总线,进入接收状态(RX)。单线总线由5 kQ上拉电阻拉到高电平,当探测到I/O引脚上的上升沿后,DS18B20等待15—60 s,通过拉低总线60 240 s发出应答脉冲。总线控制器接到从机的应答脉冲后,说明有单线器件在线。一旦总线主机检测到应答脉冲,便可以发起ROM操作命令,在成功执行了ROM命令后,才可以使用内存操作命令。

4.2 程序流程

单片机实现温度转换读取温度数值程序的流程图如图4所示。

启动DS18B20的1次温度转换的程序清单如下:

5 结束语

本文对利用单片机实现温度测量进行了比较全面的描述和分析,通过在各种环境温度下的多次测量实验,测试结果表明本文设计的数字温度计能较好地显示出实际环境温度,且反应迅速,使用方便。本文所实现的温度测量系统具有比较全面的功能。该测量系统适用范围广、操作方便、运行可靠。

参考文献

[1]龙威林,杨冠声,胡山.单片机应用入门:AT89S51和AVR[M].北京:化学工业出版社,2008.

[2]李娟娟,潘丙雨.基于AD592的温度监控系统[Z].中国科技论文在线.2008.

[3]赵亮,侯国锐.单片机C语言编程与实例[M].北京:人民邮电出版社,2003.

DS18B20 篇2

摘要:文章主要介绍有关18B20温度传感器的应用及有关注意事项,经典接线原理图。1.引言:

温度传感器的种类众多,在应用与高精度、高可靠性的场合时DALLAS(达拉斯)公司生产的DS18B20温度传感器当仁不让。超小的体积,超低的硬件开消,抗干扰能力强,精度高,附加功能强,使得DS18B20更受欢迎。对于我们普通的电子爱好者来说,DS18B20的优势更是我们学习单片机技术和开发温度相关的小产品的不二选择。了解其工作原理和应用可以拓宽您对单片机开发的思路。

2.DS18B20的主要特征:  * 全数字温度转换及输出。 * 先进的单总线数据通信。 * 最高12位分辨率,精度可达土0.5摄氏度。 * 12位分辨率时的最大工作周期为750毫秒。 * 可选择寄生工作方式。 * 检测温度范围为–55°C ~+125°C(–67°F ~+257°F) * 内置EEPROM,限温报警功能。 * 64位光刻ROM,内置产品序列号,方便多机挂接。 * 多样封装形式,适应不同硬件系统。3.DS18B20引脚功能:

•GND 电压地 •DQ 单数据总线 •VDD 电源电压

4.DS18B20工作原理及应用:

DS18B20的温度检测与数字数据输出全集成于一个芯片之上,从而抗干扰力更强。其一个工作周期可分为两个部分,即温度检测和数据处理。在讲解其工作流程之前我们有必要了解18B20的内部存储器资源。18B20共有三种形态的存储器资源,它们分别是:

ROM 只读存储器,用于存放DS18B20ID编码,其前8位是单线系列编码(DS18B20的编码是19H),后面48位是芯片唯一的序列号,最后8位是以上56的位的CRC码(冗余校验)。数据在出产时设置不由用户更改。DS18B20共64位ROM。

5.控制器对18B20操作流程:

1、复位:首先我们必须对DS18B20芯片进行复位,复位就是由控制器(单片机)给DS18B20单总线至少480uS的低电平信号。当18B20接到此复位信号后则会在15~60uS后回发一个芯片的存在脉冲。

2、存在脉冲:在复位电平结束之后,控制器应该将数据单总线拉高,以便于在15~60uS后接收存在脉冲,存在脉冲为一个60~240uS的低电平信号。至此,通信双方已经达成了基本的协议,接下来将会是控制器与18B20间的数据通信。如果复位低电平的时间不足或是单总线的电路断路都不会接到存在脉冲,在设计时要注意意外情况的处理。

3、控制器发送ROM指令:双方打完了招呼之后最要将进行交流了,ROM指令共有5条,每一个工作周期只能发一条,ROM指令分别是读ROM数据、指

定匹配芯片、跳跃ROM、芯片搜索、报警芯片搜索。ROM指令为8位长度,功能是对片内的64位光刻ROM进行操作。其主要目的是为了分辨一条总线上挂接的多个器件并作处理。诚然,单总线上可以同时挂接多个器件,并通过每个器件上所独有的ID号来区别,一般只挂接单个18B20芯片时可以跳过ROM指令(注意:此处指的跳过ROM指令并非不发送ROM指令,而是用特有的一条“跳过指令”)。ROM指令在下文有详细的介绍。

4、控制器发送存储器操作指令:在ROM指令发送给18B20之后,紧接着(不间断)就是发送存储器操作指令了。操作指令同样为8位,共6条,存储器操作指令分别是写RAM数据、读RAM数据、将RAM数据复制到EEPROM、温度转换、将EEPROM中的报警值复制到RAM、工作方式切换。存储器操作指令的功能是命令18B20作什么样的工作,是芯片控制的关键。

5、执行或数据读写:一个存储器操作指令结束后则将进行指令执行或数据的读写,这个操作要视存储器操作指令而定。如执行温度转换指令则控制器(单片机)必须等待18B20执行其指令,一般转换时间为500uS。如执行数据读写指令则需要严格遵循18B20的读写时序来操作。数据的读写方法将有下文有详细介绍。6.DS28B20芯片ROM指令表

Read ROM(读ROM)[33H](方括号中的为16进制的命令字)Match ROM(指定匹配芯片)[55H] Skip ROM(跳跃ROM指令)[CCH] Search ROM(搜索芯片)[F0H] Alarm Search(报警芯片搜索)[ECH] 7.DS28B20芯片存储器操作指令表:

Write Scratchpad(向RAM中写数据)[4EH] Read Scratchpad(从RAM中读数据)[BEH] Copy Scratchpad(将RAM数据复制到EEPROM中)[48H] Convert T(温度转换)[44H] Recall EEPROM(将EEPROM中的报警值复制到RAM)[B8H] Read Power Supply(工作方式切换)[B4H] 8.写程序注意事项

DS18B20复位及应答关系

每一次通信之前必须进行复位,复位的时间、等待时间、回应时间应严格按时序编程。

DS18B20读写时间隙:

DS18B20的数据读写是通过时间隙处理位和命令字来确认信息交换的。写时间隙:

写时间隙分为写“0”和写“1”,时序如图7。在写数据时间隙的前15uS总线需要是被控制器拉置低电平,而后则将是芯片对总线数据的采样时间,采样时间在15~60uS,采样时间内如果控制器将总线拉高则表示写“1”,如果控制器将总线拉低则表示写“0”。每一位的发送都应该有一个至少15uS的低电平起始位,随后的数据“0”或“1”应该在45uS内完成。整个位的发送时间应该保持在60~120uS,否则不能保证通信的正常。读时间隙:

读时间隙时控制时的采样时间应该更加的精确才行,读时间隙时也是必须先由主机产生至少1uS的低电平,表示读时间的起始。随后在总线被释放后的15uS

中DS18B20会发送内部数据位,这时控制如果发现总线为高电平表示读出“1”,如果总线为低电平则表示读出数据“0”。每一位的读取之前都由控制器加一个起始信号。注意:必须在读间隙开始的15uS内读取数据位才可以保证通信的正确。在通信时是以8位“0”或“1”为一个字节,字节的读或写是从高位开始的,即A7到A0.字节的读写顺序也是如图2自上而下的。

9.接线原理图:

本原理图采用四位数码管显示,低于100度时,首位不显示示例27.5,低于10度时示例为9.0,低于零度时示例为-3.7。

结束语:基于DS18B20温度测量温度准确,接线简单,易于控制,加以扩展可以应用到各种温度控制和监控场合。

参考文献:

DALLAS(达拉斯)公司生产的DS18B20温度传感器文献

程序:

#include

#define uchar unsigned char #define uint unsigned int

sbit sda=P1^7;sbit dian=P0^7;//小数点显示 uint tem;

uchar h;uchar code tabw[4]={0xf7,0xfb,0xfd,0xfe};//位选 uchar code tabs[12]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xff,0xbf};//数码管数据

//

0 5 6 9

-uchar code ditab[16]= {0x00,0x01,0x01,0x02,0x03,0x03,0x04,0x04,0x05,0x06,0x06,0x07,0x08,0x08,0x09,0x09};//查表显示小数位,1/16=0.0625,即当读出数据为3时,3*0.0625=0.1875,读出数据为3时对应1,查表显示1,为4时显2 uchar data temp[2]={0};//高位数据与低位数据暂存 uchar data display[5]={0};//显示缓存

void delay(uchar t)//t为1时延时小于5us { while(t--);} void delay1()//4us {} void delays(uchar m)//1ms { uchar i,j;for(i=0;i

for(j=0;j<110;j++);} void reset()//初始化 { uchar x=1;while(x){

while(x)

{

sda=1;

sda=0;

delay(50);//延时500us以上

sda=1;

delay(5);//等待15us-60us

x=sda;

}

delay(45);

x=~sda;}

sda=1;} void write_s(uchar temp)//写入一个字节 { uchar i;for(i=0;i<8;i++){

sda=1;

sda=0;

delay1();

sda=temp&0x01;

delay(6);

temp=temp/2;} sda=1;delay(1);} uchar read_s()//读出一个字节的数据 { uchar m=0,i;for(i=0;i<8;i++){

sda=1;

m>>=1;

sda=0;

delay1();

sda=1;

delay1();

if(sda)

m=m|0x80;

delay(6);} sda=1;return m;} uint read_1820()//读出温度 { reset();delay(200);write_s(0xcc);//发送命令

write_s(0x44);//发送转换命令

reset();delay(1);write_s(0xcc);

write_s(0xbe);temp[0]=read_s();temp[1]=read_s();tem=temp[1];tem<<=8;tem|=temp[0];return tem;} void scan_led()//数据显示—数码管 { uchar i;for(i=0;i<4;i++){

P0=tabs[display[i]];

P1=tabw[i];

delays(7);

if(i==1)

dian=0;

P1=tabw[i];

delays(2);} } void convert_t(uint tem)//温度转换{ uchar n=0;if(tem>6348){

tem=65536-tem;

n=1;} display[4]=tem&0x0f;display[0]=ditab[display[4]];

display[4]=tem>>4;

display[3]=display[4]/100;

display[1]=display[4]%100;

display[2]=display[1]/10;

display[1]=display[1]%10;if(!display[3]){

display[3]=0x0a;} if(!display[2])

display[2]=0x0a;if(n)

// 取百位数据暂存

// 取后两位数据暂存// 取十位数据暂存

{

n=0;

display[3]=0x0b;} } void main(){ delay(0);delay(0);delay(0);P0=0xff;P1=0xff;for(h=0;h<4;h++)//初始化为零

{

display[h]=0;} reset();write_s(0xcc);write_s(0x44);for(h=0;h<100;h++)//显示0保持

scan_led();while(1){

convert_t(read_1820());//读出并处理

scan_led();//显示温度

DS18B20 篇3

关键词:DS18B20嵌入式数据采集处理温度测控

1 引言

控制系统在国内各行各业的应用虽然已经十分广泛,但从国内生产的温度控制器来讲,总体发展水平仍然不高,同日本、美国、德国等先进国家相比仍然有着较大的差距。目前,我国在这方面总体技术水平处于 20 世纪90年代中后期水平,控制参数大多靠人工经验及现场调试来确定。

2 系统的功能

利用RCM2100嵌入式系统实现水温的智能控制,使水温能够在1-100 摄氏度之间实现控制调节。利用仪器读出水温,显示在温度显示模块上,并在此基础上将水温调节到我们通过键盘输入的温度(其方式是加热或制冷),还可以在环境温度降低时实现自动控制,以保持设定的温度基本不变。

系统模块分为CPU模块(RCM2100中的Rabbit2000)、DS18B20模块,显示模块,继电器控制模块,键盘输入模块五个基本模块(图1)。DS18B20可以被编程,所以箭头是双向的,CPU首先写入命令给DS18B20,然后DS18B20开始转换数据,转换后通过CPU来处理数据。数据处理后的结果就显示到显示模块的数码管上。

3 系统硬件设计

3.1RCM2100简介[1]

美国Z-WORLD公司的RCM2100(图2)系列嵌入式开发系统核心由8位微处理器硬件和嵌入式软件构成,片内资源相对较少,相应的软件可以完成所需的网络通信和控制功能。RCM2100开发板由5V直流供电,温度范围为-40度到+70度,非常适合应用于工业控制环境。它集成了速度达30MHz的Rabbit2000微处理器,512K Flash RAM,512K SRAM和RJ-45以太网接口。有5个8位并行口,分别以PA、PB、PC、PD、PE表示,可分别用于和以太网卡控制芯片、RS485、RS232串行口进行数据通信,图3显示了RJ-45以太网口J4的引出线。注意用在这里的连接器间的编号方式有两种标准,编号是相反的。

3.2 温度传感器DS18B20特性与原理[2]

由DALLAS半导体公司生产的DS18B20型单线智能温度传感器(图4),属于新一代适配微处理器的智能温度传感器,可广泛用于工业、民用、军事等领域的温度测量及控制仪器、测控系统和大型设备中。它具有体积小,接口方便,传输距离远等特点。本系统采用了DS18B20单总线可编程温度传感器,来实现对温度的采集,传感器与微处理器连接时仅需要一条口线即可实现二者的双向通讯,不存在并行线的干扰,整体上提高系统的可靠性,简化了电路的复杂度!

从DS18B20得到的温度值是HEX码,需要转换成能输给译码器显示的BCD码。首先程序判断温度是否是零下,如果是,则DS18B20保存的是温度的补码值,需要对其低8位(LS Byte)取反加一变成原码。处理过后把DS18B20的温度复制到单片机的RAM中,里面已经是温度值的HEX码了,然后转换HEX码到BCD码,分别把小数位,个位,十位,百位的BCD码存入RAM中。

3.3键盘部分分析:

这一部分多用到软件设计,从而简化了键盘电路,其实质是单线调节,不但使抗干扰能力增强、传输距离远,也减少了键盘设计的造价,这样特别适合应用于工业厂房内等恶劣工作环境和农业生产中扰动特别大的环境中。

设计按键功能介绍

⑴“INPUT” PE2,按下INPUT键,数码管温度显示停止,显示的数字变的比以前亮。调节好后,按INPUT退出。这时数字变的又暗了,数码管继续显示当前温度。

⑵“HIGH” PE3,按HIGH键来调高当前所需温度值,即调高控制值。

⑶“LOW” PE4,按LOW键来调低当前所需温度值,即调低控制值。

3.4继电器

由于继电器在控制电路中有独特的电气、物理特性,以及断态的高绝缘电阻和通态的低导通电阻,我们选用继电器来控制加热/制冷电路。

4 软件程序设计

本设计采用动态C语言和Rabbit2000环境下的汇编语言编写程序。

动态C语言是基于Windows95/98/NT及Linux平台的Rabbit应用软件的完整开发系统,它作为应用程序运行于IBM.PC兼容机上,是Z.World公司为基于Rabbit微处理器的嵌入式系统而设计的专门的C编译系统,具有非常快的编译和事实环境的交互调试特征。动态C包含了所有底层的I/O驱动函数库,大大减轻了软件开发的工作量。它具有实时多任务内核,提供socket级TCP/IP编程,支持各种网络协议(如HTTP、FTP、SMTP、PPP等)。应用动态C进行软件开发,无需仿真器和编程器,开发成本大大降低。另外,动态C直接对存储器编译,函数及库都是被动态地编译与连接的,因此具有极大速度优势。动态C的编译窗口见图5所示。[3]

对于标准 C来说,动态 C 的改进在于使得在功能强大的嵌入式系统上进行实时编程变得非常容易。语言方面的扩展包括对合作式多任务和抢先式多任务管理方式的支持,供电失败时对变量写入操作的支持。动态 C提供多项内容的源代码,包括标准C语言函数库,特定板的外围驱动,芯片外围设备,以及其他特色。动态 C完全支持汇编语言,在对时间要求较高的应用中,汇编代码可以方便的与 C 代码混用。

本系统采用的是循环查询方式来显示和控制温度。总模块设计流程图如图6所示。

总模块的软件设计:

ORG 0000H

LJMP MAIN

ORG 0100H

MAIN: MOV SP,#60H ;初始化

MOV KEY_BUF_G,#00H ;由于KEY_BUF是由图6 总模块设计流程图

用户输入的,所以先赋值初始化

MOV KEY_BUF_S,#00H

MOV KEY_BUF_B,#00H

NEXT: LCALL READ_TEMP ;调用读温度子程序

JB FLAG,NORMAL ;判断是否有DS18B20的存在

CALL ERRO ; DS18B20不存在时显示错误信息

AJMP NEXT

NORMAL: LCALL DATA_DEA ;处理从DS18B20得到的数据

LCALL SET_DIS_BUF ;赋值给DIS_BUF_X,G,S,B

LCALL DISPLAY ;调用数码管显示子程序

LCALL SCAN_KEY ;扫描键盘

LCALL SWITCH ;处理继电器

AJMP NEXT

5结束语

本文设计的以DS18B20和RCM2100为核心的温度控制系统具有测温精度高,控制性能良好等特点。该温度计完全适用于一般的应用场合,利用RCM2100丰富的I/O口和网络接口,使得系统的扩展更为简单,并可以实现远距离的温度控制,而动态C语言编程支持各种网络协议,可以完成所需的网络通信和控制功能。

参考文献:

[1] RabbitCore RCM2100 Series User’s Manual[OL].http://www.rabbitsemiconductor.com.cn/products/dc/index.asp

[2] 百度百科 DS18B20[OL].http://baike.baidu.com/view/1341776.html?wtp=tt

[3] Dynamic C TCP/IP User’s Manual[OL]. http://www.rabbitsemiconductor.com.cn/products/dc/index.asp

[4] 伟纳电子 DS18B20单线数字温度传感器[OL].http://www.willar.com/article_view.asp?id=358. 2005年02月13日

[5] 百度百科 继电器[OL]. http://baike.baidu.com/view/39560.html.2006年05月21日

[6] 蔡振江等 编著 单片机原理及应用[M]. 北京 机械工业出版社 .2006 . P83—97

[7] 李广弟等 主编 单片机基础[M].北京航空航天大学出版社.2006. P185—201

[8] 沙占友.智能温度传感器的发展趋势[J]. 电子技术应用 . 2002 Vol.28 No.5. P6-7

DS18B20 篇4

在我们的日常生活和工作中,经常会用到温度的测量和控制,如在冶金、食品加工、化工等工业生产过程中。温度传感器作为温度测量和控制的核心器件之一,作用相当重要。在以单片机为基础的温控系统中 , 温度传感器的体积、性能、接口、使用方便与否都成为人们在设计温控系统时考虑的首要问题。温度传感器DS18B20具有体积小、硬件开销低、抗干扰能力强、精度高、使用方便等特点,因此成为人们的首选。

1 设计任务

1.1 设计任务及功能要求

设计一个温度控制系统,使其可实现的功能为 :

(1) 用DS18B20温度传感自检测温度;

(2) 当温度在温度上下限之外时,用声光提示

(3) 用数码管显示温度,精确到0.1摄氏度 ;

(4) 温度上下限可设置 ;

1.2设计总体方案及方案

1.2.1 系统总体设计

系统主要包括单片机模块、温度采集模块、温度显示模块、温度上下限调整模块和报警模块五部分。系统总体框架如图1所示。

1.2.2 主控制部分

此部分采用AT89S51八位单片机实现。可通过单片机编程实现各种逻辑控制和算术算法,同时它体积小,硬件实现简单,安装方便,既可以单独对多DS18B20控制工作,又可以与PC机通信。

1.2.3 温度采集模块

温度数据采集部分主要应用到了一线式的数字温度传感器DS18B20。在DS18B20系统中具备独特的单总线接口,1个端口就能够实现与单片机进行双向通讯。读、写、温度变换所需要的电源由自带的数据线本身提供。DS18B20理论上可以测试的温度区间是零下55摄氏度到零上125摄氏度之间,温度测试分辨率可以达到0.0625摄氏度,测试的温度结果通常以9 -12位数字量来输出数字温度,同时把温度信号通过“一线总线”发送给CPU,并且还可发送CRC效验码,在信号发送的过程中信号的抗干扰和纠错能力是非常强的。

2 系统硬件电路的设计

2.1 主控制电路和测温控制电路原理图

AT89S51是此硬件电路设计的核心,通过AT89S51的管脚P3.7与DS18B20连接,控制温度的读出和显示。电路原理图如下图2所示。

2.2 时钟电路

此处选用内部时钟方式。即利用其内部的振荡电路在XTAL1和XTAL2引线上外接定时元件,内部振荡电路产生自激振荡。最常用的是在XTAL1和XTAL2之间接晶体振荡器与电路构成稳定的自激振荡器。

2.3 上电复位电路

本设计中AT89S51是采用上电自动复位。上电瞬间,RC电路充电,RST引线端出现正脉冲,只要RST端保持10ms以上的高电平,就能使单片机有效地复位。

2.4 按键电路

键盘是种常见的输入设备,用户可以向计算机输入数据或命令。本设计是采用独立式按键,用5个按键,分别接单片机P1.0—P1.4, 当无按键按下时其为高电平。当某按键按下时,与其相连的I/O线将得到低电平输入。

2.5 数码管显示电路

本设计采用LED数码管显示电路,该显示电路由7段共阳数码管,限流电阻,三极管,基极电阻,P0口,P2口等组成。P0口通过8个270Ω电阻与数码管的8个数据位相连,送显示数码。电阻既可起到限流作用,又可起到上拉电阻的作用。P2口的P2.0 ~ P2.3通过4个4.7kΩ的电阻和4个三极管与4个7段数码管相连,起到了位选的作用。

2.6 温度报警电路

温度报警是检测当前温度值与预置温度值上下限进行比较,若当前温度超出预置的温度上下限,系统就会立即发出报警信号。此设计的温度报电路是由声光报警电路组成,主要用到蜂鸣器和LED发光二极管。

3 系统软件的设计

3.1 主程序流程图

主程序首先需进行初始化,当检测到DS18B20存在时发出温度转换命令和读温度命令,在分别调用相应的数据处理子程序,完成温度测量及显示工作。流程图如图3。

3.2 DS18B20 复位检测子程序

主机控制DS18B20完成任何操作之前必须先初始化,即主机发复位脉冲 ( 最短为480us的低电平 ),接着主机释放总线进入接收状态,DS18B20在检测到I/O口的上升沿之后,等待15-60us然后发出存在脉冲 (60-240us的低电平 )。

DS18B20复位检测子程序的主要功能为检测DS18B20是否存在。若存在则将标志位FLAG1置1,反则置0. 后续程序可以通过判断标志位来决定进行何种操作。

3.3 读 DS18B20 子程序

读时间片 : 主机将数据线从高电平拉至低电平1us以上,再使数据线升为高电平,从而产生读起始信号。主机在读时间片下降沿之后15us内完成读位。每个读周期最短的持续期为60us, 每个读周期之间也必须有1us以上的高电平恢复期。

读温度子程序只读出DS18B20暂存器前4个字节的数据 :温度值LSB 温度值MSB、温度报警值TH和TL,并将它们分别存入25H~28H单元中。

3.4 温度转换子程序

温度转换命令子程序主要是发温度转换命令,当采用12位分辨率时转换时间约为750ms。

3.5 温度计算子程序

温度计算子程序首先判断温度值MSB的符号位,当符号位S=0时,表示测得的温度值为正,可以直接将二进制转换为十进制 ;当符号位S=1时,表示测得的温度值为负,要先将补码变成原码,再计算十进制值。计算时先将温度值LSB的低四位取出,进行小数部分数据处理。再将温度值LSB的高四位和温度值MSB的低四位取出,重新组合后进行整数部分数据处理。

3.6 显示子程序

温度显示子程序将从DS18B20读出的温度值,经过数据处理后,送往数码管进行实时显示。包括显示子程序和刷新子程序。

3.7 温度比较报警子程序

温度比较子程序将实测温度值与设定的温度报警值进行比较,根据比较结果执行相应处理程序。当实测温度超出设定的温度报警值时,发出报警信号,LED灯闪烁,蜂鸣器响。当实测温度正常时,数码管正常显示当前温度值。

3.8 按键扫描子程序

DS18B20 篇5

关键词:单片机,温度控制,温度传感器

引言:温度是生活及生产中最基本的物理量, 它表征的是物体的冷热程度。自然界中任何物理、化学过程都紧密地与温度相联系。在很多生产过程中, 温度的测量直接和安全生产、提高生产效率、保证产品质量、节约能源等重大技术经济指标相联系。因此, 温度的测量在国民经济各个领域中均受到了相当程度的重视。近年来, 温度的检测在理论上发展比较成熟, 但在实际测量中, 如何保证快速实时地进行采样, 确保数据的正确传输, 仍然是目前需要解决的问题。

在温度的测量技术中, 接触式测温发展较早, 这种测量方法的优点是:简单、可靠、低廉, 测量精度较高, 一般能够测得真实温度;但由于检测元件热惯性的影响, 响应时间较长, 对热容量小的物体难以实现精确的测量, 并且该方法不适宜于对腐蚀性介质测温, 不能用于极高温测量, 难于测量运动物体的温度。非接触式测温是通过对辐射能量的检测来实现温度测量的方法, 其优点是:不破坏被测温场, 可以测量热容量小的物体, 适于测量运动温度, 还可以测量区域的温度分布, 响应速度较快。但也存在测量误差较大, 仪表指示值一般仅代表表观温度, 结构复杂, 价格昂贵等缺点。因此, 在实际的测量中, 要根据具体的测量对象选择合适的测量方法, 在满足测量精度要求的前提下尽量减少人力和物力的投入。

1 温度测量系统的功能要求

温度测量系统主要分为两大部分:现场温度测量仪表和上位机程序。现场温度测量仪表主要用于建立标准的高精度温度场, 并在温度传感器将温度转换为数字信号后将现场温度信号传送到上位机。上位机程序负责接受下位机的数据并以作出相应的处理动作或供人工查询操作。

1.1 现场温度控制仪表

(1) 温度的测量和显示功能:对于工作现场的温度的实时测量, 显示实际的测量温度以及目标控制温度的值; (2) 工作参数的设定功能:温度测量现场仪表的工作参数可以重新设定, 方便根据实际的工作环境选择最佳的工作参数; (3) 远程通信功能:现场温度测量仪表可以把测得的温度的值、工作参数传送给上位机。

1.2 上位机程序:

(1) 串口通信功能:从PC机串口读取现场仪表传送上来的各项数据; (2) 界面显示:显示每台表的工作状态以及每台表所测量得到的温度值; (3) 历史数据的保存:把下位机传送上来的数据按年、月、日保存在PC机中可以供以后调档查看; (4) 打印功能:可以打印历史数据, 温度曲线。

2 温度测量系统的主要性能指标

输入种类:DS18B20数字输入;输入点数:1个;温度控制范围:-55℃~125℃;测量误差:<±0.5℃;显示:LED显示;通信接口:RS485

3 系统概述

欲对温度进行实时测量和监控, 必须要有一个现场测量, 显示, 现场修改参数, 并将测量结果直接传回上位机的完整系统.DS18B20数字温度传感器, 9位数字量表示温度值, 分辨率0.5℃, 且能在1秒内完成被测温度的数值转换.它的温度报警限设定值TH和TL存放在非易失性存储器中, 掉电后不会丢失, 并可自由设定, 因此对于随时调整现场温度监控监控报警标准提供了很大的便利.因此, 由温度传感器, 单片机, 上位机构成了一个闭环系统, 可随时监控现场温度并调整监控状态。

数字传感器采用美国DALLAS公司生产的DS18B20数字温度传感器, 用于检测环境温度, 并将温度直接转换为数字信号。控制部分采用ATmega8单片机作为核心部件。采集到的温度通过LED显示输出。现场可采用键盘对系统进行简单的操作, 便于适应工业现场的多变需求。通过RS485通讯模块, 将采集到的信息传送给上位机, 便于上位机处理现场信号, 并发送指令给温度测量装置。

4 系统硬件设计

4.1 单片机概述

单片机诞生于20世纪70年代, 象Fairchid公司研制的F8单片微型计算机。所谓单片机是利用大规模集成电路技术把中央处理单元 ( (Center Processing Unit, 也即常称的CPU) 和数据存储器 (RAM) 、程序存储器 (RAM) 及其他I/O通信口集成在一块芯片上, 构成一个最小的计算机系统, 而现代的单片机则加上了中断单元, 定时单元及A/D转换等更复杂、更完善的电路, 使得单片机的功能越来越强大, 应用更广泛。

4.2 ATmega8单片机

ATmega8是ATMEL公司在2002年推出的一款新型的AVR高档单片机, 其芯片内部集成了较大容量的存储器和丰富强大的硬件接口电路, 具备AVR高档单片机MEGE系列的全部性能和特点。由于采用了小引脚封装 (为DIP28和TQFP/MLF32) , 价格仅和低档单片机相当, 再加上AVR单片机的系统内在可编程特性, 使得无需购买昂贵的仿真器, 只需要一条编程下载线就可以进行单片机嵌入式系统的设计和开发, 这尤其适合非专业的研究人员掌握应用于系统的设计与开发。

ATmega8是一款采用低功耗CMOS工艺生产的基于AVR RIS侧精简指令集) 结构的8bit单片机。AV R单片机的核心是将32个工作寄存器和丰富的指令集连接在一起, 所有的工作寄存器都与ALU (算术逻辑单元) 直接相连, 实现了在一个时钟周期内执行的一条指令同时访问 (读/写) 2个独立寄存器的操作。这种结构提高了代码效率, 使得大部分指令的执行时间仅为一个时钟周期。因此, ATmega8可以达到将近1 MIPS/MHz的性能, 运行速度比普通的单片机高出10倍。

结语

ATmega8的主要性能特点如下: (1) 高性能、低功耗:8bit AVR微控制器, 先进的RISC精简指令集结构, 130条功能强大的指令, 大多数为单周期指令, 32个8B的通用工作寄存器, 工作在16MHz时具有16MIPS的性能;片内集成了较大容量的非易失性程序和数据存储器。8 kB的Flash程序存储器, 可擦写次数大于10, 000次;512B的E2PRROM擦写次数至少100, 000次;支持可在线编程 ( (ISP) 和可应用自编程 ( (IAP) :可编程的程序加密位; (2) 丰富强大的外部接口性能:3个PWM通道, 可实现任意lbb以内的、相位和频率可调的PWM脉宽调制输出;6通道A/D转换;一个12C的串行接口, 一个可编程的USART接口;一个支持主/从、收/发的SPI同步串行接口;2个带预分频的8b定时/计数器, 1个带预分频的16b定时/计数器;带片内RC振荡器的可编程看门狗定时器。正是由于这些特性才实现了系统中的温湿度检测、红外学习遥控等功能; (3) 特殊的微控制器性能:可控制的上电复位延时电路和可编程的欠电压检测电路:内部和外部共18个中断源:5种休眠模式 (空闲, ADC噪声抑制, 省电, 掉电, 待命) 。

参考文献

[1]雷少刚.基于AD590组成的温度测量电路及应用[J].西安航空技术高等专科学校学报, 2007, (03) :21-22

[2]唐亚明, 徐保磊, 吕永东, 李建龙.热电偶冷端补偿电路在物理实验中的应用[J].实验科学与技术, 2007, (06) :6-7

DS18B20 篇6

在现代日常生活中, 对温度加以简单控制是非常有意义的。本次就以锅炉水温作为温度采集对象, 利用数字温度传感器DS18B20对其进行温度采集, 从而设计出一个简单锅炉温度控制系统, 具有方便、耐用和便宜等特点。

2、硬件设计

该温控系统主要包括:时钟模块、复位模块、报警模块、键盘模块、温度采集模块、液晶显示模块以及温度控制模块等。其中时钟模块和复位模块是启动芯片AT89C52不可或缺的。温度采集模块只是采用DS18B20, 通过P3.7口对其初始化、读操作和写操作, 控制DS18B20采集数据并转换后的数据传到单片机里进行处理。液晶显示模块是选用LCM1602来显示实时温度和所设定的温度上下限值, 其中数据命令选择端RS接P2.0, 读写选择端R/W接P2.1, 使能信号E接P2.2, 而引脚VEE接在可变电阻器上, 通过调整其电阻值来调节液晶显示器对比度。键盘模块是开关S、按钮S1、S2和S3组成, 其中S是设定模式转换开关, 而S1、S2分别是对设定值进行“加一”、“减一”操作。报警模块则是由三极管驱动蜂鸣器报警, 同时还带有报警指示灯LED1、LED2。温度控制模块包括加热模块和加冷水模块, 加热模块由P1.0口控制继电器RL1驱动加热, 而加冷水模块由P1.1口控制继电器RL2驱动加冷水。若有必要的话, 还可在该系统中添加一个外部储存模块AT24C02B, 将所设定的温度上下限值储存其中。该系统硬件电路的主要原理图见图1所示。

3、软件设计

在系统开始之前, 应先对开关S手动闭合以便之后对温度上下限值设定。等上电 (LED0灯亮, 系统开始运行) 后, AT89C52会自动复位一次, 同时器件DS18B20、LCM1602先初始化, 再自动进入温度上下限设定模式, 按S1、S2对设定值“加一”、“减一”操作, 待设定值确认后按S3键拉起开关S。若当前水温高于设定上限值 (蜂鸣器报警, 同时LED1发红光) , 则自动启动加冷水装置使其降温;若当前水温低于设定下限值 (蜂鸣器报警, 同时LED2发黄光) , 则自动启动加热装置使其升温。若仍超出设定范围, 则重复以上操作, 直到所采集温度值在所设定的温度范围之内, 随后在LCD显示器上显示当前锅炉水温和所设定的上、下限值。主程序设计流程图见图2所示。

4、结语

对锅炉水温控制的整个设计过程都是在仿真软件proteus上进行的, 同时利用功能强大的keil编译软件编写程序, 从而生成仿真软件可用的hex文件, 再将编译后的程序下载到虚拟控制芯片上, 经过反复的调试和修改初步实现了对温度的简单控制。尽管本次设计的系统还是存在一定的不足, 但我会在今后的学习当中对此加以改进。

参考文献

[1]王质朴, 吕运朋.MCS-51单片机原理接口及应用.北京理工大学出版社, 2009.

[2]王东锋, 王会良, 董冠强.单片机C语言应用100例.北京:电子工业出版社, 2009.p263-277.

[3]赵鸿图.基于单片机的温度控制系统的设计与实现.微计算机信息.2008年第24卷第9-2期.

DS18B20 篇7

科技的发展以及居民生活质量要求的提高使家居智能监控设备逐渐进入千家万户。智能家居系统能够带来人员出入方便、节约能源、防风、防尘、防噪音等好处,同时为建筑物增添不少高贵典雅的气息。无论从居住环境的舒适度还是家用电器的智能控制方面,以温度传感器为核心的检测控制系统都成为应用的热点。

1系统组成

单片机将DS18B20采集的温度作相应处理并送1602液晶屏显示,同时将该值与设定的上、下限温度值进行比较, 根据比较结果控制继电器的通断,实现对模拟设备的控制,并发出声光报警。图1是温度检测控制系统整体框图,包括STC89C52单片机电路、DS18B20温度检测电路、1602液晶显示电路及模拟设备继电器控制电路等。

2关键电路

2.1主控电路

STC89C52单片机作为系统控制核心,用于控制温度采集、液晶显示、继电器、蜂鸣器控制,通过程序编程设置上下限温度。温度采集定义DS18B20的DQ端口为P3.1 ;P0.0为蜂鸣器控制端口;P0及P2部分I/O口控制液晶显示。P0.1用来控制继电器输出及LED状态。

2.2温度采集电路

采用温度传感器DS18B20作为感测温度的核心元件,将温度信号转换成数字量,送入单片机P3.1口,由单片机处理后送液晶屏1602显示。如图2所示。

2.3 1602液晶显示电路

1602液晶屏主要由P0及P2部分I/ O口控制,如图3。

2.4继电器及LED状态显示电路

如图4所示,由P0.1口输出低电平, 继电器线圈得电,13闭合而12断开从而通过P8控制控制相应电气设备供电通断。 与此同时,P0.1口低电平使D2正向导通, 发出灯光状态信号。

2.5蜂鸣器电路

当温度达到上下限值时需要发出报警信号,由P0.0口控制控制Q1基极电流从而控制蜂鸣器,如图5所示。

3系统主要程序设计

图6为程序流程图。单片机首先进行寄存器初始化,当检测DS18B20存在时进行温度的转换盒读取,送入1602进行液晶显示,同时判断当前温度是否超出范围,如果超出范围发出报警。

3.1液晶显示程序

3.2 DS18B20温度显示程序

4系统安装与调试

根据上述使用的片上资源及硬件电路,编写程序,以风扇作为被控电器,设定当温度高于30℃时,继电器得电吸合,风扇旋转;温度低于22℃时,继电器失电断开,停止向风扇供电,风扇停转。整个过程,1602液晶屏都将实时显示温度值。

5结束语

利用STC89C52实现环境温度的实时检测与显示,以及继电器控制的智能温控系统。该系统性能可靠,控制准确,成本较合理,继电器输出可用于多种电器如电风扇、加热炉、冰箱等家用电器的温度检测及控制,具有较强的系统移植性。在当前智能家居控制系统中,具有很高的应用价值。

摘要:科技的发展以及居民生活质量要求的提高使家居智能监控设备逐渐进入千家万户。本文设计了基于单片机的室内温度检测控制系统。该系统选取单片机STC89C52,通过温度传感器DS18B20对温度进行检测,同时用继电器和蜂鸣器模拟驱动设备,实现家居系统的自动控制。该设计电路简单,软件功能完善,控制系统可靠,性价比较较高,具有一定的使用和参考价值。

DS18B20 篇8

目前,普遍采用的温度测控装置仍是以输出模拟信号为主,必须经过A/D转换获得数字信号后才能与单片机等微处理器接口,这就使得整个测控装置电路结构复杂、成本较高。而以DS18B20为代表的新型数字式温度传感器集温度检测和A/D转换于一体,能直接输出数字信号,与单片机接口电路结构简单,故其被广泛应用于距离远、节点分布多的各种温度控制领域,具有广泛的应用前景及较强的推广应用价值。

1 DS18B20温度传感器

美国DALLAS公司生产的单线总线DS18B20数字式温度传感器能在现场采集温度数据,直接将温度物理量变换为数字信号并以总线方式传送到计算机进行处理,因而使用DS18B20可使系统结构更趋简单,可靠性更高,大大提高了系统的抗干扰能力。图1为DS18B20接口电路。图2为DS18B20的测温原理。

DS18B20通过门开通期间内低温度系数振荡器经历的时钟周期个数来测量温度,而门开通期由高温度系数振荡器决定。计数器1和温度寄存器均预置对应-55℃时的数值作为基数。低温度系数振荡器的振荡频率不受温度变化的影响,产生固定频率的信号给计数器1;而高温度系数振荡器的振荡频率则受温度变化的影响,其脉冲信号输入计数器2。计数器1是一个减法计数器,当它减至零时,温度寄存器加1,若计数器2没有计数至零(即在门开通期内),则计数器1重新预置基数又进行计数,温度寄存器不断累加,直至计数器2计数至零为止,这时温度寄存器的值即为测量的温度值。斜率累加器是对振荡器温度特性的非线性进行补偿。

2 单片机的选型及方案论证

本系统采用AT89S52单片机。AT89S52单片机是ATmel公司的产品,它额外添加了8kB在系统可编程(即ISP)Flash存储器,使得其下载线电路简单,且可实现并行或者串行模式的在线编程。AT89S52支持ISP在线下载,由于实验阶段需要不断地进行程序调试和多次下载操作,AT89S52的支持在线下载功能无疑就为程序的调试带来了方便。AT89S52单片机的电路设计如图3所示。

单片机采用外部11.059 2 MHz晶振提供时钟电路;复位端RESET同时连接X25045的复位输出端(RESET),形成看门狗复位电路;由DS18B20检测到的温度信号通过P1.0~P1.7口输入单片机中进行处理,经处理后的数据通过P3.0(RXD)、P3.1(TXD)口传送到485,再发送至上位机,P0.0控制485的输入输出。

3 RS-485总线现场检测系统

本系统是一个以PC机为主控机、多个单片机为从机构成的485总线现场监测系统。单片机组成的各节点负责采集终端设备(温度传感器DS18B20)的输出信号,主控机通过通信协议轮询各节点获得这些设备信息,并根据信息内容进行相关操作。系统通信总线采用RS-485标准,可以获得较远的通信距离和较好的抗干扰性。

485接口芯片和匹配电阻等构成RS-485通用驱动电路。在本系统中采用了Maxim公司生产的差分平衡器收发芯片MAX485,符合RS-485通信标准。RS-485采用平衡式发送、差分式接收的数据收发器,在总线(即A、B)之间接入120Ω电阻R3进行阻抗匹配。考虑到通信协议中存在广播形式,为防止总线电流过大,在两根总线上各加入了一个可熔断恢复器。RS-485接口电路如图4所示。

4 数字测温装置数据终端的人机界面

本文采用VB开发数字测温装置数据终端的人机界面。VB的特点是事件驱动,具体编程也应围绕相应的事件进行。其主要步骤是加载串行通信控件,建立通信按钮,并修改属性的一些参数值,编写代码。一般的通信程序分为窗口加载程序、通信开始处理程序、通信关闭处理程序和定时器事件处理程序等部分。

装置整体系统运行之前需要知道总线上有多少个模块,所以系统一运行,自动先搜索模块并记录,在之后的操作中只对搜索到的模块进行操作。该部分程序执行流程如图5所示。

为了实现温度测量数据的远程通信,用Visual Basic 6.0开发了远地控制PC机的用户界面软件。其界面友好、操作简单,用户通过鼠标就能监控工作环境温度以及数字测温设备状态。操作系统主界面见图6。

图6中,5#测温点和14#测温点放入热水中,温度超过了报警温度值55℃(通过上位机可设置),所以指示灯变为红色(图中显示为深色),其他各点为室温。

5 结论

基于单片机系统的数字温度测量系统是单片机控制的智能化仪器。装置结构模型和测量原理简单,选用精密测量元器件和抗干扰、低温漂的精密电子元件,提高了系统的抗干扰能力,保证了系统的稳定性;装置选用数字温度传感器DS18B20,简化了测温电路,提高了测量准确度,同时具备较强抗干扰能力,稳定性好,安装方便,维护简单,实现了多路的温度检测。

摘要:目前对温度的监测和控制已成为生产过程中非常重要的技术要求。基于DS18B20,以AT89S52单片机为核心设计了温度测量装置,对整个测试系统进行控制,包括温度的测量、数据的处理以及将测量结果送至上位机显示与进一步处理。

关键词:数字测温,DS18B20,通信协议,AT89S52

参考文献

[1]王魁汉,李友,王柏忠.温度测量的最新动态及特殊与实用测温技术[J].自动化仪表,2001,22(8):1-4.

[2]乐嘉华.温度检测技术的现状和未来[J].炼油化工自动化,1995(4):36-38.

[3]王晓君,安国臣.MCS-51及兼容单片机原理与选型[M],北京:电子工业出版社,2003.

[4]范逸之,陈立元.Visual Basic与RS-232串行通信控制[M].北京:清华大学出版社,2002.

DS18B20 篇9

在实时温度监控系统中,如大棚温度监控、冷库测温、智能建筑温度控制等系统中,经常需要进行多路温度的采集和检测。快速、可靠地采集到高精度温度数据可为控制系统的工作提供可靠的依据。传统上,温度测量方法多以热敏电阻、热电偶等为温度敏感元件,但都存在可靠性差、精度低、需A/D转换以及线路复杂等的缺点。本文提出采用美国Dallas公司生产的单总线数字温度传感器DS18B20和AT89C51单片机构成高精度的多路温度监测系统,在单片机的控制下巡回监测多路温度,高低温度超限报警,并可实现与上位机通讯等功能。

1 DS18B20简介

DSl8B20是Dallas公司推出的1-Wire式单总线智能数字温度传感器。与传统的热敏电阻相比,它能够直接读出被测温度,温度测量范围为-55~125℃;可通过编程实现9~12位的转换精度,对应的可分辨温度分别为0.5℃,0.25℃,0.125℃和0.062 5℃,可满足高精度设计要求;在9位分辨率时最多在93.75 ms内把温度转换为数字,12位分辨率时最多在750 ms内把温度值转换为数字;电源供电范围3.0~5.5 V;读取或写入信息到DS18B20仅需要单总线接口(即将地址线、数据线、控制线合成一条信号线);测量结果直接输出数字温度信号,串行传送给CPU同时可传送CRC校验码,具有极强的抗干扰纠错能力;使用DS18B20可使系统结构简洁,可靠性更高。以上特性使得DSl8B20非常适用于构建高精度的多路温度采集与检测系统[1]。

2 硬件电路设计

系统原理框图如图1所示,系统由多片DS18B20、AT89C51单片机、LED驱动显示电路、温度上下限设定电路、报警提示电路、串行通信接口、时钟电路、复位电路等构成。

系统采用8片DS18B20构成温度采集电路,8片DS18B20采用单总线与并行输入相结合的方式接至单片机的P1口。单片机巡回采集各路DS18B20送来的温度信息后,通过软件设计算法,将处理后的温度信息及相应的温度路数通过LED数码管显示出来,各路温度值的上下限可通过P3.2~P3.4独立式键盘进行设定。若某路超过温度设定的上下限将进行通过P3.5或P3.6进行报警提示。此外,可通过串行口RS 232模块将各路温度数据送上位机处理。系统采用Proteus仿真软件设计的仿真电路如图2所示,此时LED显示的是第3路温度值。

2.1 测温电路设计

采用8片DS18B20组成多路测温电路。DS18B20内部均有一个全球惟一的64位产品序列号,单片机通过序列号可对一条总线上的多路DS18B20进行控制,读取其温度。但DS18B20仅由单总线采集多路温度数据时,软件设计算法复杂[2],读取速度慢,无法适用于实时性要求高的测温场合。特别是当单总线上挂接的DS18B20传感器个数大于8个时,采用寄生电源供电方式亦存在总线驱动能力不足等问题[3]。为此,本设计采用“单总线结构+并行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编写。当运行Proteus软件时,可以从虚拟终端看到上位机接收到的8个通道的温度数据及相应的通道号。

3 软件设计

3.1 软件总体设计

如图3所示,系统上电复位后,程序主要包括:

(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所在位置[4],并需对ROM编码进行冗余校验[5],算法设计复杂。且等待多路搜索是否完成需要消耗大量的时间,使程序执行的效率和系统实时性受到了影响。

本设计采用“单总线结构+并行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的温度采集。

3.3 软件设计流程

软件设计流程如图4,图5所示。

4 Keil C51与Proteus联合仿真

软件采用C语言编程,在Keil C51集成开发环境下将编写的程序进行编译、调试[6],并生成目标文件(XX.hex)。同时利用嵌入式仿真软件Proteus绘制出电路仿真原理图,CPU选择AT89C51。双击AT89C51,在出现的对话框中的“Program file”加入已生成的XX.hex文件,并进行仿真调试,调试成功则可以修改温度报警值,及在正常运行时看到循环显示所采集到的温度值、通道号,仿真效果图如图6所示。

5 结语

本设计以Proteus仿真软件作为开发工具,以AT89C51单片机作为控制核心,使用DS18B20芯片作为温度传感器,加上适当的外围电路,组成了多路温度巡回监测系统。与传统温度传感器相比,可直接输出数字信号而不必考虑A/D转换问题,抗干扰能力与可靠性大大提升。同时,采用单总线与多路并行输入相结合的方法,克服了DS18B20传统上采用单总线结构时所存在的问题,实现多路温度实时读取、巡回监测、与上位机通信等功能,且系统具有结构简洁、精度高、适应性强、维护方便等优点,在多路温度采集与监测领域中有很好的实用价值。

参考文献

[1]周茂霞.DS18B20多点温度检测报警系统的设计与实现[J].山东师范大学学报:自然科学版,2009,24(2):66-68.

[2]蒋鸿宇,王勇,植涌.由DS18B20构成的多点温度测量系统[J].单片机与嵌入式系统应用,2007(1):59-61.

[3]俞绍安.数字温度传感器DS18B20在卫星电源系统中的应用[J].电子元器件应用,2007(8):1-3.

[4]潘勇,孟庆斌.基于DS18B20的多点温度测量系统设计[J].电子测量技术,2008,31(9):91-93.

[5]韩成浩,李柏峰,高晓红.单总线温度传感器的实用技术及冗余校验[J].制造业自动化,2009,31(9):65-68.

[6]彭伟.单片机C语言程序设计实训100例:基于8051+Proteus仿真[M].北京:电子工业出版社,2009.

上一篇:旅游客源国概况下一篇:配网工程管理

本站热搜

    相关推荐