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

          新聞中心

          EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 基于AT89S52的MEMS陀螺信號(hào)采集與處理系統(tǒng)設(shè)計(jì)

          基于AT89S52的MEMS陀螺信號(hào)采集與處理系統(tǒng)設(shè)計(jì)

          作者: 時(shí)間:2015-05-06 來(lái)源:網(wǎng)絡(luò) 收藏

            (Micro Electron Mechanical System)陀螺儀是一種可以精確測(cè)量物體方位的儀器,不僅成本低,體積小,重量輕,而且可以與微電子加工的電路實(shí)現(xiàn)集成,做到機(jī)電一體化。陀螺適用于汽車(chē)工業(yè)、慣性導(dǎo)航、計(jì)算機(jī)、機(jī)器人、軍事等急需大量小型、廉價(jià)陀螺的應(yīng)用領(lǐng)域,是國(guó)防、工業(yè)發(fā)展中必不可少的儀器。

          本文引用地址:http://www.ex-cimer.com/article/273687.htm

            但是,陀螺儀在實(shí)際應(yīng)用中達(dá)不到需要的精度,為了提高陀螺儀系統(tǒng)工作性能和測(cè)量精度,對(duì)陀螺儀進(jìn)行數(shù)據(jù)采集并減小誤差是至關(guān)重要的。

            ADIS16355慣性測(cè)量裝置將三軸角速度感知與三軸加速度感知相結(jié)合,提供六自由度運(yùn)動(dòng)感知、嵌入式校準(zhǔn)與傳感器處理以及傳感器-傳感器交叉補(bǔ)償,并大大提高信號(hào)穩(wěn)定性(使用偏移穩(wěn)定性為0.015 deg/sec),體積小于1立方英寸。ADIS16355是在整個(gè)溫度范圍內(nèi)校準(zhǔn),具有卓越的偏壓溫度穩(wěn)定性(0.005 deg/sec/°)。

            ADISl6355提供一個(gè)串行外部接口SPI(Serial Peripheral Interface),通過(guò)SPI可以對(duì)芯片進(jìn)行配置,獲得運(yùn)行狀態(tài)與測(cè)量結(jié)果等,其對(duì)外部供電要求不高,內(nèi)部自帶高精度的穩(wěn)壓電路,外圍電路較少[1]。

            單片機(jī)[2]是一種低功耗、高性能CMOS 8位微控制器,具有8 KB在系統(tǒng)可編程Flash存儲(chǔ)器,使用美國(guó)ATMEL公司高密度非易失性存儲(chǔ)器技術(shù)制造,與工業(yè)80C51產(chǎn)品指令和引腳完全兼容。在單芯片上,擁有靈巧的8位CPU和在系統(tǒng)可編程Flash,同時(shí),帶有ISP下載功能,它利用在線編程器替代昂貴的單片機(jī)仿真器編程器,既方便使用,又節(jié)省開(kāi)發(fā)費(fèi)用。

            本文結(jié)合單片機(jī)對(duì)ADIS16355慣性傳感器進(jìn)行控制,將采集的數(shù)據(jù)實(shí)時(shí)存儲(chǔ)并通過(guò)LCD1602進(jìn)行顯示,最后對(duì)系統(tǒng)進(jìn)行測(cè)試,并分析了系統(tǒng)存在的誤差。

            1 ADIS16355芯片數(shù)據(jù)采集硬件設(shè)計(jì)

            根據(jù)數(shù)據(jù)采集系統(tǒng)的需要,系統(tǒng)以作為主控單元,外擴(kuò)一片6264靜態(tài)存儲(chǔ)器作為數(shù)據(jù)存儲(chǔ)器,并設(shè)計(jì)AT89S52與ADIS16355通信的SPI接口模塊、LCD顯示模塊、鍵控模塊和在線編程模塊,系統(tǒng)硬件連接框圖如圖1所示。

            

           

            1.1 主控模塊

            控制單片機(jī)AT89S52具有8 KB Flash,256 B RAM,32 bit的I/O口線,看門(mén)狗定時(shí)器,兩個(gè)數(shù)據(jù)指針,3個(gè)16 bit定時(shí)器/計(jì)數(shù)器,一個(gè)六向量?jī)杉?jí)中斷結(jié)構(gòu),全雙工串行口,片內(nèi)晶振及時(shí)鐘電路等功能[3]。它與ADIS16355陀螺儀之間通過(guò)SPI接口相連。因?yàn)锳T89S52單片機(jī)沒(méi)有專(zhuān)門(mén)的SPI接口,只能通過(guò)軟件模擬P2.0口為時(shí)鐘信號(hào)線與陀螺儀的SPI接口SCLK引腳相連,P2.1口為主輸出從輸入MOSI與陀螺儀SPI接口的數(shù)據(jù)輸人SDI引腳相連,P2.2口為主輸入從輸出MISO與陀螺儀SPI接口的數(shù)據(jù)輸出SDO引腳相連,P2.3口為片選信號(hào)。P3.2、P3.3為中斷引腳,分別與ADIS16355的DIO1和DIO2相連,為數(shù)據(jù)轉(zhuǎn)換中斷。

            1.2 LCD顯示模塊

            系統(tǒng)顯示部分采用液晶LCD1602芯片,其特點(diǎn)是:功耗低、體積小、質(zhì)量輕、顯示質(zhì)量高、數(shù)字式,采用標(biāo)準(zhǔn)的16腳接口和單片機(jī)連接簡(jiǎn)單,操作方便,能夠同時(shí)顯示16×2即32個(gè)字符,1602液晶模塊內(nèi)部的字符發(fā)生存儲(chǔ)器(CGROM)存儲(chǔ)了160個(gè)不同的點(diǎn)陣字符圖形,方便顯示控制器采集出的數(shù)據(jù)。

            1.3 在線編程模塊

            系統(tǒng)設(shè)計(jì)了在線編程模塊,利用STC-ISP編程燒錄軟件實(shí)時(shí)在線下載程序,大大方便了開(kāi)發(fā)者,提高了系統(tǒng)研發(fā)效率。

            1.4 SPI接口模塊通信與配置

            SPI是MOTOROLA公司提出的同步串行總線方式,是一種全雙工、同步、串行數(shù)據(jù)接口標(biāo)準(zhǔn)總線,與其他串行總線相比,它具有電路結(jié)構(gòu)簡(jiǎn)單、速度快、通信可靠等優(yōu)點(diǎn)[4]。標(biāo)準(zhǔn)的SPI總線由4根信號(hào)線組成:時(shí)鐘信號(hào)(SCLK)、主輸入從輸出線(SDI)、主輸出從輸入線(SDO)和片選信號(hào)(CS)。

            系統(tǒng)中ADIS16355通過(guò)SPI接口與外部進(jìn)行通信,需要外部設(shè)備MCU通過(guò)該接口對(duì)其內(nèi)部各寄存器進(jìn)行設(shè)置,圖2所示是一個(gè)典型的寫(xiě)入控制寄存器命令的數(shù)據(jù)幀。由芯片資料[5]可知,DIN系列的首位是1,第二位是0,后面是目標(biāo)寄存器的6 bit地址和8 bit數(shù)據(jù)命令,因?yàn)槊恳粋€(gè)寫(xiě)命令包含一個(gè)數(shù)據(jù)位,所以給整個(gè)16 bit寄存器空間寫(xiě)值時(shí)要求有兩個(gè)數(shù)據(jù)幀。圖3為ADIS16355讀操作SPI時(shí)序圖,由芯片資料[5]可知ADIS16355完成一次SPI通信包括16 bit數(shù)據(jù),其中第1位是SPI傳輸?shù)淖x寫(xiě)狀態(tài)標(biāo)識(shí),第2位為0,緊跟著的6 bit是目標(biāo)寄存器地址,最后8 bit是在寫(xiě)操作時(shí)將要寫(xiě)進(jìn)寄存器的數(shù)據(jù),如果是讀操作則忽略,完成ADIS16355的一個(gè)讀操作需要進(jìn)行兩次16 bit的SPI通信,其中第一次是寫(xiě)入將要讀取的寄存器地址,該寄存器的內(nèi)容將在第二次SPI通信出現(xiàn)在ADIS16355的DOUT信號(hào)線上,輸入SPI的主設(shè)備。

            

           

            本設(shè)計(jì)中控制器與ADIS16355進(jìn)行SPI通信的每個(gè)數(shù)據(jù)幀為16 bit,而AT89S52的數(shù)據(jù)寬度為8 bit,所有內(nèi)部寄存器和數(shù)據(jù)空間存儲(chǔ)器都是8 bit寬度組成,作為主設(shè)備在其發(fā)出有效的SPI片選信號(hào)使能ADISl6355后,要對(duì)其自身的SPI數(shù)據(jù)寄存器進(jìn)行兩次寫(xiě)操作,才能在總線上完成一次16 bit數(shù)據(jù)傳輸。

            2 軟件設(shè)計(jì)

            ADISl6255陀螺儀所有的數(shù)據(jù)和命令的讀取和寫(xiě)入都是通過(guò)讀寫(xiě)寄存器來(lái)完成的。通過(guò)AT89S52單片機(jī)編寫(xiě)程序讀取ADISl6355內(nèi)部相應(yīng)的寄存器地址,相應(yīng)讀取回來(lái)的12 bit或者14 bit長(zhǎng)度的數(shù)據(jù)經(jīng)過(guò)換算再乘以對(duì)應(yīng)的比例因子就得到了相應(yīng)的x、y、z軸陀螺儀和加速度計(jì)以及內(nèi)部溫度信息。

            在啟動(dòng)陀螺儀前,首先要對(duì)陀螺儀的各個(gè)寄存器進(jìn)行正確的設(shè)置。由參考文獻(xiàn)[5]、[6]知,設(shè)置GYRO_OFF和GYRO_SCALE寄存器對(duì)陀螺儀三軸輸出的靈敏度和偏差進(jìn)行用戶自校準(zhǔn);設(shè)置SMPL_PRD寄存器,選取合適的采樣頻率;設(shè)置SENS/AVG寄存器,定義陀螺動(dòng)態(tài)量程以及對(duì)應(yīng)的數(shù)字濾波器;設(shè)置MSC_CTRL寄存器,定義自檢位以及數(shù)據(jù)更新中斷位;設(shè)置COMMAND寄存器,定義數(shù)據(jù)校正模式;設(shè)置ALM_CTRL寄存器,為數(shù)據(jù)報(bào)警。

            陀螺儀自身帶有一個(gè)校準(zhǔn)控制指令,在讀取數(shù)據(jù)之前需要用戶的自定義校準(zhǔn),具體操作方法[6]是將MSC_

            CTRL寄存器的第10位置1,20 ms后,讀取狀態(tài)寄存器的值,如果為0x0000,表明自檢通過(guò),否則表明陀螺儀存在如供電超限、SPI通信錯(cuò)誤等問(wèn)題,響應(yīng)的錯(cuò)誤位將在狀態(tài)寄存器中標(biāo)出。

            MEMS陀螺儀數(shù)據(jù)采集軟件設(shè)計(jì)主要是對(duì)AT89S52的程序設(shè)計(jì)。系統(tǒng)上電復(fù)位后,首先完成單片機(jī)初始化,對(duì)陀螺儀各個(gè)自由度寄存器參數(shù)設(shè)置,初始化LCD1602,初始化SPI接口,陀螺儀自校準(zhǔn)過(guò)程,定時(shí)器和相應(yīng)中斷打開(kāi),數(shù)據(jù)存儲(chǔ)及更新,最后通過(guò)按鍵分別顯示X、Y、Z軸陀螺儀和加速度計(jì)以及內(nèi)部溫度信息。系統(tǒng)軟件程序采用Keil μVision4軟件編寫(xiě),Keil μVision4是基于80C51內(nèi)核開(kāi)發(fā)的,可以用C語(yǔ)言和匯編語(yǔ)言進(jìn)行編程,C編譯工具在產(chǎn)生代碼的準(zhǔn)確性和效率方面達(dá)到了較高的水平,并且可以附加靈活的控制選項(xiàng),在開(kāi)發(fā)大型項(xiàng)目時(shí)非常實(shí)用[7]。其軟件程序流程圖如圖4所示。

            

           

            3 測(cè)試結(jié)果

            完成硬件平臺(tái)搭建和軟件程序設(shè)計(jì)后,室溫下對(duì)系統(tǒng)進(jìn)行靜態(tài)測(cè)量,通過(guò)改變溫度,分析角度的漂移;在小型旋轉(zhuǎn)平面上進(jìn)行動(dòng)態(tài)測(cè)試,分析線性加速度的變化,針對(duì)過(guò)大的漂移率現(xiàn)象,進(jìn)行自校準(zhǔn),再測(cè)量。

            靜態(tài)測(cè)試,在室溫下,由液晶屏顯示輸出溫度為+21.36 ℃,輸出角度有不超過(guò)0.02°/s的漂移率。當(dāng)把陀螺儀溫度提高到50 ℃時(shí),顯示溫度為+50.07 ℃,陀螺角度出現(xiàn)單向漂移現(xiàn)象,輸出角度大約為0.72°/min漂移率。經(jīng)過(guò)軟件自校準(zhǔn)后,角度漂移較穩(wěn)定變化,單漂移現(xiàn)象消除。

            動(dòng)態(tài)測(cè)試,對(duì)三軸加速度計(jì)的測(cè)試采用重力場(chǎng)1 gn試驗(yàn)方法[8],安裝方法如圖5所示,將加速度計(jì)通過(guò)卡具安裝在位置轉(zhuǎn)臺(tái)上,使加速度計(jì)的輸入軸在鉛垂平面內(nèi)相對(duì)重力加速度轉(zhuǎn)動(dòng)。

            

           

            使位置轉(zhuǎn)臺(tái)在360°范圍內(nèi)旋轉(zhuǎn),由圖5可知,敏感軸上的加速度分量為[9]:

            a=gn·sinθ (1)

            式中a為敏感軸上的加速度;θ為加速度計(jì)敏感軸與水平方向間的夾角。由式(1)可知,當(dāng)位置轉(zhuǎn)臺(tái)轉(zhuǎn)動(dòng)時(shí),加速度計(jì)敏感軸上的重力加速度分量呈正弦關(guān)系變化,加速度計(jì)的輸出也呈正弦關(guān)系變化。在知道敏感軸與水平方向的夾角后,就可以計(jì)算出加速度計(jì)所感應(yīng)到的加速度大小[8]。

            測(cè)試采取十二位置測(cè)試方法,即每間隔30°測(cè)量一次,首先需要確定機(jī)械零點(diǎn),即試驗(yàn)前要確保初始狀態(tài)的敏感軸與水平方向間夾角為0°,確定機(jī)械零位一般采用四點(diǎn)法[9],測(cè)量當(dāng)?shù)刂亓铀俣萭n(如長(zhǎng)春重力加速度為9.801 m/s2),由公式(1)可以計(jì)算出十二位置點(diǎn)的重力加速度分量值,選取部分測(cè)試點(diǎn)與本系統(tǒng)顯示的加速度值對(duì)比,分析絕對(duì)誤差如表1所示。

            

           

            由表1知,在常溫下測(cè)量的ADIS16355加速度計(jì) 系統(tǒng)顯示的值與理論值絕對(duì)誤差在轉(zhuǎn)臺(tái)限定的誤差范圍之內(nèi),并且滿足ADIS16355線性加速度精度誤差為2.522 mg/LSB(約為0.024 7 m/s2)的要求,加上溫度補(bǔ)償可以進(jìn)一步提高測(cè)量精度。

            本數(shù)據(jù)采集系統(tǒng)主要存在以下誤差:一方面是由陀螺儀自身出廠工藝缺陷、結(jié)構(gòu)、工作模式等形成的各種漂移;另一方面是由重力場(chǎng)、磁場(chǎng)、檢測(cè)電路干擾、系統(tǒng)安裝不平衡引起的陀螺輸出偏差。對(duì)于以上誤差中確定性誤差可以采用標(biāo)定測(cè)試、自檢校準(zhǔn)和溫度補(bǔ)償來(lái)減小,對(duì)于不確定性誤差采用統(tǒng)計(jì)方法統(tǒng)計(jì)變化規(guī)律和有效系統(tǒng)辨識(shí)方法來(lái)處理。

            ADIS16355 iSensor是一款完整的三軸陀螺儀與三軸加速計(jì)慣性檢測(cè)系統(tǒng)。本文以AT89S52單片機(jī)為核心控制器件,只需要很少的外圍電路,采用KeilC51軟件編寫(xiě)程序,實(shí)時(shí)存儲(chǔ)采集的數(shù)據(jù)并經(jīng)LCD顯示,通過(guò)靜態(tài)溫度和角度測(cè)試及重力加速度試驗(yàn)測(cè)試表明,該系統(tǒng)具有較高的精度和實(shí)時(shí)性。最后對(duì)系統(tǒng)存在的誤差進(jìn)行分析。本文設(shè)計(jì)的MEMS數(shù)據(jù)采集系統(tǒng)具有精度高、成本低、操作簡(jiǎn)單、使用方便,在陀螺儀的實(shí)際應(yīng)用中存在較大的市場(chǎng)價(jià)值。

          c語(yǔ)言相關(guān)文章:c語(yǔ)言教程


          存儲(chǔ)器相關(guān)文章:存儲(chǔ)器原理


          加速度計(jì)相關(guān)文章:加速度計(jì)原理
          晶振相關(guān)文章:晶振原理


          關(guān)鍵詞: AT89S52 MEMS

          評(píng)論


          相關(guān)推薦

          技術(shù)專(zhuān)區(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); })();