基于單總線的溫度實(shí)時(shí)監(jiān)控_第1頁
基于單總線的溫度實(shí)時(shí)監(jiān)控_第2頁
基于單總線的溫度實(shí)時(shí)監(jiān)控_第3頁
基于單總線的溫度實(shí)時(shí)監(jiān)控_第4頁
基于單總線的溫度實(shí)時(shí)監(jiān)控_第5頁
已閱讀5頁,還剩13頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、 . . . 評語:成績:簽名:日期:淮海工學(xué)院課程設(shè)計(jì)報(bào)告書課程名稱: 綜合課程設(shè)計(jì) 題 目: 基于單總線的溫度實(shí)時(shí)監(jiān)控系統(tǒng) 系 (院): _電子工程系_學(xué) 期: _ 11-12-1 _ 專業(yè)班級: _ DZ電子083_ 姓 名: _嘉敏_ 學(xué) 號: _510830310_- 1 引言隨著計(jì)算機(jī)技術(shù)的發(fā)展和計(jì)算機(jī)應(yīng)用的普與, 計(jì)算機(jī)在各個(gè)領(lǐng)域都有著廣泛的應(yīng)用, 特別是在一些需要精確控制的應(yīng)用中采用實(shí)時(shí)的、動(dòng)態(tài)的控制顯得特別的重要, 通過硬件采集到的數(shù)據(jù)如何合理的、科學(xué)的處理, 是實(shí)施控制的關(guān)鍵, 并且方便的、功能強(qiáng)大的軟件處理能更好地實(shí)施精確控制。很多現(xiàn)有的實(shí)時(shí)控制系統(tǒng)的軟件部分是用匯編語言

2、編寫的, 軟件調(diào)試、維護(hù)起來比較困難, 應(yīng)用的界面也不是很好, 給用戶的使用帶來了很多不便,下面是采用功能強(qiáng)大的可視化的高級語言Delph i 和SQL server 2000 做為后臺數(shù)據(jù)庫來實(shí)現(xiàn)軟件部分。11 本設(shè)計(jì)主要任務(wù)(1)對單總線設(shè)備的結(jié)構(gòu)特點(diǎn)和以單總線技術(shù)構(gòu)建起來的微型局域網(wǎng)的拓樸結(jié)構(gòu)、網(wǎng)絡(luò)結(jié)構(gòu)優(yōu)化以與設(shè)備與單總線的連接進(jìn)行闡述和研究。(2)設(shè)計(jì)基于單總線的溫度采集電路,單總線和PC機(jī)串行口的接口電路。(3)用自己熟悉的計(jì)算機(jī)語言編寫溫度實(shí)時(shí)監(jiān)控系統(tǒng)軟件。12 設(shè)計(jì)要求(1)溫度測量圍50100。(2)測溫分辨率不低于0.0625。(3)數(shù)據(jù)傳輸距離不低于60米。(4)溫度測量點(diǎn)

3、不少于3。(5)溫度采集間隔不底于10分鐘。(6)能顯示一天實(shí)時(shí)溫度變化曲線。1.3 注意事項(xiàng)(1)設(shè)計(jì)時(shí)重點(diǎn)考慮單總線的供電問題,數(shù)據(jù)的可靠采集,單總線與PC機(jī)串口的連接問題。(2)設(shè)計(jì)單總線與PC機(jī)接口時(shí),要正確掌握PC機(jī)串口的電參數(shù)、DS2480B的電參數(shù),要采取一定的過電壓與過電流保護(hù)措施,防止損壞PC機(jī)串行端口。(3)軟件的界面要友好、簡明、直觀。在編寫軟件時(shí)要重點(diǎn)考慮溫度采集數(shù)據(jù)的存儲(chǔ)、單總線設(shè)備的CRC循環(huán)冗余碼的實(shí)現(xiàn)方法、從設(shè)備的“即時(shí)插即用”的算法研究等。2 硬件電路與原理2.1方案選擇本設(shè)計(jì)為基于單總線的溫度實(shí)時(shí)監(jiān)控系統(tǒng),采用Dallas公司生產(chǎn)的一種新型溫度傳感器DS18

