




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
學(xué)對stm32進行了簡單的了解,發(fā)現(xiàn)stm32用起來比51都方便,原來一直被“arm難這是一段MPU6050陀螺儀x軸數(shù)據(jù)的程序,先通過I2C函數(shù)把陀螺儀X軸數(shù)據(jù)的低8G_X變量,G_Xshortimu_measure.gxdouble型變量,編譯器BUF16.4imu_measure.gx,結(jié)果通過串口傳回來的在MPU6050FullScaleRange2000°s,所以靈敏度為16.4LSB/°/s,所以在讀出寄存器值的基礎(chǔ)上除以16.4就是角速度。(m/s^2要設(shè)置為+-4g extern變量的使用。正確的用法是在初始化的地方定義(函數(shù)外定義,如然后需要用到全局變量的文件開頭進行#Include“External_Variable.h”,就可以了。 MPU6050MPU6050的I2C70x6(0x68,0xD0()7為固定位加一位硬件設(shè)置的地址在MPU6050初始化后就可以不停的傳感器值進行姿態(tài)解算了。在姿態(tài)解算前,我先式計算(quat_init())。其實感覺這里不初始化也可以,因為姿態(tài)解算速度很快,第隨后就開始真正的姿態(tài)解算了,首先要對的傳感器值進行移動均值濾波。定義了Filter_ACC結(jié)構(gòu)體,先把值加到這個結(jié)構(gòu)體變量里,每加一次,積分標(biāo)記位加1。當(dāng)定if(IMUupdate_flag==TRUE){}里面求平均值并對 IMUupdata()函數(shù)前如果角速度不除以一個比例系數(shù),解算出比如陀螺X軸時始終有個-32°/s的誤差存在,在姿態(tài)解算后,滾轉(zhuǎn)角始終不是平HMC5883對偏航角進行修正,由于加速度計不能讀出偏航角的數(shù)0x1E,結(jié)果一點反應(yīng)都木有啊~MPU6050I2CI2C寫入函數(shù),果然地址進去以后先要左移一位,頓時淚奔,0x1E0x3C,按但是在磁阻儀數(shù)據(jù)讀出后,立馬又發(fā)現(xiàn)了一個問題。飛控板轉(zhuǎn)動90°,上位機顯示實際X,Y軸為例,如果以想兩軸的數(shù)據(jù)確定一個點(X,Y),那么如果把飛控板轉(zhuǎn)一圈得到的數(shù)藍色點是飛控板在XY平面旋轉(zhuǎn)一圈到的數(shù)據(jù),紅色圓圈是用 通過擬合,我們得到了下圖數(shù)據(jù):YXXX軸數(shù)據(jù),這樣XY軸數(shù)據(jù)就變成一個沒有偏移的圓,通過atan2函數(shù)就可以求方向角了。全姿態(tài)羅盤的,參考上面的把磁阻儀三軸數(shù)據(jù)變化到平面的編入程序中發(fā)現(xiàn),根本沒有什么變化??赡苁沁@個飛控板的傳感器安裝和里所用的安裝方位不一樣的緣故吧。heading=_atan2f(EstG.V.X*EstM.V.Z-EstG.V.Z*EstM.V.X,EstG.V.Z*EstM.V.Y-EstG.V.Y*個坐標(biāo)變換并用atan2函數(shù)就可算出偏航角。好的緣故。Z軸的校正沒有用擬合,只是簡單的找了最大值和最小值算偏移量(由Y軸數(shù)據(jù)的量程做比較得出比例系數(shù)。其實如果把三軸數(shù)據(jù)統(tǒng)計會得到一個橢球體,然后用擬合得到橢球體的原點偏移和各軸的長度,相信可以得到更準(zhǔn)確的磁阻儀校正。至于如何用擬合,是從上找到的現(xiàn)成的程序,改天把它改成橢球體的擬合。數(shù)據(jù)處理是通過串口助手?jǐn)?shù)據(jù)存到word里,然后將文本準(zhǔn)換成表格,以空格分列,然后把各列數(shù)據(jù)存到Excel里,最后用數(shù)據(jù)。由于我的貌似存在問題,得用主程序圖標(biāo)以管理員方式運行,進入后把設(shè)置成擬合程序的,然后用積分了一次,也就是說就是當(dāng)前傳感器的值,所以干脆去掉了。而且傳感器最快的1KHz500Hz,沒有必要濾波了。如果以后裝到飛機上發(fā)現(xiàn)噪把角速度計和磁力計數(shù)據(jù)融合,gz為角速度數(shù)據(jù),乘以負(fù)數(shù)是和定義的轉(zhuǎn)動方向有關(guān),0360gz數(shù)據(jù)正好相反,所以要乘負(fù)數(shù)。由于每2msIMUupdata()gz*0.0022ms轉(zhuǎn)過的角度,對此積分就是實時的角度把磁力計解算角度和上次解算的偏航角做差得到偏航角的誤差,乘以一個系數(shù)0.002(經(jīng)驗16.4*35=57416.4是陀螺儀靈敏度,35是系數(shù)(57.3,即角度值轉(zhuǎn)化為弧度制,但實驗發(fā)現(xiàn)用35效果較好)。BMP085BMP085一開始并不需要對其寄存器寫一些值進行初始化,而是一開始從BMP085的EEPROM中一些值用來以后的數(shù)據(jù)校正。在使用BMP085時直接向寄存器寫值即可。但是BMP085有個比較麻煩的地方就是,當(dāng)你給寄存器寫入就隔了6ms,而手冊上寫的時間是4.5ms,所以可以。變到350°多,偏航角不會再繞一個大圈去校正了,效果如下:后參考MWC的還用外部中斷判斷是否轉(zhuǎn)換完畢,各種調(diào)不通啊。。。還讀出過5000多Pa的氣壓,海拔-2000米什么的。略也沒出什么問題,于是我把這些強制轉(zhuǎn)換都加上,uint_32unsignedlong。發(fā)現(xiàn)數(shù)據(jù)就對了,看來調(diào)bug還是得靠憋靈感。。。20m,無語,看來以后當(dāng)普通的海拔高度計用吧。定高用更精確的氣壓計或者超聲波什今天最大的加入就是把輸出模塊加進去了,雖然是直接拷貝別人的,不過大概看了TIM4定時器先預(yù)分頻,72M24M,然后設(shè)置一個1000,即24M/1000=24kHzTIM44個通道,每個通道有寄存器,用通道寄存器和總寄存器比對輸出8051FPCA高速輸出模式。1,例程里1000上限裝填的是999,但是的例程是不減1的,以后有示波器專門實驗一下?;旧巷w控已經(jīng)初具雛形,現(xiàn)在輸出和輸入都加上了,現(xiàn)在輸入調(diào)通了,接下來再調(diào)輸出。 好的。參見手冊(《STM32中文參考手冊》)81頁。其中,我用TIM2輸入 應(yīng)PA0~3,用TIM4輸出 ,對應(yīng)PB6~9。TIM3TIM2給輸入,其實用基本可以把TIM3通用定時器留給其他功能。畢竟簡單任務(wù)就應(yīng)該配置簡單定時器接下來是頭疼了好久的MWC飛控。MWC飛控接收遙PPM8個端口依次掃描每個端口的脈寬。這里我采用了后一種,這樣可以直接使用的信號,否MWC的流程是先初始化TIM2,用TIM2的四個通道進行。當(dāng)時犯了一個錯誤就是MWCTIM2GPIOAAPB總線時鐘在程序其他地方已經(jīng)打開了,所以程序這NVIC,TIM2的初始化代碼補全,然后就正常了。四次(因為有四路輸入),看是哪個通道產(chǎn)生的中斷,判斷出以后用一個switch語句把捕state->risestate->fallrise一CPU時間,以至于輸入功能一打開,CPU只執(zhí)GPIOTIM2,都沒用。沒辦法,從初始化函數(shù)開始一部分加一部分的關(guān)閉嘗試,當(dāng)關(guān)閉TIM2時鐘是發(fā)現(xiàn)中斷關(guān)閉了。這就好說了,我用任務(wù)時鐘基的標(biāo)記位Control_counter1TIM2TIM216次(每個高電平至少需要實現(xiàn)了每2ms一次 上圖是程序運行后通道1輸入 個stm32產(chǎn)生了50Hz(舵機標(biāo)準(zhǔn)信號)的 ,脈寬從0%變到90%(飛控 輸入起作用了。由于在0%和100%附近 達到0也是可以理解的,當(dāng)然也有可能是沒有顯示出來的緣故,向上位機輸出的頻率是 120020000,可以看到輸入stm32的輸出(0變到再從變到),但是偶爾是值向上偏移2000,去學(xué)校用示波器試試,現(xiàn)在不知道是產(chǎn)生的stm32緣故還 原來一直困擾的紊亂問題是由于TIM2中斷造30000stm32四個中斷和計數(shù)器關(guān)系了,這四CCRx寄存器是不管用的,必須置位計數(shù)器TIMx->CNT! 三角形是輸入跟隨,可以看到飛控程序很好的完成了測量和計算工作。并且整個過程是加上PID控制的。今天主要完善了輸出功能,原來輸出之所以調(diào)不通是由于通道中斷沒有初始通過對這幾個通道的設(shè)置波就生成了,本來想用之前測占空比的程序測一下生成的占空比,但是由于生成的波頻率是/2+1/1000=24kHz,頻率太高,單片變化,說明生成程序起效了。TIM_OCMode_1、TIM_OCMode_2其實只是極性不同,就是輸出的高低電平會相反。很奇怪的是,手冊上說STM32的定時器有TIM_ICMode_1模式用來測在設(shè)置輸出引腳時有一個問題就是如果設(shè)置成B端口所有引腳打開,程序就出問題PIDchar型,但是參數(shù)傳遞過8200左右,也就是說不存在數(shù)據(jù)組成atan直接計算就可以得到角度。通過校準(zhǔn)以后,俯仰角數(shù)據(jù)就比以前準(zhǔn)確了。原來水平放置俯仰角是1.8°左右,現(xiàn)在已經(jīng)變成0.6°了。NRF24L01模塊沒加上了,這個去學(xué)校加吧,因為家里沒有插針,飛控板上的SPI模塊無法使用。而且用串口也可以。201321420132202013226201332可能是HUB在數(shù)據(jù)集合和分配的時候出問題了吧。記著用UART2時關(guān)閉 油門 俯仰:1100~2062(俯->仰)【1】】限定在0~360°之間。把延時取消MPU6050會不出數(shù)據(jù)。使用電調(diào)時,不要超過1KHz,否則不轉(zhuǎn)。 20028%到1000100%也不轉(zhuǎn) 組1:766877177582 PIDP13D
溫馨提示
- 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)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 隧道工程竣工驗收的質(zhì)量評估與措施
- 網(wǎng)絡(luò)安全項目關(guān)鍵材料供應(yīng)計劃
- 交通設(shè)施建設(shè)質(zhì)量提升計劃
- 2025年裝修行業(yè)品牌推廣計劃
- 老舊小區(qū)改造工程施工安全文明生產(chǎn)保證措施
- 南京農(nóng)業(yè)大學(xué)自主招生個人陳述提升技巧
- 2024-2025企業(yè)負(fù)責(zé)人安全培訓(xùn)考試試題及參考答案(突破訓(xùn)練)
- 2024-2025公司廠級員工安全培訓(xùn)考試試題(7A)
- 2025年新職工入場安全培訓(xùn)考試試題附參考答案【能力提升】
- 2024-2025項目部治理人員安全培訓(xùn)考試試題答案往年題考
- 一年級語文下冊課件-21 小壁虎借尾巴24-部編版(15張PPT)
- 患者隨訪率低原因分析以及對策
- DB32∕T 2349-2013 楊樹一元立木材積表
- 首屆上??萍计诳庉嫾寄艽筚愒囶}
- 隧道二襯、仰拱施工方案
- Q∕GDW 12106.4-2021 物聯(lián)管理平臺技術(shù)和功能規(guī)范 第4部分:邊緣物聯(lián)代理與物聯(lián)管理平臺交互協(xié)議規(guī)范
- 中國癲癇診療指南-癲癇持續(xù)狀態(tài)課件
- 計量認(rèn)證實驗室程序文件(全套)
- DGC型瓦斯含量直接測定裝置使用說明書
- 普通座式焊接變位機工裝設(shè)計全套圖紙
- 客戶報備申請表(共3頁)
評論
0/150
提交評論