版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、 MPU6050作原理及STM32控制MPU6050簡介:1.要想知道MPU6050作原理,得先了解下倆個傳感器:陀螺儀傳感器:陀螺儀的原理就是,個旋轉(zhuǎn)物體的所指的向在不受外影響時,是不會改變的。們根據(jù)這個道理,它來保持向。然后多種法讀取軸所指的向,并動將數(shù)據(jù)信號傳給。我們騎車其實也是利了這個原理。輪轉(zhuǎn)得越快越不容易倒,因為車軸有股保持平的量?,F(xiàn)代陀螺儀可以精確地確定運動物體的位的儀器,它在現(xiàn)代航空,航海,航天和中泛使的種儀器。傳統(tǒng)的慣性陀螺儀主要部分有機械式的陀螺儀,機械式的陀螺儀對藝結(jié)構(gòu)的要求很。70年代提出了現(xiàn)代的基本設(shè)想,到年代以后,就得到了常迅速的發(fā)展,激光陀螺儀也有了很的發(fā)展。具有
2、結(jié)構(gòu)緊湊,靈敏度,作可靠。光纖陀螺儀在很多的領(lǐng)域已經(jīng)完全取代了機械式的傳統(tǒng)的陀螺儀,成為現(xiàn)代導(dǎo)航儀器中的關(guān)鍵部件。光纖陀螺儀同時發(fā)展的除了環(huán)式外。加速度傳感器:加速度傳感器是種能夠測量加速度的傳感器。通常由質(zhì)量塊、阻尼器、彈性元件、敏感元件和適調(diào)電路等部分組成。傳感器在加速過程中,通過對質(zhì)量塊所受慣性的測量,利頓第定律獲得加速度值。根據(jù)傳感器敏感元件的不同,常見的加速度傳感器包括電容式、電感式、應(yīng)變式、壓阻式、壓電式等。其實說簡單點,在mpu6050中我們陀螺儀傳感器測度,加速度傳感器測加速度MPU-60X0 :MPU-60X0是全球例9軸運動處理傳感器。它集成了3軸MEMS陀螺儀, 3軸ME
3、MS 加速度計,以及個可擴展的數(shù)字運動處理器 DMP(DigitalMotion Processor),可 I2C 接連接個第三的數(shù)字傳感器,如磁計。擴展之后就可以通過其 I2C 或 SPI 接 輸出個 9 軸的信號(SPI 接僅在 MPU-6000 可)。MPU-60X0 也可以通過其 I2C 接 連接慣性的數(shù)字傳感器,如壓傳感器。 MPU-60X0 對陀螺儀和加速度計分別了三個 16 位的 ADC,將其測量的模擬量轉(zhuǎn)化 為可輸出的數(shù)字量。為了精確跟蹤快速和慢速的運動,傳感器的測量范圍都是戶可控的,陀螺儀可測范圍為250,500,1000,2000/秒(dps),加速度計可測范圍為2,4,
4、8,16g。 個上 1024 字節(jié)的 FIFO,有助于降低系統(tǒng)功耗。 和所有設(shè)備寄存器之間的通信采 400kHz 的 I2C 接或 1MHz 的 SPI 接(SPI 僅 MPU-6000 可)。對于需要速傳輸?shù)膽?yīng),對寄存器的讀取和中斷可20MHz 的 SPI。 另外,上還內(nèi)嵌了個溫度傳感器和在作環(huán)境下僅有1%變動的振蕩器。 芯尺 440.9mm,采 QFN 封裝(引線形封裝),可承受最 10000g 的沖擊,并有可編程的低通濾波器。 關(guān)于電源,MPU-60X0 可持 VDD 范圍 2.5V5%,3.0V5%,或 3.3V5%。另外 MPU-6050 還有個 VLOGIC 引腳,來為 I2C 輸
5、出提供邏輯電平。VLOGIC 電壓可取 1.85%或者 VDD。數(shù)字運動處理器(DMP):DMP 從陀螺儀、加速度計以及外接的傳感器接收并處理數(shù)據(jù),處理結(jié)果可以從DMP 寄存器讀出,或通過 FIFO 緩沖。DMP 有權(quán)使 MPU 的個外部引腳產(chǎn)中斷。 數(shù)據(jù)傳輸:1.I2C原理在上篇博客有詳細講解,在這不再贅述。如果要寫 MPU-60X0 寄存器,主設(shè)備除了發(fā)出開始標(biāo)志(S)和地址位,還要加個 R/W 位,0 為寫,1 為讀。在第 9 個時鐘周期(電平時),MPU-60X0 產(chǎn)應(yīng)答信號。然 后主設(shè)備開始傳送寄存器地址(RA),接到應(yīng)答后,開始傳送寄存器數(shù)據(jù),然后仍然要有應(yīng) 答信號,依次類推。單字
6、節(jié)寫時序:多字節(jié)寫時序:如果要讀取 MPU-60X0 寄存器的值,先由主設(shè)備產(chǎn)開始信號(S),然后發(fā)送從設(shè) 備地址位和個寫數(shù)據(jù)位,然后發(fā)送寄存器地址,才能開始讀寄存器。緊接著,收到應(yīng)答信號后,主設(shè)備再發(fā)個開始信號,然后發(fā)送從設(shè)備地址位和個讀數(shù)據(jù)位。然后,作為從設(shè) 備的 MPU-60X0 產(chǎn)應(yīng)答信號并開始發(fā)送寄存器數(shù)據(jù)。通信以主設(shè)備產(chǎn)的拒絕應(yīng)答信號(NACK)和結(jié)束標(biāo)志(P)結(jié)束。拒絕應(yīng)答信號(NACK)產(chǎn)定義為 SDA 數(shù)據(jù)在第 9 個 時鐘周期直為。三STM32控制MPU60501.硬件連接實驗采正點原公司的 AN1507 ATK-MPU6050 六軸傳感器模塊STM32 VCCGNDSDA
7、 GND PB9 PB8 不接 不接SCLINTAD02. 重要寄存器2.1 電源管理寄存器 1 硬件動清零該位了睡眠模式(低功耗),所以我們要清零該位,以進正常作模式TEMP_DIS 于設(shè)置是否使能溫度傳感器,設(shè)置為 0,則使能CLKSEL2:0于選擇系統(tǒng)時鐘源,選擇關(guān)系如表時鐘源內(nèi)部 8M RC 晶振001PLL,使 X 軸陀螺作為參考PLL,使 Y 軸陀螺作為參考PLL,使 Z 軸陀螺作為參考PLL,使外部 32.768Khz 作為參考PLL,使外部 19.2Mhz 作為參考保留010011100101110111關(guān)閉時鐘,保持時序產(chǎn)電路復(fù)位狀態(tài)*默認是使內(nèi)部 8M RC 晶振的,精度不
8、,所以我們般選擇 X/Y/Z 軸陀螺作為參考的 PLL 作為時鐘源,般設(shè)置 CLKSEL=001 即可*2.2 陀螺儀配置寄存器FS_SEL1:0這兩個位,于設(shè)置陀螺儀的滿量程范圍: 0,250/S; 1,500 /S; 2,1000 /S; 3,2000 /S;我們般設(shè)置為 3,即2000 /S,因為陀螺儀的 ADC 為 16 位分辨率,所以得到靈敏度為: 65536/4000=16.4LSB/( /S)2.3 加速度傳感器配置寄存器AFS_SEL1:0這兩個位,于設(shè)置加速度傳感器的滿量程范圍:0,2g; 1,4g; 2,8g; 3,16g;我們般設(shè)置為 0,即2g,因為加速度傳感器的ADC
9、 也是 16 位,所以得到靈敏度為: 65536/4=16384LSB/g2.4 FIFO使能寄存器該寄存器于控制 FIFO 使能,在簡單讀取傳感器數(shù)據(jù)的時候,可以不FIFO,設(shè)置對應(yīng)位為 0 即可禁 FIFO,設(shè)置為 1,則使能 FIFO加速度傳感器的 3 個軸,全由 1個位( ACCEL_FIFO_EN)控制,只要該位置 1,則加速度傳感器的三個通道都開啟 FIFO2.5 陀螺儀采樣率分頻寄存器該寄存器于設(shè)置 MPU6050 的陀螺儀采樣頻率,計算公式為: 采樣頻率 = 陀螺儀輸出頻率 / (1+SMPLRT_DIV)這陀螺儀的輸出頻率,是 1Khz 或者 8Khz,與數(shù)字低通濾波器( D
10、LPF)的設(shè)置有關(guān),當(dāng) DLPF_CFG=0/7 的時候,頻率為 8Khz,其他情況是 1Khz。且 DLPF 濾波頻率般設(shè)置為采樣率的半。采樣率,我們假定設(shè)置為 50Hz,那么 SMPLRT_DIV=1000/50-1=192.6 配置寄存器這的加速度傳感器,輸出速率( Fs)固定是 1Khz,速度傳感器的輸出速率( Fs),則根據(jù) DLPF_CFG 的配置有所不同。般我們設(shè)置速度傳感器的帶寬為其采樣率的半,如前所說的,如果設(shè)置采樣率為 50Hz,那么帶寬就應(yīng)該設(shè)置為 25Hz,取近似值 20Hz,就應(yīng)該設(shè)置 DLPF_CFG=1002.7 電源管理寄存器 2LP_WAKE_CTRL 于控制
11、低功耗時的喚醒頻率剩下的 6 位,分別控制加速度和陀螺儀的x/y/z軸是否進待機模式,這我們?nèi)慷疾贿M待機模式,所以全部設(shè)置為0 即可2.8 陀螺儀數(shù)據(jù)輸出寄存器通過讀取這6個寄存器,就可以讀到陀螺儀 x/y/z 軸的值,如 x 軸的數(shù)據(jù),可以通過讀取0X43( 8 位)和 0X44(低 8 位)寄存器得到,其他軸以此類推2.9 加速度傳感器數(shù)據(jù)輸出寄存器 通過讀取這6個寄存器,就可以讀到加速度傳感器 x/y/z 軸的值,如讀 x 軸的數(shù)據(jù),可以通過讀取 0X3B( 8 位)和0X3C(低8位)寄存器得到,其他軸以此類推2.10 溫度傳感器數(shù)據(jù)輸出寄存器溫度換算公式為:Temperature
12、= 36.53 + regval/340溫度傳感器值2.11 中斷使能寄存器OT_EN 該位置 1,該位使能運動檢測(Motiondetection)產(chǎn)中斷。FIFO_OFLOW_EN該位置1,該位使能FIFO緩沖區(qū)溢出產(chǎn)中斷。I2C_MST_INT_EN該位置1,該位使能I2C主機所有中斷源產(chǎn)中斷。DATA_RDY_EN 該位置 1,該位使能數(shù)據(jù)就緒中斷( Data Ready interrupt),所有的傳感器寄存器寫操作完成時都會產(chǎn)關(guān)閉所有中斷則給此寄存器賦值0X003. 軟件驅(qū)動3.1 通過IIC對MPU6050寄存器進讀寫/IIC寫個字節(jié)/reg:寄存器地址數(shù)據(jù)/data:/返回值:
13、 0,正常/其他,錯誤代碼IIC_Write_Byte( reg, data)u8u8u81 0 /發(fā)送器件地址+寫命令if(IIC_Wait_Ack()/等待應(yīng)答IIC_Stop();return 1;if(IIC_Wait_Ack()IIC_Stop();return 1;IIC_Stop(); IIC_Read_Byte( reg)res;u8IIC_Start();IIC_Send_Byte(MPU_ADDR )| );1 0 /發(fā)送器件地址+寫命令I(lǐng)IC_Wait_Ack();/等待應(yīng)答IIC_Send_Byte(reg);/寫寄存器地址IIC_Wait_Ack();/等待應(yīng)答IIC
14、_Start();1 1 /發(fā)送期間地址+讀命令I(lǐng)IC_Wait_Ack();/等待應(yīng)答res=IIC_Read_Byte( );return/返回值: 0,正常/其他,錯誤代碼IIC_Write_Len( addr, reg, len, *buf)u8u8u8u8u8i;u8IIC_Start();IIC_Send_Byte(addr )| );IIC_Stop();return 1;IIC_Send_Byte(reg);/寫寄存器地址IIC_Wait_Ack();/等待應(yīng)答(i= ;ilen;i+)for0IIC_Stop();return 1;/其他,錯誤代碼IIC_Read_Len(
15、addr, reg, len, *buf)IIC_Start(); IIC_Send_Byte(addr )| );1 0 /發(fā)送器件地址+寫命令I(lǐng)IC_Stop();return 1;IIC_Send_Byte(reg);/寫寄存器地址IIC_Wait_Ack();/等待應(yīng)答IIC_Start();IIC_Send_Byte(addr )| );1 1 /發(fā)送器件地址+讀命令I(lǐng)IC_Wait_Ack();/等待應(yīng)答while(len)if1else1 /讀數(shù)據(jù),發(fā)送ACK3.2 MPU6050初始化/初始化MPU6050/返回值: 0,成功/其他,錯誤代碼)IIC_Write_Byte(MP
16、U_PWR_MGMT1_REG,);0X80 /復(fù)位MPU6050delay_ms( );100IIC_Write_Byte(MPU_PWR_MGMT1_REG,);0X00 /喚醒MPU6050MPU_Set_Gyro_Fsr( );3/陀螺儀傳感器,2000dps/加速度傳感器 2gMPU_Set_Accel_Fsr( );0MPU_Set_Rate( );50 /設(shè)置采樣率50HZ/關(guān)閉所有中斷);0X00 /I2C主模式關(guān)閉);0X00 /關(guān)閉FIFO);0X80 /INT引腳低電平有效res IIC_Read_Byte(MPU_DEVICE_ID_REG);=(res MPU_ADD
17、R)if=/器件ID正確IIC_Write_Byte(MPU_PWR_MGMT1_REG,IIC_Write_Byte(MPU_PWR_MGMT2_REG,0X01 /設(shè)置CLKSEL,PLL X 軸為參考0X00 /加速度陀螺儀都作MPU_Set_Rate( );50 /設(shè)置采樣率為50HZ;/ 其他,設(shè)置失敗u8 MPU_Set_Gyro_Fsr(u8 fsr)IIC_Write_Byte(MPU_GYRO_CFG_REG,fsr );return3 /設(shè)置陀螺儀滿量程范圍/設(shè)置MPU6050加速度傳感器滿量程范圍/fsr:0,2g;1,4g;2,8g;3,16g /fsr:0,2g;1,
18、4g;2,8g;3,16g/ 其他,設(shè)置失敗u8 MPU_Set_Accel_Fsr(u8 fsr)IIC_Write_Byte(MPU_ACCEL_CFG_REG,fsr );return3 /設(shè)置加速度傳感器滿量程范圍);)return/返回值:0,設(shè)置成功;if4=4/rate ;data=1000-1/設(shè)置數(shù)字低通濾波器MPU_Set_LPF(rate/ );return2/動設(shè)置LPF為采樣率的半3.3 讀取MPU6050相關(guān)測得原始數(shù)據(jù) /返回值:溫度值(擴了100倍)short MPU_Get_Temperature(void)buf ;u82short raw;temp;floatIIC_Read_Len(MPU_ADDR,MPU_TEMP_OUTH_REG, ,buf);2raw=( )buf )|buf ;081temp=36.53+(double)raw)/ ;340temp* ;returnu866if0*gx=( )buf )|bu
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024居間合同受法律保護居間合同正式合同范本
- 編劇合同編劇合同終止協(xié)議2024年
- 2024常規(guī)解除勞動合同證明書范本
- 標(biāo)準版采購協(xié)議樣本
- 大學(xué)畢業(yè)生就業(yè)意向協(xié)議書
- 人才公寓優(yōu)惠政策協(xié)議
- 個人個人存單質(zhì)押貸款合同
- 廣告拍攝合同案例
- 企業(yè)合伙協(xié)議合同樣本欣賞
- 企業(yè)勞動合同范本匯編
- GB 16809-2008防火窗
- 2018年木地板公司組織架構(gòu)及部門職能
- 《百團大戰(zhàn)》歷史課件
- 銀行涉農(nóng)貸款專項統(tǒng)計制度講解
- DB31-T 540-2022 重點單位消防安全管理要求
- 兒化音變課件
- 國家開放大學(xué)《傳感器與測試技術(shù)》實驗參考答案
- 工程造價司法鑒定實施方案
- 材料成型工藝基礎(chǔ)習(xí)題答案
- 劇本寫作課件
- 計算方法第三章函數(shù)逼近與快速傅里葉變換課件
評論
0/150
提交評論