基于单总线的温度实时监控系统Word下载.docx

上传人:b****4 文档编号:6925869 上传时间:2023-05-07 格式:DOCX 页数:19 大小:179.75KB
下载 相关 举报
基于单总线的温度实时监控系统Word下载.docx_第1页
第1页 / 共19页
基于单总线的温度实时监控系统Word下载.docx_第2页
第2页 / 共19页
基于单总线的温度实时监控系统Word下载.docx_第3页
第3页 / 共19页
基于单总线的温度实时监控系统Word下载.docx_第4页
第4页 / 共19页
基于单总线的温度实时监控系统Word下载.docx_第5页
第5页 / 共19页
基于单总线的温度实时监控系统Word下载.docx_第6页
第6页 / 共19页
基于单总线的温度实时监控系统Word下载.docx_第7页
第7页 / 共19页
基于单总线的温度实时监控系统Word下载.docx_第8页
第8页 / 共19页
基于单总线的温度实时监控系统Word下载.docx_第9页
第9页 / 共19页
基于单总线的温度实时监控系统Word下载.docx_第10页
第10页 / 共19页
基于单总线的温度实时监控系统Word下载.docx_第11页
第11页 / 共19页
基于单总线的温度实时监控系统Word下载.docx_第12页
第12页 / 共19页
基于单总线的温度实时监控系统Word下载.docx_第13页
第13页 / 共19页
基于单总线的温度实时监控系统Word下载.docx_第14页
第14页 / 共19页
基于单总线的温度实时监控系统Word下载.docx_第15页
第15页 / 共19页
基于单总线的温度实时监控系统Word下载.docx_第16页
第16页 / 共19页
基于单总线的温度实时监控系统Word下载.docx_第17页
第17页 / 共19页
基于单总线的温度实时监控系统Word下载.docx_第18页
第18页 / 共19页
基于单总线的温度实时监控系统Word下载.docx_第19页
第19页 / 共19页
亲,该文档总共19页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

基于单总线的温度实时监控系统Word下载.docx

《基于单总线的温度实时监控系统Word下载.docx》由会员分享,可在线阅读,更多相关《基于单总线的温度实时监控系统Word下载.docx(19页珍藏版)》请在冰点文库上搜索。

基于单总线的温度实时监控系统Word下载.docx

1.3注意事项

(1)设计时重点考虑单总线的供电问题,数据的可靠采集,单总线与PC机串口的连接问题。

(2)设计单总线与PC机接口时,要正确掌握PC机串口的电参数、DS2480B的电参数,要采取一定的过电压与过电流保护措施,防止损坏PC机串行端口。

(3)软件的界面要友好、简明、直观。

在编写软件时要重点考虑温度采集数据的存储、单总线设备的CRC循环冗余码的实现方法、从设备的“即时插即用”的算法研究等。

2硬件电路及原理

2.1方案选择

本设计为基于单总线的温度实时监控系统,采用Dallas公司生产的一种新型温度传感器DS18B20。

单总线温度采集电路采集测量点的温度并且将其数字化,串口至单总线接口转接桥负责单总线芯片DS18B20与主机UART接口通信协议的转换,温度实时监控系统软件则将主机获得的数据予以记录并且在显示设备上显示出来。

2.2硬件电路总体框图

图1硬件电路图

2.3DS2480B

图2DS2480B引脚排列

2.3.1DS2480B简介

DS2480B是一种串口至1-Wire®

的接口芯片,支持标准和高速两种模式。

它可以直接连至UART或5V的RS232系统。

与RS232C(±

12V电平)相接时,还需要一个无源箝位电路和一个5V电平至±

12V电平的转换电路。

内部带有定时器,因此主机就不再需要产生1-Wire通信所需的要求严格的时序波形。

而在DS9097(E)中,主机必须为每一个1-Wire时隙发送一个完整的字符。

比较而言,DS2480B则是将每个字符转换成8个1-Wire时隙,因此大大地提高了数据的吞吐量。

另外,DS2480B可以采用四种不同的通信速率,分别为115.2kbps、57.6kbps、19.2kbps,其中9.6kbps是系统上电后默认的通信速率。

来自主机的晶振源UART的命令码充当时钟基准,不断地校准时钟发生器。

