1 設(shè)計任務(wù)書本設(shè)計主要涉及的專業(yè)課程有:
1、單片機原理及應(yīng)用
2、信號分析與處理
3、計算機控制技術(shù)
4、傳感器技術(shù)
5、電子線路CAD
6、數(shù)字電子技術(shù)
7、復(fù)變函數(shù)與積分變換
1、基于MEMS集成電路檢測傾斜角度案例:MEMS三軸陀螺儀的傾斜角檢測應(yīng)用;知識點包括MEMS陀螺儀的檢測原理、檢測電路、常用芯片型號,常見MEMS陀螺儀應(yīng)用場合及注意事項。
2、基于MEMS集成電路檢測加速度案例:MEMS三軸加速度計的加速度檢測應(yīng)用;知識點包括MEMS加速度的檢測原理、檢測電路、常用芯片型號,常見MEMS加速度計應(yīng)用場合及注意事項。
根據(jù)設(shè)計任務(wù)并完成以下目標
- 了解六軸傳感器MPU6050工作原理以及其工作方式。
- 熟練運用ARM完成對傳感器的操作與控制;
- 傳感器數(shù)據(jù)通過串口通信在上位機上模擬顯示;
- 系統(tǒng)與手機通過藍牙進行數(shù)據(jù)傳輸;
該系統(tǒng)主要可以完成對傾斜角及加速度的檢測、數(shù)據(jù)通過藍牙上傳到手機、與上位機進行信息交互、上位機顯示三軸方向加速度、顯示三軸方向傾角、實時顯示MPU6050的傳感器狀態(tài)曲線、數(shù)據(jù)3D模擬顯示等功能。
結(jié)合所學(xué)課程和設(shè)計任務(wù),制定了相應(yīng)的工作任務(wù),合理規(guī)劃工作步驟。
2 設(shè)計論證及計劃市面上已經(jīng)出現(xiàn)了眾多以陀螺儀或加速度傳感器為核心的智能設(shè)備,本次課程設(shè)計以此為課題具有可行性。
現(xiàn)代工業(yè)生產(chǎn)設(shè)備的發(fā)展正在朝著向大型化,高速化,連續(xù)化和自動化的方向發(fā)展。其復(fù)雜程度日益增加,所涉及的知識范圍廣泛,不但包括機械設(shè)計、材料科學(xué),現(xiàn)在又加入了計算機技術(shù)、光學(xué)、電路技術(shù)等,其不但價格昂貴,維護也同樣麻煩。面對如此龐大的機械設(shè)備,我們必須需要一些儀器儀表來進行輔助檢查與測試,我們希望這些儀器儀表具有一定的智能,不但要具有實時檢測、自動報警、結(jié)果顯示與保存等功能,還要具有體積小、重量輕、便于攜帶等優(yōu)點。然而傳統(tǒng)的機電儀表雖然具備某些優(yōu)點,但其本身也是機、電、光、算的結(jié)合物,其使用與維護也相當(dāng)?shù)膹?fù)雜,不利于當(dāng)今機械設(shè)備的發(fā)展。
隨著現(xiàn)代網(wǎng)絡(luò)技術(shù)的發(fā)展和企業(yè)規(guī)模的快速擴大,功能獨立的近距離的傳統(tǒng)儀器測量已不能滿足工業(yè)需求,遠距離且大規(guī)模的測量儀器群將是未來發(fā)展的趨勢。由于傳統(tǒng)的儀器是模擬信號,不利于計算機的控制與運算,將不可能勝任現(xiàn)代企業(yè)管理及技術(shù)發(fā)展的需要。
由上分析,我們意識到傳統(tǒng)的測量儀器在成本價格、制作技術(shù)、操作簡便性等方面存在著不足,不能滿足社會的需要。而近年來發(fā)展起來的虛擬儀器技術(shù)則在成本價格、制作技術(shù)、操作簡便性方面有著不俗的表現(xiàn),能很好的滿足現(xiàn)代科學(xué)技術(shù)發(fā)展的需要,是儀器儀表未來發(fā)展的的重要方向。
六軸傳感器MPU6050近年來廣泛應(yīng)用于各個領(lǐng)域,是未來智能設(shè)備中不可或缺的重要元件智能型手機、平板裝置設(shè)備、手持型游戲產(chǎn)品、游戲機、3D遙控器、可攜式導(dǎo)航設(shè)備。
- 設(shè)計采用軟件及設(shè)計規(guī)劃
本課程設(shè)計是在MDK環(huán)境下完成的,采用C語言進行編程,完全采用面向?qū)ο蟮拈_發(fā)思想,具有很大的個人發(fā)揮空間,完成同一種功能可以從不同方面下手解決。MDK源自德國的KEIL公司,是RealView MDK的簡稱。在全球MDK被超過10萬的嵌入式開發(fā)工程師使用。目前最新版本為:MDK5.14,該版本為 uVision5 IDE集成開發(fā)環(huán)境,是目前針對ARM處理器,尤其是Cortex M內(nèi)核處理器的最佳開發(fā)工具。
設(shè)計規(guī)劃:
針對此次課程設(shè)計,設(shè)計如下規(guī)劃,如圖2.1所示。
圖2.1 課程設(shè)計規(guī)劃
本章主要對課程設(shè)計的背景進行了介紹并對設(shè)計進行規(guī)劃,制定出合理的工作流程。
3 硬件系統(tǒng)設(shè)計傾角加速度檢測系統(tǒng),主要要完成對溫度、加速度、傾斜角的采集、顯示等工作。傳統(tǒng)上采集加速度利用的是三軸加速度傳感器而采集傾斜角利用的是三軸陀螺儀,針對本次課程設(shè)計要求成本相對較高。鑒于上述原因,本系統(tǒng)采用MPU6050六軸陀螺儀作為核心傳感器。外部數(shù)據(jù)信號經(jīng) MPU6050將輸入的模擬信號轉(zhuǎn)換成數(shù)字信號,并通過IO口傳送到單片機系統(tǒng)( STM32RCT6)。單片機系統(tǒng)將接收的數(shù)字信號譯碼處理,通過TFTLCD將溫度及各個方向傾角顯示出來,如圖3.1說所示。
圖3.1 設(shè)計整體架構(gòu)(見附件)
3.2.1MCU的選型及分析
STM32F103RCT6是ST公司推出的一款以CortexM3為核心設(shè)計的32位單片機,遠超8位51單片機,能出色完成設(shè)計任務(wù)。STM32的優(yōu)異性體現(xiàn)在以下幾個方面。
1.超低的價格。以8位機的價格,得到32位機,是STM32最大的優(yōu)勢。
2.超多的外設(shè)。STM32擁有包括:FSMC、TIMER、SPI、IIC、USB、CAN、IIS、SDIO、ADC、DAC、RTC、DMA等眾多外設(shè)及功能,具有極高的集成度。
3.豐富的型號。STM32僅M3內(nèi)核就擁有F100、F101、F102、F103、F105、F107、F207、F217等8個系列上百種型號,具有QFN、LQFP、BGA等封裝可供選擇。同時STM32還推出了STM32L和STM32W等超低功耗和無線應(yīng)用型的M3芯片。
4.優(yōu)異的實時性能。84個中斷,16級可編程優(yōu)先級,并且所有的引腳都可以作為中斷輸入。
5.杰出的功耗控制。STM32各個外設(shè)都有自己的獨立時鐘開關(guān),可以通過關(guān)閉相應(yīng)外設(shè)的時鐘來降低功耗。
6.極低的開發(fā)成本。STM32的開發(fā)不需要昂貴的仿真器,只需要一個串口即可下載代碼,并且支持SWD和JTAG兩種調(diào)試口。SWD調(diào)試可以為你的設(shè)計帶來跟多的方便,只需要2個IO口,即可實現(xiàn)仿真調(diào)試。

