<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 測試測量 > 設(shè)計應(yīng)用 > 基于傳感器的角度測量系統(tǒng)設(shè)計

          基于傳感器的角度測量系統(tǒng)設(shè)計

          作者: 時間:2017-02-06 來源:網(wǎng)絡(luò) 收藏

          3.2 采集和處理數(shù)據(jù)的方法
          ADXL202有兩路輸出信號Xout、Yout,而且它們是同時工作的,而STM32F107是順序處理器,一個時間點上只能處理一路信號。我們采用分時復(fù)用的方法解決,以1 s為時間點,在這1 s內(nèi),STM32F107只采集處理一條通道內(nèi)的信號和數(shù)據(jù),到下一秒時就采集處理另一條通道上的信號和數(shù)據(jù)。還應(yīng)該注意一個問題,計數(shù)器在檢測到上升沿時開始計數(shù),等下降沿到來停止計數(shù)的時間內(nèi),脈寬過長時計數(shù)器會發(fā)生溢出,所以必須記錄下溢出次數(shù)。在最后計算計數(shù)器的值時,將溢出次數(shù)乘以計數(shù)器的寬度加上當(dāng)前計數(shù)器的值,即為總的計數(shù)值。




          4 角度測量儀系統(tǒng)的程序設(shè)計
          使用STM32F107的輸入捕獲功能,需要通過程序配置內(nèi)部寄存器的初始狀態(tài),以此來滿足角度測量儀的工作需求。
          ①開啟GPIO和TIM2的時鐘,通過內(nèi)部的庫函數(shù)RCC_APB2PeriphClockCmd、RCC_APB1PeriphClockCmd來控制兩個時鐘的開啟。為了采集TIM 2_CH1和TIM2_CH2上的高電平脈寬,需配置PA0和PA1為下拉輸入。
          ②初始化TIM2,設(shè)定TIM2的輸入捕獲自動重裝載值為0xfffe,計數(shù)頻率為1 MHz。
          ③使能輸入捕獲、中斷、計數(shù)器,通過STM32F107的庫函數(shù)能方便地配置。
          由角度測量和輸入捕獲原理可得系統(tǒng)的程序流程圖,如圖7所示。


          圖7 系統(tǒng)程序流程圖

          5 調(diào)試和測量結(jié)果
          在室溫下進(jìn)行調(diào)試。當(dāng)角度測量儀沒有傾斜時,液晶屏上顯示的結(jié)果并不為零,其原因是ADXL202安裝無法完全水平。芯片安裝后本身存在傾角,這是不可避免的。雖然調(diào)試環(huán)境是在室溫下,但是實際使用的環(huán)境可能是溫度變化較大的場合,零漂和靈敏度隨溫度的漂移將會很嚴(yán)重,直接測量時會導(dǎo)致很大的角度誤差,因此,必須采取某種形式的溫度補(bǔ)償方法來解決。
          當(dāng)角度測量儀有傾斜時,測量結(jié)果與實際值有較大誤差。經(jīng)分析是輸入捕獲的計數(shù)器有誤差。經(jīng)將干擾和毛刺計數(shù)進(jìn)來,所以應(yīng)該添加濾波電路,同時計數(shù)器的值采用多次計數(shù)取平均值的方法,以此提高計數(shù)的精度。
          角度測量儀的測量結(jié)果如圖8所示。


          圖8 角度測量儀的測量結(jié)果

          結(jié)語
          本文論述了一種基于ADXL202的高精度角度測量儀的研究和設(shè)計方法,對ADXL202的角度測量原理和STM32F107的輸入捕獲功能進(jìn)行了詳細(xì)的介紹。經(jīng)實驗測試,該測量儀能高精度地完成角度測量,而且可靠性好,對角度測量的研究和設(shè)計有著積極的意義。

          上一頁 1 2 3 下一頁

          評論


          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();