4、B20。單總線溫度采集電路采集測量點(diǎn)的溫度并且將其數(shù)字化,串口至單總線接口轉(zhuǎn)接橋負(fù)責(zé)單總線芯片DS18B20與主機(jī)UART接口通信協(xié)議的轉(zhuǎn)換,溫度實(shí)時(shí)監(jiān)控系統(tǒng)軟件則將主機(jī)獲得的數(shù)據(jù)予以記錄并且在顯示設(shè)備上顯示出來。2.2 硬件電路總體框圖圖1 硬件電路圖23 DS2480B圖2 DS2480B引腳排列2.3.1 DS2480B簡介DS2480B是一種串口至1-Wire®的接口芯片,支持標(biāo)準(zhǔn)和高速兩種模式。它可以直接連至UART或5V的RS232系統(tǒng)。與RS232C (±12V電平)相接時(shí),還需要一個(gè)無源箝位電路和一個(gè)5V電平至±12V電平的轉(zhuǎn)換電路。部帶有定時(shí)器,

5、因此主機(jī)就不再需要產(chǎn)生1-Wire通信所需的要求嚴(yán)格的時(shí)序波形。而在DS9097(E)中,主機(jī)必須為每一個(gè)1-Wire時(shí)隙發(fā)送一個(gè)完整的字符。比較而言,DS2480B則是將每個(gè)字符轉(zhuǎn)換成8個(gè)1-Wire時(shí)隙,因此大提高了數(shù)據(jù)的吞吐量。另外,DS2480B可以采用四種不同的通信速率,分別為115.2kbps、57.6kbps、19.2kbps,其中9.6kbps是系統(tǒng)上電后默認(rèn)的通信速率。來自主機(jī)的晶振源UART的命令碼充當(dāng)時(shí)鐘基準(zhǔn),不斷地校準(zhǔn)時(shí)鐘發(fā)生器。DS2480B采用獨(dú)特的通信協(xié)議,合并數(shù)據(jù)和控制信息,而無需控制引腳,這樣就保證了通用串口至無線轉(zhuǎn)換器的兼容性,允許更容易實(shí)現(xiàn)1-Wire接口

6、轉(zhuǎn)換。DS2480B的多種控制功能針對1-Wire網(wǎng)絡(luò)進(jìn)行了優(yōu)化,支持當(dāng)前所有1-Wire器件,包括:基于EEPROM的只添加存儲(chǔ)器以與1-Wire溫度計(jì)等特殊功能器件。2.3.2 DS2480B關(guān)鍵特性(1)通用、共地的串口至1-Wire線驅(qū)動(dòng)器。(2)支持所有iButton®和1-Wire從器件。(3)支持標(biāo)準(zhǔn)速度和高速模式的1-Wire通信,且串行接口數(shù)據(jù)傳輸速率可在9600bps (默認(rèn))、 19200bps、57600bps和115200bps中進(jìn)行選擇。(4)支持12V EPROM編程,為傳感器以與EEPROM提供5V強(qiáng)上拉。(5)進(jìn)行串行和1-Wire通信時(shí)的自校準(zhǔn)時(shí)基

7、誤差為±5%。(6)壓擺率可控的1-Wire下拉和有源上拉,以適應(yīng)長距離通信和降低輻射。(7)當(dāng)與5V供電的RS232系統(tǒng)或與UART相連時(shí),通過用戶可選擇RXD/TXD的極性將盡可能減少外圍器件的數(shù)目。(8)可編程的1-Wire時(shí)序和驅(qū)動(dòng)特性,以適應(yīng)標(biāo)準(zhǔn)速率下更寬圍的從機(jī)器件配置。(9)結(jié)合數(shù)據(jù)和控制信息的智能協(xié)議,無需額外的引腳控制。(10)兼容于光耦、IR和RF至RS232的轉(zhuǎn)換器。(11)低成本的8引腳SO表貼封裝。(12)工作電壓4.5V至5.5V,溫度圍為-40°C至+85°C。24 DS18B20溫度傳感器圖3 DS18B202.4.1 DS18B2

