摘要:詳細(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),,沒有考慮環(huán)境溫度對(duì)測(cè)量精度的影響,故無法滿足某些高精度調(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ī),,通過編制好的計(jì)算程序進(jìn)行計(jì)算,將計(jì)算結(jié)果通過串口中斷方式傳送到上位計(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),。由于電子傾角器輸出的模擬電壓含有高次諧波,因此通過二價(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ù)字量通過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)境溫度,,將采集的溫度值通過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ù)沒有限制,,但是每個(gè)字節(jié)后必須跟一個(gè)應(yīng)答位(ACK),,數(shù)據(jù)傳送首先傳最高位(MSB),。
2 系統(tǒng)軟件設(shè)計(jì)
本系統(tǒng)軟件采用匯編語言編程,由主程序,、計(jì)算子程序,、ADS1210讀寫子程序,、DS1624讀寫子程序和串口中斷服務(wù)子程序等組成。傾角器溫度補(bǔ)償?shù)南嚓P(guān)參數(shù)存放在DS1624的E2ROM中,,必要時(shí)上位計(jì)算機(jī)通過控制命令對(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)過溫度補(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ù)寫入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的讀寫操作都要遵循I2C總線協(xié)議,。利用單片機(jī)可以仿真I2C總線的讀/寫時(shí)序,。I2C總線的控制主要包括以下五部分:開始,、讀數(shù)據(jù),、寫數(shù)據(jù),、應(yīng)答、停止,。
圖6
DS1624的編程包括以下幾個(gè)子程序:初始化子程序、啟動(dòng)溫度轉(zhuǎn)換子程序,、讀取溫度值子程序。在初始化子程序中,,向配置/狀態(tài)寄存器寫一個(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ù)通過串口中斷的方式進(jìn)行修改。單片機(jī)計(jì)算得到的結(jié)果即修正角度也是通過串口中斷的方式輸出的,。本系統(tǒng)的串口中斷服務(wù)程序包括以下幾個(gè)命令:寫零偏差,、寫零偏溫度系數(shù),、寫傾角器轉(zhuǎn)換比例因子,、寫比例因子溫偏差,、寫ADS1210的轉(zhuǎn)換比例,、寫ADS1210的轉(zhuǎn)換速率,、寫角度校準(zhǔn)值、初始化E2ROM中的數(shù)據(jù),、讀溫度值,、讀計(jì)算后修正角度值,、檢查寫進(jìn)數(shù)據(jù)的正確性、檢查芯片是否工作正常等。串口中斷服務(wù)的流程圖如圖7所示,。
本文介紹的高精度數(shù)字傾角測(cè)量系統(tǒng)已經(jīng)在工程中得到實(shí)現(xiàn),并通過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)定,、性能可靠,。