摘 要: 本文研究并設(shè)計了一種基于單片機的高精度水位監(jiān)控儀,從硬件設(shè)計、軟件設(shè)計與系統(tǒng)抗干擾設(shè)計三個方面詳細描述了整個系統(tǒng)。系統(tǒng)選用了高集成度的混合信號系統(tǒng)級芯片C8051F021,實現(xiàn)了信號的采集和處理,并且完成了AD421與單片機的SPI接口任務(wù),協(xié)調(diào)了它與AD7705芯片和單片機共同構(gòu)成的SPI總線系統(tǒng)的關(guān)系。系統(tǒng)解決了以往的水位監(jiān)控儀中存在的問題,達到了高精度水位測量儀器的各項標(biāo)準(zhǔn)。
關(guān)鍵字: 水位監(jiān)控;單片機;模數(shù)轉(zhuǎn)換
1 引言
水位監(jiān)控儀廣泛應(yīng)用于水利、石油、化工、冶金、電力等領(lǐng)域的自動檢測和控制系統(tǒng)中。目前有些水位監(jiān)控儀在運行過程中存在著一些問題,如:系統(tǒng)不穩(wěn)定、抗干擾能力差、精度低、輸出控制或顯示信號不滿足要求、現(xiàn)場更改程序或程序升級麻煩及通信能力差等。本文設(shè)計的智能水位監(jiān)控儀是吸收了國內(nèi)外最新智能化儀表的設(shè)計經(jīng)驗,采用工業(yè)控制單片機,集水位采集、存儲、顯示及遠程聯(lián)網(wǎng)于一體,適用于各種液位測量及閘門開度的測量。
2 系統(tǒng)硬件總體設(shè)計
本系統(tǒng)硬件部分主要考慮的功能有:模擬量的變換;模擬量的采集;高精度16位模數(shù)轉(zhuǎn)換器AD7705在系統(tǒng)中的應(yīng)用;精確時鐘芯片DS1302的應(yīng)用;四路繼電器報警,繼電器驅(qū)動芯片采用ULN2003;4~20mA電流環(huán)輸出數(shù)模轉(zhuǎn)換器AD421的應(yīng)用以提供系統(tǒng)檢測信號;用于與上位微機通訊的接口實現(xiàn)。系統(tǒng)框圖如圖1。
[align=center]
圖1 系統(tǒng)硬件原理圖[/align]
在本系統(tǒng)中,我們選用的主控芯片是高集成度MCU芯片C8051F021。C8051F單片機是完全集成的混合信號系統(tǒng)級芯片(SOC) .具有與8051兼容的高速CIP-51內(nèi)核和與MCS-51完全兼容的指令集;片內(nèi)集成了數(shù)據(jù)采集和控制系統(tǒng)中常用的模擬、數(shù)字外設(shè)及其他功能部件;內(nèi)置FLASH程序存儲器、內(nèi)部RAM;大部分器件內(nèi)部還有位于外部數(shù)據(jù)存儲器空間的RAM,即XRAM;C8051F單片機具有片內(nèi)調(diào)試電路,通過4腳的JTAG接口可以進行非侵入式、全速的在線系統(tǒng)調(diào)試。
2.1 SPI通訊接口設(shè)計
在系統(tǒng)設(shè)計中,有兩個外部芯片應(yīng)用了SPI接口方式:AD7705和AD421,單片機和這兩個外圍芯片構(gòu)成了一個SPI總線系統(tǒng)。其中單片機的NSS端懸空并被片內(nèi)上拉電阻置為高電平連接,因為AD421是一個4~20mA輸出的數(shù)模轉(zhuǎn)換器芯片,所以它與單片機的數(shù)據(jù)線連接只有主設(shè)備輸出從設(shè)備輸入,即MOSI。水位監(jiān)控儀中SPT系統(tǒng)的連接如圖2所示。
[align=center]
圖2 SPI接口系統(tǒng)原理圖[/align]
2.2 模數(shù)轉(zhuǎn)換設(shè)計
在本次設(shè)計中,我們選用了兩種模數(shù)轉(zhuǎn)換電路,第一種是利用單片機片內(nèi)的12位ADC,在可變電阻器通道中用的是該電路:另外一種是片外的高精度模數(shù)轉(zhuǎn)換芯片AD7705,該芯片的精度達16位,應(yīng)用于壓力傳感器通道的數(shù)據(jù)采集中,下面計算得出具體應(yīng)用中能達到的精度。在水位監(jiān)控儀的設(shè)計中,我們忽略模擬電路的前端誤差,那么可精確到的毫米數(shù)可由式1計算得出:
(1)
計算可得,當(dāng)測量量程a=10m時,如果采用12位的ADC,測量精度為2.44mm;如采用16位ADC,測量精度可達0.153mm。
我們的設(shè)計要求為精確到2 mm,所以如采用16位的ADC完全能符合我們的設(shè)計要求。在設(shè)計中由于可變電阻器法本身測量精度較低所以使其采用了單片機片內(nèi)的12位ADC,為盡量提高測量精度,減小測量誤差,我們還用單片機的另一通道對可變電阻器的供電電源電壓進行了采集,在軟件中兩者進行了適當(dāng)融合處理,在此不再詳述。壓力傳感器通道我們選用了片外的ADC轉(zhuǎn)換芯片AD7705, AD7705芯片正好有兩路模擬通道,供我們的兩路壓力傳感器通道使用,在軟件中進行通道的切換。
2.3 報警電路設(shè)計
本系統(tǒng)中四路報警電路的設(shè)計是采用單片機的I/O口加達林頓驅(qū)動芯片ULN2003實現(xiàn)的,然后將輸出接到繼電器的控制端。ULN2003由7組達林頓晶體管陣列和相應(yīng)的電阻網(wǎng)絡(luò)及鉗位二極管網(wǎng)絡(luò)構(gòu)成,具有同時驅(qū)動7組負載的能力,是單片雙極型大功率高速集成電路。繼電器選用的是G6B-1174P型號的產(chǎn)品,24V供電電壓。電氣內(nèi)部結(jié)構(gòu)連接示意如圖3。
本系統(tǒng)設(shè)計中采用四路繼電器信號輸出報警,包括高水位一、高水位二、低水位一、低水位二,這四個報警水位高度可通過下位機按鍵或上位機界面中人為設(shè)定和修改。以高水位一為例進行說明,當(dāng)水位值在高水位一和高水位二之間時,單片機發(fā)出開關(guān)量控制信號,使其對應(yīng)的繼電器常開觸點接觸導(dǎo)通,具體報警方式可靈活選擇,可在外電路中串接報警燈或報警鈴,當(dāng)該繼電器動作時,相應(yīng)報警開始(表現(xiàn)為燈亮或者鈴響)。
[align=center]
圖3 報警電路原理框圖[/align]
2.4 4-20mA電流環(huán)輸出數(shù)模轉(zhuǎn)換電路與時鐘電路的設(shè)計
在微機工業(yè)測控現(xiàn)場中,經(jīng)常會出現(xiàn)待測模擬電壓信號與測量設(shè)備之間有較遠的距離的情況,把該待測模擬電壓信號直接通過很長的線路送入測量設(shè)備顯然是不合理的。通常采用的方法是:在測量現(xiàn)場對待測模擬信號進行放大、濾波等預(yù)處理,再經(jīng)過變換后進行遠距離傳送,在測量設(shè)備附近再反變換成電壓信號進行測量。適合工業(yè)測控系統(tǒng)遠距離傳送的信號一般有電流源或頻率信號。為了把待測模擬電壓信號變換成電流源信號傳送,常常使用電壓/電流變換電路。本系統(tǒng)采用一種高性能數(shù)字模擬變換器AD421,變換器輸出信號為4~20mA電流環(huán)。
單片機應(yīng)用系統(tǒng)中,為了使系統(tǒng)具有實時性,需由一時鐘電路給系統(tǒng)提供時鐘信號(年、月、日、時、分、秒)。我們選用了DALLAS公司的DS1302芯片。水位監(jiān)控儀中用的主控芯片C8051F021共有兩個串行口,該我們的設(shè)計中,一個用于與上位微機的通訊,另一個用于與編碼器通訊,因此,在時鐘模塊與單片機的接口設(shè)計中只能采用第二種接口方式,即用普通I/O口模擬工作時序。該時鐘芯片對時序要求非常嚴格,時序的確定是跟硬件緊密相連的,芯片內(nèi)部的寄存器、鎖存器等都對時序有嚴格的要求,所以充分體現(xiàn)了在研制過程中軟硬件相結(jié)合的重要性。在程序設(shè)計過程中也遇到了因時序問題引起的數(shù)據(jù)傳輸錯誤,但最終都順利解決。
2.5 串行通訊部分電路的設(shè)計
在本次設(shè)計中,下位機與上位微機通信的串行口部分我們采用了兩種通信方式:第一種采用RS-232通信方式;第二種采用了RS-485通信方式。
本次設(shè)計中RS-232通信電平是用轉(zhuǎn)換芯片MAX202來實現(xiàn)的。MAX202適用于噪聲嚴重環(huán)境下的RS-232通信,每個發(fā)送器輸出和接收器輸入勿需封閉均可抗±15kV靜電放電(ESD,Electro-Static Discharge)沖擊,MAX202有兩個驅(qū)動器和兩個接收器,MAX202芯片是為在缺少±12V電源的情況下進行RS- 232C與TTL/COMS電平轉(zhuǎn)換而設(shè)計的雙向轉(zhuǎn)換芯片,MAX202的供電電源是+5 V,電平轉(zhuǎn)換速度的最大值不小于120kbps。MAX202芯片的外圍器件很少,只需用4個0.1μF的電容,因而進一步降低了成本和減小了占用的空間。
在我們的設(shè)計中,采用了SN65LBC184電平轉(zhuǎn)換芯片,SN65LBC184是SN5176行業(yè)標(biāo)準(zhǔn)范圍內(nèi)的差分數(shù)據(jù)線收發(fā)器,它帶有內(nèi)置高能量瞬變噪聲保護裝置,這種設(shè)計特點顯著提高了抵抗數(shù)據(jù)同步傳輸電纜上的瞬變噪聲的可靠性。差分驅(qū)動器設(shè)計集成了由轉(zhuǎn)換率控制(slew-rate-controlled)的輸出端,足可以250kbps的速率傳送數(shù)據(jù),轉(zhuǎn)換率控制比之不受控制可允許更長的無終止電纜運轉(zhuǎn)和來自主干線的更長的短截線長度以及更快的電壓轉(zhuǎn)變速度。獨有的接收器設(shè)計可在輸入端處于漂?。ㄩ_路)時提供高電平輸出失效保護,SN65LBC184接收器包括一個高輸入電阻,該電阻等效于1/4單位的負載,允許在總線上掛接最多128個類似器件。SN65LBC184的工作溫度為-40℃至+85℃,因此足可以滿足工作溫度環(huán)境要求。
為了防止上位機和下位機的之間互相的干擾,采用光電隔離器件是一種簡單而有效的方法。在RS-485的接口電路中我們選用的也是高速光電耦合器6N136。連接電路如圖4所示,其中圖中電源標(biāo)號+5(2)表示從DC-DC模塊輸出的+5V電源。
[align=center]
圖4 RS-485接口電路圖[/align]
3 水位監(jiān)控儀系統(tǒng)的軟件設(shè)計
在我們本次水位監(jiān)控儀設(shè)計中,所選用的軟件調(diào)試環(huán)境是Cygnal IDE,它是為C8051系列微控制器量身定制的集成開發(fā)環(huán)境,我們將Kei18051編譯環(huán)境的工具集成到Cygnal IDE中,從而形成了一個集成了編輯、編譯、下載代碼、在線調(diào)試等一系列功能的開發(fā)環(huán)境,很方便單片機程序的開發(fā)。
在我們的系統(tǒng)中將整體程序設(shè)計分為兩個大的模塊:初始化模塊和循環(huán)執(zhí)行模塊。相應(yīng)的子程序為:系統(tǒng)初始化子程序和循環(huán)子程序,在主程序調(diào)用了這兩個子程序。系統(tǒng)初始化子程序中對I/O、外部振蕩器、AD/DA、定時器、DART, SPI以及中斷系統(tǒng)都做了初始化的工作。循環(huán)子程序是一個死循環(huán),它包括了對顯示部分的初始化和循環(huán)體內(nèi)容,在循環(huán)體中我們不但完成顯示部分的功能,還做了一些系統(tǒng)應(yīng)該一直查詢的信號量,比如按鍵、通道對應(yīng)的中斷使能切換、繼電器輸出信號的控制處理等。
本文作者創(chuàng)新點:本水位監(jiān)控儀在精度上能夠滿足1mm的設(shè)計要求;在可靠性上基本上能夠克服外界的干擾,實現(xiàn)穩(wěn)定運行;在功能上具有多功能的設(shè)計,符合多種使用方式,可根據(jù)具體要求對功能進行選擇;能夠方便的實現(xiàn)人機操作,進行各種參數(shù)的設(shè)定和修改,在一定程度上滿足了智能化的要求。
參考文獻
[1] 汪濱琦, 陳紅偉, 姜廣文. C8051F020中的ADC應(yīng)用要素[J]. 單片機與嵌入式系統(tǒng)應(yīng)用. 2002, 11
[2] 先鋒工作室. 單片機程序設(shè)計實例[M]. 清華大學(xué)出版社, 2003.
[3] 高玉水, 王護利, 王輝. 光電旋轉(zhuǎn)編碼器在導(dǎo)彈模擬器中的應(yīng)用[J]. 電子設(shè)計應(yīng)用, 2003, 08.
[4] 余國清,陳煥文,湯富良. 遠程水位自動測量系統(tǒng)的設(shè)計與實現(xiàn)[J]. 微計算機信息, 2007, 7-1: 95-96