8、0功能特點(diǎn)新一代的 DS18B20 體積更小、更經(jīng)濟(jì)、更靈活。使您可以充分發(fā)揮“一線總線”的長處。同DS1820 一樣,DS18B20 也支持“一線總線”接口,測量溫度圍為 -55°C+125°C,在-10+85°C圍,精度為±0.5°C。DS1822 的精度較差為± 2°C 。現(xiàn)場溫度直接以“一線總線”的數(shù)字方式傳輸,大大提高了系統(tǒng)的抗干擾性。適合于惡劣環(huán)境的現(xiàn)場溫度測量,如:環(huán)境控制、設(shè)備或過程控制、測溫類消費(fèi)電子產(chǎn)品等。與前一代產(chǎn)品不同,新的產(chǎn)品支持3V5.5V 的電壓圍,使系統(tǒng)設(shè)計(jì)更靈活、方便。而且新一代產(chǎn)品更便宜,

9、體積更小。DS18B20 新特點(diǎn):適用電壓為3V5V 與DS1820 軟件略有不同 912 位分辨率可調(diào) TO-92、SOIC 與CSP 封裝可選,經(jīng)濟(jì)型版本無EEPROM 合自己的經(jīng)濟(jì)的測溫系統(tǒng)。2.4.2 DS18B20存結(jié)構(gòu)圖4 DS18B20存儲(chǔ)結(jié)構(gòu) DS18B20的存包括9個(gè)快速暫存器和三個(gè)非易失的電可擦可編程只讀存儲(chǔ)器,EEPROM存儲(chǔ)用于報(bào)警的溫度上限和下限以與溫度采集分辨率的配置數(shù)據(jù)。如果DS18B20的報(bào)警功能未啟用,TH、TL可以用作普通功能寄存器。暫存器byte0和byte1分別存儲(chǔ)采集溫度的低位和高位,byte8是循環(huán)冗余校驗(yàn)碼寄存器。2.4.3 DS18B20溫度寄存

10、器圖5 DS18B20溫度寄存器溫度高位字節(jié)的高五位是符號位,溫度為正時(shí)取0,為負(fù)取1。低字節(jié)的低四位為小數(shù)位,有效的位數(shù)取決于配置寄存器的R1和R0值。2.4.4DS18B20 TH、TL寄存器圖6 DS18B20 TH、TL溫度寄存器溫度高位字DS18B20 TH、TL溫度寄存器各占一個(gè)字節(jié),其中最高位是符號位,可以設(shè)定的溫度圍為-128127是(攝氏)。TH、TL可以用copy命令復(fù)制到EEPROM,反之可以用Recall命令從EEPROM讀取。2.4.5DS18B20 配置寄存器 圖7 DS18B20溫度寄存器快速暫存器的byte4是Configuration寄存器,寄存器的五六位R0

11、、R1可以設(shè)定采集溫度的精度,見表一。表1 采集溫度精度對應(yīng)R1R0精度轉(zhuǎn)換時(shí)長009-bit93.75ms(tCONV/8)0110-bit187.5ms(tCONV/4)1011-bit375ms(tCONV/2)1112-bit750mstCONV3 Delphi溫度采集程序31 程序功能簡介程序主要包括溫度讀取顯示、采集數(shù)據(jù)存儲(chǔ)和配置寄存器設(shè)置三個(gè)功能,四個(gè)選項(xiàng)卡切換不同的功能模塊。溫度顯示模塊采用了iocomp組件實(shí)現(xiàn)溫度計(jì)和實(shí)時(shí)曲線兩種顯示方式,并提供兩個(gè)溫度傳感器宏觀同步顯示以與攝氏溫標(biāo)和華氏溫標(biāo)的一鍵切換功能。由于涉與數(shù)據(jù)量較少,數(shù)據(jù)結(jié)構(gòu)簡單,程序采用了access數(shù)據(jù)庫對采集