DS2480B采用独特的通信协议,合并数据和控制信息,而无需控制引脚,这样就保证了通用串口至无线转换器的兼容性,允许更容易实现1-Wire接口转换。

DS2480B的多种控制功能针对1-Wire网络进行了优化,支持当前所有1-Wire器件,包括:

基于EEPROM的只添加存储器以及1-Wire温度计等特殊功能器件。

2.3.2DS2480B关键特性

(1)通用、共地的串口至1-Wire线驱动器。

(2)支持所有iButton®

和1-Wire从器件。

(3)支持标准速度和高速模式的1-Wire通信,且串行接口数据传输速率可在9600bps(默认)、19200bps、57600bps和115200bps中进行选择。

(4)支持12VEPROM编程,为传感器以及EEPROM提供5V强上拉。

(5)进行串行和1-Wire通信时的自校准时基误差为±

5%。

(6)压摆率可控的1-Wire下拉和有源上拉,以适应长距离通信和降低辐射。

(7)当与5V供电的RS232系统或与UART相连时,通过用户可选择RXD/TXD的极性将尽可能减少外围器件的数目。

(8)可编程的1-Wire时序和驱动特性,以适应标准速率下更宽范围的从机器件配置。

(9)结合数据和控制信息的智能协议,无需额外的引脚控制。

(10)兼容于光耦、IR和RF至RS232的转换器。

(11)低成本的8引脚SO表贴封装。

(12)工作电压4.5V至5.5V,温度范围为-40°

C至+85°

C。

2.4DS18B20温度传感器

图3DS18B20

2.4.1DS18B20功能特点

新一代的DS18B20体积更小、更经济、更灵活。

使您可以充分发挥“一线总线”的长处。

同DS1820一样,DS18B20也支持“一线总线”接口,测量温度范围为-55°

C~+125°

C,在-10~+85°

C范围内,精度为±

0.5°

DS1822的精度较差为±

C。

现场温度直接以“一线总线”的数字方式传输,大大提高了系统的抗干扰性。

适合于恶劣环境的现场温度测量,如:

环境控制、设备或过程控制、测温类消费电子产品等。

与前一代产品不同,新的产品支持3V~5.5V的电压范围,使系统设计更灵活、方便。

而且新一代产品更便宜,体积更小。

DS18B20新特点:

•适用电压为3V~5V

•与DS1820软件略有不同

•9~12位分辨率可调

•TO-92、SOIC及CSP封装可选,经济型版本无EEPROM合自己的经济的测温系统。

2.4.2DS18B20内存结构

图4DS18B20存储结构

DS18B20的内存包括9个快速暂存器和三个非易失的电可擦可编程只读存储器,EEPROM存储用于报警的温度上限和下限以及温度采集分辨率的配置数据。

如果DS18B20的报警功能未启用,TH、TL可以用作普通功能寄存器。

暂存器byte0和byte1分别存储采集温度的低位和高位,byte8是循环冗余校验码寄存器。

2.4.3DS18B20温度寄存器

图5DS18B20温度寄存器

温度高位字节的高五位是符号位,温度为正时取0,为负取1。

低字节的低四位为小数位,有效的位数取决于配置寄存器的R1和R0值。

2.4.4DS18B20TH、TL寄存器

图6DS18B20TH、TL温度寄存器

温度高位字DS18B20TH、TL温度寄存器各占一个字节,其中最高位是符号位,可以设定的温度范围为-128—127是(摄氏)。

TH、TL可以用copy命令复制到EEPROM,反之可以用Recall命令从EEPROM读取。

2.4.5DS18B20配置寄存器

图7DS18B20温度寄存器

快速暂存器的byte4是Configuration寄存器,寄存器的五六位R0、R1可以设定采集温度的精度,见表一。

表1采集温度精度对应

R1

R0

精度

转换时长

9-bit

93.75ms

(tCONV/8)

1

10-bit

187.5ms

(tCONV/4)

11-bit

375ms

(tCONV/2)

12-bit

750ms

tCONV

3Delphi温度采集程序

3.1程序功能简介

程序主要包括温度读取显示、采集数据存储和配置寄存器设置三个功能,四个选项卡切换不同的功能模块。

温度显示模块采用了iocomp组件实现温度计和实时曲线两种显示方式,并提供两个温度传感器宏观同步显示以及摄氏温标和华氏温标的一键切换功能。

