基于單片機(jī)的氣壓式高度計(jì)設(shè)計(jì)
摘要:采用集成度高的壓阻式硅氣壓傳感器,運(yùn)用模塊化設(shè)計(jì)方法完成了基于C8051F353單片機(jī)的數(shù)字式氣壓高度計(jì)的設(shè)計(jì)。通過(guò)仿真軟件采用分段插值方法優(yōu)化提高測(cè)量精度,實(shí)現(xiàn)了數(shù)字式氣壓高度計(jì)的智能化。實(shí)驗(yàn)表明,本文設(shè)計(jì)的氣壓式高度計(jì)能夠顯著提高測(cè)量精度,非常適合對(duì)體積和功耗有要求的小型飛行器上使用,也可使用在地面儀表上,進(jìn)行大氣數(shù)據(jù)采集。
關(guān)鍵詞:氣壓傳感器;誤差補(bǔ)償;C8051F353;非線性校正
高度是載體到某一基準(zhǔn)水平面的垂直距離,是導(dǎo)航的一個(gè)重要依據(jù)。氣壓傳感器是氣壓式高度計(jì)的重要器件。傳統(tǒng)的氣壓傳感器信號(hào)調(diào)理電路校準(zhǔn)和補(bǔ)償電路復(fù)雜,穩(wěn)定性差,不能直接用于計(jì)算機(jī)數(shù)字化處理,也不便于在便攜式設(shè)備中集成。本氣壓式高度測(cè)量系統(tǒng)使用微型壓阻式傳感器,通過(guò)對(duì)靜壓的測(cè)量,經(jīng)過(guò)模/數(shù)變換后由單片機(jī)進(jìn)行數(shù)字濾波,函數(shù)解算出載體當(dāng)前的絕對(duì)高度,具有較高精度和抗干擾能力。
1 高度測(cè)量系統(tǒng)的設(shè)計(jì)
大氣壓力在數(shù)值上等于所在海拔高度往上直到大氣上界整個(gè)空氣柱的重量,因此理想情況下,大氣壓力與海拔高度具有一一對(duì)應(yīng)的關(guān)系。在海平面附近,海拔高度每升高100 m,氣壓下降大約0.7 kPa。由于空氣具有可壓縮性,大氣壓力與海拔高度具有非線性關(guān)系。
高度和氣壓之間的函數(shù)關(guān)系較為復(fù)雜。如果照搬氣壓公式來(lái)制作電路,電路將變得十分復(fù)雜,現(xiàn)實(shí)起來(lái)非常困難。因此,設(shè)計(jì)該高度計(jì)時(shí),可以將高度按區(qū)段劃分,分別進(jìn)行數(shù)據(jù)的解算。
1.1 氣壓高度計(jì)設(shè)計(jì)的理論基礎(chǔ)
氣壓與高程的關(guān)系模型:H=T0/L×(P/P0)∧(1/(N-1))(近似公式)。以標(biāo)準(zhǔn)海平面為基準(zhǔn):T0=288.15K;P0=101.325kPa;N=5.2558 8;L=-0.006 5℃/m,通過(guò)計(jì)算結(jié)果可見(jiàn)表1。從表中數(shù)據(jù)可以看出,傳感器的漂移等引起的誤差對(duì)高端和低端的影響是不同的。為提高測(cè)量精度,設(shè)計(jì)時(shí)要考慮這一點(diǎn)。根據(jù)氣壓公式可以得出0~6 000 m量程內(nèi)的壓力變化范圍在47.18~101.325 kPa。據(jù)此可確定硅壓阻式傳感器量程。為充分利用傳感器的精度,選擇硅壓阻式傳感器量程要盡量接近測(cè)量范圍。
1.2 高度計(jì)的硬件設(shè)計(jì)
硬件結(jié)構(gòu)由微型硅壓阻式傳感器、單片機(jī)、A/D轉(zhuǎn)換、精密參考電壓、顯示驅(qū)動(dòng)模塊、串口通信模塊、電源模塊等幾部分組成。元器件選取主要考慮設(shè)計(jì)精度和體積功耗,并留有一定的余量。
1.2.1 單片機(jī)
數(shù)據(jù)處理要求體積小功耗低,內(nèi)部帶有16位ADC和溫度傳感器。此處選用C8051F353型單片機(jī),是美國(guó)Silicon Labs公司最新推出的一款混合信號(hào)片上系統(tǒng)型單片機(jī)芯片,可以工作在-40~+85℃溫度范圍,28引腳LQFP封裝,帶有最大放大倍數(shù)128的可編程增益放大器(PGA)。非常適用于多路模擬數(shù)據(jù)采集系統(tǒng)。
1.2.2 壓阻式傳感器
氣壓傳感器在氣壓計(jì)中占據(jù)核心位置。設(shè)計(jì)時(shí)可根據(jù)測(cè)量精度、測(cè)量范圍、溫度補(bǔ)償、測(cè)量絕對(duì)氣壓值等幾個(gè)性能指標(biāo)來(lái)選取氣壓傳感器。選用傳感器量程要盡量與測(cè)量的范圍相符,以利于同樣的精度條件下減小誤差。傳感器選用體積較小的飛思卡爾公司的MPX2100D型絕壓傳感器,量程為100~0 kPa。線性度為±0.25%FS。滿量程輸出為40 mV(10 V供電)。它用單個(gè)由離子注入工藝形成并經(jīng)激光修整的X型電阻代替一般用4個(gè)電阻構(gòu)成的惠斯登電橋,避免了由4個(gè)電阻的不匹配而引起的誤差。
1.2.3 ADC芯片
根據(jù)量程和分辨率選擇A/D轉(zhuǎn)換器位數(shù)和精度。ADC芯片的位數(shù)N根據(jù)公式N≥log2(1+Umax/Umin)計(jì)算(式中:Umax為ADC芯片的滿度輸入電壓;Umin為ADC芯片最小能分辨出的電壓),為達(dá)到1 m以上的氣壓高度分辨率,A/D轉(zhuǎn)換器的位數(shù)要在15位以上。為簡(jiǎn)化電路,縮小體積,這里A/D轉(zhuǎn)換器采用C8051F353自帶的16位ADC0。參考電壓使用單片機(jī)內(nèi)部自帶的2.5 V基準(zhǔn)。通過(guò)將寄存器ADCOMD中的ADOEN位置“1”和將寄存器ADCOCF中的ADOVREF位清“0”來(lái)使能內(nèi)部電壓基準(zhǔn)。使用時(shí)應(yīng)在VREF和AGND之間接入0.1μF和4.7μF的旁路電容。
1.2.4 顯示通信電路
由于使用4個(gè)單個(gè)LED進(jìn)行顯示的連線比較復(fù)雜,同時(shí)單片機(jī)的端口驅(qū)動(dòng)能力也難以保證,此處選用專(zhuān)門(mén)的驅(qū)動(dòng)芯片。顯示驅(qū)動(dòng)選用可編程8位SPI串行LED接口的MAX7219。串口通信電路主要用來(lái)實(shí)現(xiàn)該系統(tǒng)與上位計(jì)算機(jī)的通信,利用C8051F353型單片機(jī)的UART串口總線通過(guò)SP3 232芯片的電平轉(zhuǎn)換與上位計(jì)算機(jī)進(jìn)行通信。工作于9 600 b/s,1個(gè)起始位,8個(gè)數(shù)據(jù)位,1個(gè)停止位,奇校驗(yàn)。
1.2.5 電源與抗干擾設(shè)計(jì)
使用了低壓差穩(wěn)壓器LM1117A分別為微處理器和為其余電路供電。采用了基準(zhǔn)電壓源MAX6350來(lái)穩(wěn)定對(duì)壓力傳感器的供電,以保證傳感器輸出的穩(wěn)定性。將基準(zhǔn)電壓分壓后作為C8051F353型單片機(jī)的電壓參考。PCB板設(shè)計(jì)時(shí)每個(gè)芯片有電源退耦電路。模擬數(shù)字分開(kāi)布線。為了避免傳感器產(chǎn)生的信號(hào)在進(jìn)入A/D采樣前發(fā)生失真并減少傳感器的功耗,在ADC的輸入端連接了濾波器,降低噪聲并作為緩沖器隔離前后級(jí),避免其他電路對(duì)ADC采樣的影響。儀器采用干電池供電不存在電源或電網(wǎng)干擾問(wèn)題。但現(xiàn)場(chǎng)使用不可避免地會(huì)受到自然放電干擾和其他電氣設(shè)備的放電干擾。為不增加過(guò)多的硬件屏蔽措施,設(shè)計(jì)采用軟件采用了采用了改進(jìn)的平均值濾波算法。
1.3 高度計(jì)的軟件件設(shè)計(jì)
軟件設(shè)計(jì)流程如圖1所示,采用模塊化結(jié)構(gòu),方便調(diào)試。包括初始化子程序、采樣數(shù)據(jù)處理、A/D轉(zhuǎn)換子程序、壓力補(bǔ)償子程序、數(shù)據(jù)處理子程序、高度計(jì)算子程序、通信子程序、顯示子程序等部分組成。
雖然測(cè)量范圍內(nèi)指示空速是大氣動(dòng)壓的單值函數(shù),但其函數(shù)關(guān)系式比較復(fù)雜,若由式(1)、(2)由單片機(jī)直接計(jì)算,要使用浮點(diǎn)運(yùn)算,會(huì)占用較多的計(jì)算機(jī)資源。該設(shè)計(jì)選定線性插值方法來(lái)計(jì)算指示空速。用一個(gè)簡(jiǎn)單易實(shí)現(xiàn)的線性函數(shù)代替原復(fù)雜函數(shù),即:y=yi+ki(x-xi)。式中:yi,xi,ki分別代表第i個(gè)插值點(diǎn)氣壓高度值、大氣靜壓值和插值線段的斜率。插值點(diǎn)的個(gè)數(shù)可由線性插值法的誤差公式確定:
式中:M=max(f"(x));δ為計(jì)算精度。根據(jù)系統(tǒng)要求的計(jì)算精度δ,求出步長(zhǎng)h=xi+1-xi,得出曲線插值的分段段數(shù)n=60。預(yù)先計(jì)算各插值點(diǎn)相應(yīng)的氣壓高度值、大氣靜壓值和插值線段的斜率,把校正點(diǎn)的數(shù)據(jù)求出,按照一定的規(guī)律構(gòu)成表格存放在單片機(jī)的內(nèi)部ROM中。采集到的數(shù)據(jù),先與校正點(diǎn)的數(shù)據(jù)進(jìn)行比較找到數(shù)據(jù)所在的分段,然后將該分段對(duì)應(yīng)的yi,xi,ki代入分段插值公式中計(jì)算,即可解算出氣壓高度值。這樣可在保證精度的前提下提高采樣頻率。
C8051F353單片機(jī)內(nèi)部設(shè)有溫度傳感器,溫度傳感器系統(tǒng)由兩個(gè)溫度特性不同的二極管和兩個(gè)恒流源組成。兩個(gè)通道通過(guò)ADC的模擬多路選擇器連接到ADC的輸入端。溫度傳感器系統(tǒng),工作在差分方式。本文利用C8051F353單片機(jī)內(nèi)部的溫度傳感器對(duì)溫度進(jìn)行采樣,對(duì)傳感器的輸出進(jìn)行修正,以進(jìn)一步提高輸出精度。
根據(jù)壓阻式壓力傳感器原理,所測(cè)壓力大小P與傳感器輸出電壓U是線性關(guān)系。即兩個(gè)參數(shù)關(guān)系為:P=aU+b。由于傳感器的零位和靈敏度會(huì)隨溫度漂移,因此系數(shù)a,b也會(huì)隨溫度變化而變化,即系數(shù)a,b是溫度的函數(shù)。首先,通過(guò)多次采樣定標(biāo),由標(biāo)準(zhǔn)壓力源提供分組標(biāo)準(zhǔn)壓力,記錄一定溫度下傳感器的輸出電壓值,即多組(Pi,Ui),i=0,1,2,…,n,然后利用最小二乘法進(jìn)行曲線擬合。為使總誤差最小,可用Q對(duì)a,b求偏導(dǎo)數(shù),令這兩個(gè)偏導(dǎo)數(shù)為零,則求解方程得出一定溫度對(duì)應(yīng)的系數(shù)(at,bt)。其中t=-10℃,0℃,10℃,…,50℃。壓力大小P與輸出電壓U關(guān)系為:
然后再通過(guò)牛頓插值法,根據(jù)溫度傳感器提供的溫度參數(shù)t,對(duì)壓力P與電壓U關(guān)系式進(jìn)行插值修正。由插值多項(xiàng)式:
根據(jù)一定溫度修正后壓力P與電壓U的關(guān)系式,可以由所測(cè)電壓U計(jì)算出實(shí)際壓力值P。
2 實(shí)驗(yàn)結(jié)果和誤差分析
由于傳感器的最大誤差在測(cè)量值的最高端,如果此段的誤差滿足設(shè)計(jì)要求,其他分段即可滿足要求。結(jié)果如表2所示。由于仿真階段排除了可能出現(xiàn)的軟硬件錯(cuò)誤,在后繼的PCB制版及總體調(diào)試中非常順利。實(shí)際電路中由于存在電磁干擾和溫度漂移,整體誤差比仿真略大,對(duì)于誤差最大來(lái)源的傳感器,已對(duì)其進(jìn)行了單獨(dú)的校正和補(bǔ)償,最終該測(cè)量系統(tǒng)在-300~+6 000 m的高度范圍內(nèi)誤差小于1m。
對(duì)于海拔高度,系統(tǒng)測(cè)量誤差主要來(lái)自傳感器、放大電路和轉(zhuǎn)換器三項(xiàng)誤差,用均方根法可表示為:
要降低系統(tǒng)誤差,就要分別降低這三項(xiàng)誤差。其中放大器電路的誤差,主要由放大電路中所用電阻的精度、集成運(yùn)算放大器的性能和電路的結(jié)構(gòu)決定。設(shè)計(jì)和調(diào)校好的放大電路可以使該項(xiàng)誤差很小,基本可以忽略。ADC誤差主要是其積分非線性誤差、微分非線性誤差、偏移誤差、滿量程誤差和偏移溫度系數(shù)誤差?,F(xiàn)代放大電路的誤差和ADC誤差遠(yuǎn)小于傳感器的誤差。所以系統(tǒng)的誤差主要決定于傳感器的誤差。如要進(jìn)一步提高測(cè)量精度,可以換用更高精度的傳感器。
3 結(jié)語(yǔ)
該高度計(jì)避免了機(jī)械部件帶來(lái)的機(jī)械誤差,充分利用了C8051F353單片機(jī)內(nèi)部資源。具有體積小、精度高和智能化誤差補(bǔ)償?shù)忍攸c(diǎn),特別適合在小型飛行器上使用。具有很好的實(shí)用性,適用于需要實(shí)時(shí)高度信息的場(chǎng)合,可以完成載體上多種高度參數(shù)的實(shí)時(shí)測(cè)量和顯示,內(nèi)有串口通信模塊,不僅可顯示本機(jī)測(cè)量值,也可通過(guò)串口發(fā)送給大氣數(shù)據(jù)計(jì)算機(jī),實(shí)現(xiàn)數(shù)據(jù)的記錄和監(jiān)測(cè)。有廣泛的應(yīng)用前景。