12、溫度進(jìn)行同步存儲(chǔ)。配置寄存器的模塊位于第三個(gè)選項(xiàng)卡,第四個(gè)選項(xiàng)卡顯示DS18B20暫存器的原始數(shù)據(jù)。 32 溫度計(jì)顯示圖8 溫度計(jì)顯示程序如下:procedure TForm1.Timer1Timer(Sender: TObject);/計(jì)時(shí)器程序,此處程序整體來說就是先獲得訪問權(quán),在調(diào)用前面的FindFirstFamily和FindSecondFamily然后再改寫變量 VarPortNum, PortType : smallint; /定義局部變量 RetValue : smallint;st : longint; begin if dieer then begin Progressbar

13、1.Step :=1; while progressbar1.Position < strtofloat(cj1) do begin progressbar1.StepIt; end; progressbar2.Step :=1; while progressbar2.Position < strtofloat(cj2) do begin progressbar2.StepIt; end; label18.Caption :=cj1; label19.caption :=cj2; end; RetValue := TMReadDefaultPort(PortNum, PortTyp

14、e); SHandle := TMExtendedStartSession(PortNum,PortType,NIL); FindFirstFamily($28,SHandle); RetValue := TMReadDefaultPort(PortNum, PortType); SHandle := TMExtendedStartSession(PortNum,PortType,NIL); FindSecondFamily($28,SHandle); label18.Caption :=cj1; label19.caption :=cj2; st := GetTickCount + 1000

15、; While (GetTickCount < st) do; TMEndSession(SHandle); end;33 實(shí)時(shí)曲線繪制圖9 實(shí)時(shí)曲線繪制程序如下: 開始繪圖按鈕實(shí)現(xiàn) procedure TForm1.Button3Click(Sender: TObject); var n,m,h : integer; o,p : single; a,b : string ; begin h :=0; label24.Caption :='50' label25.Caption :='25' label23.Caption :='0' la

16、bel22.Caption :='50' label26.Caption :='25' label6.Caption :='0' paintbox1.Canvas.Pixels0,128 := clBlack; /這里是描點(diǎn),讓它黑點(diǎn) paintbox1.Canvas.Pixels1,127 := clBlack; paintbox1.Canvas.Pixels1,129 := clBlack; paintbox1.Canvas.Pixels2,127 := clBlack; paintbox1.Canvas.Pixels2,129 := clB

17、lack; paintbox1.Canvas.Pixels2,128 := clBlack; paintbox1.Canvas.MoveTo(0,45); paintbox1.Canvas.LineTo(0,230); paintbox1.Canvas.MoveTo(0,128); paintbox1.Canvas.LineTo(425,128); paintbox1.Canvas.MoveTo(0,230); paintbox1.Canvas.LineTo(425,230); paintbox1.Canvas.MoveTo(0,45); paintbox1.Canvas.LineTo(5,5

18、7); paintbox1.Canvas.MoveTo(0,135); paintbox1.Canvas.LineTo(5,147); paintbox1.Canvas.MoveTo(0,200); paintbox1.Canvas.LineTo(7,200); paintbox1.Canvas.MoveTo(0,98); paintbox1.Canvas.LineTo(7,98); paintbox1.Canvas.MoveTo(0,128); table1.Active :=true; table1.First; if radiobutton5.Checked then /畫曲線一 beg

19、in while not table1.Eof do begin a :=table1.FieldValues'TempC1' b :=table1.FieldValues'TempC2' o :=strtofloat(a); p :=strtofloat(b); a :=FormatFloat('00',o); b :=FormatFloat('00',p); n :=128-strtoint(a); h :=h +5; Paintbox1.Canvas.LineTo(h,n); table1.Next; end; end; i

20、f radiobutton6.Checked then /畫曲線二 begin paintbox1.Canvas.MoveTo(0,230); while not table1.Eof do begin a :=table1.FieldValues'TempC1' b :=table1.FieldValues'TempC2' o :=strtofloat(a); p :=strtofloat(b); a :=FormatFloat('00',o); b :=FormatFloat('00',p); m :=230-strtoint

