樊 銳,高樹(shù)華,王 丹
(北京航空航天大學(xué)機(jī)械工程及自動(dòng)化學(xué)院,北京 100191)
?
基于SCA103T與ATmega8A數(shù)字傾角儀的設(shè)計(jì)與實(shí)現(xiàn)
樊 銳,高樹(shù)華,王 丹
(北京航空航天大學(xué)機(jī)械工程及自動(dòng)化學(xué)院,北京 100191)
針對(duì)傾角儀小型化、數(shù)字化與高精度的要求,文中設(shè)計(jì)了以加速度傳感器SCA103T和AVR單片機(jī)ATmega8A為核心的數(shù)字傾角儀,并闡述了其軟硬件實(shí)現(xiàn)。硬件設(shè)計(jì)著重考慮了其數(shù)字接口以及抗干擾能力;軟件設(shè)計(jì)主要說(shuō)明了ATmega8A與上位機(jī)間串行通信、與SCA103T間SPI通信及數(shù)字濾波方法的實(shí)現(xiàn)。最后進(jìn)行了非線性誤差標(biāo)定與補(bǔ)償,并對(duì)溫度補(bǔ)償進(jìn)行了說(shuō)明。實(shí)驗(yàn)結(jié)果表明,該傾角儀精度可達(dá)0.02°,輸出頻率可達(dá)30 Hz,通信穩(wěn)定,測(cè)量重復(fù)性高,滿(mǎn)足實(shí)際需求。
數(shù)字傾角儀;SCA103T;ATmega8A;非線性誤差
傾角儀是用于測(cè)量關(guān)于某一基準(zhǔn)面的傾斜角度的裝置。當(dāng)前測(cè)量系統(tǒng)要求傾角儀具有較高精度與測(cè)量穩(wěn)定性,并提供方便接入整個(gè)系統(tǒng)的數(shù)字接口。目前市場(chǎng)上已有單軸、雙軸、三軸的傾角儀,但多數(shù)體積較大且數(shù)字化程度不高[1]。為提高精度,需對(duì)傾角儀測(cè)量結(jié)果進(jìn)行誤差補(bǔ)償,但先前研究的補(bǔ)償方案多過(guò)于復(fù)雜,降低了其實(shí)用性[2]。
針對(duì)上述問(wèn)題,文中設(shè)計(jì)了以SCA103T加速度傳感器與ATmega8A單片機(jī)為核心的小型高精度數(shù)字傾角儀,介紹了其軟硬件設(shè)計(jì),并采用簡(jiǎn)單實(shí)用的校正方法對(duì)其進(jìn)行了非線性誤差補(bǔ)償,通過(guò)實(shí)驗(yàn)驗(yàn)證了該傾角儀的有效性。
整個(gè)系統(tǒng)硬件電路如圖 1所示,分為傾角測(cè)量模塊、控制模塊、通訊模塊、電源模塊和程序下載模塊5個(gè)部分。其中控制模塊采用AVR系列單片機(jī)ATmega8A,而ISP下載接口則支持ATmega8A在線編程,便于程序下載與產(chǎn)品升級(jí)。
傾角測(cè)量模塊采用芬蘭VTI科技公司推出的SCA103T加速度傳感器。其主要性能指標(biāo)為:量程±30°;差分測(cè)量,具有11位SPI數(shù)字接口輸出,分辨率0.01°;內(nèi)部集成溫度傳感器,測(cè)量結(jié)果的溫度穩(wěn)定性好[3]。
圖1 傾角儀硬件電路結(jié)構(gòu)框圖
考慮到工業(yè)環(huán)境中串行通信易受到噪聲干擾,故通訊模塊采用ADM3251E芯片。此芯片可以實(shí)現(xiàn)單路RS232電平與TTL電平的轉(zhuǎn)換,并且集成isoPowerTM以提供隔離電源,適用于在噪聲較多的工業(yè)環(huán)境進(jìn)行串行通信。使用此芯片可以省去額外的隔離電路與隔離電源,從而可以簡(jiǎn)化電路與減小傾角儀體積。
電源模塊采用穩(wěn)壓轉(zhuǎn)換芯片LM7805將9~15 V的直流輸入電壓轉(zhuǎn)換為5 V輸出電壓。系統(tǒng)中ATmega8A和ADM3251E對(duì)供電電壓波動(dòng)不敏感,而核心測(cè)量芯片SCA103T的內(nèi)部測(cè)量單元與其內(nèi)部A/D轉(zhuǎn)換器采用相同的參考電壓,因此可以自動(dòng)消除電壓波動(dòng)影響,故該系統(tǒng)無(wú)需使用精密穩(wěn)壓電源如DC-DC供電。
基于上述硬件電路,同時(shí)為減小傾角儀體積,采用雙面圓形PCB板。焊接完成后的實(shí)物如圖 2所示,其直徑為33mm,帶底部支腿高度為25 mm.
圖2 傾角儀硬件實(shí)物圖
該傾角儀采用應(yīng)答式工作機(jī)制,即上位機(jī)根據(jù)通訊協(xié)議發(fā)送指令,傾角儀做出相應(yīng)處理與回復(fù)。利用ATmega8A內(nèi)置的512字節(jié)的EEPROM,可斷電保存由用戶(hù)設(shè)置的系統(tǒng)配置信息,如單個(gè)傾角儀在整個(gè)測(cè)量系統(tǒng)中的地址碼和相對(duì)零點(diǎn)的設(shè)置等,上電時(shí)加載這些信息以方便用戶(hù)使用。ATmega8A系統(tǒng)軟件的整體工作流程如圖 3所示。
圖3 系統(tǒng)軟件整體工作流程
ATmega8A通過(guò)SPI串行通信從SCA103T采集加速度數(shù)據(jù)并對(duì)數(shù)據(jù)進(jìn)行處理,同時(shí)通過(guò)RS232串行通信與上位機(jī)PC進(jìn)行應(yīng)答工作。由此,系統(tǒng)軟件按照功能可分為上位機(jī)串行通信、加速度數(shù)據(jù)讀取與數(shù)字濾波3個(gè)主要模塊。
2.1 基于雙緩沖隊(duì)列的串行通信方法
單片機(jī)串行通信常采用查詢(xún)方式發(fā)送字符,但此方法在發(fā)送過(guò)程中會(huì)阻塞CPU,導(dǎo)致系統(tǒng)效率低下[4]。因此,系統(tǒng)采用中斷驅(qū)動(dòng)方式進(jìn)行串行通信。
由于ATmega8A自身硬件僅提供1字節(jié)的接收緩沖區(qū)與發(fā)送緩沖區(qū),在通信速率較快時(shí),容易發(fā)生數(shù)據(jù)丟失現(xiàn)象。為實(shí)現(xiàn)上述串口中斷驅(qū)動(dòng)方式及減少數(shù)據(jù)丟失,程序中設(shè)計(jì)了2個(gè)軟件緩沖區(qū)分別用于數(shù)據(jù)接收與發(fā)送,均采用隊(duì)列數(shù)據(jù)結(jié)構(gòu)實(shí)現(xiàn),如圖 4所示。其中,inBuf與outBuf分別表示字符入隊(duì)與出隊(duì)指針,兩者可以同時(shí)進(jìn)行、互不影響,從而無(wú)需設(shè)立“互斥鎖”。緩沖區(qū)大小根據(jù)單片機(jī)實(shí)際內(nèi)存與通信速率確定,該系統(tǒng)中ATmega8A內(nèi)存為1 Kb,通信速率取9600bps,2個(gè)緩沖區(qū)大小均設(shè)置為60字節(jié)。
圖4 緩沖區(qū)結(jié)構(gòu)示意
采用中斷驅(qū)動(dòng)及雙緩沖隊(duì)列進(jìn)行ATmega8A的串行通信時(shí),工作流程如圖 5所。在接收中斷中將字符放入接收緩沖區(qū),在發(fā)送中斷中繼續(xù)取出發(fā)送緩沖區(qū)的下一字符進(jìn)行發(fā)送,直至發(fā)送緩沖區(qū)為空。實(shí)驗(yàn)證明,在波特率為9 600 bps、讀數(shù)頻率為30 Hz的情況下,傾角儀與上位機(jī)可以實(shí)現(xiàn)穩(wěn)定準(zhǔn)確的串行通信,達(dá)到較好的效果。
圖5 中斷驅(qū)動(dòng)及雙緩沖隊(duì)列下的串行通信
2.2 SPI總線11位加速度讀取方法
SCA103T采用差分測(cè)量,需要讀取X、Y 2個(gè)通道的加速度值才可得到對(duì)應(yīng)的角度值,所需指令為RDAX和RDAY.每個(gè)通道加速度由11位組成,而ATmega8A硬件SPI外設(shè)以字節(jié)(8位)為單位進(jìn)行數(shù)據(jù)發(fā)送與接收,因此多數(shù)文獻(xiàn)使用軟件模擬11位SPI通信[1,5]??紤]到SPI總線是全雙工同步串行總線,其時(shí)鐘信號(hào)由主設(shè)備完全控制,因此與上述文獻(xiàn)不同,該軟件利用硬件SPI外設(shè)連續(xù)發(fā)送兩個(gè)字節(jié)(16位)實(shí)現(xiàn)對(duì)11位加速度數(shù)據(jù)的讀取。圖6為讀取X通道11位加速度的流程,Y通道加速度讀取方法與此類(lèi)似。
圖6 讀取X通道加速度值流程
其中,接收到的字節(jié)XHigh即為11位X通道加速度數(shù)據(jù)的高8位,而XLow字節(jié)的高3位即為11位X通道加速度數(shù)據(jù)中的低3位,經(jīng)過(guò)簡(jiǎn)單的位運(yùn)算處理即可得到X通道11位加速度數(shù)據(jù)。實(shí)驗(yàn)結(jié)果表明,該方法讀數(shù)正確,且充分利用ATmega8A的硬件條件,簡(jiǎn)單高效。
2.3 復(fù)合多級(jí)數(shù)字濾波方法
SCA103T自身靈敏度較高,而且采用數(shù)字輸出時(shí)內(nèi)部A/D轉(zhuǎn)換具有一定不穩(wěn)定性,易受外界干擾而導(dǎo)致角度測(cè)量值發(fā)生波動(dòng)。在普通實(shí)驗(yàn)室環(huán)境下,對(duì)同一角度連續(xù)測(cè)量100次,結(jié)果如圖 7所示??梢?jiàn),波動(dòng)幅度達(dá)到±0.03°,因此在實(shí)際使用中需要增加數(shù)字濾波環(huán)節(jié)目前單片機(jī)中常用的數(shù)字濾波算法有中值濾波、算術(shù)平均濾波、加權(quán)平均濾波、滑動(dòng)平均濾波及低通濾波算法等[6]。中值濾波可以消除偶然因素引起的波動(dòng),平均濾波則可以消除隨機(jī)干擾,該系統(tǒng)采用了組合中值濾波與滑動(dòng)平均濾波的復(fù)合多級(jí)濾波算法。工作流程參見(jiàn)圖 3,在程序主循環(huán)中,若接收到上位機(jī)讀取角度的指令,則求取數(shù)組A中儲(chǔ)存的N個(gè)加速度值的平均值并計(jì)算得到角度值;若未接收到上位機(jī)指令,則連續(xù)采集3次加速度值并求取3次的中值(中值濾波),以此值替換數(shù)組A中最舊的數(shù)據(jù)(滑動(dòng)平均濾波)。
圖7 測(cè)量同一角度原始輸出結(jié)果
采用上述數(shù)字濾波算法,并取N=30,在同一條件下重新進(jìn)行角度測(cè)量,結(jié)果如圖 8所示。可見(jiàn),波動(dòng)幅度小于±0.01°,測(cè)量重復(fù)性明顯提高,數(shù)字濾波效果較好。
圖8 測(cè)量同一角度數(shù)字濾波后輸出結(jié)果
3.1 非線性誤差標(biāo)定
非線性誤差是用來(lái)評(píng)價(jià)傳感器的實(shí)際輸入輸出特性曲線偏離直線程度的一個(gè)性能指標(biāo)。傳感器的非線性誤差屬于系統(tǒng)誤差,可以通過(guò)硬件或軟件的方法進(jìn)行補(bǔ)償。該研究利用更高精度的儀器通過(guò)實(shí)驗(yàn)標(biāo)定傾角儀非線性誤差,然后建立誤差補(bǔ)償?shù)臄?shù)學(xué)模型。
考慮到傳感器的遲滯誤差,分為正向行程(-30°~30°)與反向行程(30°~-30°)分別進(jìn)行標(biāo)定,每個(gè)標(biāo)定點(diǎn)均多次測(cè)量并求取平均值。
標(biāo)定所用分度臺(tái)的精度為9″,最小刻度為1.5°。首先進(jìn)行零點(diǎn)對(duì)齊,然后每隔3°設(shè)置一個(gè)標(biāo)定點(diǎn),標(biāo)定結(jié)果如圖9與圖10中散點(diǎn)所示。其中,橫軸表示傾角儀的測(cè)量值,縱軸的誤差值則是傾角儀測(cè)量值與分度臺(tái)刻度值的差值。
圖9 正向行程誤差標(biāo)定結(jié)果
圖10 反向行程誤差標(biāo)定結(jié)果
3.2 非線性誤差補(bǔ)償
非線性誤差補(bǔ)償即通過(guò)一定補(bǔ)償修正算法使測(cè)量的非線性誤差盡可能減小。取與誤差值大小相等而符號(hào)相反的值作為修正值,將實(shí)際測(cè)量值加上修正值即可以得到理論上不含誤差的測(cè)量結(jié)果。標(biāo)定點(diǎn)處的誤差可由標(biāo)定實(shí)驗(yàn)測(cè)得,而其余點(diǎn)的誤差值則通過(guò)曲線擬合的方式得到。
由圖9和圖10散點(diǎn)圖可以看出,正、反向行程的標(biāo)定誤差值與測(cè)量值之間近似符合M次多項(xiàng)式曲線關(guān)系,且M≥3。為降低單片機(jī)的運(yùn)算量,取M=3,可得正、反向行程的擬合曲線表達(dá)式分別為式與式,曲線擬合效果則如圖9和圖 10中虛線所示。
y=6×10-6x3-1×10-5x2-9.8×10-3x+6.2×10-3
(1)
y=6×10-6x3-1×10-5x2-9.8×10-3x+5.1×10-3
(2)
式中:x表示測(cè)量值;y表示對(duì)應(yīng)的標(biāo)定誤差值。
由式(1)與式(2)可見(jiàn),正、反向行程擬合曲線表達(dá)式非常接近,因此通常情況下可以忽略遲滯誤差。實(shí)際軟件補(bǔ)償程序中不區(qū)分正反向行程而統(tǒng)一采用式(1)與式(2)的平均值,如式(3)所示。
y=6×10-6x3-1×10-5x2-9.8×10-3x+5.65×10-3
(3)
軟件程序中引入上述非線性誤差補(bǔ)償算法后,在相同的實(shí)驗(yàn)條件下,每隔1.5°設(shè)定一個(gè)驗(yàn)證點(diǎn)再次測(cè)量并與補(bǔ)償前誤差值進(jìn)行比較,以驗(yàn)證軟件補(bǔ)償效果。實(shí)驗(yàn)結(jié)果如圖11與圖12所示,其中橫軸標(biāo)準(zhǔn)值指分度臺(tái)的刻度值。
圖11 正向行程補(bǔ)償前后誤差對(duì)比
圖12 反向行程補(bǔ)償前后誤差對(duì)比
可見(jiàn),經(jīng)過(guò)補(bǔ)償后,傾角儀在±30°量程內(nèi)的最大誤差小于0.02°,非線性度由0.5%下降到0.06%,上述非線性誤差補(bǔ)償方法取得了良好效果。
3.3 溫度補(bǔ)償
SCA103T內(nèi)部集成溫度傳感器并自動(dòng)進(jìn)行溫度偏差補(bǔ)償,因此其溫度依賴(lài)性很小。如果對(duì)精度要求非常高,則可以附加外部溫度補(bǔ)償。SCA103T在未經(jīng)外部溫度補(bǔ)償時(shí),其靈敏度常數(shù)對(duì)溫度的依賴(lài)如圖13中補(bǔ)償前曲線所示[3]。
圖13 SCA103T靈敏度常數(shù)對(duì)溫度的依賴(lài)曲線
以3次多項(xiàng)式對(duì)靈敏度依賴(lài)曲線進(jìn)行擬合,結(jié)果如式(4)與式(5)所示。
S=-5×10-7T3-5×10-5T2+3.2×10-3T-0.031/*MERGEFORMAT
(4)
SENScomp=SENS·(1+S/100)/*MERGEFORMAT
(5)
式中:T為溫度,℃;S為靈敏度誤差百分比;SENS為靈敏度額定值;SENScomp為溫度補(bǔ)償后的靈敏度值。
溫度補(bǔ)償后,靈敏度常數(shù)對(duì)溫度依賴(lài)性如圖13中補(bǔ)償后曲線所示,可見(jiàn)溫度依賴(lài)性大幅降低。
以加速度傳感器SCA103T作為測(cè)量元件、單片機(jī)AT-
mega8A作為處理與控制元件,設(shè)計(jì)了一種小型化數(shù)字傾角儀,方便在實(shí)際測(cè)控系統(tǒng)中使用。采用特定的通信與濾波算法,保證了系統(tǒng)通信穩(wěn)定性與測(cè)量重復(fù)性。通過(guò)誤差補(bǔ)償,提高了傾角儀的測(cè)量精度,具有較高實(shí)用性。
[1] 王盛軍,邵瓊玲.基于SCA100t和MCU數(shù)字傾角傳感器的設(shè)計(jì)與實(shí)現(xiàn).傳感器與儀器儀表,2010,26(8-1):90-91.
[2] WON S P,GOINARAGLI F.A Triaxial Accelerometer Calibration Method Using a Mathematical Model.IEEE Transactions on Instrumentation and Measurement,2010,59(8):2144-2153.
[3] VTI Technologies.The SCA103T differential inclinometer series.http://www.VTI.fi.
[4] 邱鵬,盧社階.基于雙緩沖隊(duì)列的串口通信模塊.單片機(jī)與嵌入式系統(tǒng)應(yīng)用,2005,(1):70-72.
[5] 孫汝建.基于SPI接口的雙軸SCA10T傾角傳感器及其應(yīng)用方法.儀器儀表用戶(hù),2006,13(6):69-71.
[6] 向紅軍,雷彬.基于單片機(jī)系統(tǒng)的數(shù)字濾波方法的研究.電測(cè)與儀表,2005,42(9):53-55.
作者簡(jiǎn)介:樊銳(1963— ),教授,博士,主要研究方向?yàn)闄C(jī)電一體化、計(jì)算機(jī)測(cè)控。E-mail:fanrui@buaa.edu.cn
Design and Implementation of Digital InclinometerBased on SCA103T and ATmega8A
FAN Rui,GAO Shu-hua,WANG Dan
(School of Mechanical Engineering & Automation,Beihang University,Beijing 100191 China)
Aiming at miniaturization,digitization and high precision of the inclinometer,this paper presented a digital inclinometer based on the accelerometer SCA103T and the AVR microcontroller ATmega8A.The hardware design focused on digital interface and anti-interference capacity.The software design illustrated serial communication between ATmega8A and the host computer,communication between ATmega8A and SCA103T through Serial Peripheral Interface (SPI) and the digital filtering approach.Then the non-linear measurement error was calibrated and compensated.The temperature compensation was explained as well.Experiment results show that this inclinometer’s precision is 0.02 ° and its output frequency can reach 30 Hz with stable communication and high measurement repeatability,this meeting the practical demunds.
digital inclinometer; SCA103T; ATmega8A; non-inear error
張志堅(jiān)(1989—),碩士研究生,主要研究領(lǐng)域?yàn)楣收显\斷。E-mail:389008490@qq.com 周鳳星(1952—),教授,主要研究領(lǐng)域?yàn)楣收显\斷。 E-mail:faultdiagnosis@126.com
高檔數(shù)控機(jī)床與基礎(chǔ)制造裝備重大專(zhuān)項(xiàng)資助項(xiàng)目(2012ZX04010-021)
2014-01-20 收修改稿日期:2014-11-15
TP212.9
A
1002-1841(2015)01-0027-04