|
辛苦了大概兩個(gè)多月,之前一直都調(diào)不好。中間也遇到了很多的問題,但當(dāng)問題解決后每次都是重大的突破。現(xiàn)在就介紹一下,制作過程中遇到的問題。
1、關(guān)于加速度計(jì)的轉(zhuǎn)換系數(shù)
要制作自平衡車,角度和角速度的計(jì)算就很重要。關(guān)于加速度計(jì)和陀螺儀的使用就不多說了,他們一個(gè)用來測加速度計(jì),一個(gè)用來測角速度。
把從加速度計(jì)讀出來的數(shù)據(jù)轉(zhuǎn)換成角度,要乘以一個(gè)比例系數(shù)。在轉(zhuǎn)換成角度角度的過程中,可以完全不用三角函數(shù)(因?yàn)檐嚨膬A角其實(shí)不會(huì)超過正負(fù)10度,后面會(huì)提到),直接把(最大值-最小值)/90(/2如果有正負(fù)的話)作為比例系數(shù)就可以了(這樣可以和真實(shí)角度比較)。其實(shí)理論上這個(gè)比例系數(shù)是什么都可以,因?yàn)楹竺嫱勇輧x轉(zhuǎn)換系數(shù)是根據(jù)加速度計(jì)的轉(zhuǎn)換比例系數(shù)跳出來的,所以加速度計(jì)的比例系數(shù)無論是什么值都沒有影響。
2、關(guān)于陀螺儀轉(zhuǎn)換系數(shù)
陀螺儀的轉(zhuǎn)換系數(shù)需要根據(jù)濾波的波形來調(diào)(我是在飛思卡爾公布的官方方案中看到的,經(jīng)實(shí)踐千真萬確),陀螺儀的轉(zhuǎn)換系數(shù)不用去算,只需要通過看波形去調(diào)就可以了,直到不超調(diào)也不滯后就可以了,具體的可以看附件官網(wǎng)方案中的93頁(第二版)。
3、關(guān)于濾波
角度濾波有很多方案,我所知道的是互補(bǔ)濾波、官網(wǎng)的方案和卡爾曼濾波,我的感想是什么濾波都不重要,重要的是參數(shù)要調(diào)好。
互補(bǔ)濾波:這是很簡單也很實(shí)用的方法,其實(shí)和官網(wǎng)的方案有一點(diǎn)類似的地方,在網(wǎng)上有一個(gè)很著名的20頁的PPT文件The Balance Filter,介紹的是互補(bǔ)濾波,相信大家看了之后都會(huì)明白的。在文件中,作者把高通濾波系數(shù)a和時(shí)間常數(shù)T(濤,不知道怎么打出來)及采樣周期dt用一個(gè)公式建立了聯(lián)系,而我的經(jīng)驗(yàn)是,我們不要用這個(gè)公式去計(jì)算。高通濾波系數(shù)取0.98(不能比0.98再小了,會(huì)不平滑),采樣周期根據(jù)你程序的需要是多少就多少(5ms的效果會(huì)比10ms好很多,越小越好),濾波可以通過調(diào)陀螺儀的轉(zhuǎn)換系數(shù)達(dá)到很好的效果。也就是說,用互補(bǔ)濾波的關(guān)鍵調(diào)試參數(shù)是陀螺儀轉(zhuǎn)換系數(shù),把加速度計(jì)轉(zhuǎn)換系數(shù)、高通濾波系數(shù)和采樣周期定好之后,只需要調(diào)試陀螺儀轉(zhuǎn)換系數(shù)就可以達(dá)到滿意的效果了
PS:互補(bǔ)濾波的效果一定不差,我看過網(wǎng)上用互補(bǔ)濾波和單純的P控制達(dá)到很好的效果的。
官網(wǎng)濾波方案:我總覺得官網(wǎng)的和互補(bǔ)濾波有些相似,經(jīng)實(shí)驗(yàn),效果也是很好的。具體的公式在參考方案里面也有。調(diào)試的關(guān)鍵就是陀螺儀轉(zhuǎn)換系數(shù)。
卡爾曼濾波:一直沒用過,也不會(huì)用,主要是沒弄懂。我不喜歡用一知半解的東西,因?yàn)槌霈F(xiàn)問題的時(shí)候排查不出來或者不知道怎么解決問題。網(wǎng)上也有很多卡爾曼濾波的程序,因?yàn)橐恢笨床欢瓦B試也沒試。如果會(huì)用的話,效果應(yīng)該是好的,但我不會(huì)用。如果有誰用興趣的話還請多多指教,互相交流一下。
4、關(guān)于控制
當(dāng)然有再好的角度和角速度控制不好的話也是站不好的。控制就用一般的PID控制,PWM=P*角度+D*角速度,這里沒用積分控制,效果已經(jīng)很好了。
在官網(wǎng)的方案中,還加上了死區(qū)電壓,我的最大的體會(huì)就是,這個(gè)死區(qū)電壓是可以不要的,而且不要更好(或者去一個(gè)小一點(diǎn)的值)。
這樣的話就要把P調(diào)的很大。具體是多大呢,至少是電機(jī)滿值的十分之一(五分之一甚至三分之一都是沒問題的),例如電機(jī)最大輸出是1的話,P取0.1、0.2、0.3都是沒問題的(官網(wǎng)的方案好像是取的0.3),如果點(diǎn)擊最大輸出是5000的話,那么P取500、1000、1500都是可以的,(當(dāng)然前提是加速度計(jì)轉(zhuǎn)換系數(shù)轉(zhuǎn)換出來的角度值和真實(shí)值相當(dāng),否則另當(dāng)別論)。所以車模的角度應(yīng)該不會(huì)超過正負(fù)十度,因?yàn)楫?dāng)P=0.3的時(shí)候,車模有三度多的偏差時(shí)電機(jī)就滿電壓輸出了。我之前就是一直用一個(gè)很小的P去調(diào),原來所有的問題就在于把P調(diào)大就可以了。
至于D的話,大概在P的七十分之一或八十分之一之間都是可以有很好的效果的。這個(gè)關(guān)系就和加速度轉(zhuǎn)換系數(shù)沒有關(guān)系了。比如官網(wǎng)中P=0.3則D=0.3*1/75=0.004,在我這里P=1000,則D=1000*1/75=13.3,效果都是很好的。PS:這個(gè)關(guān)系只是在車模靜止平衡時(shí)的關(guān)系,行進(jìn)中的關(guān)系我還沒有實(shí)驗(yàn)過。
5、說明
(1)陀螺儀的過沖是一個(gè)嚴(yán)重問題,高通濾波的那個(gè)電容是不可取的,要把它去掉才好。
(2)每一步都是關(guān)鍵,要真正理解原理才會(huì)知道怎么調(diào)
|
|