STM32F103RCT6原理圖,如圖3.2所示。
圖3.2 MCU原理圖
3.2.2 傳感器的選型及分析
設(shè)計要求完成對傾斜角、加速度和溫度的檢測,完成以上要求分別需要3軸陀螺儀、3軸加速度傳感傳感器、溫度傳感器考慮到成本等各方面因素本次課程設(shè)計選用具有多種功能的6軸傳感器(MPU6050)來完成對數(shù)據(jù)的檢測。
MPU6050 是 InvenSense 公司推出的全球首款整合性 6 軸運動處理組件,相較于多組件方案,免除了組合陀螺儀與加速器時之軸間差的問題,減少了安裝空間。MPU6050 內(nèi)部整合了 3 軸陀螺儀和 3 軸加速度傳感器,并且含有一個第二 IIC 接口,可用于連接外部磁力傳感器,并利用自帶的數(shù)字運動處理器(DMP: Digital Motion Processor)硬件加速引擎,通過主 IIC 接口,向應(yīng)用端輸出完整的 9 軸融合演算數(shù)據(jù)。有了 DMP,我們可以使用InvenSense 公司提供的運動處理資料庫,非常方便的實現(xiàn)姿態(tài)解算,降低了運動處理運算對操作系統(tǒng)的負荷,同時大大降低了開發(fā)難度。
MPU6050 的特點包括:
① 以數(shù)字形式輸出 6 軸或 9 軸(需外接磁傳感器)的旋轉(zhuǎn)矩陣、四元數(shù)(quaternion)、歐拉角格式的融合演算數(shù)據(jù)(需 DMP 支持)。
② 具有 131 LSBs/° /sec 敏感度與全格感測范圍為±250、±500、±1000 與±2000° /sec的 3 軸角速度感測器(陀螺儀)。
③ 集成可程序控制,范圍為±2g、±4g、±8g 和±16g 的 3 軸加速度傳感器。
④ 移除加速器與陀螺儀軸間敏感度,降低設(shè)定給予的影響與感測器的飄移。
⑤ 自帶數(shù)字運動處理(DMP: Digital Motion Processing)引擎可減少 MCU 復(fù)雜的融合演算數(shù)據(jù)、感測器同步化、姿勢感應(yīng)等的負荷。
⑥ 運作時間偏差與磁力感測器校正演算技術(shù),免除了須另外進行校正的需求
⑦ 自帶一個數(shù)字溫度傳感器。
⑧ 帶數(shù)字輸入同步引腳(Sync pin)支持視頻電子影像穩(wěn)定技術(shù)與GPS。
⑨ 可程序控制的中斷(interrupt),支持姿勢識別、搖攝、畫面放大縮小、滾動、快速下降中斷、 high-G 中斷、動作感應(yīng)、觸擊感應(yīng)、搖動感應(yīng)功能。
⑩ VDD 供電電壓為 2.5V±5%、 3.0V±5%、 3.3V±5%; VLOGIC 可低至 1.8V
⑪ 陀螺儀工作電流: 5mA,陀螺儀待機電流: 5uA;加速器工作電流: 500uA,加速器省電模式電流: 40uA@10Hz。
⑫ 自帶 1024 字節(jié) FIFO,有助于降低系統(tǒng)功耗。
⑬ 高達 400Khz 的 IIC 通信接口。
⑭ 超小封裝尺寸: 4x4x0.9mm(QFN)。

