基於STC15F2K60S2主控平衡車

在今年138月開始接觸平衡車,那時候一邊準備全國電子設計大賽一邊做自己的平衡車,做了大概有15天就因爲比賽原因停下了,一路做下來也積累一一些經驗:

首先講硬件:

主控:STC15F2K60S2

傳感器:MPU6050

電機驅動:L298N

電機:深圳海創科技 JGA25-370-6V-77rpm

關於主控,該主控是STC公司新出的一款加強型的8051單片機,1T,內部EEPROM 1K, 片內SRAM2048字節,8ADC3PWM,16個定時器。晶振選爲22MHZ,該主控用於做平衡已經完全適合。

關於MPU6050,這是一款集合陀螺儀加速度計於一體的傳感器,但是要用好這個模塊卻不是很容易,因爲輸出的輸出並不直接是角度、角速度,必須要經過相應轉換,轉換出來的結果還要經過濾波,主流的濾波器有兩種,即卡爾曼濾波,互補濾波。我開始選擇的卡爾曼濾波器但是由於不怎麼會調節Q,R參數就換成互補濾波了,我的感想是什麼濾波都不重要,重要的是參數要調好。

 互補濾波:這是很簡單也很實用的方法,在網上有一個很著名的20頁的PPT文件The Balance Filter,介紹的是互補濾波,相信大家看了之後都會明白的。在文件中,作者把高通濾波係數a和時間常數T(濤,不知道怎麼打出來)及採樣週期dt用一個公式建立了聯繫,而我的經驗是,我們不要用這個公式去計算。高通濾波係數取0.98(不能比0.98再小了,會不平滑),採樣週期根據你程序的需要是多少就多少(5ms的效果會比10ms好很多,越小越好),濾波可以通過調陀螺儀的轉換系數達到很好的效果。也就是說,用互補濾波的關鍵調試參數是陀螺儀轉換系數,把加速度計轉換系數、高通濾波係數和採樣週期定好之後,只需要調試陀螺儀轉換系數就可以達到滿意的效果了

 PS:互補濾波的效果一定不差,我看過網上用互補濾波和單純的P控制達到很好的效果的。

卡爾曼濾波:一直沒用過,也不會用,主要是沒弄懂。我不喜歡用一知半解的東西,因爲出現問題的時候排查不出來或者不知道怎麼解決問題。網上也有很多卡爾曼濾波的程序,因爲一直看不懂,就連試也沒試。如果會用的話,效果應該是好的,但我不會用。如果有誰用興趣的話還請多多指教,互相交流一下。

驅動電機:我最先聽說要用角度環,位置環融合,感覺不知道怎麼辦,看看zlstone大哥的程序,K_angle*angle + K_angle_dot*angle_dot+ K_position*position_robot+ K_position_dot*position_dot_filter就搞定,其實就是兩個pid函數寫成一個了

 控制算法:當然有再好的角度和角速度控制不好的話也是站不好的。控制就用一般的PID控制,PWM=P*角度+D*角速度,這裏沒用積分控制,效果已經很好了。

 這樣的話就要把P調的很大。具體是多大呢,至少是電機滿值的十分之一(五分之一甚至三分之一都是沒問題的),例如電機最大輸出是1的話,P0.10.20.3都是沒問題的(官網的方案好像是取的0.3),如果點擊最大輸出是5000的話,那麼P50010001500都是可以的,(當然前提是加速度計轉換系數轉換出來的角度值和真實值相當,否則另當別論)。所以車模的角度應該不會超過正負十度,因爲當P=0.3的時候,車模有三度多的偏差時電機就滿電壓輸出了。我之前就是一直用一個很小的P去調,原來所有的問題就在於把P調大就可以了。

  至於D的話,大概在P的七十分之一或八十分之一之間都是可以有很好的效果的。這個關係就和加速度轉換系數沒有關係了。

更行中,,,,,

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章