您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 综合/其它 > 基于AVR单片机与温度传感器DS18B20的多点温度测量
47电工电气(2010No.12)0引言温度传感器的种类很多,DALLAS(达拉斯)公司生产的DS18B20温度传感器具有超小的体积、超低的硬件开销、抗干扰能力强、精度高、附加功能强等特点,其应用范围十分广泛,包括HAVC环境控制,建筑物、设备或机械内的温度检测,以及过程监视和控制中的温度检测。其独特的单总线接口只需一个端口引脚进行通信,然而其较小的硬件开销需要相对复杂的软件进行补偿,采用ATMEL公司推出了AVR单片机,在ICCAVR编辑器环境下进行编程较其它方式具有简单直观的优点。本文阐述了AVR单片机与多个DS18B20配合测温方法,并给出了读取DS18B20的64位ROM的方法和温度读取的C语言程序。1ATmega8单片机引脚特性ATmega8是ATMEL公司生产的一种高性能、低功耗的8位AVR微处理器。它采用先进的RISC指令结构,并且拥有非易失性的程序和数据存储器以及模数转换器等大量的片内外设,价格低廉,是一种性价比很高的单片机。ATmega8引脚配置如表1所示。这里尤其要注意的是它的I/O端口特性[1]:当作为通用数字I/O使用时,AVR所有的I/O端口或者引脚都可以通过指令来改变引脚的状态(比如改变作为输入还是输出使用、禁止/使能上拉电阻或者基于AVR单片机与温度传感器DS18B20的多点温度测量朱丽丽,王长友(大连交通大学,辽宁大连116028)Abstract:IntroductionwasmadetoakindofmultipointtemperaturemeasurementmethodtobecarriedoutbasedonAVRMCUand1-wirebusdigitalthermometerDS18B20.1-wirebusinterfacecircuitconnectedwithseveralDS18B20swasgiven,aswellasDS18B20serialnumberreadingmethodanditsCprogramcommunicatingwithMCU.Themethodissimpleandeasytouse,havingbeenappliedinsomecircuits.Keywords:MCUATmega8;temperaturemeasurement;thermometerDS18B20;serialnumberreadingZHULi-li,WANGChang-you(DalianJiaotongUniversity,Dalian116028,China)MultipointTemperatureMeasurementBasedonAVRMCUandThermometerDS18B20摘要:介绍了一种基于AVR系列单片机ATmega8与单总线数字温度传感器DS18B20进行多点温度测量的方法,给出了在一根单总线挂接多个DS18B20的接口电路,及DS18B20序列号读取方法和其与单片机通信的C语言程序,该方法简单、易用,已经在一些电路中得到了应用。关键词:ATmega8单片机;温度测量;DS18B20温度传感器;序列号读取中图分类号:TP212.9文献标识码:B文章编号:1007-3175(2010)12-0047-05作者简介:朱丽丽(1985-),女,硕士研究生,研究方向为综合自动化及先进控制技术。表1ATmega8引脚配置说明DDRxnPORTxnPUD(位于MCUCR)I/O上拉电阻说明00X输入No高阻态010输入Yes被外部电路拉低时将输出电流011输入No高阻态10X输出No输出低电平(吸收电流)11X输出No输出高电平(输出电流)检验与测试基于AVR单片机与温度传感器DS18B20的多点温度测量48电工电气(2010No.12)把引脚设置为高/低电平等)。它的每个端口有3个寄存器,分别为数据寄存器(PORTx)、数据方向寄存器(DDRx)和端口输入引脚(PINx)。通过配置,可以使某个引脚处于高电平、低电平或者高阻态。2温度传感器DS18B20特点DS18B20是基于DALLAS公司生产的单总线数字温度传感器,它提供9位温度读数,指示器件的温度。信息通过单总线接口送入DS18B20或从DS18B20送出,因此从中间处理器到DS18B20仅需连接一条线,它具有以下特性[2]:(1)独立的单总线接口,具有经济性好、抗干扰能力强、使用方便等优点,只需一个接口引脚即可通信;(2)多点(multidrop)能力使分布式温度检测应用得以简化;(3)不需要外部元件;(4)可用数据线供电,不需备份电源;(5)测量温度范围从-55~+125℃,增量值为0.5℃;(6)以9位数值方式读出温度;(7)在1s内(典型值)把温度变换为数字;(8)用户可定义的、非易失性的温度告警设置;(9)告警搜索命令识别和寻址温度在编定的极限之外的器件(温度告警情况);(10)测量分辨率可以通过程序设定为9~12位;(11)掉电保护功能,内部有EEPROM,在系统掉电以后,它仍可保存分辨率及报警温度的设定值。DS18B20有3个引脚:VDD、GND为电源输入端,DQ为数据输入/输出端。其芯片有多种封装形式,3脚、6脚、16脚等,可以满足不同设计的需求。它的内部主要包括64位的ROM、温度传感器、非挥发的温度报警触发器(TH、TL)和设置寄存器4个部分。控制器对DS18B20操作流程如下。1)复位:首先我们必须对DS18B20芯片进行复位,复位就是由控制器(单片机)给DS18B20单总线至少480μs的低电平信号。当DS18B20接到此复位信号后则会在15~60μs后,回发给芯片一个存在脉冲。2)存在脉冲:在复位电平结束之后,控制器应该将数据单总线拉高,以便于在15~60μs后接收存在脉冲,存在脉冲为一个60~240μs的低电平信号。如果复位时低电平的时间不足或是单总线的电路断路都不会接到存在脉冲,在设计时要注意意外情况的处理。3)控制器发送ROM指令:ROM指令共有5条,每一个工作周期只能发一条。ROM指令分别是读ROM数据、指定匹配芯片、跳跃ROM、芯片搜索、报警芯片搜索,见表2。ROM指令为8位长度,功能是对片内的64位光刻ROM进行操作。其主要目的是为了分辨一条总线上挂接的多个器件并作处理。单总线上可以同时挂接多个器件,并通过每个器件上所独有的ID号来区别,一般只挂接单个DS18B20芯片时可以跳过ROM指令。4)控制器发送存储器操作指令:在ROM指令发送给DS18B20之后,紧接着(不间断)就是发送存储器操作指令了。操作指令同样为8位共6条,存储器操作指令分别是写RAM数据、读RAM数据、将RAM数据复制到EEPROM、温度转换、将EEPROM中的报警值复制到RAM、工作方式切换,见表3。存储器操作指令的功能是命令DS18B20做什么样的工作,是芯片控制的关键。5)执行或数据读写:一个存储器操作指令结束后则将进行指令执行或数据的读写,这个操作要视存储器操作指令而定。如执行温度转换指令则控制表2DS18B20的存储器指令集指令代码指令名称指令功能33H读ROM读器件的64位地址55H“符合”ROM访问相对应地址的器件CCH“跳过”ROM忽略64位地址,直接向器件发送温度变换命令F0H搜索ROM用于确定总线上的器件个数,并识别各器件的64位地址ECH警告搜索该指令执行后,只有温度超过设定的上限和下限报警值时,器件才予以响应表3DS18B20的ROM指令集指令代码指令名称指令功能4EH写闪存器向RAM中写TH和TL数据BEH读闪存器读CRC校验48H复制闪存器将RAM中的TH和TL复制到SRAM中44H启动温度转换启动DS18B20温度转换B8H重新调用SRAM将SRAM中的TH和TL复制到RAM中B4H读供电方式读DS18B20的供电方式,外接电源时,DS18B20发送1,否则发送0基于AVR单片机与温度传感器DS18B20的多点温度测量49电工电气(2010No.12)3接口电路设计在了解了DS18B20与ATmega8的性能和使用方法之后,本文给出了其接口电路原理图,如图2所示,我们采用的是在DS18B20的VDD引脚引入外部电源的接线方法,因为当挂接多个DS18B20时,考虑到如果使用寄生电源I/O口,需要提供足够的能量,由于DS18B20的工作电流需达到1mA,所以仅靠5kΩ上拉电阻提供电源是不行的,当几只DS18B20挂接在同一根I/O线上并同时想进行温度转换时,这个问题变得更加尖锐。同时当温度高于100℃时,不推荐使用寄生电源,因为DS1B820在这种温度下表现出的漏电流比较大,通信可能无法进行。基于上述原因,结合本设计的需求,本文采用的是引入外部电源的接法。由于单总线为开漏,所以需要外接一个4.7kΩ的上拉电阻。器(单片机)必须等待DS18B20执行其指令,一般转换时间为500μs。如执行数据读写指令则需要严格遵循DS18B20的读写时序来操作。图1为DS18B20复位及应答关系示意图。 由于DS18B20的硬件特点,我们在每一次读温度之前都必须进行复杂且精准的时序处理;每一次通信之前必须进行复位,复位时间、等待时间、回应时间应严格按时序编程;并且DS18B20的数据读写是通过时间隙处理位和命令字来确认信息交换的。图1DS18B20复位及应答关系示意图图2硬件接线图RESET/PC6ADC5/SCI/PC5RXD/PD0ADC4/SDA/PC4TXD/PD1ADC3/PC3INT0/PD2ADC2/PC2INT1/PD3ADC1/PC1XCK/T0/PD4ADC0/PC0VCCGNDGNDAREFXTAL1/TOSC1/PB6AVCCXTAL2/TOSC2/PB7SCK/PB5T1/PD5MISO/PB4AIN0/PD6MOSI/OC2/PB3AIN1/PD7SS/OC1B/PB2ICPI/PB0OC1A/PB1ATmega8单片机DS18B20(1)GNDDQVDD+5VDS18B20(2)GNDDQVDD+5VDS18B20(n)GNDDQVDD+5V…R1+5V4.7kΩVCCGND单总线复位时间480~960μs回应时间60~240μs等待时间15~60μs接收时间480μs设计时要注意的是[1]:(1)DS18B20在总线上的挂接个数问题。当总线上挂接超过8个DS18B20时,要考虑微处理器总线驱动的问题。一般情况下,在寄生电源的工作方式下,由于单个DS18B20的工作电流为1mA,而总线上的电流为5V/4.7kΩ=1.06mA,加上一个MOSFET管可帮助提供能量,但是由于DS18B20和MOSFET管之间的充放电和功耗问题,导致单总线上的DS18B20个数不能超过8个。三线制的连接方式很好地解决了能量提供问题,理论上可在数据总线上接任意多个器件。这点在进行多点测温系统设计时要注意。(2)DS18B20与主机之间的距离问题。连接DS18B20的总线电缆(普通三芯线)在只有上拉电阻的情况下可靠传输长度可达45m左右,距离过长时需根据分支点数、总线长度匹配其线间电容及阻抗;一般情况下,采用普通信号电缆传输长度超过50m时,读取的测温数据将发生错误。当将总线电缆改为双绞线带屏蔽电缆时,正常通信距离可达150m,当采用每米绞合次数更多的双绞线带屏蔽电缆时,正常通信距离进一步加长。在用DS18B20进行长距离测温系统设计时要充分考虑总线分布电容和阻抗匹配问题,应注意以下几点:(1)合理估算畸变的允许程度和电容的允许值;(2)不同传输线的电容相差很大,如同轴电缆抗干扰能力昀强,但电容较大;(3)传输线越短,电容越小;(4)合理布线,可减少电容。实际运用中,测温电缆线建议采用屏蔽四芯双基于AVR单片机与温度传感器DS18B20的多点温度测量50电工电气(2010No.12) chari,mid; for(i=8;i>0;i--) { DDRB|=BIT(4); PORTB&=~BIT(4); delay(15); mid=te
本文标题:基于AVR单片机与温度传感器DS18B20的多点温度测量
链接地址:https://www.777doc.com/doc-4047673 .html