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