MPU6050傳感器實物圖如3.3所示,其檢測軸如圖3.4所示。
3.3 MPU6050實物圖
圖3.4 MPU605檢測軸方向

MPU6050的內(nèi)部框圖如圖3.5所示。
圖3.5 MPU內(nèi)部框圖
其中SCL和SDA是連接MCU的IIC接口,MCU通過這個IIC接口控MPU6050,另外還有一個IIC接口:AUX_CL和AUX_DA,這個接口可用來連接外部從設(shè)備,比如磁傳感器,這樣就可以組成一個9軸傳感器。VLOGIC是IO口電壓,該引腳最低可以到1.8V,我們一般直接接VDD即可。AD0是從IIC接口(接MCU)的地址控制引腳,該引腳控制IIC地址的最低位。如果接GND,則MPU6050的IIC地址是:0X68,如果接VDD,則是0X69。MPU6050外圍電路如圖3.6所示。
圖3.6 MPU6050外圍電路圖
MPU6050工作原理:


陀螺儀檢測也不是完全精確的,存在一定的誤差。由于陀螺儀測量角度時使用積
圖3.7 積分誤差
分,會存在積分誤差,如圖3.7所示,若積分時間Dt越小,誤差就越小。這十分容易理解,例如計算路程時,假設(shè)行車時間為 1 小時,我們隨機選擇行車過程某個時刻的速度Vt乘以1小時,求出的路程誤差是極大的,因為行車的過程中并不是每個時刻都等于該時刻速度的,如果我們每5分鐘檢測一次車速,可得到Vt1、Vt2、Vt3-Vt12這12個時刻的車速,對各個時刻的速度乘以時間間隔(5分鐘),并對這12個結(jié)果求和,就可得出一個相對精確的行車路程了,不斷提高采樣頻率,就可以使積分時間Dt變小,降低誤差。
同樣地,提高陀螺儀傳感器的采樣頻率,即可減少積分誤差,目前非常普通的陀螺儀傳感器的采樣頻率都可以達到8KHz,已能滿足大部分應(yīng)用的精度要求。
更難以解決的是器件本身誤差帶來的問題。例如,某種陀螺儀的誤差是0.1度/秒,當(dāng)陀螺儀靜止不動時,理想的角速度應(yīng)為0,無論它靜止多久,對它進行積分測量
得的旋轉(zhuǎn)角度都是0,這是理想的狀態(tài);而由于存在0.1度/秒的誤差,當(dāng)陀螺儀靜止不動時,它采樣得的角速度一直為0.1度/秒,若靜止了1分鐘,對它進行積分測量得的旋轉(zhuǎn)角度為6度,若靜止了1小時,陀螺儀進行積分測量得的旋轉(zhuǎn)角度就是360度,即轉(zhuǎn)過了一整圈。只有當(dāng)正方向誤差和負方向誤差能正好互相抵消的時候,才能消除這種累計誤差。
三軸加速度傳感器檢測原理:

