基于單總線的溫度實時監控_第1頁
基于單總線的溫度實時監控_第2頁
基于單總線的溫度實時監控_第3頁
基于單總線的溫度實時監控_第4頁
基于單總線的溫度實時監控_第5頁
已閱讀5頁,還剩13頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

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

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

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

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

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

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

7、誤差為±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。24 DS18B20溫度傳感器圖3 DS18B202.4.1 DS18B2

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

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

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

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

12、溫度進行同步存儲。配置寄存器的模塊位于第三個選項卡,第四個選項卡顯示DS18B20暫存器的原始數據。 32 溫度計顯示圖8 溫度計顯示程序如下:procedure TForm1.Timer1Timer(Sender: TObject);/計時器程序,此處程序整體來說就是先獲得訪問權,在調用前面的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 實時曲線繪制圖9 實時曲線繪制程序如下: 開始繪圖按鈕實現 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; /這里是描點,讓它黑點 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 溫度日志采用數據源控件DBGrid動態綁定數據庫中溫度表的信息35 配置寄存器管理圖11 配置寄存器設置程序如下:以第一個為列 設置按鈕實現 procedure TForm1.Button1Click(Sender: TObject); /設置溫度上下限以與精度 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、入第一個溫度傳感器 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); /恢復正常電壓 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 原始數據顯示圖12 原始數據顯示窗口程序如下:procedure TForm1.Button2Click(Sender: TObject);顯示按鈕實現 /用來顯示溫度以與精度等 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. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論