HS1101程序及應用原理.doc_第1頁
HS1101程序及應用原理.doc_第2頁
HS1101程序及應用原理.doc_第3頁
HS1101程序及應用原理.doc_第4頁
HS1101程序及應用原理.doc_第5頁
已閱讀5頁,還剩6頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

HS1101 程序及應用原理 HSll01是法國Humirel公司推出的一款電容式相對濕度傳感器。該傳感器可廣泛應用于辦公室、家庭、汽車駕駛室、和工業(yè)過程控制系統等,對空氣濕度進行檢測。與其他產品相比,有著顯著的優(yōu)點:無需校準的完全互換性:長期飽和狀態(tài),瞬間脫濕:適應自動裝配過程,包括波峰焊接、回流焊接等;具有高可靠性和長期穩(wěn)定性:特有的固態(tài)聚合物結構:適用于線性電壓輸出和線性頻率輸出兩種電路;響應時間快。11基本參數 基本參數如表l所示。默認測量溫度rct=25C,測量時HSll01工作頻率為10Khzo12特性曲線 如圖1。測量溫度T=25。C,測量時HSll01工作頻率為10Khzo 從特性曲線曲線圖上我們可以看出,HSll01具有極好的線性輸出??梢越瓶闯上鄬穸戎蹬c電容值成比例。因此在測量過程中,采集電容值即可。2測量電路21濕度定義 濕度指的是相對濕度。用RH表示。即氣體中(通常為空氣中)所含水蒸氣量(水蒸氣壓)與其空氣在相同情況下飽和水蒸氣量(飽和水蒸氣壓)的百分比。22測量原理 HSll00濕度傳感器是一種基于電容原理的濕度傳感器,相對濕度的變化和電容值呈線性規(guī)律。在自動測試系統中,電容值隨著空氣濕度的變化而變化,因此將電容值的變化轉換成電壓或頻率的變化,才能進行有效地數據采集。用555集成電路組成振蕩電路,HSl 100濕度傳感器充當振蕩電容,從而完成濕度到頻率的轉換。23測量方法 HSll01濕敏傳感器是采用側面開放式封裝,只有兩個引腳,有線性電壓輸出和線性頻率輸出兩種電路。在使用時,將2腳接地,這里選用頻率輸出電路。該傳感器采用電容構成材料,不允許直流方式供電。所以我們使用555定時器電路組成單穩(wěn)態(tài)電路。具體電路分析如下。 電源電壓工作范圍是UCC=+35+12V。利用一片CMOS定時器TLC555配上HSll01和電阻R2、R4構成單穩(wěn)態(tài)電路,將相對濕度值變化轉換成頻率信號輸出。輸出頻率范圍是7351-6033Hz,所對應的相對濕度為0100。當RH=55時,f=6660Hz。輸出的頻率信號可送至數字頻率計或控制系統,經整理后送顯示。R3為輸出端的限流電阻,起保護作用。通電后電源沿著UcR4R2C對HSl 101充電。經過t1時間后濕敏電容的壓降Uc就被充電到TIC555的高觸發(fā)電平(Uh=067Ucc),使內部比較器翻轉,OUT的輸出變成低電平。然后C開始放電,放電回路為CR2D內部放電管地。經過t2時間后,Uc降到低觸發(fā)電平(Ul=033Ucc),內部比較器再次翻轉,使OUT端的輸出變成高電平。這樣周而復始的進行充、放電,形成了振蕩。充電、放電時間計算公式分別為:tl=C(R2+R4)ln2;t2=CR21n2;輸出波形的頻率(f)和占空比(D)的計算公式如下:f=1T=1(t1+t2)=1C(2R2+R4)ln2;D=tlT=t1t1+t2=R2+R4(2R2+R4);通常取R4R2,使D50,輸出接近于方波。例如,取人R2=567kQ,R4=499k。濕度傳感器只是保證傳感探頭的精度,在實際使用中,綜合精度除了與濕度傳感器本身元件有關,還與外圍電路的器件選擇相關。為了與HSll01溫度系數相匹配,Rl數值應取為1精度,且最大溫漂不超過100ppm(ppm:百萬分之一,表示當溫度變化1,所對應的電阻相對變化量)。為了保證達到6660Hz55,R2與555電路選取參照如下表: 當RH=55、TA=+25時,典型輸出方波頻率與相對濕度的數據對照見表3。24與微處理器IPC2132接口 LPC2132是一種支持實時仿真和跟蹤的1632位基于ARM7TDMI-S內核的CPU,并帶有64KB嵌入的高速FLASH存儲器。LPC2132的實時仿真和跟蹤功能方便了代碼調試,降低了開發(fā)成本。并且IO口能夠接受5V容限。整個濕度傳感器由于采用頻率輸出電路,接口簡單,可直接與LPC2132普通I0對接,這里選用PO6腳做為頻率測量接口。3軟件設計 軟件設計主要完成對HSl 101在單位時間內的頻率測量。軟件設計采用端口掃描方式,間隔8S開始測量,測量時間為1S。統計單位時間內脈沖的個數,與表3對照,確定濕度值的范圍,并將濕度值通過LCD顯示。為了保證測量精度,可以取3次以上測量數據,求平均值后,作為最終送顯示數據。微處理器工作晶體選用12000MHz。程序代碼采用嵌入式C語言編寫,經在ADSl2編譯環(huán)境中進行編譯后,移植到微處理器內執(zhí)行。參考軟件代碼之一:DoIODIR0=10DIROIROOXOfffffbf:p06設置成輸入d0 讀IO口寄存器 if(IOPIN0&(10x06)=0x00000000)break: 檢測0電平 while(1);Do if(IOPIN0&(16033)&(fdat6186)&(fdat6330)&(fdat6468)&(fdat6600)&(fdat6728)&(fdat6853)&(fdat6976)&(fdat7100)&(fdat7224)rhb=00:lhb=fdat100: 對測量數值取低兩位time(1); 處理需要等待一段時間,否則lhb=0if(rhb=60)(rhb=70)(rhb=90)lhb=lhb13: 對低兩位數值取個位,else if(rhb=80)lhb=lhb1 4;else lhb=lhb12;time(1);rhb=rhb+lhb; 將數據合成一起,送顯示fdat=Ox00000000;清0,為下次準備參考軟件代碼之二:#include reg51.h#define uchar unsigned char#define uint unsigned intuchar tem0 , tem1; uchar temp0 , temp1; uint f=0; /初值 /* 名稱: timer0() * 功能: 定時器1,每50000us中斷一次。* 入口參數:*/void timer0() interrupt 1 EA =0; TR0=0; TR1=0; TL0=0xFF; /重裝值 定時50000us OX4BFFH TH0=0x4B; tem0 = TL1; /讀數 tem1 = TH1; TL1=0x00; /定時器1清零 TH1=0x00; f=1; /作標注位 TR0=1; TR1=1; EA=1;/* 名稱: timer1() * 功能: 計數器,用于計數將555輸出的頻率,以計數相對濕度。* 入口參數:*/void timer1() interrupt 3 /T1中斷,表示計數的頻率溢出,超出了可測量的頻率范圍,顯然在這里不可能。所以重新啟動。 EA =0; TR0=0; TR1=0; TL0=0x00; /重裝值 定時50000us TH0=0x4C; TL1=0x00; /定時器1清零 TH1=0x00; TR0=1; TR1=1; EA=1;void Init_timer() TMOD=0x51; /0101 0001 定時器0在模式1下工作16位定時器,定時方式 定時器1在模式1下工作16位計數器,T1負跳變加1 TL0=0x00; /定時器0初值 定時50000us TH0=0x4C; TL1=0x00; /定時器1清零 TH1=0x00; ET0=1; /使能定時器0中斷 ET1=1; /使能定時器1中斷 EA=1; /使能總中斷 TR0=1; /開始計時 TR1=1;void tran() f = tem1; f = ( f8 ) | tem0; f = f * 20; /這里f的值是最終讀到的頻率,不同頻率對于不同相對濕度。if( 5623 = f) & ( f= 6852) ) /相對濕度在有效范圍內(0100%) if( 6734 f) & ( f = 6852) ) temp0 = 0; temp1 =(6852 - f)*10/118; if( (6618 f) & ( f = 6734) ) temp0 = 1; temp1 =(6734 - f)*10/116; if( (6503 f) & ( f = 6618 ) ) temp0 = 2; temp1 =(6618 - f)*10/115; if( (6388 f) & ( f = 6503 ) ) temp0 = 3; temp1 =(6503 - f)*10/115; if( (6271 f) & ( f = 6388 ) ) temp0 = 4; temp1 =(6388 - f)*10/117; if( (6152 f) & ( f = 6271 ) ) temp0 = 5; temp1 =(6271 - f)*10/119; if( (6029 f) & ( f = 6152 ) ) temp0 = 6; temp1 =(6152 - f)*10/123; if( (5901 f) & ( f = 6029 ) ) temp0 = 7;temp1 =(6029 - f)*10/128; if( (5766 f) & ( f = 5901 ) temp0 = 8; temp1 =(5901 - f)*10/135; if( (5623 f) & (f = 5766) temp0 = 9; temp1 =(5766 - f)*10/143; else temp0 = 0; temp1 = 0; void main() uchar i,k; uchar count; Init_timer(); count = 0; while(1) for (i=0;i200;i+) for (k=0;k200;k+); /延時 tran(); temp0 &= 0x0F; temp1 &= 0x0F; temp0 = temp0 4; count=temp0 | temp1; Ddisp(count); 說明:將555 定時器的輸出引腳與單片機AT89C2051 的定時輸入引腳相連,計數出1秒鐘內輸入的脈沖個數,此脈沖個數即為555定時器的振蕩頻率。對于CMOS 工藝的555 定時器,其測得的相對濕度與輸出的脈沖頻率具有如下關系式:Fmes(Hz) = F55(Hz)(1.1038-1.936810-3*RH+3.011410-6*RH2-3.440310-8*RH3),其中的F55(Hz)表示相對濕度為55時的頻率值,在25C 下F55(Hz)6660 Hz。因此,根據測得的脈沖頻率即可求出濕度值。從上式可以看出,F與RH之間是一種比較復雜的曲線關系,為了簡化計算,必須尋求更為簡單的求解方法。在25C 下,如果以F55(Hz) 6660 Hz 為參考點,555 定時器頻率輸出電路具有如下對應關系表。測濕電路為了使計算簡單,可以將頻率與濕度之間的非線性關系按照上表分為10段進行處理,每一小段內按線性關系處理,從而大大簡化了計算過程。系統程序分為兩大部分:系統主程序和T0 中斷服務程序。T0的中斷服務程序主要是實現555定時器輸出頻率的計算,而由頻率計算濕度則是在主程序中實現的。對于555定時器輸出頻率的計算,采用單片機AT89C2051的定時器中斷的方式實現:單片機AT89C2051內部集成了兩個16位的定時器T0 和T1,設置單片機定時器T0 定時20ms,并允許T0 中斷;定時器T1 則用來對555 的輸出脈沖進行計數。每當T0 發(fā)生20ms 定時中斷時,就讀取T1 中的計數脈沖個數,T1 50 即為此時555定時器的輸出頻率,并設置T0的中斷標志變量flagT0為1。初始化主要包括定時器T0和T1的初始化、中斷邏輯初始化等。然后判斷“FlagT0=1?”,當FlagT0=1時,表示又發(fā)生了一次新的T0定時中斷,并且在T0的中斷服務程序中已經求出了此時555定時器的輸出頻率;然后主程序執(zhí)行求濕度子程序,根據頻率求出此時濕度。如果FlagT0=0,則表示沒有新的T0定時中斷發(fā)生,主程序直接往下執(zhí)行,掃描“測濕”鍵和“清除”鍵,

溫馨提示

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

評論

0/150

提交評論