You are on page 1of 23

Arduino 平衡車實作

組員:簡子皓
張振瑋
陳鉑文
陳翊倫

1
大綱
1. 一代目
• 我想像中的樣子
• 材料收集
• 編碼怎麼來
• 跟想的不一樣……
2. 二代目
• 找專業的
• 材料再收集
• 他的編碼
• 怎麼還是不行……
3. 三代目
• 莫忘初衷
• 資源回收
• 舊瓶新酒
• 還是一樣…… 2
大綱
1. 一代目
• 我想像中的樣子
• 材料收集
• 編碼怎麼來
• 跟想的不一樣……
2. 二代目
• 找專業的
• 材料再收集
• 他的編碼
• 怎麼還是不行……
3. 三代目
• 莫忘初衷
• 資源回收
• 舊瓶新酒
• 還是一樣…… 3
我想像中的樣子
倒單擺

4
材料收集

三軸的MEMS加速度感測器、陀螺儀 直流減速馬、車輪及底座

5
材料收集

L293D 直流馬達驅動晶片 Arduino UNO

6
編碼怎麼來
MPU6050 姿態取得

7
編碼怎麼來
L293D控制

8
一代目(殘骸)

整車設備組合
馬達 直流有刷馬達
控制器 arduino UNO
馬達晶片 L293D
6軸感測器 MPU6050
電源供應 鋰電池(18650)

9
跟想的不一樣……(WTF)

• 姿態的誤差→ Kalman or DMP
• 底盤過長
• 馬達擺放位置
• 回授控制→PID
• 驅動器過熱

10
軟體控制-PID控制

https://radhesh.files.wordpr
ess.com/2008/05/pid.jpg
PID Parallel

http://www.electronicshub.org/wp-
content/uploads/2015/12/Interacting-PID-
Equation.jpg
PID Series 11
軟體控制- Kalman 濾波

綠色線代表未濾波時
紅色線代表濾波的結果
陀螺儀讀取數據 http://cmackimo.blogspot.tw/2011/05/kalman-filter-nxt.html

經過Kalman濾波後的數據可以有效地消除飄移後的結果 12
大綱
1. 一代目
• 我想像中的樣子
• 材料收集
• 編碼怎麼來
• 跟想的不一樣……
2. 二代目
• 找專業的
• 材料再收集
• 他的編碼
• 怎麼還是不行……
3. 三代目
• 莫忘初衷
• 資源回收
• 舊瓶新酒
• 還是一樣…… 13
找專業的
• 德源電子 步進自平衡小車

14
材料再收集

A4988步進驅動晶片
15
他的編碼
• 完全照用

16
二代目

整車設備組合
馬達 六線式步進馬達

控制器 arduino leonardo
馬達晶片 A4988
6軸感測器 MPU6050
電源供應 鋰電池(18650)

17
怎麼還是不行……
• 遇到最大的問題是:
他會在嘗試一兩次往復的姿態平衡後暴衝
• 電源問題

18
大綱
1. 一代目
• 我想像中的樣子
• 材料收集
• 編碼怎麼來
• 跟想的不一樣……
2. 二代目
• 找專業的
• 材料再收集
• 他的編碼
• 怎麼還是不行……
3. 三代目
• 莫忘初衷
• 資源回收
• 舊瓶新酒
• 還是一樣…… 19
莫忘初衷
歷經兩個世代的學習,再從網路上收集很多其他網友成
功的案例,而他們又大多是使用直流減速馬達,為了拷
貝他們的成功,於是我們決定再回到初代的懷抱

20
三代目-資源回收,舊瓶新酒

編碼取自Franko

整車設備組合
馬達 直流有刷馬達
控制器 arduino UNO
馬達晶片 L293D
6軸感測器 MPU6050

電源供應 鋰電池(18650)

21
附錄-PID控制

P 比例控制 I 積分控制 D 微分控制

比例控制器是控制器之 積分控制考慮過去誤差, 微分控制考慮將來誤差,
輸出與輸入誤差成正比。 將誤差值過去一段時間和 計算誤差的一階導,並
但是不能消去誤差因此 (誤差和)乘以一個正值 和一個正值的常數Kd
會產生穩態誤差。 的常數Ki。Ki從過去的平 相乘。這個導數的控制
均誤差值來找到系統的輸 會對系統的改變作出反
出結果和預定值的平均誤 應。 22
差。
附錄- Kalman 濾波
狀態方程式:xk+1=Axk+Buk+wk
輸出方程式:yk = Cxk + zk
• A、B 和 C 為矩陣
• k :時間係數
• x 為系統當前狀態的資訊,
• x :系統狀態
但它不能被直接量測
• u : 系統的已知輸入
• y 是受到雜訊 z 干擾的系統
• y :所量測的輸出
狀態 x 的函數。
• w :程序雜訊 利用 y 獲取 x 的估計。
• z :量測雜訊

23