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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 25628|回復: 26
收起左側

基于Arduino的小平衡車

  [復制鏈接]
ID:138313 發表于 2017-6-17 13:00 | 顯示全部樓層 |閱讀模式



近期考試繁忙,先上視頻熱身熱身!

做平衡需要具備的基本配件:
一.硬件方面:
1.電源:比如航模電池11V或者7V以上,具體看電機供電電壓
233848pfbyzn9zbh9zf97f.jpg
2.Arduino推薦2560,因為后面可以加很多有趣的東西,比如語音,無線遙控,超聲波,觸摸屏,顯示器等等,MEGA2560有足夠的引腳
3.關鍵的東西>>MPU6050
000244yivq6f5pcfkw1q7y.jpg
4.電機和輪子+車架(可自制)。建議初學者買帶有編碼測速的車身,電機應帶有兩相測速,目的是可以測出電機正反轉。
000528r6rgogg231ygdgbw.jpg
5.電機驅動:可用298或者TB6612.建議用TB6612,它體積小,功率夠用。
005241naxh655ll6w165k5.png 005245qja3jzm7lyj3gvl2.jpg
6.降壓模塊。降壓模塊主要給Arduino供電,把11V的電壓降到8V左右通過Vin供電端給Arduino供電,如果直接接11V,小心芯片Duang機。
小車可平衡之后就可以加點控制器件:比如HC-05/06藍牙模塊或者NRF2.4G無線模塊。
二.軟件方面:
1.最重要的當然是傳說中的PID控制算法(其實不難,真不難,一個學期時不時的拿別人的程序出來看看,總會有理解的那天!)
2.理解測速和檢測方向原理(不管最高最低轉速如何,只要轉動電機有數就好,不用擔心數太小)
3.靈活運用串口監視器進行調試,可以打印數字觀察角度,PWM等。
4.要知道MEGA2560和UNO的定時器庫不一樣,需注意!
#include //mega2560定時器庫
#include //如果MsTi該庫不變紅色,需更新該庫(UNO定時庫)
5.拿到正確的MPU6050的角度和角速度。為什么說拿到呢?實話說6050不需要你太花費時間去理解它是怎么工作怎么嘰嘰歪歪的,你只需要找到它的出口值(角度和角速度)就行。就比如下面這段程序就可以得出標準的角度(f_angle )和角速度(omega)
當然在主函數錢還有它的一些定義:如何在一大堆程序里找出哪些才和它相關呢(先整體復制進來-編譯運行-正確-嘗試屏蔽掉自認為與它無關的語句以及定義-若報錯,則它有關,恢復回來-若正常編譯,則可去掉該語句)
/********MP6050相關***************/
float timeChange=10;//濾波法采樣時間間隔毫秒
float dt=timeChange*0.001;//注意:dt的取值為濾波器采樣時間
MPU6050 Mpu6050;//命名 陀螺儀類:Mpu6050
int16_t ax, ay, az, gx, gy, gz;//陀螺儀原始數據 3個加速度+3個角速度
float f_angle,angleA,omega,gyroGz,control_v;
float angle0 = 1.80,gy1 = 30;        //因重心導致角度偏置;陀螺儀偏移量

/**************標準角度處理**************/
void jiao_du()
{
        Mpu6050.getMotion6(&ax, &ay, &az, &gx, &gy, &gz);//讀取原始6個數據
        float ax1 = map(ax,-15924,16629,-16384,16384);     //除去每個軸的漂移量
        float ay1 = map(ay,-16601,16121,-16384,16384);
        float az1 = map(az,-17454,15750,-16384,16384);
        angleA = atan2(ax1,az1) * 180 / PI+ angle0; //加速度計算角度。得到平衡位置的角度
        omega = -(gy - gy1) / 131.00;   //計算角速度
        gyroGz =gz / 131.00;//陀螺儀角速度,注意正負號與放置有關
        unsigned long now = millis();        // 當前時間(ms)
        float dt = (now - preTime) / 1000.0; // 微分時間(ms)
        preTime = now;  
        float K = 0.8;  //一階濾波
        float A = K / (K + dt);                     
        f_angle = A * (f_angle + omega * dt) + (1-A) * angleA; //得到正常的角度
        }
6.(不需要)卡爾曼濾波。其實用了上面的角度處理程序,就不要卡爾曼了
因為要得到正常的角度和角速度有兩種方式:
1.算法融合得到(簡單)
2.卡爾曼濾波得到(復雜)
總接線圖:
014215jgjv6wjr9sm5zmws.png


評分

參與人數 3黑幣 +17 收起 理由
KevinCruz + 5 希望樓主共享源碼
偶游QHD + 8 絕世好帖!
Deathdom + 4

查看全部評分

回復

使用道具 舉報

ID:1 發表于 2017-6-19 03:29 | 顯示全部樓層
好東東,樓主能分享點制作資料嗎?
回復

使用道具 舉報