由于涉及数据量较少,数据结构简单,程序采用了access数据库对采集温度进行同步存储。

配置寄存器的模块位于第三个选项卡,第四个选项卡显示DS18B20暂存器的原始数据。

3.2温度计显示

图8温度计显示

使用iThermometer组件对温度进行显示,设定显示范围为(-10—90)定时器2的控制的温度读取执行时同时完成iThermometer组件Position属性的赋值,温度计下方使用label组件同时显示温度的数字值,并可以使用上方的切换按钮更改温标。

程序如下:

procedureTForm1.Timer2Timer(Sender:

TObject);

begin

FindFirstFamily($28,SHandle);

ReadTemperature(SHandle);

Tem:

=FormatFloat('

0.0000'

etmp1);

SaveTem();

FindNextFamily($28,SHandle);

Tem1:

etmp2);

//select:

=notselect;

iThermometer1.Position:

=strtofloat(Tem);

ifselect1then

label17.Caption:

=Tem+'

℃'

else

(华氏)'

;

iThermometer2.Position:

=strtofloat(Tem1);

label18.Caption:

=Tem1+'

end;

3.3实时曲线绘制

图9实时曲线绘制

使用iplot组件实现曲线的实时绘制,设置iplot为四通道同时显示,其中红色为传感器1,黄色为传感器2,紫色为正在工作传感器的上限值,蓝色为正在工作传感器的下限值。

Timer组件实现传感器的温度读取和循环切换,传感器1和2的值依次被读取显示。

温标切换依然有效,使用“绘制曲线”和“停止绘制”完成对组件的控制。

