久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 14491|回復: 9
打印 上一主題 下一主題
收起左側

基于Arduino+MPU6050+Tp-link 703n平衡車完美站立(部分代碼上傳)

  [復制鏈接]
跳轉到指定樓層
樓主
基于Arduino+MPU6050+Tp-link 703n平衡小車現已完美站立,分享一下制作經驗和方法


    希望版主申精。。。可以引起大家注意。。。

    基于工坊目前還沒有一個帖子能很完整的介紹平衡小車的制作思路以及制作方案,借此機會我將制作成功后的經驗分享給大家,由于該課題涉及到我們項目的部分,請允許我現在不能公開,但思路和方案我是可以告訴大家的。我希望能給一群愛學的同學們,鐘愛電子制作的朋友們提供一點幫助,也算是我一年來在該論壇學到很多知識的回報吧。
    希望各位懂行的高手不要嘲笑我的無知,更希望你們看了以后,能夠多給我提供一些建議和更好的思路,總之,但愿我們能共同進步,或是說能有機會合作,那是理想的狀態了。其他的話我就不多說了,我先給大家上圖片和視頻。

    馬上熄燈了,持續更新中。。。。

    2014-3-21 星期五
    今天繼續。。。
    應大家要求先介紹元件清單:
    【元件清單】
  •     1.串口MPU6050模塊。(特別注意,是串口MPU6050模塊,不是普通的6050,串口6050只是不需要你自己濾波了,如果你想嘗試一下,也未必不可,但我不推薦新手嘗試Kalman)
  •     2.Tp-link-wr703n(官方標配,刷進去Openwrt系統,同時可以無線更新程序,掛載攝像頭等等)
  •     3.Arduino MEGA 2560 r3 (這個單片機做平衡車足矣,當時懷疑他不能勝任)
  •     4.L298n(最好是用帶光耦的驅動,不帶光耦也行,我的就沒帶光耦,害怕信號干擾就帶上光耦)
  •     5.電機是直流減速電機帶碼盤(扭矩最好是能大一點,我推薦德國空心杯電機,當然我用的不是空心杯,下一版一定會用)
  •     6.OLED12864 LED屏幕(我就不多說了,等到車很平穩了,你愛怎么擴展都行)
  •     7.小車輪子(最好是大一點,輪子要用硬橡膠的,我現在這個輪胎是軟的,摩擦力太大,下版本就換掉)
  •     8.電池3節18650,帶上電池盒OK
  •     9.穩壓模塊(我個人認為不能把所有的需要5v供電的傳感器都從單片機供電,單片機提供電流是有限的,可能會造成單片機死機的情況,因此我就外接一個穩壓模塊給這一群傳感器供電,一定要注意穩壓模塊的輸出的負極要和單片機共地。
  •     10.遙控器就是安卓手機了(這個就不多說了,有興趣的我會發關于Openwrt的相關教程,這里說就有點跑題了)
    注釋:元件就這么多了,其實也沒有什么,重要的是控制思路,和控制算法。如果大家對硬件還有疑問就提出來,今天就講到這里,學校的事情太多了,又要開會,各位不好意思。。。補充幾句,一定要好好看我括號里面補充的內容,很重要,有可能就是由于這些問題導致你很久都不能把小車調起來的,再上一張圖片。。。

    繼續更新。。。
    【控制算法】
    1.PID(如此經典的算法,你能不用嗎,尤其是學習自控原理的同學)
       Pwm_out = Kap*Angle[0] + Kad*w[0] + Ksp*speeds_filter + Ksi*positions ;  //PID控制器
  
注釋:

  • Angle[0]表示x軸的角度量,單位是(角度);
  • w[0]表示x軸的角速度,單位是(角度/秒);
  • speeds_filter表示車輪速度,程序中以單位時間碼盤的格數代替;
  • positions表示位置,是速度對時間的積分。
     角度用PD,位置用PI非常簡單,雙閉環控制,我的控制器就這么簡單一句話,別以為算法是多么高深的東西,我給你說一下原理,看圖:

【平衡車模型】
   

    現在必然有人問我難道我們要建模嗎?我強烈推薦學過自控原理和現代控制理論的同學建模,但可喜的是不建模也可以做平衡車,只是理解的不深刻罷了。現在上一段pid控制代碼:
  1.     //=========================================================   
  2.     //===                  PID_CONTROLLER                   ===
  3.     //=========================================================
  4.     //串級PID: 主調:角度
  5.     //         副調:速度
  6.     //先控制角度,后控制速度
  7.     //=========================================================
  8.     int Pwm_out = 0;
  9.     int Turn_Need = 0;
  10.     int Speed_Need = 0;
  11.     int speed_output_R , speed_output_L;
  12.     float speeds , speeds_filter, positions;
  13.     float diff_speeds,diff_speeds_all;
  14.     //========================
  15.     float Kap = 24.5;       //
  16.     float Kad = 10;         //
  17.     float Ksp = 2.8;        //
  18.     float Ksi = 0.11;       //
  19.     //========================
  20.     void PID_PWM()
  21.     {
  22.       speeds=(count_left + count_right)*0.5;
  23.      
  24.       diff_speeds = count_left - count_right;
  25.       diff_speeds_all += diff_speeds;
  26.      
  27.       speeds_filter *=0.85;  //一階互補濾波
  28.       speeds_filter +=speeds*0.15;
  29.      
  30.       positions += speeds_filter;
  31.       positions += Speed_Need;
  32.       positions = constrain(positions, -2300, 2300);//抗積分飽和
  33.      
  34.       Pwm_out = Kap*Angle[0] + Kad*w[0] + Ksp*speeds_filter + Ksi*positions ;  //PID控制器
  35.       if(Turn_Need == 0)
  36.       {
  37.         speed_output_R = int(Pwm_out - diff_speeds_all);
  38.         speed_output_L = int(Pwm_out + diff_speeds_all);
  39.       }
  40.       speed_output_R = int(Pwm_out + Turn_Need);
  41.       speed_output_L = int(Pwm_out - Turn_Need);
  42.       Motor(speed_output_L , speed_output_R);
  43.       count_left = 0;
  44.       count_right = 0;
  45.      
  46.     //  Serial.print(Angle[0]);      //主調被調量
  47.     //  Serial.print(',');
  48.     //  Serial.print(speeds_filter);//副調被調量
  49.     //  Serial.print(',');
  50.     //  Serial.println(Pwm_out);  //輸出量
  51.     }
復制代碼

    今天就寫到這里,等待你們的回復和提問,然后我在之后的更新中著重以答疑主,同時也能給我編輯帖子確定一個方向。依然在更新中。。。


   應有人要求,我先上個視頻。。。
   【平衡車視頻】


    更新中。。。

   【關于MPU6050】
    
關于MPU6050有目前就應用方法有兩種:
  • 直接采數據,然后Kalman濾波;卡爾曼濾波實現現在有兩種方法,一種是用自己單片機處理,一種是硬件濾波串口方式輸出(這個就是所謂的串口MPU6050,就是有商家自己已經給你做好卡爾曼濾波,你只需要接受他的數據)
  • 用MPU6050中的DMP,它也可以直接輸出角度等值,但是由于它受溫度,電壓的干擾較大,一般不建議用。

    今天就說到這里。。。
    現在,我仍然再調試,發現濾波參數,也是非常重要的。直接影響小車是否抖動。
    希望大家看后,積極回復,把帖子頂起來。。。。
    等我這幾天忙完了,給大家上傳一些傳感器模塊的程序,方便大家調試。。。
    今天給大家上傳了兩個測試代碼,喜歡的同學自己下載。。。
    看到大家如此有熱情,我再發幾張圖片,等之后有時間我再把帖子詳細說明一下。

    手機的上位機——Wi-Fi通信(由于版權問題,我不能公開傳播,大家可以自己去下載)



    電腦上位機——藍牙通信(我花了一個晚上搞得,做的不好,剛剛學LabView)


前幾天有點事兒沒時間給大家回帖,在此深表歉意,現在大家有問題盡管提出來,我會傾囊相助。。。

補充樓主展示的仿真建模代碼下載地址:http://www.mathworks.com/matlabc ... --controller-design

評分

參與人數 1黑幣 +5 收起 理由
赤炎木 + 5 很給力!

查看全部評分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏10 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:130679 發表于 2016-7-21 09:11 | 只看該作者
最近在做小車,學習學習
回復

使用道具 舉報

板凳
ID:138313 發表于 2016-11-27 00:55 | 只看該作者
折騰平衡車一周了,PID算是有了點覺悟,然而小車一脫離實驗桌就站不穩
回復

使用道具 舉報

地板
ID:155077 發表于 2016-12-15 20:13 | 只看該作者
新手來學習了,哈哈哈
回復

使用道具 舉報

5#
ID:165861 發表于 2017-2-21 23:19 | 只看該作者
久違u 發表于 2016-12-15 20:13
新手來學習了,哈哈哈

沒有看到代碼呀
回復

使用道具 舉報

6#
ID:187533 發表于 2017-4-20 22:27 | 只看該作者
請樓主分享一下電路圖吧。
回復

使用道具 舉報

7#
ID:183134 發表于 2017-4-20 22:42 | 只看該作者
謝謝分享
回復

使用道具 舉報

8#
ID:227864 發表于 2017-10-17 14:58 | 只看該作者
這么高深的東西,頂樓主
回復

使用道具 舉報

9#
ID:243555 發表于 2017-10-27 21:56 | 只看該作者
點贊,點贊,謝謝分析
回復

使用道具 舉報

10#
ID:667116 發表于 2020-1-3 12:54 | 只看該作者
什么是串口MPU6050
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 亚洲视频一区在线 | 一区二区三区免费网站 | 国产羞羞视频在线观看 | 五月婷婷色 | 一区二区三区亚洲 | 中文字幕人成乱码在线观看 | 欧美黑人巨大videos精品 | 91精品久久久久久久久中文字幕 | 成人欧美一区二区三区色青冈 | 亚洲欧美一区在线 | 亚洲狠狠爱 | 亚洲aⅴ一区二区 | 夜夜撸av| 伦理午夜电影免费观看 | 亚洲日日操 | 天天天天操| 国产精品一区久久久 | 亚洲人成人一区二区在线观看 | 国产精品久久久久av | japan21xxxxhd美女 日本欧美国产在线 | 中文字幕日韩欧美一区二区三区 | 岛国av在线免费观看 | 国产色播av在线 | 97久久精品午夜一区二区 | 亚洲视频免费在线 | 欧美日韩综合一区 | 日韩精品在线观看一区二区三区 | 日韩中文字幕一区 | 狠狠色综合久久丁香婷婷 | 日日摸日日碰夜夜爽2015电影 | 亚洲精品一区二区三区中文字幕 | 成人精品在线视频 | 免费国产一区 | 国产91丝袜在线18 | 日本精品久久 | 国产精品久久久 | 久久精品国产一区二区电影 | 欧美精品一二三区 | 免费国产一区二区视频 | 午夜av成人| 亚洲一区二区精品视频在线观看 |