摘要:詳細(xì)介紹了利用A/D轉(zhuǎn)換器、溫度傳感器和單片機(jī)實(shí)現(xiàn)數(shù)字傾角測(cè)量系統(tǒng)的硬件和軟件設(shè)計(jì)。該系統(tǒng)具有精度高、運(yùn)行穩(wěn)定、性能可靠、帶溫度補(bǔ)償?shù)葍?yōu)點(diǎn),可廣泛應(yīng)用于寬工作溫度范圍的高精度傾斜角測(cè)量中。
關(guān)鍵詞:AT89C52單片機(jī) 傾角測(cè)量 ADS1210
在自動(dòng)控制和工程設(shè)計(jì)中,常常需要對(duì)某一個(gè)平面或基準(zhǔn)進(jìn)行傾角測(cè)量,或進(jìn)行自動(dòng)水平調(diào)節(jié),特別是在自動(dòng)控制中,經(jīng)常需要對(duì)某一物體進(jìn)行動(dòng)態(tài)水平控制,這就要求儀器能對(duì)水平傾角進(jìn)行自動(dòng)動(dòng)態(tài)跟蹤測(cè)量[1];在某些高精度的測(cè)量系統(tǒng)中,還要求對(duì)系統(tǒng)進(jìn)行快速調(diào)平或?qū)δ承┭b置與水平面的傾斜角進(jìn)行快速高精度的測(cè)量。這些都是傳統(tǒng)傾角測(cè)量系統(tǒng)和水平儀很難做到的。以電子傾角器為傳感器而設(shè)計(jì)的數(shù)字傾角測(cè)量系統(tǒng)或數(shù)字水平儀不僅能滿足自動(dòng)測(cè)量與控制的要求,而且能使測(cè)量的精度和速度大大提高。
以往使用電子傾角器作為傳感器而設(shè)計(jì)的數(shù)字水平儀和電子傾角測(cè)量系統(tǒng),沒(méi)有考慮環(huán)境溫度對(duì)測(cè)量精度的影響,故無(wú)法滿足某些高精度調(diào)平和傾斜角測(cè)量的需求。為了進(jìn)行寬工作溫度范圍的高精度測(cè)量,必須對(duì)電子傾角器進(jìn)行溫度補(bǔ)償。這里介紹一種高精度的數(shù)字傾角測(cè)量系統(tǒng),它利用Jewell Instruments公司的LCF-100型傾角器作為傾角傳感器,其輸出的模擬電壓與傾斜角正弦成比例。將該模擬電壓進(jìn)行A/D轉(zhuǎn)換后送入單片機(jī),同時(shí)利用溫度傳感器實(shí)時(shí)采集傾角器周圍環(huán)境的溫度,也送入單片機(jī),通過(guò)編制好的計(jì)算程序進(jìn)行計(jì)算,將計(jì)算結(jié)果通過(guò)串口中斷方式傳送到上位計(jì)算機(jī)。本文將詳細(xì)地闡述系統(tǒng)硬件電路設(shè)計(jì)以及軟件設(shè)計(jì)。
1 系統(tǒng)硬件設(shè)計(jì)
1.1系統(tǒng)的硬件結(jié)構(gòu)
高精度數(shù)字傾角測(cè)量系統(tǒng)的硬件結(jié)構(gòu)如圖1所示。單片機(jī)選用ATMEL公司的AT89C52,利用其提供的軟件硬件資源,完成系統(tǒng)的控制以及采集數(shù)據(jù)的計(jì)算。系統(tǒng)的主要部分包括:電子傾角器、二階低通濾波器、A/D轉(zhuǎn)換器ADS1210、AT89C52、溫度傳感器DS1624、電源以及向上位計(jì)算機(jī)傳送數(shù)據(jù)的通訊接口電路等。
圖2
電子傾角器選用Jewell Instruments公司生產(chǎn)的LCF-100型電子傾角器,它屬于力平衡式伺服系統(tǒng)電子傾角器,測(cè)量范圍為-1°~+1°,其輸出為模擬電壓,與傾斜角度的正弦成正比。該傾角器具有分辨率高、響應(yīng)速度快、線性度好等特點(diǎn)。由于電子傾角器輸出的模擬電壓含有高次諧波,因此通過(guò)二價(jià)低通濾波器濾除輸出信號(hào)的高頻分量。
A/D轉(zhuǎn)換器將電子傾角器輸出的模擬量轉(zhuǎn)換為數(shù)字量,其分辨率的高低將直接影響系統(tǒng)的測(cè)量精度。根據(jù)設(shè)計(jì)要求,本系統(tǒng)采用Burr-Brown公司ADS1210作為電子傾角器的A/D轉(zhuǎn)換器,它是一個(gè)24位分辨率、寬動(dòng)態(tài)范圍、單5V電源供電、帶自校正功能的∑-Δ高精度A/D轉(zhuǎn)換器,其內(nèi)部由可編程增益放大器、二階∑-Δ調(diào)制器、調(diào)制器控制單元、三階數(shù)字濾波器、微控制器、寄存器組、基準(zhǔn)參考源和時(shí)鐘電路等組成[2]。ADS1210將轉(zhuǎn)換的數(shù)字量通過(guò)I2C總線傳送到單片機(jī)。
溫度傳感器選用Dallas Semiconductor公司的DS1624數(shù)字溫度測(cè)量計(jì),它具有測(cè)量精度高、測(cè)量溫度范圍寬,易與單片機(jī)接口等特點(diǎn),其內(nèi)部還帶有256字節(jié)的E2PROM,用于存儲(chǔ)測(cè)量系統(tǒng)的修正參數(shù)[3]。溫度傳感器實(shí)時(shí)采集系統(tǒng)的環(huán)境溫度,將采集的溫度值通過(guò)I2C總線送入單片機(jī)。
1.2 ADS1210和DS1624與AT89C52的接口電路
ADS1210和DS1624與AT89C52的接口電路如圖2所示。傳感器的輸出接到ADS1210的AINP和AINN輸入端。在這里,ADS1210和AT89C52采用的是三線連接,DRDY、SDIO、SCLK分別與P12、P13、P14相連接,其中SDIO用于數(shù)據(jù)的輸入和輸出,CS直接接地,MODE接地表示從機(jī)方式。由于在本系統(tǒng)中只用了一塊ADS1210,故可將DSYNC與DVDD直接相連。
利用AT89C52的P1口的P10和P11分別與DS1624的引腳SCL和SDA相連構(gòu)成I2C總線。I2C總線是一種串行數(shù)據(jù)總線,只用兩根信號(hào)線,一根是雙向數(shù)據(jù)線SDA,另一根是時(shí)鐘線SCL。在I2C總線上傳送的一個(gè)數(shù)據(jù)字節(jié)由八位組成,總線對(duì)每次傳送的字節(jié)數(shù)沒(méi)有限制,但是每個(gè)字節(jié)后必須跟一個(gè)應(yīng)答位(ACK),數(shù)據(jù)傳送首先傳最高位(MSB)。
2 系統(tǒng)軟件設(shè)計(jì)
本系統(tǒng)軟件采用匯編語(yǔ)言編程,由主程序、計(jì)算子程序、ADS1210讀寫(xiě)子程序、DS1624讀寫(xiě)子程序和串口中斷服務(wù)子程序等組成。傾角器溫度補(bǔ)償?shù)南嚓P(guān)參數(shù)存放在DS1624的E2ROM中,必要時(shí)上位計(jì)算機(jī)通過(guò)控制命令對(duì)其進(jìn)行修正。中斷服務(wù)程序隨時(shí)接收上位計(jì)算機(jī)的控制命令,進(jìn)行系統(tǒng)自檢、參數(shù)修正、數(shù)據(jù)輸出等。
2.1主程序
主程序完成初始化后,實(shí)時(shí)采集環(huán)境溫度和電子傾角器數(shù)據(jù),并進(jìn)行補(bǔ)償運(yùn)算。為了保證采集傾角器數(shù)據(jù)的穩(wěn)定性,采集一次環(huán)境溫度數(shù)據(jù)后,連續(xù)采集10次傾角器數(shù)據(jù)進(jìn)行算術(shù)平均,然后再采集一次環(huán)境溫度如此,如此循環(huán)往復(fù)。 請(qǐng)登陸:輸配電設(shè)備網(wǎng) 瀏覽更多信息
主程序的流程如圖3所示。
2.2 計(jì)算子程序
電子傾角器輸出的模擬電壓V與傾斜角度θ的正弦近似成線性關(guān)系,即:
V=V0+K0×sinθ ?。?)
其中,K0是電子傾角器的轉(zhuǎn)換比例因子。因傾角器的測(cè)量范圍為±1??梢杂没《戎堤娲嵌鹊恼抑?,其計(jì)算誤差為:
該誤差可以忽略不計(jì),則公式(1)簡(jiǎn)化為:
V=V0+K0×θ
從公式(2)可以看出,傾斜角度θ是隨環(huán)境溫度線性變化的函數(shù),而線性傳感器的溫度補(bǔ)償是對(duì)零位和靈敏度的補(bǔ)償,所以經(jīng)過(guò)溫度補(bǔ)償?shù)膬A角器輸出為:
V=V0+K×ΔT+K0(1+K1×ΔT) ×θ
式中,K為零位溫度系數(shù),K1為比例因子溫度系數(shù)。
用AD表示A/D轉(zhuǎn)換器輸出的數(shù)據(jù);K_AD表示A/D轉(zhuǎn)換器的輸出斜率,單位:1/V;B0表示基準(zhǔn)零偏電壓,單位:V;B_temp表示零點(diǎn)偏差系數(shù),單位:V/℃;ΔT表示溫度變化量,單位:℃;S.F._Temp表示比例因子溫度系數(shù);Title表示修正后的傾角,單位:"。則(3)式變?yōu)椋?
兩邊同時(shí)乘以K_AD,則(4)式變?yōu)椋?
由(9)式可以計(jì)算出溫度補(bǔ)償后的修正傾角。
計(jì)算子程序的流程如圖4所示。
2.3 ADS1210的編程
對(duì)ADS1210編程,首先對(duì)其進(jìn)行初始化,根據(jù)系統(tǒng)設(shè)計(jì)的要求,確定相關(guān)的參數(shù),如增益PGA、加速因子TMR、數(shù)據(jù)輸出率DR(抽取率)等。在初始化子程序中,將這些相關(guān)的參數(shù)寫(xiě)入CMR。啟動(dòng)ADS1210的轉(zhuǎn)換,然后調(diào)用讀DOR寄存器子程序,將轉(zhuǎn)換的結(jié)果讀到單片機(jī)中。ADS1210的初始化流程和讀DOR寄存器流程如圖5所示。
2.4 DS1624的編程
由于將DS1624的引腳SCL和SDA與AT89C52的P10和P11相連構(gòu)成I2C總線,對(duì)DS1624的讀寫(xiě)操作都要遵循I2C總線協(xié)議。利用單片機(jī)可以仿真I2C總線的讀/寫(xiě)時(shí)序。I2C總線的控制主要包括以下五部分:開(kāi)始、讀數(shù)據(jù)、寫(xiě)數(shù)據(jù)、應(yīng)答、停止。
圖6
DS1624的編程包括以下幾個(gè)子程序:初始化子程序、啟動(dòng)溫度轉(zhuǎn)換子程序、讀取溫度值子程序。在初始化子程序中,向配置/狀態(tài)寄存器寫(xiě)一個(gè)字節(jié)的數(shù)據(jù)用以將DS1624的工作方式設(shè)為連續(xù)轉(zhuǎn)換方式。
DS1624的初始化子程序、讀取溫度值和啟動(dòng)溫度轉(zhuǎn)換子程序流程圖如圖6所示。
2.5 串口中斷服務(wù)程序
如果更換電子傾角器,那么其相應(yīng)的參數(shù),如固定零偏差、零偏的溫度系數(shù)、比例因子、比例因子溫度系數(shù)等都會(huì)發(fā)生變化。為了提高系統(tǒng)的通用性,將這些參數(shù)通過(guò)串口中斷的方式進(jìn)行修改。單片機(jī)計(jì)算得到的結(jié)果即修正角度也是通過(guò)串口中斷的方式輸出的。本系統(tǒng)的串口中斷服務(wù)程序包括以下幾個(gè)命令:寫(xiě)零偏差、寫(xiě)零偏溫度系數(shù)、寫(xiě)傾角器轉(zhuǎn)換比例因子、寫(xiě)比例因子溫偏差、寫(xiě)ADS1210的轉(zhuǎn)換比例、寫(xiě)ADS1210的轉(zhuǎn)換速率、寫(xiě)角度校準(zhǔn)值、初始化E2ROM中的數(shù)據(jù)、讀溫度值、讀計(jì)算后修正角度值、檢查寫(xiě)進(jìn)數(shù)據(jù)的正確性、檢查芯片是否工作正常等。串口中斷服務(wù)的流程圖如圖7所示。
本文介紹的高精度數(shù)字傾角測(cè)量系統(tǒng)已經(jīng)在工程中得到實(shí)現(xiàn),并通過(guò)T3經(jīng)緯儀驗(yàn)證了它的測(cè)量精度。實(shí)驗(yàn)結(jié)果表明:在-10℃~+50℃的溫度范圍內(nèi),其精度達(dá)到3”,能滿足寬工作溫度范圍高精度測(cè)量系統(tǒng)的需要。更寬溫度范圍內(nèi)的精度驗(yàn)證實(shí)驗(yàn)正在進(jìn)行中。該系統(tǒng)已經(jīng)在某項(xiàng)目的水平傾斜角測(cè)量中得到應(yīng)用,運(yùn)行穩(wěn)定、性能可靠。