由于直接用陀螺儀測量角度在長時間測量時會產(chǎn)生累計誤差,引入了檢測傾角的傳感器。測量傾角最常見的例子是建筑中使用的水平儀,在重力的影響下,水平儀內(nèi)的氣泡能大致反映水柱所在直線與重力方向的夾角關(guān)系,利用圖3.8中的T字型水平儀,可以檢測出橫滾角與俯仰角,而偏航角是無法以這樣的方式檢測的。在電子設(shè)備中,一般使用加速度傳感器來檢測傾角,它通過檢測器件在各個方向的形變情況而采樣得到受力數(shù)據(jù),根據(jù)F=ma轉(zhuǎn)換,傳感器直接輸出加速度數(shù)據(jù),因而被稱為加速度傳感器。由于地球存在重力場,所以重力在任何時刻都會作用于傳感器,當(dāng)傳感器靜止的時候(實際上加速度為0),傳感器會在該方向檢測出加速度g,不能認為重力方向測出的加速度為g,就表示傳感器在該方向作加速度為g的運動。
圖3.8 T字型水平儀

當(dāng)傳感器的姿態(tài)不同時,它在自身各個坐標軸檢測到的重力加速度是不一樣利用
各方向的測量結(jié)果,根據(jù)力的分解原理,可求出各個坐標軸與重力之間的夾角,如圖3.9所示。
圖3.9 重力檢測
因為重力方向是與地理坐標系的“天地”軸固連的,所以通過測量載體坐標系方向軸與重力方向的夾角即可求得它與地理坐標系的角度旋轉(zhuǎn)關(guān)系,從而獲知載體姿態(tài)。
加度度傳感器檢測的誤差:
由于這種傾角檢測方式是利用重力進行檢測的,它無法檢測到偏航角(Yaw),原理跟 T字型水平儀一樣,無論如何設(shè)計水平儀,水泡都無法指示這樣的角度。
另一個缺陷是加速度傳感器并不會區(qū)分重力加速度與外力加速度,當(dāng)物體運動的時候,它也會在運動的方向檢測出加速度,特別在震動的狀態(tài)下,傳感器的數(shù)據(jù)會有非常大的數(shù)據(jù)變化,此時難以反應(yīng)重力的實際值。
利用磁場檢測角度
為了彌補加速度傳感器無法檢測偏航角(Yaw)的問題,我們再引入磁場檢測傳感器,它可以檢測出各個方向上的磁場大小,通過檢測地球磁場,它可實現(xiàn)指南針的功能,所以也被稱為電子羅盤。由于地磁場與地理坐標系的“南北”軸“固聯(lián)”,利用磁場檢測傳感器的指南針功能,就可以測量出偏航角(Yaw)了。
磁場檢測器的誤差
與指南針的缺陷一樣,使用磁場傳感器會受到外部磁場干擾,如載體本身的電磁場干擾,不地理同環(huán)境的磁鐵礦干擾等等。
姿態(tài)融合與四元數(shù)
可以發(fā)現(xiàn),使用陀螺儀檢測角度時,在靜止狀態(tài)下存在缺陷,且受時間影響,而加速度傳感器檢測角度時,在運動狀態(tài)下存在缺陷,且不受時間影響,剛好互補。假如我們同時使用這兩種傳感器,并設(shè)計一個濾波算法,當(dāng)物體處于靜止狀態(tài)時,增大加速度數(shù)據(jù)的權(quán)重,當(dāng)物體處于運動狀時, 增大陀螺儀數(shù)據(jù)的權(quán)重,從而獲得更準確的姿態(tài)數(shù)據(jù)。同理,檢測偏航角,當(dāng)載體在靜止狀態(tài)時,可增大磁場檢測器數(shù)據(jù)的權(quán)重,當(dāng)載體在運動狀態(tài)時,增大陀螺儀和 GPS 檢測數(shù)據(jù)的權(quán)重。這些采用多種傳感器數(shù)據(jù)來檢測姿態(tài)的處理算法被稱為姿態(tài)融合。
在姿態(tài)融合解算的時候常常使用“四元數(shù)”來表示姿態(tài),它由三個實數(shù)及一個虛數(shù)組成,因而被稱之為四元數(shù)。使用四元數(shù)表示姿態(tài)并不直觀,但因為使用歐拉角(即前面說的偏航角、橫滾角及俯仰角)表示姿態(tài)的時候會有“萬向節(jié)死鎖”問題,且運算比較復(fù)雜,所以一般在數(shù)據(jù)處理的時候會使用四元數(shù),處理完畢后再把四元數(shù)轉(zhuǎn)換成歐拉角。
該設(shè)計采用精英STM32F1開發(fā)板的IIC接口連接MPU6050模塊,本章實驗功能簡介:程序先初始化MPU6050等外設(shè),然后利用DMP庫,初始化MPU6050及使DMP,最后,在死循環(huán)里面不停讀。簻囟葌鞲衅、加速度傳感器、陀螺儀、DMP姿態(tài)解算后的歐拉角等數(shù)據(jù),通過串口上報給上位機(溫度不上報),利用上位機軟件,可以實時顯示 MPU6050 的傳感器狀態(tài)曲線,并顯示3D姿態(tài),可以通過KEY0 按鍵開啟/關(guān)閉數(shù)據(jù)上傳功能。同時,在 LCD 模塊上面顯示溫度和歐拉角等信息。DS0來指示程序正在運行。
MPU6050引腳說明
該模塊引出8個引腳功能說明如表3.1所示。
表3.1 MPU6050功能引腳說明

