基于傳感器的角度測(cè)量系統(tǒng)設(shè)計(jì)
3.2 采集和處理數(shù)據(jù)的方法
ADXL202有兩路輸出信號(hào)Xout、Yout,而且它們是同時(shí)工作的,而STM32F107是順序處理器,一個(gè)時(shí)間點(diǎn)上只能處理一路信號(hào)。我們采用分時(shí)復(fù)用的方法解決,以1 s為時(shí)間點(diǎn),在這1 s內(nèi),STM32F107只采集處理一條通道內(nèi)的信號(hào)和數(shù)據(jù),到下一秒時(shí)就采集處理另一條通道上的信號(hào)和數(shù)據(jù)。還應(yīng)該注意一個(gè)問(wèn)題,計(jì)數(shù)器在檢測(cè)到上升沿時(shí)開(kāi)始計(jì)數(shù),等下降沿到來(lái)停止計(jì)數(shù)的時(shí)間內(nèi),脈寬過(guò)長(zhǎng)時(shí)計(jì)數(shù)器會(huì)發(fā)生溢出,所以必須記錄下溢出次數(shù)。在最后計(jì)算計(jì)數(shù)器的值時(shí),將溢出次數(shù)乘以計(jì)數(shù)器的寬度加上當(dāng)前計(jì)數(shù)器的值,即為總的計(jì)數(shù)值。
4 角度測(cè)量?jī)x系統(tǒng)的程序設(shè)計(jì)
使用STM32F107的輸入捕獲功能,需要通過(guò)程序配置內(nèi)部寄存器的初始狀態(tài),以此來(lái)滿足角度測(cè)量?jī)x的工作需求。
①開(kāi)啟GPIO和TIM2的時(shí)鐘,通過(guò)內(nèi)部的庫(kù)函數(shù)RCC_APB2PeriphClockCmd、RCC_APB1PeriphClockCmd來(lái)控制兩個(gè)時(shí)鐘的開(kāi)啟。為了采集TIM 2_CH1和TIM2_CH2上的高電平脈寬,需配置PA0和PA1為下拉輸入。
②初始化TIM2,設(shè)定TIM2的輸入捕獲自動(dòng)重裝載值為0xfffe,計(jì)數(shù)頻率為1 MHz。
③使能輸入捕獲、中斷、計(jì)數(shù)器,通過(guò)STM32F107的庫(kù)函數(shù)能方便地配置。
由角度測(cè)量和輸入捕獲原理可得系統(tǒng)的程序流程圖,如圖7所示。
圖7 系統(tǒng)程序流程圖
5 調(diào)試和測(cè)量結(jié)果
在室溫下進(jìn)行調(diào)試。當(dāng)角度測(cè)量?jī)x沒(méi)有傾斜時(shí),液晶屏上顯示的結(jié)果并不為零,其原因是ADXL202安裝無(wú)法完全水平。芯片安裝后本身存在傾角,這是不可避免的。雖然調(diào)試環(huán)境是在室溫下,但是實(shí)際使用的環(huán)境可能是溫度變化較大的場(chǎng)合,零漂和靈敏度隨溫度的漂移將會(huì)很嚴(yán)重,直接測(cè)量時(shí)會(huì)導(dǎo)致很大的角度誤差,因此,必須采取某種形式的溫度補(bǔ)償方法來(lái)解決。
當(dāng)角度測(cè)量?jī)x有傾斜時(shí),測(cè)量結(jié)果與實(shí)際值有較大誤差。經(jīng)分析是輸入捕獲的計(jì)數(shù)器有誤差。經(jīng)將干擾和毛刺計(jì)數(shù)進(jìn)來(lái),所以應(yīng)該添加濾波電路,同時(shí)計(jì)數(shù)器的值采用多次計(jì)數(shù)取平均值的方法,以此提高計(jì)數(shù)的精度。
角度測(cè)量?jī)x的測(cè)量結(jié)果如圖8所示。
圖8 角度測(cè)量?jī)x的測(cè)量結(jié)果
結(jié)語(yǔ)
本文論述了一種基于ADXL202的高精度角度測(cè)量?jī)x的研究和設(shè)計(jì)方法,對(duì)ADXL202的角度測(cè)量原理和STM32F107的輸入捕獲功能進(jìn)行了詳細(xì)的介紹。經(jīng)實(shí)驗(yàn)測(cè)試,該測(cè)量?jī)x能高精度地完成角度測(cè)量,而且可靠性好,對(duì)角度測(cè)量的研究和設(shè)計(jì)有著積極的意義。
評(píng)論