DSB传感器温测量课程设计报告Word下载.docx
- 文档编号:19168991
- 上传时间:2023-01-04
- 格式:DOCX
- 页数:19
- 大小:320.22KB
DSB传感器温测量课程设计报告Word下载.docx
《DSB传感器温测量课程设计报告Word下载.docx》由会员分享,可在线阅读,更多相关《DSB传感器温测量课程设计报告Word下载.docx(19页珍藏版)》请在冰豆网上搜索。
在温度测量系统中,也常采用单片温度传感器,比如AD590,LM35等。
但这些芯片输出的都是模拟信号,必须经过A/D转换后才能送给计算机,这样就使测温系统的硬件结构较复杂。
另外,这种测温系统难以实现多点测温,也要用到复杂的算法,一定程度上也增加了软件实现的难度。
方案二:
采用单总线数字温度传感器DS18B20测量温度,直接输出数字信号。
便于单片机处理及控制,节省硬件电路。
且该芯片的物理化学性很稳定,此元件线形性能好,在0—100摄氏度时,最大线形偏差小于1摄氏度。
DS18B20的最大特点之一采用了单总线的数据传输,由数字温度计DS18B20和微控制器AT89C51构成的温度装置,它直接输出温度的数字信号到微控制器。
每只DS18B20具有一个独有的不可修改的64位序列号,根据序列号可访问不同的器件。
这样一条总线上可挂接多个DS18B20传感器,实现多点温度测量,轻松的组建传感网络。
综上分析,我们选用第二种方案。
2、显示模块
采用8位段数码管,将单片机得到的数据通过数码管显示出来。
该方案简单易行,但所需的元件较多,且不容易进行操作,可读性差,一旦设定后很难再加入其他的功能,显示格式受限制,且大耗电量大,不宜用电池给系统供电。
采用液晶显示器件,液晶显示平稳、省电、美观,更容易实现题目要求,对后续的园艺通兼容性高,只需将软件作修改即可,可操作性强,也易于读数,采用RT1602两行十六个字符的显示,能同时显示其它的信息如日期、时间、星期、温度。
综上分析,我们采用了第二个方案。
3、微控制器模块
温度传感器有四种主要类型:
热点偶、热敏电阻、电阻温度检测器、IC温度传感器。
其中IC温度传感器又包括模拟输出和数字输出两种类型。
热电偶应用很广泛,因为它们非常坚固而且不太贵。
热电偶有多种类型,它们覆盖非常宽的温度范围,从-200℃到2000℃。
它们的特点是:
低灵敏度、低稳定性、中等精度、响应速度慢、高温下容易老化和有漂移,以及非线性。
另外,热电偶需要外部参考端。
电阻温度检测器精度极高且具有中等线性度。
它们特别稳定,并有许多种配置。
但它们的最高工作温度只能达到400℃左右。
它们也有很大的TC,且价格昂贵(是热电偶的4~10倍),并且需要一个外部参考源。
模拟输出IC温度传感器具有很高的线性度(如果配合一个模数转换器或ADC可产生数字输出)、低成本、高精度(大约1%)、小尺寸和高分辨率。
它们的不足之处在于温度范围有限(-55℃~+150℃),并且需要一个外部参考源。
数字输出IC温度传感器带有一个内置参考源,它们的响应速度也相当慢(100ms数量级)。
虽然它们固有地会自身发热,但可以采用自动关闭和单次转换模式使其在需要测量之前将IC设置为低功耗状态,从而将自身发热降到最低。
综上方案的比较,数字输出IC温度传感器与热敏电阻、RTD和热电偶传感器相比,具有很高的线性,而且由于技术比较成熟,集成复杂的功能,成本也较低,能够提供一个数字输出,省去A/D转化器的使用,有效较低了系统成本,提高系统稳定性,并能够在一个相当有用的范围内进行温度测量。
本实验采用DS18B20作为温度传感器
二、系统的具体设计与实现
1、系统的总体设计方案
采用AT89S52单片机作为控制核心对温度传感器DS18B20控制,读取温度信号并进行计算处理,并送到液晶显示器RT1602显示。
按照系统设计功能的要求,确定系统由3个模块组成:
主控制器、测温电路和显示电路。
数字温度计总体电路结构框图如图5所示。
图5电路结构框图
2、硬件电路设计
(1)、单片机控制模块
该模块由AT89S52单片机组成在设计方面,AT89S52的EA接高电平,其外围电路提供能使之工作的晶振脉冲、复位按键,四个I/O分别接8路的单列IP座方便与外围设备连接。
当AT89S52芯片接到来自温度传感器的信号时,其内部程序将根据信号的类型进行处理,并且将处理的结果送到显示模块,发送控制信号控制各模块。
该模块的硬件电路如下图
(2)温度传感器模块
DS18B20相关资料
1、DS18B20原理与分析
DS18B20是美国DALLAS半导体公司继DS1820之后最新推出的一种改进型智能温度传感器。
与传统的热敏电阻相比,它能够直接读出被测温度并且可根据实际要求通过简单的编程实现9~12位的数字值读数方式。
可以分别在93.75ms和750ms内完成9位和12位的数字量,并且从DS18B20读出的信息或写入DS18B20的信息仅需要一根口线(单线接口)读写,温度变换功率来源于数据总线,总线本身也可以向所挂接的DS18B20供电,而无需额外电源。
因而使用DS18B20可使系统结构更趋简单,可靠性更高。
他在测温精度、转换时间、传输距离、分辨率等方面较DS1820有了很大的改进,给用户带来了更方便的使用和更令人满意的效果。
以下是DS18B20的特点:
(1)独特的单线接口方式:
DS18B20与微处理器连接时仅需要一条口线即可实现微处理器与DS18B20的双向通讯。
(2)在使用中不需要任何外围元件。
(3)可用数据线供电,电压范围:
+3.0~+5.5V。
(4)测温范围:
-55-+125℃。
固有测温分辨率为0.5℃。
(5)通过编程可实现9-12位的数字读数方式。
(6)用户可自设定非易失性的报警上下限值。
(7)支持多点组网功能,多个DS18B20可以并联在惟一的三线上,实现多点测温。
(8)负压特性,电源极性接反时,温度计不会因发热而烧毁,但不能正常工作。
2、DS18B20的测温原理
DS18B20的测温原理上图所示,图中低温度系数晶振的振荡频率受温度的影响很小,用于产生固定频率的脉冲信号送给减法计数器1,高温度系数晶振随温度变化其震荡频率明显改变,所产生的信号作为减法计数器2的脉冲输入,图中还隐含着计数门,当计数门打开时,DS18B20就对低温度系数振荡器产生的时钟脉冲后进行计数,进而完成温度测量。
计数门的开启时间由高温度系数振荡器来决定,每次测量前,首先将-55℃所对应的基数分别置入减法计数器1和温度寄存器中,减法计数器1和温度寄存器被预置在-55℃所对应的一个基数值。
减法计数器1对低温度系数晶振产生的脉冲信号进行减法计数,当减法计数器1的预置值减到0时温度寄存器的值将加1,减法计数器1的预置将重新被装入,减法计数器1重新开始对低温度系数晶振产生的脉冲信号进行计数,如此循环直到减法计数器2计数到0时,停止温度寄存器值的累加,此时温度寄存器中的数值即为所测温度。
图中的斜率累加器用于补偿和修正测温过程中的非线性,其输出用于修正减法计数器的预置值,只要计数门仍未关闭就重复上述过程,直至温度寄存器值达到被测温度值,这就是DS18B20的测温原理。
另外,由于DS18B20单线通信功能是分时完成的,他有严格的时隙概念,因此读写时序很重要。
系统对DS18B20的各种操作必须按协议进行。
操作协议为:
初始化DS18B20(发复位脉冲)→发ROM功能命令→发存储器操作命令→处理数据。
DS18B20工作过程及时序
DS18B20内部的低温度系数振荡器是一个振荡频率随温度变化很小的振荡器,为计数器1提供一频率稳定的计数脉冲。
高温度系数振荡器是一个振荡频率对温度很敏感的振荡器,为计数器2提供一个频率随温度变化的计数脉冲。
初始时,温度寄存器被预置成-55℃,每当计数器1从预置数开始减计数到0时,温度寄存器中寄存的温度值就增加1℃,这个过程重复进行,直到计数器2计数到0时便停止。
初始时,计数器1预置的是与-55℃相对应的一个预置值。
以后计数器1每一个循环的预置数都由斜率累加器提供。
为了补偿振荡器温度特性的非线性性,斜率累加器提供的预置数也随温度相应变化。
计数器1的预置数也就是在给定温度处使温度寄存器寄存值增加1℃计数器所需要的计数个数。
DS18B20内部的比较器以四舍五入的量化方式确定温度寄存器的最低有效位。
在计数器2停止计数后,比较器将计数器1中的计数剩余值转换为温度值后与0.25℃进行比较,若低于0.25℃,温度寄存器的最低位就置0;
若高于0.25℃,最低位就置1;
若高于0.75℃时,温度寄存器的最低位就进位然后置0。
这样,经过比较后所得的温度寄存器的值就是最终读取的温度值了,其最后位代表
0.5℃,四舍五入最大量化误差为±
1/2LSB,即0.25℃。
温度寄存器中的温度值以9位数据格式表示,最高位为符号位,其余8位以二进制补码形式表示温度值。
测温结束时,这9位数据转存到暂存存储器的前两个字节中,符号位占用第一字节,8位温度数据占据第二字节。
DS18B20测量温度时使用特有的温度测量技术。
DS18B20内部的低温度系数振荡器能产生稳定的频率信号;
同样的,高温度系数振荡器则将被测温度转换成频率信号。
当计数门打开时,DS18B20进行计数,计数门开通时间由高温度系数振荡器决定。
芯片内部还有斜率累加器,可对频率的非线性度加以补偿。
测量结果存入温度寄存器中。
一般情况下的温度值应该为9位,但因符号位扩展成高8位,所以最后以16位补码形式读出。
DS18B20工作过程一般遵循以下协议:
初始化——ROM操作命令——存储器操作命令——处理数据
①初始化
单总线上的所有处理均从初始化序列开始。
初始化序列包括总线主机发出一复位脉冲,接着由从属器件送出存在脉冲。
存在脉冲让总线控制器知道DS1820在总线上且已准备好操作。
②ROM操作命令
一旦总线主机检测到从属器件的存在,它便可以发出器件ROM操作命令之一。
所有ROM操作命令均为8位长。
这些命令列表如下:
ReadROM(读ROM)[33h]
此命令允许总线主机读DS18B20的8位产品系列编码,唯一的48位序列号,以及8位的CRC。
此命令只能在总线上仅有一个DS18B20的情况下可以使用。
如果总线上存在多于一个的从属器件,那么当所有从片企图同时发送时将发生数据冲突的现象(漏极开路会产生线与的结果)。
MatchROM(符合ROM)[55h]
此命令后继以64位的ROM数据序列,允许总线主机对多点总线上特定的DS18B20寻址。
只有与64位ROM序列严格相符的DS18B20才能对后继的存贮器操作命令作出响应。
所有与64位ROM序列不符的从片将等待复位脉冲。
此命令在总线上有单个或多个器件的情况下均可使用。
SkipROM(跳过ROM)[CCh]
在单点总线系统中,此命令通过允许总线主机不提供64位ROM编码而访问存储器操作来节省时间。
如果在总线上存在多于一个的从属器件而且在SkipROM命令之后发出读命令,那么由于多个从片同时发送数据,会在总线上发生数据冲突(漏极开路下拉会产生线与的效果)。
SearchROM(搜索ROM)[F0h]
当系统开始工作时,总线主机可能不知道单线总线上的器件个数或者不知道其64位ROM编码。
搜索ROM命令允许总线控制器用排除法识别总线上的所有从机的64位编码。
AlarmSearch(告警搜索)[ECh]
此命令的流程与搜索ROM命令相同。
但是,仅在最近一次温度测量出现告警的情况下,DS18B20才对此命令作出响应。
告警的条件定义为温度高于TH或低于TL。
只要DS18B20一上电,告警条件就保持在设置状态,直到另一次温度测量显示出非告警值或者改变TH或TL的设置,使得测量值再一次位于允许的范围之内。
贮存在EEPROM内的触发器值用于告警。
③存储器操作命令
WriteScratchpad(写暂存存储器)[4Eh]
这个命令向DS18B20的暂存器中写入数据,开始位置在地址2。
接下来写入的两个字节将被存到暂存器中的地址位置2和3。
可以在任何时刻发出复位命令来中止写入。
ReadScratchpad(读暂存存储器)[BEh]
这个命令读取暂存器的内容。
读取将从字节0开始,一直进行下去,直到第9(字节8,CRC)字节读完。
如果不想读完所有字节,控制器可以在任何时间发出复位命令来中止读取。
CopyScratchpad(复制暂存存储器)[48h]
这条命令把暂存器的内容拷贝到DS18B20的E2存储器里,即把温度报警触发字节存入非易失性存储器里。
如果总线控制器在这条命令之后跟着发出读时间隙,而DS18B20又正在忙于把暂存器拷贝到E2存储器,DS18B20就会输出一个“0”,如果拷贝结束的话,DS18B20则输出“1”。
如果使用寄生电源,总线控制器必须在这条命令发出后立即起动强上拉并最少保持10ms。
ConvertT(温度变换)[44h]
这条命令启动一次温度转换而无需其他数据。
温度转换命令被执行,而后DS18B20保持等待状态。
如果总线控制器在这条命令之后跟着发出读时间隙,而DS18B20又忙于做时间转换的话,DS18B20将在总线上输出“0”,若温度转换完成,则输出“1”。
如果使用寄生电源,总线控制器必须在发出这条命令后立即起动强上拉,并保持500ms。
RecallE2(重新调整E2)[B8h]
这条命令把贮存在E2中温度触发器的值重新调至暂存存储器。
这种重新调出的操作在对DS18B20上电时也自动发生,因此只要器件一上电,暂存存储器内就有了有效的数据。
在这条命令发出之后,对于所发出的第一个读数据时间片,器件会输出温度转换忙的标识:
“0”=忙,“1”=准备就绪。
ReadPowerSupply(读电源)[B4h]
对于在此命令发送至DS18B20之后所发出的第一读数据的时间片,器件都会给出其电源方式的信号:
“0”=寄生电源供电,“1”=外部电源供电。
④处理数据
DS18B20的高速暂存存储器由9个字节组成,其分配如图3所示。
当温度转换命令发布后,经转换所得的温度值以二字节补码形式存放在高速暂存存储器的第0和第1个字节。
单片机可通过单线接口读到该数据,读取时低位在前,高位在后。
DS18B20温度数据表
上表是DS18B20温度采集转化后得到的12位数据,存储在DS18B20的两个8比特的RAM中,二进制中的前面5位是符号位,如果测得的温度大于或等于0,这5位为0,只要将测到的数值乘于0.0625即可得到实际温度;
如果温度小于0,这5位为1,测到的数值需要取反加1再乘于0.0625即可得到实际温度。
温度转换计算方法举例:
例如当DS18B20采集到+125℃的实际温度后,输出为07D0H,则:
实际温度=07D0H╳0.0625=2000╳0.0625=1250C。
例如当DS18B20采集到-55℃的实际温度后,输出为FC90H,则应先将11位数据位取反加1得370H(符号位不变,也不作为计算),则:
实际温度=370H╳0.0625=880╳0.0625=550C。
(3)显示模块
六、软件设计
系统程序主要包括主程序、读出温度子程序、温度转换子程序、计算温度子程序、显示等等。
1.主程序
主要功能是完成DS18B20的初始化工作,并进行读温度,将温度转化成为压缩BCD码
并在显示器上显示传感器所测得的实际温度。
2.读出温度子程序
读出温度子程序的主要功能是读出RAM中的9字节,在读出时需要进行CRC校验,校验有错时不进行温度数据的改写。
其程序流程图如图2所示。
3.温度转换命令子程序
温度转换命令子程序主要是发温度转换开始命令,当采用12位分辩率时转换时间约为750ms,在本程序设计中采用1s显示程序延时法等待转换的完成。
温度转换命令子程序流程图如图3所示。
4.计算温度子程序
计算温度子程序将RAM中读取值进行BCD码的转换运算,并进行温度值正负的判定,其流程图如图4所示。
图1主程序流程图
图2读出温度子程序流程图
图3温度转换命令子程序流程图
图4计算温度子程序流程图
完整程序如下:
;
温度传感器18B20采用器件默认的12位转化,最大转化时间要750毫秒
内存分配声明
TEMPER_LEQU31H;
用于保存读出温度的低字节
TEMPER_HEQU30H;
用于保存读出温度的高字节
T_DFEQU33H;
FORMAT后的小数部分(decimalfraction),半字节的温度小数(存在低四位)
T_INTEGEREQU32H;
FORMAT后的整数部分(integer),将两字节的温度整合成1字节
FLAGBIT20H;
标志位
DATBITP1.4;
DS18B20数据线
------------------------------主函数开始-----------------------------
ORG0000H
AJMPMAIN
ORG0030H
MAIN:
CLREA;
使用DS18B20一定要禁止中断
MOVSP,#60H
MOVT_DF,#00H;
赋初始温度为30度
MOVT_INTEGER,#30H
START:
LCALLGET_TEMPER;
调用读温度子程序
LCALLT_FORMAT;
将读出的2字节温度格式化,并转换为压缩BCD码
LCALLDISPLAY;
显示温度
AJMPSTART
-----------------------DS18B20的温度转换子程序-----------------------
GET_TEMPER:
LCALLSet_18B20
MOVA,#0CCH;
跳过ROM匹配
LCALLWRITE_1820
MOVA,#44H;
发出温度转换命令
用显示温度(持续1s左右)来等待AD转换结束,12位的话要转换750ms
LCALLSet_18B20;
准备读温度前先初始化
MOVA,#0BEH;
发出读温度命令
LCALLREAD_1820
RET
--------------------------DS18B20初始化程序--------------------------
Set_18B20:
SETBDAT
NOP
CLRDAT
MOVR2,#250;
主机发出延时500微秒的复位低脉冲
DJNZR2,$
SETBDAT;
然后拉高数据线
MOVR2,#30
DJNZR2,$;
延时60us等待DS18B20回应
JNBDAT,INIT1
JMPSet_18B20;
超时而没有响应,重新初始化
INIT1:
MOVR2,#120
延时240us
JBDAT,INIT2;
数据变高,初始化成功
JMPSet_18B20
INIT2:
MOVR2,#240
-----------------写DS18B20的子程序(有具体的时序要求)-----------------
WRITE_1820:
MOVR2,#8;
一共8位数据
WR0:
MOVR3,#6
DJNZR3,$
RRCA
MOVDAT,C
MOVR3,#20
DJNZR2,WR0
------读DS18B20的程序,从DS18B20中读出两个字节的温度数据--------------------------
READ_1820:
MOVR4,#2;
将温度高位和低位从DS18B20中读出
MOVR1,#TEMPER_L;
低位存入31H(TEMPER_L)
RE0:
MOVR2,#8
RE1:
MOVR3,#4
MOVC,DAT
MOVR3,#30
DJNZR2,RE1
MOV@R1,A
DECR1;
高位存入30H(TEMPER_H)
DJNZR4,RE0
----------整合读出的两字节温度(关于DS18B20读出的2字节温度格式请参考资料)----------
T_FORMAT:
MOVA,#0FH
ANLA,TEMPER_L
MOVT_DF,A;
获得小数部分(4位)
MOVA,TEMPER_L
SWAPA
MOV@R0,A
MOVA,TEMPER_H
XCHDA,@R0
MOVT_INTEGER,A;
获得整数部分(1字节)
TO_BCD:
MOVA,T_INTEGER
MOVB,#10
DIVAB
ADDA,B
整数部分压缩BCD码送T_INTEGER
MOVA,T_DF
MULAB
MOVB,#16
MOVR2,A;
暂存R2
MOVA,B
MUL
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- DSB 传感器 测量 课程设计 报告