序號 引腳名稱 說明
1

VCC 3.3/5V 電源輸入
2 GND 地線
3 SCL I2C從時鐘信號線SCL(模塊上已接上拉電阻)
4 SDA I2C從數(shù)據(jù)信號線SDA(模塊上已接上拉電阻)
5 XDA I2C主串行數(shù)據(jù)信號線,用于外接傳感器
6 XCL I2C主串行數(shù)據(jù)信號線,用于外接傳感器
7 AD0 從機地址設(shè)置引腳:接地或懸空,地址為:0X68
接VCC時,地址為:0X69
8 INT 中斷輸出引腳
其中的SDA/SCL、XDA/XCL通訊引腳分別為兩組I2C信號線。當(dāng)模塊與外部主機通訊時,使用SDA/SCL,如與STM32芯片通訊;而XDA/XCL則用于MPU6050芯片與其它I2C傳感器通訊時使用,例如使用它與磁場傳感器連接,MPU6050模塊可以把從主機SDA/SCL接收的數(shù)據(jù)或命令通過XDA/XCL引腳轉(zhuǎn)發(fā)到磁場傳感器中。但實際上這種功能比較雞肋,控制麻煩且效率低,一般會直接把磁場傳感器之類的I2C傳感器直接與MPU6050掛載在同一條總線上(即都連接到SDA/SCL),使用主機直接控制。

