1 引言
氣壓計(jì)是利用壓敏元件將待測(cè)氣壓直接變換為容易檢測(cè)、傳輸?shù)碾娏骰螂妷盒盘?hào),,然后再經(jīng)過(guò)后續(xù)電路處理并進(jìn)行實(shí)時(shí)顯示的一種設(shè)備。其中的核心元件就是氣壓傳感器,,它在監(jiān)視壓力大小,、控制壓力變化以及物理參量的測(cè)量等方面起著重要作用。運(yùn)用于氣壓計(jì)的氣壓傳感器基本都是依靠不同高度時(shí)的氣壓變化來(lái)獲取氣壓值的,。
氣象學(xué)研究表明,,在垂直方向上氣壓隨高度增加而降低。例如在低層,,每上升100m氣壓便降低10hPa,;在5~6km的高空,高度每增加100m,,氣壓便會(huì)降低7hPa,;而當(dāng)高度進(jìn)一步增加時(shí),即到9~10km的高空之后,,高度每增加100m,,氣壓便會(huì)降低5hPa;同樣,,若空氣中有下降氣流時(shí),氣壓會(huì)增加,;若空氣中有上升氣流時(shí),,作用于空氣柱底部的氣壓就會(huì)減小。一般把作用于單位面積上空氣柱的重量稱(chēng)為大氣壓力,。
2 氣壓計(jì)的結(jié)構(gòu)
氣壓傳感器用來(lái)將被測(cè)氣壓轉(zhuǎn)換為電壓信號(hào),;用V/F轉(zhuǎn)換器則可把氣壓傳感器輸出的電壓信號(hào)轉(zhuǎn)換成具有一定頻率的脈沖信號(hào);以便用單片機(jī)接收該脈沖信號(hào),,并根據(jù)單位時(shí)間內(nèi)得到的脈沖數(shù),,依據(jù)電壓與頻率的線(xiàn)性關(guān)系式計(jì)算出所對(duì)應(yīng)的氣壓值,最后在單片機(jī)控制下由LED顯示出來(lái),。
本氣壓計(jì)能夠在氣壓傳感器的線(xiàn)性范圍內(nèi)準(zhǔn)確測(cè)量相應(yīng)氣壓值,。需要說(shuō)明的是,其測(cè)量值是絕對(duì)氣壓值,。本文研究的氣壓計(jì)的技術(shù)指標(biāo)如下:
●測(cè)量范圍:300hPa~1050hPa,;
●測(cè)量精度:0.1%FS(20℃);
●顯示精度:0.1%,,由4個(gè)8段LED顯示實(shí)現(xiàn),;
●工作溫度范圍:0~85℃;
●電源電壓:9V,。
3 系統(tǒng)實(shí)現(xiàn)
在系統(tǒng)構(gòu)建過(guò)程中,,需要考慮穩(wěn)定性,、復(fù)雜程度、造價(jià)和調(diào)試的難易程度等因素,。每一部分就是一個(gè)單元電路,,可完成各自的功能。模塊之間沒(méi)有復(fù)雜的信號(hào)傳輸,,且干擾很少,,因而系統(tǒng)整體比較穩(wěn)定。
3.1 氣壓傳感器
氣壓傳感器在氣壓計(jì)中占據(jù)核心位置,。設(shè)計(jì)時(shí)可根據(jù)測(cè)量精度,、測(cè)量范圍、溫度補(bǔ)償,、測(cè)量絕對(duì)氣壓值等幾個(gè)性能指標(biāo)來(lái)選取氣壓傳感器,。
由于該氣壓計(jì)顯示的是絕對(duì)氣壓值,因而需要選取測(cè)量絕對(duì)氣壓值的氣壓傳感器,。同時(shí)為了簡(jiǎn)化電路,,提高穩(wěn)定性和抗干擾能力,要求該氣壓傳感器應(yīng)帶有溫度補(bǔ)償,。
為此,,筆者選用Motorola的MAX4100A氣壓傳感器來(lái)測(cè)量絕對(duì)氣壓值。該傳感器的溫度補(bǔ)償范圍為-40~+125℃,;壓力范圍為20kPa~1050kPa,;輸出電壓信號(hào)(Vs=5.0V)范圍為0.3~4.65V;測(cè)量精度為0.1%VFSS,,同時(shí)在20kPa~1050kPa時(shí)具有良好的線(xiàn)性,,具體輸出關(guān)系如下:
Vout=Vs(0.01059P-0.1528)±Error
式中,Vs是工作電壓, P是大氣壓值,,Vout為輸出電壓,。
3.2 V/F變換
V/F器件的作用是將輸入電壓的幅值轉(zhuǎn)換成頻率與輸入電壓幅值成正比的脈沖串。雖然V/F本身還不能算做量化器,,但加上定時(shí)器與計(jì)數(shù)器以后也可以實(shí)現(xiàn)A/D轉(zhuǎn)換,。它的突出特點(diǎn)就是把模擬電壓轉(zhuǎn)換成抗干擾能力強(qiáng),可遠(yuǎn)距離傳送并能直接輸入計(jì)算機(jī)的脈沖串,,從而通過(guò)測(cè)量V/F的輸出頻率來(lái)實(shí)現(xiàn)A/D轉(zhuǎn)換功能,。
考慮到外圍電路實(shí)現(xiàn)的難易程度和相應(yīng)的性能指標(biāo),筆者選用了LM331電壓/頻率轉(zhuǎn)換芯片,。該器件使用了溫度補(bǔ)償能隙基準(zhǔn)電路,,因而具有極佳的溫度穩(wěn)定性,最大溫漂為50ppm/℃,同時(shí)該器件的脈沖輸出可與任何邏輯形式兼容,;LM331可單,、雙電源供電,電壓范圍為5~40V,;滿(mǎn)量程范圍1Hz~100kHz,;最大非線(xiàn)性誤差為0.01%。圖2所示是該系統(tǒng)中LM331的外圍電路,。在該電路中,,基于LM331的壓頻轉(zhuǎn)換關(guān)系為:
fo=K Vi
其中,K=Rs/(2.09 RtCt RL),, Rs=Rs1+Rs2
實(shí)際上,,電路中的Rs主要用于調(diào)節(jié)電路的轉(zhuǎn)換增益Rt, Ct,RL的典型值分別為6.8kΩ,、0.01pF和100kΩ,,K值則可由設(shè)計(jì)者自己決定。該設(shè)計(jì)中,,?。耍剑玻埃埃埃遥螅剑玻福矗玻矗?Omega;主要是考慮到單片機(jī)部分使用測(cè)頻率法來(lái)測(cè)fo能夠保證頻率信號(hào)的測(cè)量精度,。由于Rs,、RL、Rt和電容Ct會(huì)直接影響fo的轉(zhuǎn)換結(jié)果,。因此,,對(duì)這些元件的參數(shù)有一定的要求,設(shè)計(jì)時(shí)應(yīng)根據(jù)轉(zhuǎn)換精度適當(dāng)選擇,。電容CL對(duì)轉(zhuǎn)換結(jié)果雖然沒(méi)有直接影響,,但是應(yīng)選擇漏電流小的電容器,。用電阻R1, 電容C1組成低通濾波器,,可減少輸入電壓中的干擾脈沖,提高轉(zhuǎn)換精度,。
3.3 單片機(jī)
本氣壓計(jì)實(shí)現(xiàn)方案需使用單片機(jī)的P1口和P3口的一部分以及一個(gè)中斷源,、一個(gè)定時(shí)器和一個(gè)計(jì)數(shù)器。因此,,筆者選用了ATMEL的AT89C2051單片機(jī),,該器件與89C51兼容,具有2kB的可重復(fù)編程閃存,,2.7V~6V的工作電壓范圍,,128Byte的內(nèi)部RAM以及兩個(gè)I/O口(P1,P3)、2個(gè)16位的計(jì)數(shù)器/定時(shí)器和6個(gè)中斷源,,并可直接驅(qū)動(dòng)LED輸出,,同時(shí)帶有可編程的串行通訊口。另外,,該單片機(jī)還具有體積小,,價(jià)格低等特點(diǎn)。
3.4 LED顯示
單個(gè)LED是由7段發(fā)光二極管構(gòu)成的顯示單元,。有10個(gè)引腳,,對(duì)應(yīng)于7個(gè)段、一個(gè)小數(shù)點(diǎn)和兩個(gè)公共端,。在顯示電路中,,這些發(fā)光二極管有兩種接法:共陽(yáng)極接法和共陰極接法。本設(shè)計(jì)中需要用4個(gè)LED組成顯示單元,,并采用動(dòng)態(tài)顯示方式,。由于使用4個(gè)單個(gè)LED進(jìn)行顯示的連線(xiàn)比較復(fù)雜,同時(shí)單片機(jī)的端口驅(qū)動(dòng)能力也難以保證,,而需要加入專(zhuān)門(mén)的驅(qū)動(dòng)芯片,。所以,筆者采用了4個(gè)LED連體的,、內(nèi)部已將其相應(yīng)段接好的共陽(yáng)極LED,,它具有12個(gè)引腳,含7個(gè)段和4個(gè)公共端,,為提高數(shù)碼管的亮度,,可在位選線(xiàn)上加入一個(gè)三極管驅(qū)動(dòng)電路。
由AT89C2051控制的顯示電路如圖3所示,。該顯示電路需要選取合適的電阻R和Ra,,才能保證LED的亮度,過(guò)大或者過(guò)小都無(wú)法讓?zhuān)蹋牛恼o@示,。設(shè)計(jì)時(shí)?。覟椋矗罚?Omega;Ra為510Ω比較理想。若考慮印制板布線(xiàn)的方便,,可以采用貼片電阻和排阻來(lái)節(jié)省空間,。另外,也可以用74LS244和74LS06構(gòu)成驅(qū)動(dòng)顯示電路,,但這樣同樣要加限流電阻,。因?yàn)椋罚矗蹋樱埃妒情_(kāi)漏器件,需要在輸出處加上拉電阻,。
4 軟件實(shí)現(xiàn)
通過(guò)以上設(shè)計(jì),,便可通過(guò)fo來(lái)計(jì)算P的大小以得到實(shí)時(shí)的氣壓值。硬件電路設(shè)計(jì)完成之后,可使用AEDK5196PH仿真器的仿真環(huán)境進(jìn)行仿真,,并可用C51語(yǔ)言來(lái)編寫(xiě)處理程序,。
程序設(shè)定:T0為定時(shí)器,基本的定時(shí)時(shí)基為50ms,。T1為計(jì)數(shù)器,,運(yùn)用內(nèi)部中斷0可保證T0定時(shí)滿(mǎn)500ms后就讀取此時(shí)計(jì)數(shù)器的值,以計(jì)算氣壓值,。如使T1,、T0均工作于方式1,并在P1口送字型碼,,同時(shí)可用P3.0~P3.3做位選線(xiàn),,那么,其相應(yīng)的函數(shù)如下:
(1)定時(shí)器T0中斷函數(shù):
voidtimer0(void) interrupt1 using1
{uintx, y;
uintcount_pluse;
ET0=0; //關(guān)閉T/C0中斷
Tcount++; //中斷次數(shù)
ifTcount== 10){
TR1=0; //停止計(jì)數(shù)器計(jì)數(shù)
Tcount=0;
x=TH1;
y=TL1;
count_pulse=(x*256+y)*2;
ph=(uint)(10* ((float)(countpulse+1520)/105.9//計(jì)算氣壓值
TH1 =0x00; //重設(shè)計(jì)數(shù)初值
TL1=0x00;
}
TH0 =-50000/256; //重設(shè)50ms初值
TL0 =-50000%256;
if(TL0!=0) TH0--;
ET0=1;
TR1=1;
return;
}
該中斷函數(shù)主要用于完成脈沖的讀取和氣壓值的計(jì)算,。ph是個(gè)全局變量,,可用來(lái)保存氣壓值。
(2)在顯示函數(shù)里,,將氣壓值先按位進(jìn)行分離并保存到數(shù)組,,然后送段碼和相應(yīng)位選就可以顯示出相應(yīng)的氣壓值了。具體程序如下:
voiddisplay(uintph_in)
{uchari=0;
ucharj=0;
ucharselect_bit=0; //位選
do {
cur_buf[i]=ph_in%10;
i++;
j=i;
}while(ph_in=ph_in/10);//當(dāng)高位為零時(shí)結(jié)束循環(huán)
i=0;
select_bit=0xfe;
do
{P1=tab[*p];
P3=select_bit;
dl_ms();
select_bit=(selectbit<<1)+1;
//從最右邊一位開(kāi)始顯示,循環(huán)左移
p++;
i++;
}while(i<j);
p=cur_buf; //指針歸位
return;}
這樣,,在主程序中,,只要在程序第一次運(yùn)行時(shí)進(jìn)行初始化,然后再循環(huán)調(diào)用顯示函數(shù)即可實(shí)現(xiàn)實(shí)時(shí)顯示功能,。
5 結(jié)束語(yǔ)
筆者曾用純硬件電路設(shè)計(jì)過(guò)氣壓計(jì),。實(shí)踐表明,由于受溫度的影響及硬件參數(shù)的限制,,實(shí)時(shí)顯示時(shí)穩(wěn)定性較差,,并且精確度不高。而改用V/F變換信號(hào)及編程的方法實(shí)現(xiàn)該測(cè)量則完全克服了上述缺點(diǎn),。結(jié)果表明:該方法具有精度高,、穩(wěn)定性好、功能易于擴(kuò)展等優(yōu)點(diǎn),,可為儀器及電子產(chǎn)品設(shè)計(jì)提供一種新的思路,。