procedureTForm1.Button2Click(Sender:

inherited;

iPlot1.XAxis[0].Span:

=100;

iPlot1.YAxis[0].Span:

=30;

iPlot1.XAxis[0].Title:

='

时间'

iPlot1.YAxis[0].Title:

='

温度'

Timer2.Enabled:

=true;

Timer1.Enabled:

procedureTForm1.Timer1Timer(Sender:

var

Cinfor:

TCurinfor;

i:

integer;

iPlot1.Channel[0].TitleText:

传感器1'

iPlot1.Channel[1].TitleText:

传感器2'

iPlot1.Channel[2].TitleText:

下限'

iPlot1.Channel[3].TitleText:

上限'

iPlot1.Channel[0].AddYElapsedSeconds(etmp1);

iPlot1.Channel[1].AddYElapsedSeconds(etmp2);

Iplot1.Channel[2].AddYElapsedSeconds(low);

Iplot1.Channel[3].AddYElapsedSeconds(high);

procedureTForm1.Button3Click(Sender:

=false;

3.4温度日志

图10温度日志

温度的存储在读取温度时同步完成,应用ADOquery组件对数据库进行sql操作。

数据库存储有Tem表,存储的数据包括传感器编号、时间以及温度。

下方的DBNavigator组件用来对数据进行删除浏览等操作,“刷性列表”按钮可以在数据采集的同时更新数据库温度显示。

procedureTForm1.SaveTem();

order:

string;

ifselectthen

1'

2'

withADOQuery1do

Close;

SQL.Clear;

SQL.Add('

insertintotem(时间,温度,传感器编号)values(now(),:

温度,:

传感器编号)'

);

//Parameters.FindParam('

ID'

).Value:

=ADOQuery1.FindLast;

Parameters.FindParam('

=Tem;

传感器编号'

).Value:

=order;

ExecSQL;

3.5配置寄存器管理

图11配置寄存器设置

三个Edit组件在读取温度同时显示出配置寄存器中温度的上下限值和采集精度,“切换传感器”按钮会停止所有的Timer组件,并等待写EEPROM操作,在Edit中输入要修改的值,按“修改”按钮完成配置。

修改结束会重新读取温度和配置寄存器的值。

procedureTForm1.SetRom(session_handle:

longint);

i:

smallint;

rbuf:

array[0..9]ofsmallint;

st:

longint;

ifnot(Edit3.Text='

'

)then

begin

caseStrToInt(Edit3.Text)of

9:

rbuf[2]:

=$1F;

10:

rbuf[2]:

=$3F;

11:

=$5F;

12:

=$7F;

else

=smallint(strtoint(label21.Caption));

showmessage('

Wrongparameter'

end;

ifedit1.Text='

then

rbuf[0]:

=smallint(strtoint(label13.Caption))

if((strtoint(Edit1.Text)<

100)and(strtoint(Edit1.Text)>

-35))then

=smallint(strtoint(Edit1.Text))

=smallint(strtoint(label13.Caption));

Parameteroutofrange!

ifedit2.Text='

rbuf[1]:

=smallint(strtoint(label14.Caption))

if((strtoint(Edit2.Text)<

100)and(strtoint(Edit2.Text)>

=smallint(strtoint(Edit2.Text))

=smallint(strtoint(label14.Caption));

3.6原始数据显示

图12原始数据显示窗口

本窗口显示寄存器中的原始数据,并判断当前传感器的采集精度。

数据以十六进制的形式显示,用label组件显示精度值。

procedureTForm1.FindNextFamily(family:

SHandle:

i,flag:

romstr:

string;

rom:

array[0..8]ofsmallint;

select:

//TMNext(SHandle,@stateBuf);

//选取下一个芯片

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:

SerialROMID:

'

+romstr;

romid2:

=romstr;

end

ShowMessage('

ThereisnoTemperatureDeviceontheport'

halt;

if(TMFamilySearchSetup(SHandle,@stateBuf,family)=1)then

FindNextFamily($28,SHandle)

TMEndSession(SHandle);

halt;

end

4元器件清单

表2器件列表

元件名称

元件规格

元件数量

电路板

XF07

UART

/

二极管D1,D2

M7

2

稳压二极管D3,D4

DS18B20

DS2480B

5心得体会

两周的课程设计结束了,在这次的课程设计中不仅检验了我所学习的知识,也培养了我如何去把握一件事情,如何去做一件事情,又如何完成一件事情。

在设计过程中,与同学分工设计,和同学们相互探讨,相互学习,相互监督。

学会了合作,学会了运筹帷幄,学会了宽容,学会了理解,也学会了做人与处世。

课程设计是我们专业课程知识综合应用的实践训练,是我们迈向社会,从事职业工作前一个必不少的过程.”千里之行始于足下”,通过这次课程设计,我深深体会到这句千古名言的真正含义.我今天认真的进行课程设计,学会脚踏实地迈开这一步,就是为明天能稳健地在社会大潮中奔跑打下坚实的基础。

通过这次温度实时监控系统设计,我在多方面都有所提高。

刚开始焊接时,由于自己的粗心导致器件管脚的断裂,后来在李老师的帮助下,我们换了器件,经过第一次的失败之后,在第二次的焊接过程中,我不敢有丝毫的马虎,认真的研究电路图,仔细的将电路图的布局分布,完成焊接后到杨老师那儿去测试,但是出现了问题,于是便在那边反复的进行测试,最后在李老师的帮助下,知道是接地的管脚与其他的管脚连接,只是一个细微的错误就导致了失败,这告诉我人生路上要一丝不苟,做学问更要处处细心。

开始做软件部分时,之前认为Delphi很简单,可是在拿到具体的要求之后才知道无从下手,后来经过反复查看Delphi的资料,不断地研究资料,请教其他的同学,反复的修改程序,最终调试成功。

在编写程序时,不光了解了Delphi的程序编写,还了解了软件设计部分包括初始化程序,存储,转换,发送处理,显示温度,认识了单总线温度实时监控系统的内容。

最后还要感谢我们的老师.,老师严谨细致、一丝不苟的作风一直是我工作、学习中的榜样;

老师循循善诱的教导和不拘一格的思路给予我无尽的启迪,这次专业实习设计的每个实验细节和每个数据,都离不开老师们的细心指导。

6参考文献

[1].DS18B20ProgrammableResolution1-WireDigitalThermometer

[2].DS2480BSerial1-WireLineDriverwithLoadSensor

[3].《实现单总线搜索ROM命令的一种算法》,左冬红,谢瑞和著。

2001

[4].《电子技术实践教学指导书》,孙淑艳,张青著。

中国电力出版社,2005.9

[5].《数字电子基础》,康华光主编。

高等教育出版社,1999

[6].《电子电路实验及仿真》,路勇主编。

清华大学出版社,2004

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > PPT模板 > 商务科技

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2