![學(xué)習(xí)單片機(jī)飛行器項(xiàng)目開(kāi)發(fā)日志_第1頁(yè)](http://file4.renrendoc.com/view/9951a38aaa996ff5ddcb62d6cce3b423/9951a38aaa996ff5ddcb62d6cce3b4231.gif)
![學(xué)習(xí)單片機(jī)飛行器項(xiàng)目開(kāi)發(fā)日志_第2頁(yè)](http://file4.renrendoc.com/view/9951a38aaa996ff5ddcb62d6cce3b423/9951a38aaa996ff5ddcb62d6cce3b4232.gif)
![學(xué)習(xí)單片機(jī)飛行器項(xiàng)目開(kāi)發(fā)日志_第3頁(yè)](http://file4.renrendoc.com/view/9951a38aaa996ff5ddcb62d6cce3b423/9951a38aaa996ff5ddcb62d6cce3b4233.gif)
![學(xué)習(xí)單片機(jī)飛行器項(xiàng)目開(kāi)發(fā)日志_第4頁(yè)](http://file4.renrendoc.com/view/9951a38aaa996ff5ddcb62d6cce3b423/9951a38aaa996ff5ddcb62d6cce3b4234.gif)
![學(xué)習(xí)單片機(jī)飛行器項(xiàng)目開(kāi)發(fā)日志_第5頁(yè)](http://file4.renrendoc.com/view/9951a38aaa996ff5ddcb62d6cce3b423/9951a38aaa996ff5ddcb62d6cce3b4235.gif)
版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
學(xué)對(duì)stm32進(jìn)行了簡(jiǎn)單的了解,發(fā)現(xiàn)stm32用起來(lái)比51都方便,原來(lái)一直被“arm難這是一段MPU6050陀螺儀x軸數(shù)據(jù)的程序,先通過(guò)I2C函數(shù)把陀螺儀X軸數(shù)據(jù)的低8G_X變量,G_Xshortimu_measure.gxdouble型變量,編譯器BUF16.4imu_measure.gx,結(jié)果通過(guò)串口傳回來(lái)的在MPU6050FullScaleRange2000°s,所以靈敏度為16.4LSB/°/s,所以在讀出寄存器值的基礎(chǔ)上除以16.4就是角速度。(m/s^2要設(shè)置為+-4g extern變量的使用。正確的用法是在初始化的地方定義(函數(shù)外定義,如然后需要用到全局變量的文件開(kāi)頭進(jìn)行#Include“External_Variable.h”,就可以了。 MPU6050MPU6050的I2C70x6(0x68,0xD0()7為固定位加一位硬件設(shè)置的地址在MPU6050初始化后就可以不停的傳感器值進(jìn)行姿態(tài)解算了。在姿態(tài)解算前,我先式計(jì)算(quat_init())。其實(shí)感覺(jué)這里不初始化也可以,因?yàn)樽藨B(tài)解算速度很快,第隨后就開(kāi)始真正的姿態(tài)解算了,首先要對(duì)的傳感器值進(jìn)行移動(dòng)均值濾波。定義了Filter_ACC結(jié)構(gòu)體,先把值加到這個(gè)結(jié)構(gòu)體變量里,每加一次,積分標(biāo)記位加1。當(dāng)定if(IMUupdate_flag==TRUE){}里面求平均值并對(duì) IMUupdata()函數(shù)前如果角速度不除以一個(gè)比例系數(shù),解算出比如陀螺X軸時(shí)始終有個(gè)-32°/s的誤差存在,在姿態(tài)解算后,滾轉(zhuǎn)角始終不是平HMC5883對(duì)偏航角進(jìn)行修正,由于加速度計(jì)不能讀出偏航角的數(shù)0x1E,結(jié)果一點(diǎn)反應(yīng)都木有啊~MPU6050I2CI2C寫入函數(shù),果然地址進(jìn)去以后先要左移一位,頓時(shí)淚奔,0x1E0x3C,按但是在磁阻儀數(shù)據(jù)讀出后,立馬又發(fā)現(xiàn)了一個(gè)問(wèn)題。飛控板轉(zhuǎn)動(dòng)90°,上位機(jī)顯示實(shí)際X,Y軸為例,如果以想兩軸的數(shù)據(jù)確定一個(gè)點(diǎn)(X,Y),那么如果把飛控板轉(zhuǎn)一圈得到的數(shù)藍(lán)色點(diǎn)是飛控板在XY平面旋轉(zhuǎn)一圈到的數(shù)據(jù),紅色圓圈是用 通過(guò)擬合,我們得到了下圖數(shù)據(jù):YXXX軸數(shù)據(jù),這樣X(jué)Y軸數(shù)據(jù)就變成一個(gè)沒(méi)有偏移的圓,通過(guò)atan2函數(shù)就可以求方向角了。全姿態(tài)羅盤的,參考上面的把磁阻儀三軸數(shù)據(jù)變化到平面的編入程序中發(fā)現(xiàn),根本沒(méi)有什么變化。可能是這個(gè)飛控板的傳感器安裝和里所用的安裝方位不一樣的緣故吧。heading=_atan2f(EstG.V.X*EstM.V.Z-EstG.V.Z*EstM.V.X,EstG.V.Z*EstM.V.Y-EstG.V.Y*個(gè)坐標(biāo)變換并用atan2函數(shù)就可算出偏航角。好的緣故。Z軸的校正沒(méi)有用擬合,只是簡(jiǎn)單的找了最大值和最小值算偏移量(由Y軸數(shù)據(jù)的量程做比較得出比例系數(shù)。其實(shí)如果把三軸數(shù)據(jù)統(tǒng)計(jì)會(huì)得到一個(gè)橢球體,然后用擬合得到橢球體的原點(diǎn)偏移和各軸的長(zhǎng)度,相信可以得到更準(zhǔn)確的磁阻儀校正。至于如何用擬合,是從上找到的現(xiàn)成的程序,改天把它改成橢球體的擬合。數(shù)據(jù)處理是通過(guò)串口助手?jǐn)?shù)據(jù)存到word里,然后將文本準(zhǔn)換成表格,以空格分列,然后把各列數(shù)據(jù)存到Excel里,最后用數(shù)據(jù)。由于我的貌似存在問(wèn)題,得用主程序圖標(biāo)以管理員方式運(yùn)行,進(jìn)入后把設(shè)置成擬合程序的,然后用積分了一次,也就是說(shuō)就是當(dāng)前傳感器的值,所以干脆去掉了。而且傳感器最快的1KHz500Hz,沒(méi)有必要濾波了。如果以后裝到飛機(jī)上發(fā)現(xiàn)噪把角速度計(jì)和磁力計(jì)數(shù)據(jù)融合,gz為角速度數(shù)據(jù),乘以負(fù)數(shù)是和定義的轉(zhuǎn)動(dòng)方向有關(guān),0360gz數(shù)據(jù)正好相反,所以要乘負(fù)數(shù)。由于每2msIMUupdata()gz*0.0022ms轉(zhuǎn)過(guò)的角度,對(duì)此積分就是實(shí)時(shí)的角度把磁力計(jì)解算角度和上次解算的偏航角做差得到偏航角的誤差,乘以一個(gè)系數(shù)0.002(經(jīng)驗(yàn)16.4*35=57416.4是陀螺儀靈敏度,35是系數(shù)(57.3,即角度值轉(zhuǎn)化為弧度制,但實(shí)驗(yàn)發(fā)現(xiàn)用35效果較好)。BMP085BMP085一開(kāi)始并不需要對(duì)其寄存器寫一些值進(jìn)行初始化,而是一開(kāi)始從BMP085的EEPROM中一些值用來(lái)以后的數(shù)據(jù)校正。在使用BMP085時(shí)直接向寄存器寫值即可。但是BMP085有個(gè)比較麻煩的地方就是,當(dāng)你給寄存器寫入就隔了6ms,而手冊(cè)上寫的時(shí)間是4.5ms,所以可以。變到350°多,偏航角不會(huì)再繞一個(gè)大圈去校正了,效果如下:后參考MWC的還用外部中斷判斷是否轉(zhuǎn)換完畢,各種調(diào)不通啊。。。還讀出過(guò)5000多Pa的氣壓,海拔-2000米什么的。略也沒(méi)出什么問(wèn)題,于是我把這些強(qiáng)制轉(zhuǎn)換都加上,uint_32unsignedlong。發(fā)現(xiàn)數(shù)據(jù)就對(duì)了,看來(lái)調(diào)bug還是得靠憋靈感。。。20m,無(wú)語(yǔ),看來(lái)以后當(dāng)普通的海拔高度計(jì)用吧。定高用更精確的氣壓計(jì)或者超聲波什今天最大的加入就是把輸出模塊加進(jìn)去了,雖然是直接拷貝別人的,不過(guò)大概看了TIM4定時(shí)器先預(yù)分頻,72M24M,然后設(shè)置一個(gè)1000,即24M/1000=24kHzTIM44個(gè)通道,每個(gè)通道有寄存器,用通道寄存器和總寄存器比對(duì)輸出8051FPCA高速輸出模式。1,例程里1000上限裝填的是999,但是的例程是不減1的,以后有示波器專門實(shí)驗(yàn)一下?;旧巷w控已經(jīng)初具雛形,現(xiàn)在輸出和輸入都加上了,現(xiàn)在輸入調(diào)通了,接下來(lái)再調(diào)輸出。 好的。參見(jiàn)手冊(cè)(《STM32中文參考手冊(cè)》)81頁(yè)。其中,我用TIM2輸入 應(yīng)PA0~3,用TIM4輸出 ,對(duì)應(yīng)PB6~9。TIM3TIM2給輸入,其實(shí)用基本可以把TIM3通用定時(shí)器留給其他功能。畢竟簡(jiǎn)單任務(wù)就應(yīng)該配置簡(jiǎn)單定時(shí)器接下來(lái)是頭疼了好久的MWC飛控。MWC飛控接收遙PPM8個(gè)端口依次掃描每個(gè)端口的脈寬。這里我采用了后一種,這樣可以直接使用的信號(hào),否MWC的流程是先初始化TIM2,用TIM2的四個(gè)通道進(jìn)行。當(dāng)時(shí)犯了一個(gè)錯(cuò)誤就是MWCTIM2GPIOAAPB總線時(shí)鐘在程序其他地方已經(jīng)打開(kāi)了,所以程序這NVIC,TIM2的初始化代碼補(bǔ)全,然后就正常了。四次(因?yàn)橛兴穆份斎耄?,看是哪個(gè)通道產(chǎn)生的中斷,判斷出以后用一個(gè)switch語(yǔ)句把捕state->risestate->fallrise一CPU時(shí)間,以至于輸入功能一打開(kāi),CPU只執(zhí)GPIOTIM2,都沒(méi)用。沒(méi)辦法,從初始化函數(shù)開(kāi)始一部分加一部分的關(guān)閉嘗試,當(dāng)關(guān)閉TIM2時(shí)鐘是發(fā)現(xiàn)中斷關(guān)閉了。這就好說(shuō)了,我用任務(wù)時(shí)鐘基的標(biāo)記位Control_counter1TIM2TIM216次(每個(gè)高電平至少需要實(shí)現(xiàn)了每2ms一次 上圖是程序運(yùn)行后通道1輸入 個(gè)stm32產(chǎn)生了50Hz(舵機(jī)標(biāo)準(zhǔn)信號(hào))的 ,脈寬從0%變到90%(飛控 輸入起作用了。由于在0%和100%附近 達(dá)到0也是可以理解的,當(dāng)然也有可能是沒(méi)有顯示出來(lái)的緣故,向上位機(jī)輸出的頻率是 120020000,可以看到輸入stm32的輸出(0變到再?gòu)淖兊剑桥紶柺侵迪蛏掀?000,去學(xué)校用示波器試試,現(xiàn)在不知道是產(chǎn)生的stm32緣故還 原來(lái)一直困擾的紊亂問(wèn)題是由于TIM2中斷造30000stm32四個(gè)中斷和計(jì)數(shù)器關(guān)系了,這四CCRx寄存器是不管用的,必須置位計(jì)數(shù)器TIMx->CNT! 三角形是輸入跟隨,可以看到飛控程序很好的完成了測(cè)量和計(jì)算工作。并且整個(gè)過(guò)程是加上PID控制的。今天主要完善了輸出功能,原來(lái)輸出之所以調(diào)不通是由于通道中斷沒(méi)有初始通過(guò)對(duì)這幾個(gè)通道的設(shè)置波就生成了,本來(lái)想用之前測(cè)占空比的程序測(cè)一下生成的占空比,但是由于生成的波頻率是/2+1/1000=24kHz,頻率太高,單片變化,說(shuō)明生成程序起效了。TIM_OCMode_1、TIM_OCMode_2其實(shí)只是極性不同,就是輸出的高低電平會(huì)相反。很奇怪的是,手冊(cè)上說(shuō)STM32的定時(shí)器有TIM_ICMode_1模式用來(lái)測(cè)在設(shè)置輸出引腳時(shí)有一個(gè)問(wèn)題就是如果設(shè)置成B端口所有引腳打開(kāi),程序就出問(wèn)題PIDchar型,但是參數(shù)傳遞過(guò)8200左右,也就是說(shuō)不存在數(shù)據(jù)組成atan直接計(jì)算就可以得到角度。通過(guò)校準(zhǔn)以后,俯仰角數(shù)據(jù)就比以前準(zhǔn)確了。原來(lái)水平放置俯仰角是1.8°左右,現(xiàn)在已經(jīng)變成0.6°了。NRF24L01模塊沒(méi)加上了,這個(gè)去學(xué)校加吧,因?yàn)榧依餂](méi)有插針,飛控板上的SPI模塊無(wú)法使用。而且用串口也可以。201321420132202013226201332可能是HUB在數(shù)據(jù)集合和分配的時(shí)候出問(wèn)題了吧。記著用UART2時(shí)關(guān)閉 油門 俯仰:1100~2062(俯->仰)【1】】限定在0~360°之間。把延時(shí)取消MPU6050會(huì)不出數(shù)據(jù)。使用電調(diào)時(shí),不要超過(guò)1KHz,否則不轉(zhuǎn)。 20028%到1000100%也不轉(zhuǎn) 組1:766877177582 PIDP13D
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度綠色交通基礎(chǔ)設(shè)施建設(shè)融資協(xié)議書(shū)
- 施工單位關(guān)于施工方案調(diào)整的工作聯(lián)系函
- 遠(yuǎn)程教育技術(shù)在小學(xué)教育中的應(yīng)用
- 高處墜落機(jī)械傷害搶救應(yīng)急預(yù)案格式
- 二手車質(zhì)押貸款合同范文
- 不履行租賃合同起訴書(shū)范本
- 臨時(shí)聘請(qǐng)合同書(shū)
- 上海市糧食買賣合同參考樣本
- 臨沂沂州醫(yī)院合同醫(yī)療服務(wù)質(zhì)量提升策略
- 中外合資經(jīng)營(yíng)項(xiàng)目投資合同范文(適用于房地產(chǎn)開(kāi)發(fā))
- 北師大版小學(xué)六年級(jí)下冊(cè)數(shù)學(xué)全冊(cè)教學(xué)設(shè)計(jì)
- YY/T 0681.2-2010無(wú)菌醫(yī)療器械包裝試驗(yàn)方法第2部分:軟性屏障材料的密封強(qiáng)度
- GB/T 20472-2006硫鋁酸鹽水泥
- 煙氣管道阻力計(jì)算
- 城鄉(xiāng)環(huán)衛(wèi)一體化保潔服務(wù)迎接重大節(jié)日、活動(dòng)的保障措施
- 醫(yī)院-9S管理共88張課件
- 高考作文復(fù)習(xí):議論文論證方法課件15張
- MySQL數(shù)據(jù)庫(kù)項(xiàng)目式教程完整版課件全書(shū)電子教案教材課件(完整)
- 藥品生產(chǎn)質(zhì)量管理工程完整版課件
- 《網(wǎng)絡(luò)服務(wù)器搭建、配置與管理-Linux(RHEL8、CentOS8)(微課版)(第4版)》全冊(cè)電子教案
- 職業(yè)衛(wèi)生教學(xué)課件生物性有害因素所致職業(yè)性損害
評(píng)論
0/150
提交評(píng)論