21、(b); h :=h +5; Paintbox1.Canvas.LineTo(h,m); table1.Next; end; end;end;34 溫度日志圖10 溫度日志采用數(shù)據(jù)源控件DBGrid動(dòng)態(tài)綁定數(shù)據(jù)庫中溫度表的信息35 配置寄存器管理圖11 配置寄存器設(shè)置程序如下:以第一個(gè)為列 設(shè)置按鈕實(shí)現(xiàn) procedure TForm1.Button1Click(Sender: TObject); /設(shè)置溫度上下限以與精度 var rbuf1 : array0.4 of byte; l,m,n :integer; o,p,q ,z: smallint; RetValue,i : smallin

22、t; PortNum, PortType : smallint; rbuf : array0.9 of smallint ; CRCByte : Byte; st : longint; rom : array0.8 of smallint; begin l :=strtoint(edit1.Text); m :=strtoint(edit2.Text); n :=strtoint(edit3.Text); if n=9 then n :=31 else if n=10 then n :=63 else if n=11 then n :=95 else if n=12 then n :=127

23、else begin showmessage('error number,please input the right number(912)'); halt; end; RetValue := TMReadDefaultPort(PortNum, PortType); SHandle := TMExtendedStartSession(PortNum,PortType,NIL); If (SHandle > 0) Then begin if (TMSetup(SHandle) = 1) then if radiobutton1.Checked =true then /寫

24、入第一個(gè)溫度傳感器 if (TMFirst(SHandle, stateBuf)= 1) then begin if (TMAccess(SHandle,StateBuf)= 1) then begin if (TMTouchByte(SHandle,$4E) > 0) then begin if (TMTouchByte(SHandle,l) < 0) then /傳遞溫度上限且判斷是否傳遞成功 halt; if (TMTouchByte(SHandle,m) =255) then /傳遞溫度下限且判斷是否傳遞成功 halt; if (TMTouchByte(SHandle,n)

25、 <0) then /傳遞精度且判斷是否傳遞成功 halt; end; TMAccess(SHandle,StateBuf); TMTouchByte(SHandle,$48); /這里是寫道E2Rom里 所以用上拉電壓 TMOneWireLevel(SHandle,LEVEL_SET,LEVEL_STRONG_PULL_UP, PRIMED_BYTE); st := GetTickCount + 1000; while (GetTickCount < st) do; TMOneWireLevel(SHandle, LEVEL_SET,LEVEL_NORMAL,PRIMED_NON

26、E); /恢復(fù)正常電壓 TMAccess(SHandle,StateBuf); TMTouchByte(SHandle,$BE); CRC8 := 0; for i := 0 to 7 do begin rbufi:= TMTouchByte(SHandle, $FF); end else showmessage('error TmAccess'); end36 原始數(shù)據(jù)顯示圖12 原始數(shù)據(jù)顯示窗口程序如下:procedure TForm1.Button2Click(Sender: TObject);顯示按鈕實(shí)現(xiàn) /用來顯示溫度以與精度等 var RetValue,i : sm

27、allint; PortNum, PortType : smallint; begin if (radiobutton3.Checked) then /溫度一 begin edit9.Text :=''edit4.Text :='' edit5.Text :=''edit6.Text :='' edit7.Text :=''edit8.Text :='' RetValue := TMReadDefaultPort(PortNum, PortType); SHandle := TMExtendedSt

28、artSession(PortNum,PortType,NIL); FindFirstFamily($28,SHandle); edit9.Text :=inttostr(fenbianlv1); edit4.Text :=floattostr(gaowei1); edit5.Text :=floattostr(diwei1); edit6.Text :=floattostr(shangxian1); edit7.Text :=floattostr(xiaxian1); edit8.Text :=floattostr(yuanshi1); end; if (radiobutton4.Check

29、ed) then /溫度二 begin edit9.Text :=''edit4.Text :='' edit5.Text :=''edit6.Text :='' edit7.Text :=''edit8.Text :='' RetValue := TMReadDefaultPort(PortNum, PortType); SHandle := TMExtendedStartSession(PortNum,PortType,NIL); FindSecondFamily($28,SHandle); edit4.Text :=floattostr(gaowei2); edit9.Text :=floattostr(fenbianlv2); edit5.Text :=floattostr(diwei2); edit6.Text :=floattostr(shangxian2); edit7

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論