迷你掌上平衡車
2022-08-09 13:38:31閱讀量:3752
本文作者:立創開源硬件平臺 OSHWHub 用戶@Leannnus,禁止商用,未經許可禁止轉載,點擊查看原文章
1、項目介紹
平衡車幾乎是每個人入坑電子DIY的必做項目。包括了:傳感器采集處理、電機運動控制、pid算法調節等許多領域

同時兼顧專業性和趣味性,非常適合作為入門練習項目。本項目在外形結構和軟件控制方面實現了比較好的平衡,外觀小巧,運動性能卓越。
2、基本信息
主控芯片:ESP32-WROOM
六軸加速度傳感器模塊:MPU6050。用于獲取姿態信息。
芯片:DRV8833驅動電機運動,提供較大電流。
電機:選用N20減速電機。帶有AB相霍爾編碼器用于測量轉速。
供電:選用7.4V鋰電池(2s)。
經線性穩壓器:LM1084穩壓至5V。再使用1117穩壓至3.3V給ESP32供電。
程序部分:基于Arduino IDE。使用開源庫實現角度獲取和pid算法平衡控制;使用JSON庫編寫了指令解析程序,用于藍牙遠程調節pid參數;并借助開源的安卓藍牙APP用來遙控小車運動。
3、特別說明
本項目電路焊接部分有一定的門檻!!如果對小型貼片器件的焊接沒有把握,不建議嘗試 打板的時候選嘉立創SMT代工,省去了自己焊的麻煩。此類平衡車原理都大差不差,也可以為大家制作屬于自己的平衡車提供參考。非常樂意和大家一起交流學習~
4、迭代記錄
第一版
第一次設計,直接采用模塊連接的方式。電路簡單,PCB挖槽復用。作為電機固定板,無需多次打板。以上設計導致空間利用率低,實際外形比較大,孔位估算不夠合理,電機間距大,沒有電池安放位。接線復雜,整體美觀度不夠。

第二版
在第一版的基礎上想用冰墩墩作為外形設計。內部挖空放置模塊,電路部分基本無改動,模塊式組合。裝好之后表面看起來效果還可以。全是可愛的冰墩墩的功勞。外殼設計效果不佳,組合后的電路板很難塞進外殼,內部固定起來比較費勁。重心很高,平衡控制起來比較困難。

第三版
下面是最終版本,第三版的設計說明。
主要以3D建模、焊接組裝、材料清單三個方面展開描述。
3D建模
完整結構建模:原本計劃使用兩層板堆疊即可(比如第一版),中間位置放置電池。但電機排線需要向上突出,下面放不了電池,所以額外增加了一層,使用三層板堆疊結構。下面兩層使用亞克力切割,最上層為電路板,電池放置在上層。下層挖空引出電機排線,亞克力板還需增加電機固定架孔位,將電機安排得盡可能靠近來減小橫向間距。solidworks建模如下:

除電路板外,需要定制的僅兩塊相同的亞克力板,從solidworks導出為DWG文件即可定制。

02、焊接和組裝
電路板焊接測試:CH340缺了一個電容(見debug部分)。這個版本暫時飛線解決了,然后上了一坨熱熔膠固定。電源接口也加上了熱熔膠,防短路。
整體組裝:下面兩層亞克力板,上面一層PCB,用M3六角銅柱連接固定,長度能短則短,但電池和排線需要一定的空間。下面用的長度15mm,上面是20mm,最下面的電機是用的附贈的電機座,螺絲固定。

Debug記錄:CH340 V3接口缺少一個0.1uF電容接地,導致無法正常連接串口,當前版本用飛線接上電容后可以正常工作,PCB已在v1.1版本中修復。電機排線6p插座方向設置錯誤,原設計打算放在背面,但根據實際接線順序需要放在正面,已在v1,.1版中標出,請注意檢查,否則容易造成短路風險。
03、材料清單
其他元件: 剩下的CH340、AMS1117還有電阻電容等元件比較常規,可根據BOM表配單,立創直接下單或某寶挨個買都行,買的時候注意封裝型號。主要以硬件、軟件兩個角度展開說明。硬件部分
模型文件都上傳到附件了,包含完整的solidworks建模裝配體文件。小車按照實際尺寸建模,可以提供一點參考。亞克力板切割用里面的DWG文件,放了兩塊一樣的板,直接某寶定制即可。電路圖部分請直接從末尾的立創EDA工程文件打開,附件就不放了,原理圖里添加了大量的注釋,供參考。軟件部分
見附件代碼,當前為最新版本,后續優化會標上版本號上傳。使用Arduino IDE開發,需要自行下載準備的庫有:<ArduinoJson.h>、<MPU6050_tockn.h>。工程中的每個模塊為.h+.cpp文件的組合,已添加了很多注釋,可自行查閱。藍牙調參
需要將最開頭的BTMODE 宏定義修改為0(默認為1,即遙控模式)。手機端APP用任意的藍牙調試APP都行,發送指令格式見代碼中的注釋說明:
/* 藍牙發送參數指令,使用JSON格式進行打包和解析,字符串格式:
"{"cmd":1,"data":[p,i,d]}" , (p、i、d為常數) * cmd=1:角度環pid設置 * cmd=2:速度環pid設置 * cmd=3:轉向環pid(暫未添加) * cmd=4:角度平衡值, 發送格式:"{"cmd":4,"data":[angle]}" , (angle為常數) * cmd=5:速度值,同角度 * cmd=6:轉向值,同上 **/
藍牙遙控
遙控用的APP已放在附件中,僅限安卓平臺。在APP里自行配置的搖桿參數如下圖所示:

4、設計圖

5、總結
從結構與軟件層面進行總結。
結構層面:目前迷你程度幾乎已經達到極限(電機大小限制)。如果再要減小的話就要換更小的電機才行。從外觀來看現在最大的問題在電池接線,大部分暴露在外面降低美觀性,同時電機排線也比較突出,倒地的時候撞到排線,可能造成損壞,考慮連接座換成直針,代替目前的彎針即可解決。
軟件層面:PID運行的前一分鐘,電機運動會出現明顯的滯后和超調現象,運行一段時間才能恢復正常的平衡模式。目前未排查到原因,估計是某些變量初始化時的問題,還在排查中。
小車運行穩定程度也還有提升空間,靜止時還不能很穩。一方面PID算法和參數還可以優化,另一方面可能受編碼器分辨率影響。按20Hz采樣率,得到編碼器數據范圍是0-50左右的整數值,數據精度十分有限。
后續可能的更新:優化PID算法,爭取達到更穩定的效果,換一種更緊湊美觀的外形結構。
更多詳情及附件,可從原工程查看。
本文作者:立創開源硬件平臺 OSHWHub 用戶@Leannnus,禁止商用,未經許可禁止轉載

L7805CV-DG/線性穩壓器(LDO) | 0.5637 | |
AMS1117-3.3/線性穩壓器(LDO) | 0.1237 | |
BAT54C,215/肖特基二極管 | 0.0334 | |
LM358DR2G/運算放大器 | 0.35 | |
CJ431/電壓基準芯片 | 0.1147 | |
LM393DR2G/比較器 | 0.318 | |
ADUM4160BRWZ-RL/隔離式USB芯片 | 31.6 | |
SS8050/三極管(BJT) | 0.035 | |
8S005/錫膏/錫漿 | 17.67 | |
B0505S-1WR3/隔離電源模塊 | 2.34 |