找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 13325|回復(fù): 11
收起左側(cè)

自制四軸飛行器中的問題及解決方案

  [復(fù)制鏈接]
ID:262 發(fā)表于 2014-5-26 00:26 | 顯示全部樓層 |閱讀模式
本文轉(zhuǎn)自 Observer 大牛

  我走的彎路千萬不要有人再走。
    你在愁你的四軸飛行器怎樣調(diào)整pid都飛不起來嗎?那就一定不是pid的。我也苦苦調(diào)了三個星期,毫無進(jìn)展,當(dāng)發(fā)現(xiàn)了不是pid的問題并且改進(jìn)了之后,我隨便給了兩個參數(shù)就飛起來了。下面給出我的經(jīng)驗。
   一個好的機(jī)構(gòu),應(yīng)當(dāng)由三部分構(gòu)成:一個聽話的執(zhí)行單元,一個精準(zhǔn)的測量單元,一個聰明的控制單元。
   1,執(zhí)行單元。我的電機(jī)是直流無刷電機(jī)(新西達(dá)1000kv),用好盈30a電調(diào)控制,這種電調(diào)你只需給它一個1000-2000us(太大太小都不好)的脈沖信號就可以控制電機(jī)轉(zhuǎn)速,只需給一次,它就可以一直轉(zhuǎn),改變的時候再給一次。比如我的起飛速度就是大約1600us的脈沖。需要注意的是,電調(diào)剛開始時需要給3s的低寬度脈沖用來給電調(diào)設(shè)置最低點。聽到滴滴兩聲之后就說明設(shè)置好了。
   2,控制單元?刂茊卧皇堑谌齻嗎?怎么放到第二個了。因為不說pid后面沒法說。
    pid調(diào)節(jié)是控制論中十分經(jīng)典的一種經(jīng)典的控制方法,有時i可以不要,就比如說我的就沒有i。對于沒有學(xué)過控制論的人pid怎么理解呢?舉個例子,比如一個理想彈簧,你拽它一下,然后放開,它就會一直往復(fù)運(yùn)動,p就是彈簧的彈性系數(shù),p越大,彈簧的回復(fù)力就越大,抵抗拉的力也越強(qiáng)。在飛機(jī)上,當(dāng)我們檢測到一邊傾斜,就給它一個和角度成正比的回復(fù)力,就是給電機(jī)轉(zhuǎn)速+p*pitch。但是如果只有p呢,就像彈簧一樣,一直晃啊晃。那么我們把彈簧放進(jìn)水里,水的阻力會使彈簧一段時間之后挺止,并且水的阻力和彈簧運(yùn)動速度成正比,這就是d的作用。在飛機(jī)上,當(dāng)我們依靠陀螺儀偵測到飛機(jī)往一個方向旋轉(zhuǎn)時,我們就加上一個抑制這種轉(zhuǎn)動的力,即-d*w,w為角速度。i為假如我們的彈簧變形了,我們加上一個力使我們的彈簧恢復(fù)原來的形狀,我是手動調(diào)整了一下誤差,沒有通過d來調(diào)節(jié)。
   3,測量單元。我的問題出現(xiàn)在測量單元,同時我也相信絕大部分的人的問題都出現(xiàn)在測量單元。我用的是陀螺儀是gy80,集成了adxl345加速度測量單元還有l(wèi)3g420d角速度測量單元。加速度計雖然叫加速度,但是可以直接得到pitch和roll,即沿x和y方向的傾斜角,原理在這里不解釋。在沒有干擾的情況下反回的數(shù)據(jù)很完美。我以為能真實反應(yīng)飛機(jī)目前的傾角然后進(jìn)行調(diào)節(jié),我竟然就天真的拿這個數(shù)據(jù)直接用了,并且調(diào)整pid參數(shù)三星期毫無進(jìn)展。當(dāng)沒有進(jìn)展時,我開始思考是什么出了問題,我用processing打了一個示波器出來,將數(shù)據(jù)返回的繪制成波形顯示在電腦上,發(fā)現(xiàn)了問題:電機(jī)不開的時候數(shù)據(jù)很好,電機(jī)一開數(shù)據(jù)簡直沒法看,因為電機(jī)震動對加速度計的影響非常大,而我們的角度是考加速度測量的,返回的簡直是亂碼,三個星期以來原來就是調(diào)這堆亂碼!
   定下心來,覺得進(jìn)行濾波,對加速度計返回的傾角進(jìn)行低通濾波,陀螺儀受震動影響很小,不需要濾波。低通濾波大家不需要知道,這也是被淘汰了的,原因是濾波之后數(shù)據(jù)雖然很好看,但是會造成極大的延遲,飛機(jī)都偏到另一邊了,還顯示偏在這一邊,這只適合在一些不需要太靈敏的地方。
  下面介紹拯救我的一個簡單有效的算法,不需要用到卡爾曼濾波這樣高級的算法就足以讓它飛起來而且飛的很好,有人叫他數(shù)據(jù)融合算法,其實沒有這么玄。
   陀螺儀受震動的影響很小,它返回的是角速度,角速度*時間就是積分,每次循環(huán)讀取一下當(dāng)前的角速度再累加起來,比如第一次角速度20度/s,一個循環(huán)的周期是0.02s,譬如我的周期22ms。就是那么我們就知道轉(zhuǎn)了0.4度。第一次轉(zhuǎn)了2,第二次轉(zhuǎn)了3,第三次轉(zhuǎn)了-1,總共就轉(zhuǎn)了2+3-1=4。有人會問,這樣積分準(zhǔn)確嗎?很準(zhǔn)!我開始也覺得不靠譜,后來發(fā)現(xiàn)很靠譜。兩三面零點會產(chǎn)生三四度的偏差,不要緊,我們用準(zhǔn)確的角度(加速度計返回的,加速度返回角度,有點繞)計來修正。