所要用到的硬件資源主要有STM32開發(fā)板和MPU6050模塊,它們的連接方式如圖3.10所示。MPU6050模塊與外部連接,引出了VCC、GND、IIC_SDA、IIC_SCL、MPU_INT和MPU_AD0等信號。其中,IIC_SDA和IIC_SCL帶了4.7K上拉電阻,外部可以不用再加上拉電阻了,另外MPU_AD0自帶了10K下拉電阻,當(dāng)AD0 懸空時,默認IIC地址為(0X68)。模塊的IIC_SCL、IIC_SDA分別連接在STM32的PC12、PC11上面。XDA和XCL是用來擴展連接磁力傳感器使MPU6050轉(zhuǎn)換為“九軸傳感器”。

圖3.10 連接方式圖
本章主要介紹CMU的選型外設(shè),以及各種傳感器測角度的原理及缺陷,MPU6050利用姿態(tài)融合算法彌補傳統(tǒng)傳感器設(shè)計缺陷。MPU6050各個接口的功能介紹,單片機與MPU6050連接方式的設(shè)計。
4 軟件系統(tǒng)設(shè)計系統(tǒng)軟件設(shè)計環(huán)境是MDK,軟件設(shè)計由主程序模塊、MPU6050程序模塊、串口通訊模塊以及液晶驅(qū)動程序模塊組成。
1)初始化IIC接口
MPU6050采用IIC與STM32F1通信,所以我們需要先初始化與MPU6050連接的SDA和SCL數(shù)據(jù)線。
2)復(fù)位MPU6050
這一步讓MPU6050內(nèi)部所有寄存器恢復(fù)默認值,通過對電源管理寄存器1(0X6B)的bit7寫1實現(xiàn)。復(fù)位后,電源管理寄存器1恢復(fù)默認值(0X40),然后必須設(shè)置該寄存器為0X00,以喚醒MPU6050,進入正常工作狀態(tài)。
3)設(shè)置角速度傳感器(陀螺儀)和加速度傳感器的滿量程范圍
這一步,設(shè)置兩個傳感器的滿量程范圍(FSR),分別通過陀螺儀配置寄存器(0X1B)和加速度傳感器配置寄存器(0X1C)設(shè)置。我們一般設(shè)置陀螺儀的滿量程范圍為±2000dps,加速度傳感器的滿量程范圍位±2g。
4)設(shè)置其他參數(shù)
這里,我們還需要配置的參數(shù)有:關(guān)閉中斷、關(guān)閉AUX IIC接口、禁止FIFO、設(shè)置陀螺儀采樣率和設(shè)置數(shù)字低通濾波器(DLPF)等。本章我們不用中斷方式讀取數(shù)據(jù),所以關(guān)閉中斷,然后也沒用到 AUX IIC 接口外接其他傳感器,所以也關(guān)閉這個接口。分別通過中斷使能寄存器(0X38)和用戶控制寄存器(0X6A)控制。MPU6050可以使用FIFO存儲傳感器數(shù)據(jù),不過本章我們沒有用到,所以關(guān)閉所有FIFO通道,這個通過FIFO使能寄存器(0X23)控制,默認都是0(即禁止 FIFO),所以用默認值就可以了。陀螺儀采樣率通過采樣率分頻寄存器(0X19)控制,這個采樣率我們一般設(shè)置為50即可。數(shù)字低通濾波器(DLPF)則通過配置寄存器(0X1A)設(shè)置,一般設(shè)置DLPF為帶寬的1/2即可。
5)配置系統(tǒng)時鐘源并使能角速度傳感器和加速度傳感器
系統(tǒng)時鐘源同樣是通過電源管理寄存器1(0X6B)來設(shè)置,該寄存器的最低三位用于設(shè)置系統(tǒng)時鐘源選擇,默認值是0(內(nèi)部8M RC震蕩),不過我們一般設(shè)置為1,選擇x軸陀螺PLL作為時鐘源,以獲得更高精度的時鐘。同時,使能角速度傳感器和加速度傳感器,這兩個操作通過電源管理寄存器2(0X6C)來設(shè)置,設(shè)置對應(yīng)位為0即可開啟。至此,MPU6050的初始化就完成了,可以正常工作了(其他未設(shè)置的寄存器全部采用默認值即可),接下來,我們就可以讀取相關(guān)寄存器,得到加速度傳感器、角速度傳感器和溫度傳感器的數(shù)據(jù)了。