DS18B20温度计设计论文Word文档格式.docx
《DS18B20温度计设计论文Word文档格式.docx》由会员分享,可在线阅读,更多相关《DS18B20温度计设计论文Word文档格式.docx(36页珍藏版)》请在冰点文库上搜索。
1.5V供电;
2.温度采集采用DS18B20;
3.4位LED显示;
4.2个按键;
5.设计温度控制器原理图,学习用PROTEL画出该原理图,并用proteus进行仿真;
设计和绘制软件流程图,用C语言进行程序编写;
焊接硬件电路,进行调试。
1.2温度测量的方案与分析
1.2.1芯片简介
(1)适应电压范围更宽,电压范围:
3.0V~5.5V,在寄生电源方式下可由数据线供电。
(2)独特的单线接口方式,DS18B20在与微处理器连接时仅需要一条口线即可实现微处理器与DS18B20的双向通讯。
(3)DS18B20在使用中不需要任何外围原件,全部传感元件及转换电路集成在形成一只三极管的集成电路内。
(4)测温范围—55℃~+125℃时精度为±
0.5℃.
(5)可编程的分辨率为9~12位,对应的可分辨温度分别为0.5℃,0.25℃,0.125℃,0.0625℃,可实现高精度测温。
(6)在9位分辨率时最多在93.75ms内把温度转换为数字,12位分辨率时最多在750ms内把温度值转换数字,速度更快。
(7)测量结果直接输出数字温度信号,以“一线总线”串行传送给CPU同时可传送CRC效验码,具有极强的抗干扰纠错能力。
(8)负压特性:
电源极性接反时,芯片不会因为发热而烧毁,但不能正常工作。
1.2.2芯片选择
本设计的测温系统采用芯片DS18B20,DS18B20是DALLAS公司的最新单线数字温度传感器,它的体积更小、适用电压更宽、更经济,DS18B20是世界上第一片支持“一线总线”接口的温度传感器,具有一线总线独特而且经济的特点。
采用智能温度传感器DS18B20作为检测元件,测温范围-55℃~+125℃,最大分辨率可达0.0625℃。
DS18B20可以直接读出被测量的温度值,而且采用3线制与单片机相连,减少了外部的硬件电路,具有低成本和易使用的特点。
1.3系统的设计原则
一般系统的设计原则包含安全性(稳定抗干扰性),操作的便利性(人性化),实时性,通用性和经济性。
(1)安全可靠
首先要选用高性能的AT89S52单片机,保证在恶劣的工业环境下能正常运行。
其次是设计可靠的控制方案,并具有各种安全保护措施,如报警、事故预测、事故处理和不间断电源等。
(2)操作维护方便
操作方便表现在操作简单、直观形象和便于掌握且不强求操作工要掌握计算机知识才能操作。
(3)实时性强
选用高性能的AT89C51单片机的实时性,表现在内部和外部事件能及时地响应,并做出相应的处理。
(4)通用性好
系统设计时应考虑能适应不同的设备和各种不同设备和各种不同控制对象,并采用积木式结构,按照控制要求灵活构成系统。
主要表现在两个方面:
一是硬件板设计采用标准总线结构(如PC总线),配置各种通用的模板,以便扩充功能时,只需增加功能模板就能实现;
二是软件功能模块或控制算法采用标准模块结构,用户使用时不需要二次开发,只需各种功能模块,灵活地进行控制系统组态。
(5)经济效益高
第二章硬件设计
2.1主要器件说明
2.1.1主控制器
单片机AT89S51具有低电压供电和体积小等特点,四个端口只需要两个口就能满足电路系统的设计需要,很适合便携手持式产品的设计使用系统可用二节电池供电。
如图2.1所示。
主要特性:
·
与MCS-51兼容
4K字节可编程闪烁存储器
寿命:
1000写/擦循环
数据保留时间:
10年
全静态工作:
0Hz-24Hz
三级程序存储器锁定
128*8位内部RAM
32可编程I/O线
两个16位定时器/计数器
5个中断源
可编程串行通道
低功耗的闲置和掉电模式图2.1
片内振荡器和时钟电路
2.1.2显示器
显示电路采用4位共阳LED数码管,利用动态扫描方式,从P2口输出段码,P1口的P1.0、P1.1、P1.2,P1.3输出位码。
(1)LED数码有共阳和共阴两种,把这些LED发光二极管的正极接到一块(一般是拼成一个8字加一个小数点)而作为一个引脚,为共阳管。
如下图2.2、2.3所示:
图2.2图2.3
2.1.3温度传感器
DS18B20温度传感器是采用美国DALLAS公司生产的DS18B20可组网数字温度传感器芯片,经焊接,外加不锈钢保护管封装而成,具有耐磨耐碰,体积小,使用方便,封装形式多样,适用于各种狭小空间设备数字测温和控制领域,并且可根据实际要求通过简单的编程实现9~12位的数字值读数方式。
1.技术性能描述
*独特的单线接口方式,DS1820在与微处理器连接时仅需要一条口线即可实现微处理器与DS1820的双向通讯,在使用中不需要任何外围元件。
*测温范围-55℃~+125℃,固有测温分辨率0.5℃。
-
*支持多点组网功能,多个DS1820可以并联在唯一的三线上,实现多点测温。
*工作电源:
3~5V/DC
*测量结果以9位数字量方式串行传送。
*不锈钢保护管直径
Φ6
*适用于1/2”,3/4”,1”,DN40~DN250各种介质工业管道和狭小空间设备测温
2.应用范围
*
该产品适用于冷冻库,粮仓,储罐,电讯机房,电力机房,电缆线槽等测温和控制领域
供热/制冷管道热量计量,中央空调分户热能计量和工业领域测温和控制
3.DS18B20的性能特点如下:
*独特的单线接口仅需要一个端口引脚进行通信;
*多个DS18B20可以并联在惟一的三线上,实现多点组网功能;
*无须外部器件;
*可通过数据线供电,电压范围为3.0~5.5V;
*零待机功耗;
*温度以9或12位数字;
*用户可定义报警设置;
*负电压特性,电源极性接反时,温度计不会因发热而烧毁,但不能正常工作;
DS18B20采用3脚PR-35封装或8脚SOIC封装,其内部结构框图如图2.4所示。
图2.4DS18B20内部结构
DS18B20内部结构主要由四部分组成:
64位光刻ROM、温度传感器、非挥发的
温度报警触发器TH和TL、配置寄存器。
DS18B20的管脚排列如图2.5所示:
图2.5
DS18B20温度传感器的内部存储器还包括一个高速暂存RAM和一个非易失性的可电擦除的EERAM。
高速暂存RAM的结构为8字节的存储器,结构如图2.6所示。
头2个字节包含测得的温度信息,第3和第4字节TH和TL的拷贝,是易失的,每次上电复位时被刷新。
第5个字节,为配置寄存器,它的内容用于确定温度值的数字转换分辨率。
DS18B20工作时寄存器中的分辨率转换为相应精度的温度数值。
该字节各位的定义如图2.7所示。
低5位一直为1,TM是工作模式位,用于设置DS18B20在工作模式还是在测试模式,DS18B20出厂时该位被设置为0,用户要去改动,R1和R0决定温度转换的精度位数,来设置分辨率。
由表2.1可见,DS18B20温度转换的时间比较长,而且分辨率越高,所需要的温度数据转换时间越长。
因此,在实际应用中要将分辨率和转换时间权衡考虑。
表2.1DS18B20温度转换时间表
R1
R0
分辨率/位
温度最大转换时间/MS
9
93.75
1
10
187.5
11
375
12
750
高速暂存RAM的第6、7、8字节保留未用,表现为全逻辑1。
第9字节读出前面所有8字节的CRC码,可用来检验数据,从而保证通信数据的正确性。
当DS18B20接收到温度转换命令后,开始启动转换。
转换完成后的温度值就以16位带符号扩展的二进制补码形式存储在高速暂存存储器的第1、2字节。
单片机可以通过单线接口读出该数据,读数据时低位在先,高位在后,数据格式以0.0625℃/LSB式表示。
当符号位S=0时,表示测得的温度值为正值,可以直接将二进制位转换为十进制;
当符号位S=1时,表示测得的温度值为负值,要先将补码变成原码,再计算十进制数值。
表2是一部分温度值对应的二进制温度数据。
DS18B20完成温度转换后,就把测得的温度值与RAM中的TH、TL字节内容作比较。
若T>TH或T<TL,则将该器件内的报警标志位置位,并对主机发出的报警搜索命令做出响应。
因此,可用多只DS18B20同时测量温度并进行报警搜索。
在64位ROM的最高有效字节中存储有循环冗余检验码(CRC)。
主机ROM的前56位来计算CRC值,并和存入DS18B20的CRC值作比较,以判断主机收到的ROM数据是否正确。
另外,由于DS18B20单线通信功能是分时完成的,它有严格的时隙概念,因此读写时序很重要。
系统对DS18B20的各种操作按协议进行。
操作协议为:
初使化DS18B20(发复位脉冲)→发ROM功能命令→发存储器操作命令→处理数据。
分别说明如下:
(1)初始化单总线的所有处理均从初始化开始。
初始化过程是主机通过向作为从机的DS18B20芯片发一个有时间宽度要求的初始化脉冲实现的。
初始化后,才可进行读写操作。
(2)ROM操作命令总线主机检测到DS18B20的存在便可以发出ROM操作命令之一这些命令表2.2:
表2.2ROM操作命令
指令
代码
ReadROM(读ROM)
[33H]
MatchROM(匹配ROM)
[55H]
SkipROM(跳过ROM)
[CCH]
SearchROM(搜索ROM)
[F0H]
Alarmsearch(告警搜索)
[ECH]
(3)存储器操作命令如表2.3:
表2.3存储器操作命令
指令
代码
WriteScratchpad(写暂存存储器)
[4EH]
ReadScratchpad(读暂存存储器)
[BEH]
CopyScratchpad(复制暂存存储器)
[48H]
ConvertTemperature(温度变换)
[44H]
RecallEPROM(重新调出)
[B8H]
ReadPowersupply(读电源)
[B4H]
(4)时序主机使用时间隙(timeslots)来读写DS18B20的数据位和写命令字的位
①初始化
图2.7初始化时序
时序见图2.7,主机总线to时刻发送一复位脉冲(最短为480us的低电平信号),接着在tl时刻释放总线并进入接收状态。
DS18B20在检测到总线的上升沿之后等待15-60us,接着DS18B20在t2时刻发出存在脉冲(低电平持续60-240us)。
如图中虚线所示:
②写时间隙
图2.8.1写0时序图2.8.2写1时序
当主机总线to时刻从高拉至低电平时,就产生写时间隙见图2.8.1和图2.8.2。
从to时刻开始15us之内应将所需写的位送到总线上,DSl820在to后15-60us间对总线采样。
若低电平,写入的位是0。
见图2.5.1。
若高电平写入的位是1见图2.5.2。
连续写2位间的间隙应大于1us。
③读时间隙
见图2.9,主机总线to时刻从高拉至低电平时,总线只须保持低电平lus。
之后在t1时刻将总线拉高,产生读时间隙,读时间隙在t1时刻后t2时刻前有效,t2距to为15us。
也就是说t2时刻前主机必须完成读位,并在to后的60us一120us内释放总线,读位子程序(读得的位到C中)。
图2.9读时序
DSl820多路测量简介
图2.10DSl820原理框图
每一片DSl820在其ROM中都存有其唯一的48位序列号,出厂前已写入片内ROM中,主机在进入操作程序前必须逐一接入DS18B20用读ROM(33H)命令将该DS18B20的序列号读出并登录。
当主机需要对众多在线DS18B20的某一个进行操作时,首先要发出匹配ROM命令(55H),紧接着主机提供64位序列(包括该DS18B20的48位序列号)。
之后的操作就是针对该DS18B20的。
而所谓跳过ROM命令即:
MOVA,#0CCH。
图2.10中先有跳过ROM,即是启动所有DS18B20进行温度变换,之后通过匹配ROM再逐一地读回每个DS18B20的温度数据。
在DS18B20组成的测温系统中,主机在发出跳过ROM命令之后,再发出统一的温度转换启动码44H,就可以实现所有DS18B20的统一转换,再经过1s后,就可以用很少的时间去逐一读取。
这种方式使其T值往往小于传统方式。
(由于采取公用的放大电路和A/D转换器只能逐一转换)。
显然通道数越多,这种省时效应就越明显。
DS1820使用中注意事项:
DS1820虽然具有测温系统简单、测温精度高、连接方便、占用口线少等优点,但在实际应用中也应注意以下几方面的问题:
(1)较小的硬件开销需要相对复杂的软件进行补偿,由于DS1820与微处理器间采用串行数据传送,因此,在对DS1820进行读写编程时,必须严格的保证读写时序,否则将无法读取测温结果。
在使用PL/M、C等高级语言进行系统程序设计时,对DS1820操作部分最好采用汇编语言实现。
(2)在DS1820的有关资料中均未提及单总线上所挂DS1820数量问题,容易使人误认为可以挂任意多个DS1820,在实际应用中并非如此。
当单总线上所挂DS1820超过8个时,就需要解决微处理器的总线驱动问题,这一点在进行多点测温系统设计时要加以注意。
(3)连接DS1820的总线电缆是有长度限制的。
试验中,当采用普通信号电缆传输长度超过50m时,读取的测温数据将发生错误。
当将总线电缆改为双绞线带屏蔽电缆时,正常通讯距离可达150m,当采用每米绞合次数更多的双绞线带屏蔽电缆时,正常通讯距离进一步加长。
这种情况主要是由总线分布电容使信号波形产生畸变造成的。
因此,在用DS1820进行长距离测温系统设计时要充分考虑总线分布电容和阻抗匹配问题。
(4)在DS1820测温程序设计中,向DS1820发出温度转换命令后,程序总要等待DS1820的返回信号,一旦某个DS1820接触不好或断线,当程序读该DS1820时,将没有返回信号,程序进入死循环。
这一点在进行DS1820硬件连接和软件设计时也要给予一定的重视。
测温电缆线建议采用屏蔽4芯双绞线,其中一对线接地线与信号线,另一组接VCC和地线,屏蔽层在源端单点接地。
2.2各部分电路说明
2.2.1单片机控制部分
在本设计中,采用了AT89C51单片机作为本电路的核心电路的设计。
AT89C51是一种带4K字节闪烁可编程可擦除只读存储器(FPEROM—FalshProgrammableandErasableReadOnlyMemory)的低电压,高性能CMOS8位微处理器,俗称单片机。
AT89C2051是一种带2K字节闪烁可编程可擦除只读存储器的单片机。
单片机的可擦除只读存储器可以反复擦除100次。
该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。
由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器,AT89C2051是它的一种精简版本。
AT89C单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。
(1)振荡器特性:
XTAL1和XTAL2的反向放大器的输入和输出。
该反向放大器可以配置为片内振荡器。
石晶振荡和陶瓷振荡均可采用。
如采用外部时钟源驱动器件,XTAL2应不接。
有余输入至内部时钟信号要通过一个二分频触发器,因此对外部时钟信号的脉宽无任何要求,但必须保证脉冲的高低电平要求的宽度。
(2)单片机芯片的擦除:
整个PEROM阵列和三个锁定位的电擦除可通过正确的控制信号组合,并保持ALE管脚处于低电平10ms来完成。
在芯片擦操作中,代码阵列全被写“1”且在任何非空存储字节被重复编程以前,该操作必须被执行。
AT89C51的稳态逻辑可以在低到零频率的条件下静态逻辑,支持两种软件可选的掉电模式。
在闲置模式下,CPU停止工作。
但RAM,定时器,计数器,串口和中断系统仍在工作。
在掉电模式下,保存RAM的内容并且冻结振荡器,禁止所用其他芯片功能,直到下一个硬件复位为止。
(3)单片机的时钟电
图2.12片内振荡电路的时钟电路
AT89C51单片机内部的振荡电路是一个高增益反向放大器,引线XTAL1和XTAL2分别是放大器的输入端和输出端。
单片机内部虽然有振荡电路,但要形成时钟,外部还需附加电路。
AT89C51的时钟产生方式有两种:
内部时钟电方式和外部时钟方式。
由于外部时钟方式用于多片单片机组成的系统中,所以此处选用内部时钟方式。
即利用其内部的振荡电路在XTAL1和XTAL2引线上外接定时元件,内部振荡电路产生自激振荡。
最常用的是在XTAL1和XTAL2之间接晶体振荡器与电路构成稳定的自激振荡器,如图2.13电路所示为单片机最常用的时钟振荡电路的接法,其中晶振可选用振荡频率为6MHz的石英晶体,电容器一般选择30PF左右。
(4)单片机的复位电路
图2.13AT89C51的复位电路
本设计中AT89C51是采用上电自动复位和按键复位两种方式。
最简单的复位电路如图2.13所示。
上电瞬间,RC电路充电,RST引线端出现正脉冲,只要RST端保持10ms以上的高电平,就能使单片机有效地复位。
其中R1和R2分别选择200Ω和1KΩ的电阻,电容器一般选择22μF。
(5)AT89C51的最小应用系统
AT89C51是片内有程序存储器的单片机,要构成最小应用系统时只要将单片机接上外部的晶体或时钟电路和复位电路即可,如图2.14所示。
这样构成的最小系统简单可靠,其特点是没有外部扩展,有可供用户使用的大量的I∕O线。
图2.14AT89C51单片机构成的最小系统
2.2.2传感器数据采集电路
传感器数据采集电路主要指DS18B20温度传感器与单片机的接口电路。
DS18B20可以采用两种方式供电,一种是采用电源供电方式,如图2.15所示,此时DS18B20的1脚接地,2脚作为信号线,3脚接电源。
另一种是寄生电源供电方式,如图2.15所示单片机端口接单线总线,为保证在有效的DS18B20时钟周期内提供足够的电流,可用一个MOSFET管来完成对总线的上拉。
当DS18B20处于写存储器操作和温度A/D转换操作时,总线上必须有强的上拉,上拉开启时间最大为10us。
采用寄生电源供电方式时VDD端接地。
由于单线制只有一根线,因此发送接口必须是三态的。
考虑到实际应用中寄生电源供电方式适应能力差且易损坏,此处采用电源供电方式,I/O口接单片机的P2.0口。
图2.15电源供电方式
2.2.3显示电路
显示电路是采用P0口输出段码至LED,P2口控制位选通的动态扫描显示方式,三只数码管用NPN型三极管驱动,这种显示方式的最大优点是显示清晰,软件设计简单。
如图2.16所示:
图2.16显示电路
2.3主板电路
图2.17主板电路
系统整体硬件电路包括传感器数据采集电路,温度显示电路,上下限报警调整电路,单片机主板电路,电源电路等。
如图2.17所示
图2.17中有四个独立式按键可以分别调整温度计的上下限报警设置,可以任意调整报警上下限。
图中蜂鸣器可以在被测温度不在上下限范围内时,发出报警鸣叫声音。
LED数码管将当前被测温度值显示,从而测出被测的温度值。
图2.17中的按健复位电路是上电复位加手动复位,使用比较方便,在程序跑飞时,可以手动复位,这样就不用在重起单片机电源,就可以实现复位。
第三章软件设计
系统程序主要包括主程序,读出温度子程序,温度转换命令子程序,计算温度子程序,显示数据刷新子程序等。
开始
温度比较子程序
是否超出上下限
返回
图3.1主程序流程
3.1主程序
主程序的主要功能是负责温度的实时显示、读出并处理DS18B20的测量的当前温度值,温度测量每1s进行一次。
这样可以在一秒之内测量一次被测温度,其程序流程见图3.1所示。
3.2读出温度子程序
读出温度子程序的主要功能是读出RAM中的9字节,在读出时需进行CRC校验,校验有错时不进行温度数据的改写。
3.3温度转换命令子程序
温度转换命令子程序主要是发温度转换开始命令,当采用