ID:138313 發表于 2017-6-20 15:10 | 顯示全部樓層
admin 發表于 2017-6-19 03:29
好東東,樓主能分享點制作資料嗎?

后面整理出來會有的,近期實在太忙。。。
回復

使用道具 舉報

ID:213116 發表于 2017-6-21 00:28 | 顯示全部樓層
做得真不錯,反應很靈敏,期待分享相關資料
回復

使用道具 舉報

ID:187533 發表于 2017-6-21 21:29 | 顯示全部樓層
樓主真會吊胃口,寢食難安了啊!期待樓主的精彩分享
回復

使用道具 舉報

ID:187533 發表于 2017-6-23 06:06 | 顯示全部樓層
樓主,收徒吧,太佩服了,我每天都來論壇里等你的消息。
回復

使用道具 舉報

ID:187533 發表于 2017-6-25 06:31 | 顯示全部樓層
收到樓主的回復,好雞凍
回復

使用道具 舉報

ID:138313 發表于 2017-6-25 22:56 | 顯示全部樓層
實在是忙!但在這先給車友們一些思想指導,做平衡之前我也是屬于小白,但堅持了兩個月,不會就查,邊查邊嘗試。然后做得厭倦了就先玩其他的,反反復復的弄來弄去,直到后面看了一個PID視頻,頓時恍然大悟,最后稍作思路整理、重振旗鼓,終于看到了希望。因為了解了PID,再也不怕平衡,后面就可對其進行任意改裝,目前正在給它加新功能。等暑假打個比賽后就可以整理資料。現在的建議是車友們最好先玩起來,等有了一定印象后就好辦了,要是很白很白的小白,建議先玩4輪的小車!

評分

參與人數 1黑幣 +100 收起 理由
admin + 100 回帖助人的獎勵!

查看全部評分

回復

使用道具 舉報

ID:187533 發表于 2017-6-27 05:05 | 顯示全部樓層
正在走樓主走過的路,PID尚未悟出,心情好的時候會拿出來邊調邊悟,悟到心情急躁了就趕緊放下了,要不真受不了。感謝樓主的建議。
回復

使用道具 舉報

ID:187533 發表于 2017-6-27 05:08 | 顯示全部樓層
祝樓主比賽順利!
回復

使用道具 舉報

ID:138313 發表于 2017-8-7 01:46 | 顯示全部樓層
由于在這個網站找不到繼續編輯的入口,只好在其他網站繼續更新平衡車內容,請移步
Arduino平衡小車——開始不斷更新
回復

使用道具 舉報

ID:138313 發表于 2017-8-7 13:13 | 顯示全部樓層
三.萬事俱備只欠東風
1.第一步,測試電機控制。
        根據上面的接線圖,把電機,驅動,電源,Arduino接好,然后用下面這段程序測試,電機是否能轉,轉的方向對不對,若出現不正常則檢查相關信號線,比如轉向反了(只需在程序里把IN對調或者把接線調即可)
電機測試程序:
//LM298
#define EA 5//左  UNO的PWM引腳為3、5、6、9、10、11
#define EB 6//右

#define IN1 11  //左輪
#define IN2 12
#define IN3 9   //右輪
#define IN4 10
void setup(){
      pinMode(EA,OUTPUT);
      pinMode(EB,OUTPUT);
      pinMode(IN1,OUTPUT);
      pinMode(IN2,OUTPUT);
      pinMode(IN3,OUTPUT);
      pinMode(IN4,OUTPUT);
                  }
void loop()
{
  PWM_Motor(200,-200);//測試電機,應看到左輪前進,右輪后退
}
/***********電機驅動子程序*************/
void PWM_Motor(int PWM_L,int PWM_R)
{
  if(PWM_L<0)
  {
    digitalWrite(IN1, HIGH);
    digitalWrite(IN2, LOW);
  }
  else
  {
    digitalWrite(IN1, LOW);
    digitalWrite(IN2, HIGH);
   }
  if(PWM_R<0)
  {
    digitalWrite(IN3, HIGH);
    digitalWrite(IN4, LOW);
  }
  else
  {
   digitalWrite(IN3, LOW);
   digitalWrite(IN4, HIGH);
  }

analogWrite(EA,abs(PWM_L));//5腳
analogWrite(EB,abs(PWM_R));//6腳
}
不知道大家有沒有注意到:在這里判斷正反轉是通過判斷PWM的正負來確定正反轉的,而不是用角度來判斷,
比如
錯誤的方向判斷方式:
if(角度<0) {
    digitalWrite(IN1, HIGH);
    digitalWrite(IN2, LOW);
  }
else......
正確的方向判斷方式:
if(PWM_L<0) {
    digitalWrite(IN1, HIGH);
    digitalWrite(IN2, LOW);
  }
  else
  {
    digitalWrite(IN1, LOW);
    digitalWrite(IN2, HIGH);
   }

評分

參與人數 1黑幣 +40 收起 理由
admin + 40 回帖助人的獎勵!