不加修正時,公式是這樣的
角度=角速度*周期時間+原來的角度
加上修正后
角度=95%*(角速度*周期時間+原來的角度)+5%*準(zhǔn)確的角度
對于這兩個數(shù)據(jù)進(jìn)行加權(quán)平均,這樣既有時時性,又能保證零點不漂移,好,很好!
之后,pid隨便給給就起來了,不信試試。

回復(fù)

使用道具 舉報

ID:62336 發(fā)表于 2014-5-27 17:03 | 顯示全部樓層
給力啊,以后要學(xué)習(xí)
回復(fù)

使用道具 舉報

ID:64606 發(fā)表于 2014-8-1 00:11 | 顯示全部樓層
高深。。。。。
回復(fù)

使用道具 舉報

ID:72698 發(fā)表于 2015-1-27 22:48 來自手機(jī) | 顯示全部樓層
我的目標(biāo),好好學(xué)
回復(fù)

使用道具 舉報

ID:73684 發(fā)表于 2015-2-16 11:31 來自手機(jī) | 顯示全部樓層
其實我學(xué)習(xí)單片機(jī)的第一個目的就是做個飛控,因為我玩了3年的飛機(jī),就是沒能自己做個電子原件,就懂做空機(jī)。
回復(fù)

使用道具 舉報

ID:75065 發(fā)表于 2015-3-22 14:47 | 顯示全部樓層
學(xué)習(xí)了,四軸還真不簡單。
回復(fù)

使用道具 舉報

ID:72611 發(fā)表于 2015-4-4 17:00 | 顯示全部樓層
學(xué)習(xí)了,不過是有錢人的玩意
回復(fù)

使用道具 舉報

ID:75077 發(fā)表于 2015-4-4 17:20 | 顯示全部樓層
四旋翼,以后會有很多交流機(jī)會。。。
回復(fù)

使用道具 舉報

ID:78235 發(fā)表于 2015-4-27 20:16 | 顯示全部樓層
mubiaoa
回復(fù)

使用道具 舉報

ID:78838 發(fā)表于 2015-5-4 15:48 | 顯示全部樓層
你懂編程的話,你可以自己想,我一個人的想法有限,所以功能不是很多
回復(fù)

使用道具 舉報

ID:80961 發(fā)表于 2015-5-25 14:04 | 顯示全部樓層
好難得說破!
回復(fù)

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表