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