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

下載本文檔

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

文檔簡介

評語:成績:簽名:日期:淮海工學(xué)院課程設(shè)計報告書課程名稱:綜合課程設(shè)計題目:基于單總線的溫度實時監(jiān)控系統(tǒng)系〔院〕:____電子工程系___________學(xué)期:___11-12-1_____專業(yè)班級:____DZ電子083________姓名:__范嘉敏________學(xué)號:__510830310__________-1引言隨著計算機技術(shù)的開展和計算機應(yīng)用的普及,計算機在各個領(lǐng)域都有著廣泛的應(yīng)用,特別是在一些需要精確控制的應(yīng)用中采用實時的、動態(tài)的控制顯得特別的重要,通過硬件采集到的數(shù)據(jù)如何合理的、科學(xué)的處理,是實施控制的關(guān)鍵,并且方便的、功能強大的軟件處理能更好地實施精確控制。很多現(xiàn)有的實時控制系統(tǒng)的軟件局部是用匯編語言編寫的,軟件調(diào)試、維護(hù)起來比擬困難,應(yīng)用的界面也不是很好,給用戶的使用帶來了很多不便,下面是采用功能強大的可視化的高級語言Delphi和SQLserver2000做為后臺數(shù)據(jù)庫來實現(xiàn)軟件局部。1.1本設(shè)計主要任務(wù)〔1〕對單總線設(shè)備的結(jié)構(gòu)特點和以單總線技術(shù)構(gòu)建起來的微型局域網(wǎng)的拓樸結(jié)構(gòu)、網(wǎng)絡(luò)結(jié)構(gòu)優(yōu)化以及設(shè)備與單總線的連接進(jìn)行闡述和研究?!?〕設(shè)計基于單總線的溫度采集電路,單總線和PC機串行口的接口電路?!?〕用自己熟悉的計算機語言編寫溫度實時監(jiān)控系統(tǒng)軟件。1.2設(shè)計要求〔1〕溫度測量范圍-50℃~+100℃?!?〕測溫分辨率不低于0.0625℃?!?〕數(shù)據(jù)傳輸距離不低于60米?!?〕溫度測量點不少于3?!?〕溫度采集間隔不底于10分鐘?!?〕能顯示一天實時溫度變化曲線。1.3考前須知〔1〕設(shè)計時重點考慮單總線的供電問題,數(shù)據(jù)的可靠采集,單總線與PC機串口的連接問題?!?〕設(shè)計單總線與PC機接口時,要正確掌握PC機串口的電參數(shù)、DS2480B的電參數(shù),要采取一定的過電壓與過電流保護(hù)措施,防止損壞PC機串行端口?!?〕軟件的界面要友好、簡明、直觀。在編寫軟件時要重點考慮溫度采集數(shù)據(jù)的存儲、單總線設(shè)備的CRC循環(huán)冗余碼的實現(xiàn)方法、從設(shè)備的“即時插即用〞的算法研究等。2硬件電路及原理2.1方案選擇本設(shè)計為基于單總線的溫度實時監(jiān)控系統(tǒng),采用Dallas公司生產(chǎn)的一種新型溫度傳感器DS18B20。單總線溫度采集電路采集測量點的溫度并且將其數(shù)字化,串口至單總線接口轉(zhuǎn)接橋負(fù)責(zé)單總線芯片DS18B20與主機UART接口通信協(xié)議的轉(zhuǎn)換,溫度實時監(jiān)控系統(tǒng)軟件那么將主機獲得的數(shù)據(jù)予以記錄并且在顯示設(shè)備上顯示出來。2.2硬件電路總體框圖圖1硬件電路圖2.3DS2480B圖2DS2480B引腳排列2.3.1DS2480B簡介DS2480B是一種串口至1-Wire?的接口芯片,支持標(biāo)準(zhǔn)和高速兩種模式。它可以直接連至UART或5V的RS232系統(tǒng)。與RS232C(±12V電平)相接時,還需要一個無源箝位電路和一個5V電平至±12V電平的轉(zhuǎn)換電路。內(nèi)部帶有定時器,因此主機就不再需要產(chǎn)生1-Wire通信所需的要求嚴(yán)格的時序波形。而在DS9097(E)中,主機必須為每一個1-Wire時隙發(fā)送一個完整的字符。比擬而言,DS2480B那么是將每個字符轉(zhuǎn)換成8個1-Wire時隙,因此大大地提高了數(shù)據(jù)的吞吐量。另外,DS2480B可以采用四種不同的通信速率,分別為115.2kbps、57.6kbps、19.2kbps,其中9.6kbps是系統(tǒng)上電后默認(rèn)的通信速率。來自主機的晶振源UART的命令碼充當(dāng)時鐘基準(zhǔn),不斷地校準(zhǔn)時鐘發(fā)生器。DS2480B采用獨特的通信協(xié)議,合并數(shù)據(jù)和控制信息,而無需控制引腳,這樣就保證了通用串口至無線轉(zhuǎn)換器的兼容性,允許更容易實現(xiàn)1-Wire接口轉(zhuǎn)換。DS2480B的多種控制功能針對1-Wire網(wǎng)絡(luò)進(jìn)行了優(yōu)化,支持當(dāng)前所有1-Wire器件,包括:基于EEPROM的只添加存儲器以及1-Wire溫度計等特殊功能器件。2.3.2DS2480B關(guān)鍵特性〔1〕通用、共地的串口至1-Wire線驅(qū)動器?!?〕支持所有iButton?和1-Wire從器件?!?〕支持標(biāo)準(zhǔn)速度和高速模式的1-Wire通信,且串行接口數(shù)據(jù)傳輸速率可在9600bps(默認(rèn))、19200bps、57600bps和115200bps中進(jìn)行選擇?!?〕支持12VEPROM編程,為傳感器以及EEPROM提供5V強上拉。〔5〕進(jìn)行串行和1-Wire通信時的自校準(zhǔn)時基誤差為±5%。〔6〕壓擺率可控的1-Wire下拉和有源上拉,以適應(yīng)長距離通信和降低輻射?!?〕當(dāng)與5V供電的RS232系統(tǒng)或與UART相連時,通過用戶可選擇RXD/TXD的極性將盡可能減少外圍器件的數(shù)目?!?〕可編程的1-Wire時序和驅(qū)動特性,以適應(yīng)標(biāo)準(zhǔn)速率下更寬范圍的從機器件配置?!?〕結(jié)合數(shù)據(jù)和控制信息的智能協(xié)議,無需額外的引腳控制。〔10〕兼容于光耦、IR和RF至RS232的轉(zhuǎn)換器。〔11〕低本錢的8引腳SO表貼封裝。〔12〕工作電壓4.5V至5.5V,溫度范圍為-40°C至+85°C。2.4DS18B20溫度傳感器圖3DS18B202.4.1DS18B20功能特點新一代的DS18B20體積更小、更經(jīng)濟、更靈活。使您可以充分發(fā)揮“一線總線〞的長處。同DS1820一樣,DS18B20也支持“一線總線〞接口,測量溫度范圍為-55°C~+125°C,在-10~+85°C范圍內(nèi),精度為±0.5°C。DS1822的精度較差為±2°C?,F(xiàn)場溫度直接以“一線總線〞的數(shù)字方式傳輸,大大提高了系統(tǒng)的抗干擾性。適合于惡劣環(huán)境的現(xiàn)場溫度測量,如:環(huán)境控制、設(shè)備或過程控制、測溫類消費電子產(chǎn)品等。與前一代產(chǎn)品不同,新的產(chǎn)品支持3V~5.5V的電壓范圍,使系統(tǒng)設(shè)計更靈活、方便。而且新一代產(chǎn)品更廉價,體積更小。DS18B20新特點:?適用電壓為3V~5V?與DS1820軟件略有不同?9~12位分辨率可調(diào)?TO-92、SOIC及CSP封裝可選,經(jīng)濟型版本無EEPROM合自己的經(jīng)濟的測溫系統(tǒng)。2.4.2DS18B20內(nèi)存結(jié)構(gòu)圖4DS18B20存儲結(jié)構(gòu)DS18B20的內(nèi)存包括9個快速暫存器和三個非易失的電可擦可編程只讀存儲器,EEPROM存儲用于報警的溫度上限和下限以及溫度采集分辨率的配置數(shù)據(jù)。如果DS18B20的報警功能未啟用,TH、TL可以用作普通功能存放器。暫存器byte0和byte1分別存儲采集溫度的低位和高位,byte8是循環(huán)冗余校驗碼存放器。2.4.3DS18B20溫度存放器圖5DS18B20溫度存放器溫度高位字節(jié)的高五位是符號位,溫度為正時取0,為負(fù)取1。低字節(jié)的低四位為小數(shù)位,有效的位數(shù)取決于配置存放器的R1和R0值。DS18B20TH、TL存放器圖6DS18B20TH、TL溫度存放器溫度高位字DS18B20TH、TL溫度存放器各占一個字節(jié),其中最高位是符號位,可以設(shè)定的溫度范圍為-128—127是〔攝氏〕。TH、TL可以用copy命令復(fù)制到EEPROM,反之可以用Recall命令從EEPROM讀取。DS18B20配置存放器圖7DS18B20溫度存放器快速暫存器的byte4是Configuration存放器,存放器的五六位R0、R1可以設(shè)定采集溫度的精度,見表一。表1采集溫度精度對應(yīng)R1R0精度轉(zhuǎn)換時長009-bit93.75ms(tCONV/8)0110-bit187.5ms(tCONV/4)1011-bit375ms(tCONV/2)1112-bit750mstCONV3Delphi溫度采集程序3.1程序功能簡介程序主要包括溫度讀取顯示、采集數(shù)據(jù)存儲和配置存放器設(shè)置三個功能,四個選項卡切換不同的功能模塊。溫度顯示模塊采用了iocomp組件實現(xiàn)溫度計和實時曲線兩種顯示方式,并提供兩個溫度傳感器宏觀同步顯示以及攝氏溫標(biāo)和華氏溫標(biāo)的一鍵切換功能。由于涉及數(shù)據(jù)量較少,數(shù)據(jù)結(jié)構(gòu)簡單,程序采用了access數(shù)據(jù)庫對采集溫度進(jìn)行同步存儲。配置存放器的模塊位于第三個選項卡,第四個選項卡顯示DS18B20暫存器的原始數(shù)據(jù)。3.2溫度計顯示圖8溫度計顯示程序如下:procedureTForm1.Timer1Timer(Sender:TObject);//計時器程序,此處程序整體來說就是先獲得訪問權(quán),在調(diào)用前面的FindFirstFamily和FindSecondFamily然后再改寫變量VarPortNum,PortType:smallint;//定義局部變量RetValue:smallint;st:longint;beginifdieerthenbeginProgressbar1.Step:=1;whileprogressbar1.Position<strtofloat(cj1)dobeginprogressbar1.StepIt;end;progressbar2.Step:=1;whileprogressbar2.Position<strtofloat(cj2)dobeginprogressbar2.StepIt;end;label18.Caption:=cj1;label19.caption:=cj2;end;RetValue:=TMReadDefaultPort(@PortNum,@PortType);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;While(GetTickCount<st)do;TMEndSession(SHandle);end;3.3實時曲線繪制圖9實時曲線繪制程序如下:{開始繪圖按鈕實現(xiàn)}procedureTForm1.Button3Click(Sender:TObject);varn,m,h:integer;o,p:single;a,b:string;beginh:=0;label24.Caption:='50';label25.Caption:='25';label23.Caption:='0';label22.Caption:='50';label26.Caption:='25';label6.Caption:='0';paintbox1.Canvas.Pixels[0,128]:=clBlack;//這里是描點,讓它黑點paintbox1.Canvas.Pixels[1,127]:=clBlack;paintbox1.Canvas.Pixels[1,129]:=clBlack;paintbox1.Canvas.Pixels[2,127]:=clBlack;paintbox1.Canvas.Pixels[2,129]:=clBlack;paintbox1.Canvas.Pixels[2,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,57);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;ifradiobutton5.Checkedthen//畫曲線一beginwhilenottable1.Eofdobegina:=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;ifradiobutton6.Checkedthen//畫曲線二beginpaintbox1.Canvas.MoveTo(0,230);whilenottable1.Eofdobegina:=table1.FieldValues['TempC1'];b:=table1.FieldValues['TempC2'];o:=strtofloat(a);p:=strtofloat(b);a:=FormatFloat('00',o);b:=FormatFloat('00',p);m:=230-strtoint(b);h:=h+5;Paintbox1.Canvas.LineTo(h,m);table1.Next;end;end;end;3.4溫度日志圖10溫度日志采用數(shù)據(jù)源控件DBGrid動態(tài)綁定數(shù)據(jù)庫中溫度表的信息3.5配置存放器管理圖11配置存放器設(shè)置程序如下:以第一個為列{設(shè)置按鈕實現(xiàn)}procedureTForm1.Button1Click(Sender:TObject);//設(shè)置溫度上下限以及精度varrbuf1:array[0..4]ofbyte;l,m,n:integer;o,p,q,z:smallint;RetValue,i:smallint;PortNum,PortType:smallint;rbuf:array[0..9]ofsmallint;CRCByte:Byte;st:longint;rom:array[0..8]ofsmallint;beginl:=strtoint(edit1.Text);m:=strtoint(edit2.Text);n:=strtoint(edit3.Text);ifn=9thenn:=31elseifn=10thenn:=63elseifn=11thenn:=95elseifn=12thenn:=127elsebeginshowmessage('errornumber,pleaseinputtherightnumber(9~12)');halt;end;RetValue:=TMReadDefaultPort(@PortNum,@PortType);SHandle:=TMExtendedStartSession(PortNum,PortType,NIL);If(SHandle>0)Thenbeginif(TMSetup(SHandle)=1)thenifradiobutton1.Checked=truethen//寫入第一個溫度傳感器if(TMFirst(SHandle,@stateBuf)=1)thenbeginif(TMAccess(SHandle,@StateBuf)=1)thenbeginif(TMTouchByte(SHandle,$4E)>0)thenbeginif(TMTouchByte(SHandle,l)<0)then//傳遞溫度上限且判斷是否傳遞成功halt;if(TMTouchByte(SHandle,m)=255)then//傳遞溫度下限且判斷是否傳遞成功halt;if(TMTouchByte(SHandle,n)<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_NONE);//恢復(fù)正常電壓TMAccess(SHandle,@StateBuf);TMTouchByte(SHandle,$BE);CRC8:=0;fori:=0to7dobeginrbuf[i]:=TMTouchByte(SHandle,$FF);endelseshowmessage('errorTmAccess');end3.6原始數(shù)據(jù)顯示圖12原始數(shù)據(jù)顯示窗口程序如下:procedureTForm1.Button2Click(Sender:TObject);{顯示按鈕實現(xiàn)}//用來顯示溫度以及精度等varRetValue,i:smallint;PortNum,PortType:smallint;beginif(radiobutton3.Checked)then//溫度一beginedit9.Text:='';edit4.Text:='';edit5.Text:='';edit6.Text:='';edit7.Text:='';edit8.Text:='';RetValue:=TMReadDefaultPort(@PortNum,@PortType);SHandle:=TMExtendedStartSession(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.Checked)then//溫度二beginedit9.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:=floa

溫馨提示

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

最新文檔

評論

0/150

提交評論