基于单总线的温度实时监控系统Word下载.docx
- 文档编号:18915014
- 上传时间:2023-01-02
- 格式:DOCX
- 页数:37
- 大小:476.27KB
基于单总线的温度实时监控系统Word下载.docx
《基于单总线的温度实时监控系统Word下载.docx》由会员分享,可在线阅读,更多相关《基于单总线的温度实时监控系统Word下载.docx(37页珍藏版)》请在冰豆网上搜索。
(3)用自己熟悉的计算机语言编写温度实时监控系统软件,软件的界面要友好、简明、直观。
在软件编写时重点考虑温度采集数据存储、单总线设备中的CRC循环冗余码的实现方法、从设备的“即时插即用”的算法研究。
2.2设计内容及要求
(1)温度测量范围-50℃~+100℃。
(2)测温分辨率不低于0.0625℃。
(3)数据传输距离不低于60米。
(4)温度测量点不少于3。
(5)温度采集间隔不底于10分钟。
(6)能显示一天实时温度变化曲线。
2.3设计步骤概述
实习制作大概步骤如图1
图1
3.电路的设计
3.1硬件电路设计
在硬件电路设计时,应着重考虑电子器件的供电方式,以及对器件的限压和限流保护。
因为本次设计要求利用单总线技术,所以可以考虑使用寄生供电方式。
设计的电路图如下。
图2基于单总线的温度实时监控系统硬件电路总图
图3基于单总线的温度实时监控系统硬件电路原理图
3.2软件设计
3.2.1设计窗体
本次设计要求软件的可视化窗体中包含实时温度显示、数据记录、存储管理和ROM数据,并且能将测得的数据保存到指定的数据库中。
窗体界面如下。
图4窗体界面
实时温度显示中可以看到当前室温,并且可以显示摄氏温度和华氏温度。
数据记录包含温度曲线和温度日志,可以显示一天内的温度变化曲线。
存储管理和ROM数据用来对数据库中已经保存的温度数据进行管理,如删除、转移等操作。
3.2.2软件编程
本系统软件部分采用Delphi来实现初始化、数据采集处理、温度报表管理,其主程序的流程图见图5。
图5主程序流程图
本系统软件部分共分为3个部分,分别是:
1)初始化程序。
a.设置串行通信波特率;
b.串行通讯方式的初始化;
c.对TO,T1两个计数器的初始化;
d.中断控制程序的初始化。
此外,还负责从E2PROM中调出以前的采样参数,使器件能够以它采样温度数据。
2)当监控到ONTIME1和NTIME2标记时作相应温度的存储、转换、发送处理。
ONTIME1和NTIME2的标记主要有定时电路决定,当到达采样间隔时,做出相应的处理。
3)采用动态显示方式即时显示温度,以节省电路规模,使得整个系统的体积变小。
4.元器件的选择
4.1主要元器件知识
4.1.1DS18B20
DS18B20是DALLAS公司生产的一线式数字温度传感器,具有3引脚TO-92小体积封装形式;
温度测量范围为-55℃~+125℃,可编程为9位~12位A/D转换精度,测温分辨率可达0.0625℃,被测温度用符号扩展的16位数字量方式串行输出;
其工作电源既可在远端引入,也可采用寄生电源方式产生;
多个DS18B20可以并联到3根或2根线上,只需一根端口线就能与诸多DS18B20通信,占用微处理器的端口较少,可节省大量的引线和逻辑电路。
以上特点使DS18B20非常适用于远距离多点温度检测系统。
4.1.1.1DS18B20的内部结构
DS18B20内部结构如图5所示,主要由4部分组成:
64位ROM、温度传感器、非挥发的温度报警触发器TH和TL、配置寄存器。
DS18B20的管脚排列如图6所示,DQ为数字信号输入/输出端;
GND为电源地;
VDD为外接供电电源输入端,在寄生电源接线方式时接地,见图7。
图6DS18B20的内部结构图7DS18B20的管脚排列
ROM中的64位序列号是出厂前被光刻好的,它可以看作是该DS18B20的地址序列码,每个DS18B20的64位序列号均不相同。
64位ROM的排的循环冗余校验码(CRC=X8+X5+X4+1)。
ROM的作用是使每一个DS18B20都各不相同,这样就可以实现一根总线上挂接多个DS18B20的目的。
DS18B20中的温度传感器完成对温度的测量,用16位符号扩展的二进制补码读数形式提供,以0.0625℃/LSB形式表达,其中S为符号位。
例如+125℃的数字输出为07D0H,+25.0625℃的数字输出为0191H,-25.0625℃的数字输出为FF6FH,-55℃的数字输出为FC90H。
高低温报警触发器TH和TL、配置寄存器均由一个字节的EEPROM组成,使用一个存储器功能命令可对TH、TL或配置寄存器写入。
其中配置寄存器的格式如下:
0
R1
R0
1
MSBLSB
R1、R0决定温度转换的精度位数:
R1R0=“00”,9位精度,最大转换时间为93.75ms;
R1R0=“01”,10位精度,最大转换时间为187.5ms;
R1R0=“10”,11位精度,最大转换时间为375ms;
R1R0=“11”,12位精度,最大转换时间为750ms;
未编程时默认为12位精度。
高速暂存器是一个9字节的存储器。
开始两个字节包含被测温度的数字量信息;
第3、4、5字节分别是TH、TL、配置寄存器的临时拷贝,每一次上电复位时被刷新;
第6、7、8字节未用,表现为全逻辑1;
第9字节读出的是前面所有8个字节的CRC码,可用来保证通信正确。
4.1.1.2DS18B20的工作时序
DS18B20的一线工作协议流程是:
初始化→ROM操作指令→存储器操作指令→数据传输。
其工作时序包括初始化时序、写时序和读时序,如图8(a)(b)(c)所示。
(a)初始化时序(b)写时序
(c)读时序
图8DS18B20的工作时序图
4.1.1.3DS18B20与微处理器的连接
DS18B20与微处理器的连接如下图9所示。
(a)寄生电源工作方式(b)外接电源工作方式
图9DS18B20与微处理器的典型连接图
4.1.2串口UART/RS232至单总线通信协议的转接桥DS2480B
4.1.2.1DS2480B主要特性
串口UART/RS232至单总线通信协议的转接桥,可直接连到UART和5VRS232系统中,支持Dallas全系列单总线器件,如数字温度传感器DS18B20、A/D转换器DS2450等;
将主机从单总线时序控制中解脱出来,提供规范的、灵活的和强驱动的单总线定时;
支持标准UART通信,支持9.6(默认)、19.2、57.6和115.2kbps速率;
具有较强的总线驱动能力,通信距离可达300m;
可编程下拉摆率控制和有源上拉,工作范围5V,-40~+85℃,8引脚SOIC封装。
4.1.2.2管脚图及引脚说明
图10DS2480B的封装和引脚
DS2480B为8脚贴片式封装,如图10所示。
引脚功能如表1所列:
表1引脚功能说明
引脚号
引脚名称
引脚功能
1
GND
地线
2
1-W
单总线输入输出端
3
NC
悬空
4
VDD
4.5~5.5V电压
5
VPP
EPROM编程电压
6
POL
RXD/TXD选择端
7
TXD
发送端
8
RXD
接收端
DS2480B工作原理框图如图11所示。
图11DS2480B工作原理框图
4.1.2.3DS2480B与RS232的接口技术
DS2480B与RS232的接口如图12所示。
图12DS2480B与RS232的接口图
4.2元件清单
表2元件清单
序号
元件
个数
PC机串行口UART/RS232
1个
转接桥DS2480B
数字温度传感器DS18B20
电容U07HF
稳压管
2个
二极管M7
电路板XF07
5.学习心得
通过这次专业课程设计,我对本专业的理论知识和动手操作能力都有了大幅度的提高。
首先从研究课题的要求和任务开始,刚拿到“基于单总线的温度实时监控系统”这个设计题目时,完全是不知所措,不知道从那下手。
经过王老师和李老师的耐心讲解后,才有点头绪。
课后通过自己查资料和老师所给的任务书与指导书才真正开始搞懂题目,并且去研究它。
根据指导书上的要求和指示,我们小组设计出了基于单总线的温度实时监控系统硬件电路。
接下来就要依据设计好的电路图,进行硬件的焊接。
说到焊接,我并不陌生,在大二的时候就焊接过收音机,在专业综合实习时,又焊接过红外线感应开关。
焊接最需要注意的是焊接的温度和时间,焊接时要使电烙铁的温度高于焊锡,但是不能太高,以烙铁接头的松香刚刚冒烟为好,焊接的时间不能太短,因为那样焊点的温度太低,焊点融化不充分,焊点粗糙容易造成虚焊,而焊接时间长,焊锡容易流淌,使元件过热,容易损坏,或者造成焊接短路现象。
在软件设计与编程的环节,要求用自己熟悉的计算机语言编写温度实时监控系统软件。
在设计之前我也考虑过关于选用什么语言的问题,在大学生涯中,我学过了C语言,Java语言和Delphi语言,在去年的计算机课程设计中,我曾用Delphi语言编写过一个高校学生选课成绩管理系统,对Delphi言语的应用相对灵活些,所以我决定用Delphi语言编写程序。
在本次课程设计的过程中,我还发现基于DS18B20数字温度传感器构成的实时监控系统确实具有精度高、抗干扰能力强、电路简单等诸多优点。
相比之下,传统的温度检测系统采用热敏电阻等温度敏感元件,热敏电阻成本低,但需要后续信号调理、AD转换处理电路才能将温度信号转换成数字信号,不但电路复杂,而且热敏电阻的可靠性相对较差,测量温度的精度差,很难保证热敏电阻的一致性和线性。
通过对这个专业课程设计的学习,为我们掌握单总线的温度采集电路,单总线和PC机串行口的接口电路的开发打下了坚实的基础,还使我掌握了设计复杂电路和装配技能,培养了我理论联系实际的能力,提高了我分析问题和解决问题的能力,增强了独立工作的能力。
其中感触最深的便是实践联系理论的重要性,当遇到实际问题时,只要认真思考,用所学的知识,再一步一步探索,是完全可以解决遇到的一般问题的。
在实习过成中,要时刻保持清醒的头脑,出现错误,一定要认真的冷静的去检查分析错误,不能草草了事,这样做出来的课程设计才能达到它真正的效果,为我们以后步入社会做好充分的准备。
6.参考文献
[1]DS18B20ProgrammableResolution1-WireDigitalThermometer
[2]DS2480BSerial1-WireLineDriverwithLoadSensor
[3]左冬红,谢瑞和.实现单总线搜索ROM命令的一种算法
[4]李朝青,单片机原理及接口技术(简明修订版)[M].1998
[5]李广弟.单片机基础[M].1994
[6]沙占友等.智能化集成温度传感器原理与应用.2002
[7]阎石.数字电子技术基础(第三版)[M].1989
附:
源程序清单
{------------------------------------------------------------------------------------------------------
TEMPDL32:
ThisutilityusesTMEXtoviewareadthetemperaturefrom
aDS18B20.Itrequiresthe32-BitWindowsTMEXdrivers
tobepresent.
Compiler:
BorlandDelphi5.0
}
procedureTForm1.FormCreate(Sender:
Tobject;
Var
ztbuf:
array[0..200]ofChar;
Typebuf:
array[0..200]ofChar;
i,k,RetValue:
smallint;
RetStr:
SetupDone:
Boolean;
PortNum,PortType:
begin
dieer:
=false;
SetupDone:
=FALSE;
{TMSetupnotdoneyet}
Label4.Caption:
='
'
;
{ReaddefaultPortNumberandPortTypefromregistry}
RetValue:
=TMReadDefaultPort(@PortNum,@PortType);
if(RetValue<
1)then
TMReadDefaultPort(@PortNum,@PortType)
begin
ShowMessage('
Pleasesetportfirst'
);
Halt;
end
else
{readthetmexversionandtypeversion}
Get_Version(@ztbuf);
Label1.Caption:
=StrPas(ztbuf);
TMGetTypeVersion(PortType,@Typebuf);
Label2.Caption:
=StrPas(Typebuf);
{attemptogetasession}
Done:
=False;
Repeat
SHandle:
=TMExtendedStartSession(PortNum,PortType,NIL);
If(SHandle>
0)Then
if(TMSetup(SHandle)=1)then
{ThedevicethatwillbefoundisTemperatureDeviceDS18B20,
soFamilyTypeissetto$28}
FindFirstFamily($28,SHandle)
TMEndSession(SHandle);
FailtosetupMicroLan!
end;
if(SHandle<
0)then
Begin
TheDefaultPortTypedoesnothaveadriver!
{Releasecontrolbacktowindow}
Application.ProcessMessages;
until(Done);
Repeat
if(TMSetup(SHandle)=1)then
FindSecondFamily($28,SHandle)
label18.Caption:
=keke1;
label19.caption:
=keke2;
table1.Active:
=true;
iftable1.CanModifythen
table1.Append;
table1.Fields[0].AsDateTime:
=now;
table1.Fields[1].AsString:
=floattostr(diwei1);
table1.Fields[2].AsFloat:
=shangxian1;
table1.Fields[3].AsFloat:
=xiaxian1;
table1.Fields[4].AsString:
=floattostr(diwei2);
table1.Fields[5].AsFloat:
=shangxian2;
table1.Fields[6].AsFloat:
=xiaxian2;
table1.Post;
end;
procedureTForm1.FindFirstFamily(family:
SHandle:
longint);
var
i,flag:
romstr:
string;
rom:
array[0..8]ofsmallint;
{Setuptofindthefirstdevicewiththefamily'
family'
}
if(TMFamilySearchSetup(SHandle,@stateBuf,family)=1)then
if(TMNext(SHandle,@stateBuf)=1)then
{Readtheromnumberbysettingrom[0]to0forreadingandusingTMRom}
rom[0]:
=0;
TMRom(SHandle,@stateBuf,@rom);
{Checkifcorrecttype}
if((familyand$7F)=(rom[0]and$7F))then
fori:
=7downto0do
=romstr+IntToHex(ROM[i],2);
Label3.caption:
SerialROMID1:
'
+romstr;
ReadTemperature1(SHandle);
ThereisnoTemperatureDeviceontheport'
halt;
procedureTForm1.ReadTemperature1(session_handle:
tsht,i,tmp1:
cr,cpc,tmpf,tmp:
Extended;
rbuf:
array[0..9]ofsmallint;
st:
longint;
CRCByte,xiaxianbyte:
Byte;
tmp:
=0.00;
{accessthedevice}
if(TMAccess(session_handle,@StateBuf)=1)then
{SendtherecallE2command(bysetting$B8tooutbyteinTMTouchByte)
makesureScratchiscorrect}
TMTouchByte(session_handle,$B8);
{SendthestartTcommand}
if(TMAccess(session_handle,@StateBuf)=1)then
{PreparethestrongpullupafternextTMTouchByte}
TMOneWireLevel(session_handle,LEVEL_SET,LEVEL_STRONG_PULL_U
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 总线 温度 实时 监控 系统