第一篇:基于NRF2401的无线温度传感器的设计论文
摘要:为了解决传统的温度传感器多点温度测量时的繁杂的布线问题,设计了一种基于单片机技术和无线通讯技术的无线温度传感器。采用无线收发芯片NRF2401和数字温度计DSl8820构成硬件平台,通过EnhancedShockBurstTM收发模式实现对温度数据的传输,采用高增益天线使覆盖区域达到200m范围。
关键词:NRF2401;DSl8820;无线温度传感器
为了解决传统的温度传感器多点温度测量时的繁杂的布线问题,从传统的温度传感器人手,设计了一种基于单片机技术和无线通讯技术的无线温度传感器,本文详细介绍系统的实现。
1系统的设计与实现
1.1总体结构框架
无线温度传感器的系统的总体结构主要包括两个部分:一是温度采集电路,其作用是测量温度并将测量到的温度数据发射给主机;另外一部分是温度信息处理电路,其作用是收集所有的温度信息,处理并显示出这些信息,同时还可以将这些数据传输到PC机上。
1.2数字温度计DS18820
DS18820是一种分辨率可编程设置的单总线数字温度计,它的测温区间从-55℃~+125℃。温度输出位数从9bit~12bit,用户可以通过程序来控制,将温度转化成12bit的数字字节的最大耗时仅需750ms。每一片DSl8820都有唯一的64位序列码,从而允许多片DS18820共存于同一根单总线上,因此用一块单片机可以控制一片区域的温度采集。DSl8820外观和接口如图1和图2所示:
它有3个引脚,1脚为GND电源地;2脚为DQ数字信号输入输出引脚,DS18820通过1根数据总线与单片机进行双向通讯;3脚为VDD外接供电电源输入端。DS18820的供电方式有两种:一种是通过数据线提供寄生电源,此时3脚接地;另一种是直接在VDD上提供电源,供电电压范围为3.0V~5.5V。
1.3单片机的选择
本系统中在温度采集电路和温度信息处理电路中都需要用到单片机,而且单片机是做为系统控制核心。在温度采集电路中对单片机的功耗要求较高而在信息处理电路中对单片机的处理速度有一定的要求。基于价格和电路设计方便的考虑,采用华邦W78E052,它的指令和引脚序列与MCS51兼容,编程简单方便。它最大支持40MHz时钟,供电电压范围宽(2.4V~5.5V),采用3.3V供电,它的10口可以很方便的与DSl8820和NRF2401直接连接。W78E052内部包含2个外部中断、3个定时计数中断和看门狗计时器,用在本系统中具有相当高的性价比。
1.4无线收发模块
NRF2401是一款工作在2.4GHz~2.5GHz的集接收和发送于一体的单片无线通讯芯片。它的无线收发器由频率发生器、增强型模SchockBurstTM式控制器、功率放大器、晶体振荡器、调制器、解调器等部分组成。可以通过SPI接口来设置协议、功率输出和频道选择。它具有较低的电流消耗,供电电压1.9V~3.6V。
2软件的设计
2.1温度采集
DSl8820是以12位输出的,此时的测温分辨率是0.0625。输出的数据是二进制补码格式,低4位为小数位,最高位为符号位。如果是正温度,读出的数据乘以0.0625便是当前的温度值;负温度得转化为正值再相乘。12位输出的耗时是750ms,如果需要提高转换速度,可以选择减少输出位数(如9位最大耗时仅约94ms),但是测温精度有所下降。如果是单片的DSl8820工作,在启动温度转换和度暂存存储器操作命令时可以跳过64位ROM地址匹配。
2.2无线收发
NRF2401有4种工作模式,分别是收发模式,配置模式,空闲模式和关机模式,这四种模式可由PWR_UP寄存器、PRIM_RX寄存器和CE引脚决定。其中收发模式又有EnhancedShockBurstTM、ShockBurstTM和直接收发模式3种,收发模式由配置字来决定。使用EnhancedShockBurstTM收发模式系统编程相对简单,在这种模式下只需改变一个字节的内容便可以实现接收和发送模式的切换,而且稳定性较高。
2.3系统软件框架
温度采集模块的主要工作是采集温度数据并将数据发送给温度信息处理模块,温度采集模块每2s采集并且发送一次。温度信息处理模块可以工作在两种模式:单机模式和联机模式,这两种模式可以通过按键来设定。单机模式下,将各个温度采集模块上采集过来的温度实时显示出来,预先設定的数据进行比较,如果某一处超过警界值,则启动相应的处理措施并发出报警。而在联机模式下,模块则将采集到的数据通过RS232发给上位机,并执行上位机发出的命令。
3结语
本系统的温度测量误差在±0.1℃以内。用板载天线在空旷地的数据传输距离可达40m,如果采用高增益天线可以将通讯距离增大到100m以上,这样覆盖区域可达到200m的范围,从而避免了繁杂的布线的问题。如果要将通讯距离进一步加大,可以在发射端增加功率放大器模块,在接收端加低噪声放大器模块,这样可以大大提升通讯距离。
第二篇:单片机温度传感器论文_图文.
毕业设计(论文)答辩记录表 学生姓名 所学专业 指导老师 答辩教师提问 性 别 论文题目 答辩小 组成员 学生回答问题情况 班 级 答 辩 记 录 指 导 教 师 评 语 指导老师(签名): 年 月 日 21 初评成绩(由指导老师填写)答辩主持人(签名): 年 月 日 毕业设计(论文)评价表 毕业 设计(论 文)评语 答辩 评语 评 定 等 级 答辩成员签名 年 月 日 22 答辩委员会 主任意见 签字 年 月 日 23
第三篇:DS18B20温度传感器设计报告
传感器课程设计
专 业: 计算机控制技术
---数字温度计
年 级: 2011 级 姓 名: 樊 益 明
学 号: 20113042
指导教师: 刘 德 春
阿坝师专电子信息工程系
1.引 言
1.1.设计意义
在日常生活及工农业生产中,经常要用到温度的检测及控制,传统的测温元件有热电偶和热电阻。而热电偶和热电阻测出的一般都是电压,再转换成对应的温度,需要比较多的外部硬件支持。其缺点如下:
● 硬件电路复杂; ● 软件调试复杂; ● 制作成本高。
本数字温度计设计采用美国DALLAS半导体公司继DS1820之后推出的一种改进型智能温度传感器DS18B20作为检测元件,测温范围为-55~125℃,最高分辨率可达0.0625℃。
DS18B20可以直接读出被测温度值,而且采用三线制与单片机相连,减少了外部的硬件电路,具有低成本和易使用的热点。设计要求
2.1基本要求 1)用LCD12232实现实时温度显示温度和自己的学号。2)采用LED数码管直接读显示。2.2扩展功能
温度报警,能任意设定温度范围实现铃声报警;
33.1单片机89C52模块
单片机89C52是本设计中的控制核心,是一个40管脚的集成芯片构成。引脚部分:单片机引脚基本电路部分与普通设计无异,40脚接Vcc+5V,20脚接地。X1,X2两脚接12MHZ的晶振,可得单片机机器周期为1微秒。RST脚外延一个RST复位键,一端通过10K电阻接Vcc,一端通过10K电阻接地。AT89S52是一种低功耗、高性能的8位CMOS微控制器,具有8K的可编程Flash 存储器。使
资料准备 用高密度非易失性存储器技术制造,与工业80C51产品指令和引脚完全兼容。片上Flash允许程序存储器在系统可编程,亦适于常规编程器。在单芯片上,拥有灵巧的8位CPU和在线系统可编程Flash,使得AT89S52为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。AT89S52具有以下标准功能:8K字节Flash,256字节RAM,32位I/O 口线,看门狗定时器,2个数据指针,三个16位定时器/计数器,一个6向量2级中断结构,全双工串行口,片内晶振及时钟电路。P 0口接一个470的上拉电阻。P0口0~8脚接4位共阳数码管的段选,P2口0~4脚接4位共阳数码管的位选,P3.7接DS18B20采集信号。
3.2 DS18B20简介
DALLAS最新单线数字温度传感器DS18B20简介新的“一线器件”体积更小、适用电压更宽、更经济 Dallas 半导体公司的数字化温度传感器DS1820是世界上第一片支持 “一线总线”接口的温度传感器。一线总线独特而且经济的特点,使用户可轻松地组建传感器网络,为测量系统的构建引入全新概念。DS18B20、DS1822 “一线总线”数字化温度传感器 同DS1820一样,DS18B20也支持“一线总线”接口,测量温度范围为-55°C~+125°C,在-10~+85°C范围内,精度为±0.5°C。DS1822的精度较差为± 2°C。现场温度直接以“一线总线”的数字方式传输,大大提高了系统的抗干扰性。适合于恶劣环境的现场温度测量,如:环境控制、设备或过程控制、测温类消费电子产品等。与前一代产品不同,新的产品支持3V~5.5V的电压范围,使系统设计更灵活、方便。而且新一代产品更便宜,体积更小。DS18B20、DS1822 的特性 DS18B20可以程序设定9~12位的分辨率,精度为±0.5°C。可选更小的封装方式,更宽的电压适用范围。分辨率设定,及用户设定的报警温度存储在EEPROM中,掉电后依然保存。DS18B20的性能是新一代产品中最好的!性能价格比也非常出色!DS1822与 DS18B20软件兼容,是DS18B20的简化版本。省略了存储用户定义报警温度、分辨率参数的EEPROM,精度降低为±2°C,适用于对性能要求不高,成本控制严格的应用,是经济型产品。继“一线总线”的早期产品后,DS1820开辟了温度传感器技术的新概念。DS18B20和DS1822使电压、特性及封装有更多的选择,让我们可以构建适合自己的经济的测温系统。3.3 温度传感器的工作原理
DS18B20的读写时序和测温原理与DS1820相同,只是得到的温度值的位数因分辨率不同而不同,且温度转换时的延时时间由2s 减为750ms。DS18B20测温原理:低温度系数晶振的振荡频率受温度影响很小,用于产生固定频率的脉冲信号送给计数器1。高温度系数晶振 随温度变化其振荡率明显改变,所产生的信号作为计数器2的脉冲输入。计数器1和温度寄存器被预置在-55℃所对应的一个基数值。计数器1对低温度系数晶振产生的脉冲信号进行减法计数,当计数器1的预置值减到0时,温度寄存器的值将加1,计数器1的预置将重新被装入,计数器1重新开始对低温度系数晶振产生的脉冲信号进行计数,如此循环直到计数器2计数到0时,停止温度寄存器值的累加,此时温度寄存器中的数值,即为所测温度。
3.4 DS18B20中的温度传感器对温度的测量
高速暂存存储器由9个字节组成,其分配如表5所示。当温度转换命令发布后,经转换所得的温度值以二字节补码形式存放在 高速暂存存储器的第0和第1个字节。单片机可通过单线接口读到该数据,读取时低位在前,高位在后。
温度数据值格式
下表为12位转化后得到的12位数据,存储在18B20的两个8比特的RAM中,二进制中的前面5位是符号位,如果测得的温度大于0,这5位为0,只要将测到的数值乘于0.0625即可得到实际温度;如果温度小于0,这5位为1,测到的数值需要取反加1再乘于0.0625即可得到实际 温度。例如+125℃的数字输出为07D0H,实际温度=07D0H*0.0625=2000*0.0625=125℃。
例如-55℃的数字输出为FC90H,则应先将11位数据位取反加1得370H(符号位不变,也不作运算),实际温度=370H*0.0625=880*0.0625=55℃。
可见其中低四位为小数位。
DS18B20温度与表示值对应表
3.5 DS18B20的内部结构
DS18B20内部结构主要由四部分组成:64位光刻ROM、温度传感器、非挥发的温度报警触发器TH和TL、配置寄存器。DS18B20的管脚排列如下:
DQ为数字信号输入/输出端;
GND为电源地;
VDD为外接供电电源输入端(在寄生电源接线方式时接地)。
1)64位的ROM 光刻ROM中的64位序列号是出厂前被光刻好的,它可以看作是该DS18B20的地址序列码。64位光刻ROM的排列是:开始8位(28H)是产品类型标号,接着的48位是该DS18B20自身的序列号,最后8位是前面56位的循环冗余校验码(CRC=X8+X5+X4+1)。光刻ROM的作用是使每一个DS18B20都各不相同,这样就可以实现一根总线上挂接多个DS18B20的目的。
2)DS18B20温度传感器的存储器
DS18B20温度传感器的内部存储器包括一个高速暂存RAM和一个非易失性的可电擦除的E2RAM,后者存放高温度和低温度触发器TH、TL和结构寄存器。
暂存存储器包含了8个连续字节,前两个字节是测得的温度信息,第一个字节的内容是温度的低八位,第二个字节是温度的高八位。第三个和第四个字节是TH、TL的易失性拷贝,第五个字节是结构寄存器的易失性拷贝,这三个字节的内容在每一次上电复位时被刷新。第六、七、八个字节用于内部计算。第九个字节是冗余检验字节。
3.6 DS18B20的时序
由于DS18B20采用的是单总线协议方式,即在一根数据线实现数据的双向传输,而对89C51单片机来说,硬件上并不支持单总线协议,因此,我们必须采用软件的方法来模拟单总线的协议时序来完成对DS18B20芯片的访问。
由于DS18B20是在一根I/O线上读写数据,因此,对读写的数据位有着严格的时序要求。DS18B20有严格的通信协议来保证各位数据传输的正确性和完整性。该协议定义了几种信号的时序:初始化时序、读时序、写时序。所有时序都是将主机作为主设备,单总线器件作为从设备。而每一次命令和数据的传输都是从主机主动启动写时序开始,如果要求单总线器件回送数据,在进行写命令后,主机需启动读时序完成数据接收。数据和命令的传输都是低位在先。
1)DS18B20的复位时序
2)DS18B20的读时序
对于DS18B20的读时序分为读0时序和读1时序两个过程。
对于DS18B20的读时隙是从主机把单总线拉低之后,在15秒之内就得释放单总线,以让DS18B20把数据传输到单总线上。DS18B20在完成一个读时序过程,至少需要60us才能完成。
3)DS18B20的写时序
对于DS18B20的写时序仍然分为写0时序和写1时序两个过程。
对于DS18B20写0时序和写1时序的要求不同,当要写0时序时,单总线要被拉低至少60us,保证DS18B20能够在15us到45us之间能够正确地采样IO总线上的“0”电平,当要写1时序时,单总线被拉低之后,在15us之内就得释放单总线。
4系统框架设计如下图所示:
按照系统设计功能的要求数字温度计总体电路结构框图如下图所示
5硬件设计
温度计采用AT89C51单片机作为微处理器,温度计系统的外围接口电路由晶振、LCD显示电路、复位电路、温度检测电路、LCD驱动电路。
温度计的工作过程是:初始化其接收需要检测的温度,并一直处于检测状态,并将检测到的温度值读取,并转化为十进制数值,通过LCD显示出来,再显示温度,方便用户来读数使用记录数据。
温度计系统的的硬件电路图如下图所示。
DS18B20测温和学号显示
6系统程序的设计
6.1主程序
主程序的主要功能是负责温度的实时显示、读出并处理DS18B20的测量温度值。温度测量每1s进行一次。
主程序流程图如图4.1.1所示。
初始化调用显示子程序1s到?YN初次上电?N读出温度值温度计算处理显示数据刷新Y发温度转换开始命令
主程序流程图
6.2读出温度子程序
读出温度子程序的主要功能是读出RAM中的9字节。在读出时须进行CRC校验,校验有错时不进行温度数据的改写。
读出温度子程序流程图如图4.2所示。
发DS18B20复位信号发跳过ROM命令CRC校验正确?发读取温度命令Y移入温度暂存器读取操作,CRC校验YNN结束9字节完?
6.3温度转换命令子程序
温度转换命令子程序主要是发温度转换开始命令。当采用12位分辨率时,转换时间大约为750ms。在本程序设计中,采用1s显示程序延时法等待转换的完成。温度转换命令子程序图如图4.3所示。
发DS18B20复位uml发跳过ROM命令发温度转换开始命令
结束
6.4计算温度子程序
计算温度子程序将RAM中读取值进行BCD码的转换运算,并进行温度值的正负判断。
计算温度子程序流程图如图4.4所示。
开始计算小数位温度BCD值温度零下?N计算整数位温度BCD值Y置“+”标志温度值补码置“—”标志结束
6.5显示数据刷新子程序
显示数据刷新子程序主要是对显示缓冲器中得显示数据进行刷新操作,当最高数据显示位为0时,将符号显示位移入下一位。
显示数据刷新子程序流程图如图4.5所示。设计总结
本设计利用89S51芯片控制温度传感器DS18B52,再辅之以部分外围电路实现对环境温度的控制,性能稳定,精度较高,而且扩展性很强。由于DS18B20支持单总线协议,我们可以将多个DS18B52并联到3根或2根线上,CPU只需一根端口线就能与诸多DS18B52通信,占用较少的微处理器的端口就可以实现多点测温监控系统。
我们在老师的指导下完成了基于DS18B20的数字温度计的设计和制作。在进行实验的过程中,我们了解并熟悉DS18B20、AT89C2051以及74LS244的工作原理和性能。并且通过温度计的制作,我们将电子技能实训课堂上学到的知识进行运用,并在实际操作中发现问题,解决问题,更加增加对知识的认识和理解。
第四篇:温度传感器课程设计
温度传感器简单电路的集成设计
当选择一个温度传感器的时候,将不再限制在模拟输出或数字输出装置。与你系统需要相匹配的传感器类型现在又很大的选择空间。市场上供应的所有温度感应器都是模拟输出。热电阻,RTDs和热电偶是另一种输出装置,矽温度感应器。在多数的应用中,这些模拟输出装置在有效输出时需要一个比较器,ADC,或一个扩音器。因此,当更高技术的集成变成可能的时候,有数字接口的温度传感器变成现实。这些集成电路被以多种形式出售,从超过特定的温度时才有信号简单装置,到那些报告远的局部温度提供警告的装置。现在不只是在模拟输出和数字输出传感器之间选择,还有那些应该与你的系统需要相匹配的更广阔的感应器类型的选择,温度传感器的类型:
图一:传感器和集成电路制造商提供的四中温度传感器
在图一中举例说明四种温度感应器类型。一个理想模拟传感器提供一个完全线性的功能输出电压(A)。在传感器(B)的数字I/O类中,温度数据通常通过一个串行总线传给微控制器。沿着相同的总线,数据由温度传感器传到微控制器,通常设定温度界限在引脚得数字输出将下降的时候。当超过温度界限的时候,报警中断微控制器。这个类型的装置也提供风扇控制。
模拟输出温度传感器:
图2 热阻和矽温度传感器这两个模拟输出温度探测器的比较。
热电阻和矽温度传感器被广泛地使用在模拟输出温度感应器上。图2清楚地显示当电压和温度之间为线性关系时,矽温度传感器比热阻体好的多。在狭窄的温度范围之内,热电阻能提供合理的线性和好的敏感特性。许多构成原始电路的热电阻已经被矽温度感应器代替。
矽温度传感器有不同的输出刻度和组合。例如,与绝对温度成比例的输出转换功能,还有其他与摄氏温度和华氏温度成比例。摄氏温度部份提供一种组合以便温度能被单端补给得传感器检测。
在最大多数的应用中,这些装置的输出被装入一个比较器或A/D转换器,把温度数据转换成一个数字格式。这些附加的装置,热电阻和矽温度传感器继续被利用是由于在许多情况下它的成本低和使用方便。数字I/O温度传感器: 大约在五年前,一种新类型温度传感器出现了。这种装置包括一个允许与微控制器通信的数字接口。接口通常是12C或SMBus序列总线,但是其他的串行接口例如SPI是共用的。阅读微控制器的温度报告,接口也接受来自温控制器的指令。那些指令通常是温度极限,如果超过,将中断微控制器的温度传感器集成电路上的数字信号。微控制器然后能够调整风扇速度或减慢微处理器的速度,例如,保持温度在控制之下。
图3:设计的温度传感器可遥测处理器芯片上的p-n结温度
图4。温度传感器可检测它自己的温度和遥测四个p-n结温度。
图5。风扇控制器/温度传感器集成电路也可使用PWM或一个线性模式的控制方案。
在图4中画是一个类似的装置:而不是检测一个p-n结温度,它检测四个结和它的自己内部的温度。因此内部温度接近周围温度。周围温度的测量给出关于系统风扇是否正在适当地工作的指示。
在图5中显示,控制风扇是在遥测温度时集成电路的主要功能。这个部分的使用能在风扇控制的二个不同的模式之间选择。在PWM模式中,微处理控制风扇速度是通过改变送给风扇的信号周期者测量温度一种功能。它允许电力消耗远少于这个部分的线性模式控制所提供的。因为某些风扇在PWM信号控制它的频率下发出一种听得见的声音,这种线性模式可能是有利的,但是需要较高功率的消耗和附加的电路。额外的功耗是整个系统功耗的一小部分。
当温度超出指定界限的时候,这个集成电路提供中断微控制器的警告信号。这个被叫做过热温度的信号形式里,安全特征也被提供。如果温度升到一个危险级别的时候温控制器或软件锁上,警告信号就不再有用。然而,温度经由SMBus升高到一个水平,过热在没有微控制器被使用去控制电路。因此,在这个非逻辑控制器高温中,过热能被直接用去关闭这个系统电源,没有为控制器和阻力潜在的灾难性故障。
装置的这个数字I/O普遍使用在服务器,电池组和硬盘磁碟机上。为了增加服务器的可靠性温度在很多的位置中被检测:在主板(本质上是在底盘内部的周围温度),在处理器钢模之内,和在其它发热元件例如图形加速器和硬盘驱动器。出于安全原因电池组结合温度传感器和使其最优化已达到电池最大寿命。
检测依靠中心马达的速度和周围温度的硬盘驱动器的温度有两个号的理由:在驱动器中读取错误增加温度极限。而且硬盘的MTBF大大改善温度控制。通过测量系统里面温度,就能控制马达速度将可靠性和性能最佳化。驱动器也能被关闭。在高端系统中,警告能为系统管理员指出温度极限或数据可能丢失的状况。
图6。温度超过某一界限的时候,集成电路信号能报警和进行简单的ON/OFF风扇控制。
图7.热控制电路部分在绝对温标形式下,频率与被测温度成比例的产生方波的温度传感器
图8。这个温度传感器传送它的周期与被测温度成比例的方波,因为只发送温度数据需要一条单一线,就需要单一光绝缘体隔离信道。
模拟正温度感应器
“模拟正量”传感器通常匹配比较简单的测量应用软件。这些集成电路产生逻辑输出量来自被测温度,而且区别于数字输入/输出传感器。因为他们在一条单线上输出数据,与串行总线相对。
在一个模拟正量传感器的最简单例子中,当特定的温度被超过的时候,逻辑输出出错:其它,是当温度降到一个温度极限的时候。当其它传感器有确定的极限的时候,这些传感器中的一些允许使用电阻去校正温度极限。
在图6中,装置显示购买一个特定的内在温度极限。这三个电路举例说明这个类型装置的使用:提供警告,关闭仪器,或打开风扇。
当需要读实际温度时,微控制器是可以利用的,在单线上传送数据的传感器可能是有用的。用微处理器的内部计数器,来自于这个类型温度感应器的信号很容易地被转换成温度的测量。图7传感器输出频率与周围温度成比例的方波。在图8中的装置是相似的,但是方波周期是与周围温度成比例的。
图9。用一条公共线与8个温度传感器连接的微控制器,而且从同一条线上接收每个传感器传送的温度数据。
图9,在这条公共线上允许连接达到八个温度传感器。当微控制器的I/O端口同时关闭这根线上的所有传感器的时候,开始提取来自这些传感器的温度数据。微控制器很快地重新装载接收来的每个传感器的数据,在传感器关闭期间,数据被编码。在特定时间内每个传感器对闸口脉冲之后的时间编码。分配给每个感应器自己允许的时间范围,这样就避免冲突。
通过这个方法达到的准确性令人惊讶:0.8 是典型的室温,正好与被传送方波频率的电路相匹配,同样适用于方波周期的装置。
这些装置在有线电线应用中同样显著。举例来说,当一个温度传感器被微控制器隔离的时候,成本被保持在一个最小量,因为只需要一个光绝缘体。这些传感器在汽车制造HVAC应用中也是很有效,因为他们减少铜的损耗数量。温度传感器的发展:
集成电路温度传感器提供各式各样的功能和接口。同样地这些装置继续发展,系统设计师将会看见更多特殊应用就像传感器与系统接口连接的新方式一样。最后,在相同的钢模区域内集成更多的电子元件,芯片设计师的能力将确保温度传感器很快将会包括新的功能和特殊接口。
总结
通过这些天的查找资料,我了解了很多关于温度传感器方面的知识。我的大家都知道温度的一些基本知识,温度是一个基本的物理量,自然界中的一切过程无不与温度密切相关。利用温度所创造出来的传感器即温度传感器是最早开发,应用最广的一类传感器。并且从资料中显示温度传感器的市场份额大大超过了其他的传感器。从17世纪初人们开始利用温度进行测量。在半导体技术的支持下,在本世纪相继开发了半导体热电偶传感器、PN结温度传感器和集成温度传感器。与之相应,根据波与物质的相互作用规律,相继开发了声学温度传感器、红外传感器和微波传感器。
这些天,我通过许多的资料了解到两种不同材质的导体,如在某点互相连接在一起,对这个连接点加热,在它们不加热的部位就会出现电位差。这个电位差的数值与不加热部位测量点的温度有关,和这两种导体的材质有关。这种现象可以在很宽的温度范围内出现,如果精确测量这个电位差,再测出不加热部位的环境温度,就可以准确知道加热点的温度。由于它必须有两种不同材质的导体,所以称它为“热电偶”。我查找的资料显示数据:不同材质做出的热电偶使用于不同的温度范围,它们的灵敏度也各不相同。热电偶的灵敏度是指加热点温度变化1℃时,输出电位差的变化量。对于大多数金属材料支撑的热电偶而言,这个数值大约在5~40微伏/℃之间。
热电偶传感器有自己的优点和缺陷,它灵敏度比较低,容易受到环境干扰信号的影响,也容易受到前置放大器温度漂移的影响,因此不适合测量微小的温度变化。由于热电偶温度传感器的灵敏度与材料的粗细无关,用非常细的材料也能够做成温度传感器。也由于制作热电偶的金属材料具有很好的延展性,这种细微的测温元件有极高的响应速度,可以测量快速变化的过程。温度传感器是五花八门的各种传感器中最为常用的一种,现代的温度传感器外形非常得小,这样更加让它广泛应用在生产实践的各个领域中,也为我们的生活提供了无数的便利和功能。
温度传感器有四种主要类型:热电偶、热敏电阻、电阻温度检测器(RTD)和IC温度传感器。IC温度传感器又包括模拟输出和数字输出两种类型。接触式温度传感器的检测部分与被测对象有良好的接触,又称温度计。温度计通过传导或对流达到热平衡,从而使温度计的示值能直接表示被测对象的温度。一般测量精度较高。在一定的测温范围内,温度计也可测量物体内部的温度分布。但对于运动体、小目标或热容量很小的对象则会产生较大的测量误差,常用的温度计有双金属温度计、玻璃液体温度计、压力式温度计、电阻温度计、热敏电阻和温差电偶等。它们广泛应用于工业、农业、商业等部门。在日常生活中人们也常常使用这些温度计。随着低温技术在国防工程、空间技术、冶金、电子、食品、医药和石油化工等部门的广泛应用和超导技术的研究,测量120K以下温度的低温温度计得到了发展,如低温气体温度计、蒸汽压温度计、声学温度计、顺磁盐温度计、量子温度计、低温热电阻和低温温差电偶等。低温温度计要求感温元件体积小、准确度高、复现性和稳定性好。利用多孔高硅氧玻璃渗碳烧结而成的渗碳玻璃热电阻就是低温温度计的一种感温元件,可用于测量1.6~300K范围内的温度。
非接触式温度传感器的敏感元件与被测对象互不接触,又称非接触式测温仪表。这种仪表可以用来测量运动物体、小目标还有热容量小或温度变化迅速(瞬变)对象的表面温度,也可以用于测量温度场的温度分布。资料显示,最常用的非接触式测温仪表基于黑体辐射的基本定律,称为辐射测温仪表。辐射测温法包括亮度法、辐射法和比色法。各类辐射测温方法只能测出对应的光度温度、辐射温度或比色温度。只有对黑体所测温度才是真实温度。如果想测定物体的真实温度,就必须进行材料表面发射率的修正。而材料表面发射率不仅取绝于温度和波长,而且还与表面状态、涂膜和微观组织等有关连,因此很难精确测量。在自动化生产中我发现往往需要利用辐射测温法来测量或控制某些物体的表面温度,如冶金中的钢带轧制温度、轧辊温度、锻件温度和各种熔融金属在冶炼炉或坩埚中的温度。在这些具体情况下,物体表面发射率的测量是相当困难的。对于固体表面温度自动测量和控制,可以采用附加的反射镜使与被测表面一起组成黑体空腔。附加辐射的影响能提高被测表面的有效辐射和有效发射系数。利用有效发射系数通过仪表对实测温度进行相应的修正,最终可得到被测表面的真实温度。最为典型的附加反射镜是半球反射镜。球中心附近被测表面的漫射辐射能受半球镜反射回到表面而形成附加辐射,这样才能提高有效发射系数。至于气体和液体介质真实温度的辐射测量,则可以用插入耐热材料管至一定深度以形成黑体空腔的方法。通过计算求出与介质达到热平衡后的圆筒空腔的有效发射系数。在自动测量和控制中就可以用此值对所测腔底温度(即是介质温度)进行修正而得到介质的真实温度。现在,我通过这些天的努力,了解了很多温度传感器及其相关的一些传感器的知识。他们在我们生活中的应用及其广泛,我们只有加紧的学习加紧的完成自己所学专业的知识,了解相关的最新信息,我们才能跟上科技前进的步伐。
参考文献:
【1】刘君华.智能传感器系统.西安电子科技大学出版社,1993.3 【2】张富学.传感器电子学.国防工业电子出版社,1992.6 【3】王家桢等.传感器与变送器[M].北京清华出版社1996.5 【4】张正伟.传感器原理与应用[M].中央广播电视大学出版社,1991.3 【5】樊尚春.传感器技术及应用.北京航空航天大学出版社,2004.8 【6】赵负图.现代传感器集成电路.人民邮电出版社,2000.8 【7】谢文和.传感器技术及应用.高等教育出版社,2004.7 【8】赵继文.传感器与应用电路设计[M].科技出版社,2002.6 【9】陈杰,黄鸿.传感器与检测技术.高等教育出版社,2002.3 【10】黄继昌,徐巧鱼,张海贵等.传感器工作原理及应用实例.人民邮电出版社,1998.6
第五篇:2011基于18B20温度传感器论文
基于单片机18B20的温度计设计
摘要:文章主要介绍有关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();//显示温度 } }