查看全部評分

回復

使用道具 舉報

ID:187533 發表于 2017-8-13 20:16 | 顯示全部樓層
樓主超級棒,小學徒的學徒開始學習中。
回復

使用道具 舉報

ID:187533 發表于 2017-8-13 20:29 | 顯示全部樓層
arduino小學徒 發表于 2017-8-7 01:46
由于在這個網站找不到繼續編輯的入口,只好在其他網站繼續更新平衡車內容,請移步
Arduino平衡小車——開 ...

這個“Arduino平衡小車”我找不到,請發個鏈接吧。謝謝!
回復

使用道具 舉報

ID:222006 發表于 2017-8-23 13:49 | 顯示全部樓層
好玩的東東。
回復

使用道具 舉報

ID:87193 發表于 2017-9-27 10:29 | 顯示全部樓層
期待完整的資料,可以好好學習一下
回復

使用道具 舉報

ID:237069 發表于 2017-10-4 16:55 | 顯示全部樓層
新人加入,等級夠了再來下載學習
回復

使用道具 舉報

ID:242562 發表于 2017-11-8 00:02 來自手機 | 顯示全部樓層
在學習中
回復

使用道具 舉報

ID:242562 發表于 2017-11-10 00:15 來自手機 | 顯示全部樓層
什么時候更新?
回復

使用道具 舉報

ID:249075 發表于 2017-11-13 21:46 | 顯示全部樓層
好贊啊,厲害
回復

使用道具 舉報

ID:78884 發表于 2018-1-9 15:04 | 顯示全部樓層
樓主還在嗎  我的平衡小車PID怎么調總是往一邊歪  直立環的P怎么調 小車總是往固定一邊慢慢滑,然后跑著跑著就倒了, 輕輕的往另一邊推它會往那邊滑一小段距離越來越慢然后又往固定那邊跑了,然后越跑越快直到倒地 樓主造這是什么原因嗎 求助
回復

使用道具 舉報

ID:388232 發表于 2018-8-20 17:11 | 顯示全部樓層
arduino小學徒 發表于 2017-8-7 13:13
三.萬事俱備只欠東風
1.第一步,測試電機控制。
        根據上面的接線圖,把電機,驅動,電源,Arduino ...

樓主,我的程序判斷方向就是用你說的錯誤方式寫的,運行時跟抽風一樣,想問一下為什么這個方式錯誤呢
回復

使用道具 舉報

ID:223788 發表于 2019-1-17 22:17 | 顯示全部樓層
請問能不能分享下原理圖跟源碼呢?
回復

使用道具 舉報

ID:489682 發表于 2019-3-25 14:33 | 顯示全部樓層
感謝樓主總結并分享!
回復

使用道具 舉報

ID:516946 發表于 2019-11-22 12:00 | 顯示全部樓層
輪回之境 發表于 2018-1-9 15:04
樓主還在嗎  我的平衡小車PID怎么調總是往一邊歪  直立環的P怎么調 小車總是往固定一邊慢慢滑,然后跑著跑 ...

平衡車實驗成功了嗎?成功的話能給大家分享一下代碼嗎?
回復

使用道具 舉報

ID:138313 發表于 2020-12-4 16:10 | 顯示全部樓層
arduino平衡車代碼

13.平衡車編程演示.zip

6.64 KB, 下載次數: 42, 下載積分: 黑幣 -5

arduino平衡車代碼

評分

參與人數 1黑幣 +20 收起 理由
admin + 20 回帖助人的獎勵!

查看全部評分

回復

使用道具 舉報

ID:906966 發表于 2021-4-16 17:30 | 顯示全部樓層
樓主的作品現在怎么樣了?
最近也是做平衡車遇到問題了,向你學習
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 一区二区播放 | 亚洲天堂免费在线 | 欧美高清视频一区 | 精品欧美一区二区三区免费观看 | 成人区精品一区二区婷婷 | 国产成都精品91一区二区三 | 国产专区在线 | 日本a级大片 | 午夜影晥 | 99re在线 | 黄色片av| 毛片毛片毛片毛片毛片 | 亚洲欧美激情国产综合久久久 | 国产在线看片 | 999精品网 | 国产视频久久久 | 欧美精品二区 | 天堂精品视频 | h视频在线观看免费 | 中文字幕一区在线 | 成人性视频免费网站 | 亚洲精品99 | 欧美日韩一区二区三区在线观看 | 天天操天天怕 | 久久久久久久久99精品 | 久久综合久久久 | 亚洲成人精品久久久 | 国产精品1区2区 | 五月婷婷激情网 | 在线视频一区二区 | 91在线视频精品 | 免费黄视频网站 | 日韩波多野结衣 | 欧美 日韩 在线播放 | 久久久久国产精品一区二区 | 爱爱视频在线观看 | 91精品国产综合久久久久久 | 天天操夜夜操 | 91麻豆久久久 | 亚洲欧美日韩系列 | 污污的网站在线观看 |