你的位置:首頁(yè) > 測(cè)試測(cè)量 > 正文

新手入門(mén):超聲自平衡小車(chē)最佳方案

發(fā)布時(shí)間:2015-11-17 責(zé)任編輯:sherry

【導(dǎo)讀】閑得沒(méi)事干,就想做一款成本低,易上手,最小配置和最基本功能的自平衡小車(chē),其目的就是給那些沒(méi)有什么經(jīng)驗(yàn)的剛?cè)胄械男率謧兲峁┮粋€(gè)入門(mén)的解決方案。
 
1、項(xiàng)目概述
 
在網(wǎng)上看到各種制作自平衡小車(chē)的帖子,也跟著做了起來(lái)。因?yàn)榈谝淮巫?,心里沒(méi)底,也就沒(méi)有投入過(guò)多的資金,一切按照最小配置進(jìn)行,所以選擇“TT馬達(dá)”,俗稱“香蕉電機(jī)”的小車(chē)底盤(pán)。
項(xiàng)目概述
在等快遞送貨期間,才看到各種說(shuō)用“香蕉電機(jī)”做自平衡小車(chē)的問(wèn)題,最大的問(wèn)題就是電機(jī)啟動(dòng)對(duì)傳感器和單片機(jī)的干擾問(wèn)題,還有就是平衡的穩(wěn)定性不好等問(wèn)題。在我以Arduino + MPU6050 + L298N為核心做完后,閑得沒(méi)事干,就想做一款成本低,易上手,最小配置和最基本功能的自平衡小車(chē),其目的就是給那些沒(méi)有什么經(jīng)驗(yàn)的剛?cè)胄械男率謧兲峁┮粋€(gè)入門(mén)的解決方案。所以這個(gè)項(xiàng)目的目標(biāo)有以下幾點(diǎn):
 
  a、成本低;
 
  b、目標(biāo)功能明確,就是實(shí)現(xiàn)小車(chē)的自平衡;
 
  c、系統(tǒng)穩(wěn)定可靠;
 
  d、調(diào)試、操作方便簡(jiǎn)單。
 
2、項(xiàng)目方案
 
基于上述目標(biāo),本方案采用超聲波測(cè)距模塊作為小車(chē)平衡狀態(tài)的檢測(cè),免去了對(duì)加速度、陀螺儀傳感器的理解和復(fù)雜處理算法。小車(chē)的平衡控制仍然采用網(wǎng)絡(luò)上流行的Arduino開(kāi)源硬件,再加上電機(jī)驅(qū)動(dòng)模塊 L298N,電機(jī)仍然采用TT馬達(dá)(香蕉電機(jī))。
 
該方案為了降低成本,采用電位器調(diào)整設(shè)定小車(chē)的平衡參數(shù),不使用藍(lán)牙無(wú)線模塊或有線串口在線調(diào)整參數(shù)。
 
用超聲波測(cè)距的方式實(shí)現(xiàn)的自平衡小車(chē),網(wǎng)絡(luò)上有人提出這種方案無(wú)法在坡度變化的斜坡上保持平衡,這種說(shuō)法經(jīng)過(guò)我的實(shí)踐,是有解決方案的,這個(gè)問(wèn)題我將在后面進(jìn)行闡述。
 
平衡控制的算法還是采用平衡車(chē)中經(jīng)典的PD算法。
 
3、硬件設(shè)計(jì)
 
硬件設(shè)計(jì)比較簡(jiǎn)單,以Arduino Nano為核心控制模塊,采用HC-SR04超聲波測(cè)距模塊,L298N電機(jī)驅(qū)動(dòng)模塊,供電采用7.4V/2200mAh鋰電池。圖中三個(gè)10K電位器分別用于平衡點(diǎn)設(shè)置、PD算法中Kp和Kd系數(shù)設(shè)置的調(diào)整。
 
電路原理圖如下所示:
電路原理圖
圖中J1為HC-SR04超聲波測(cè)距模塊,J2、J3為L(zhǎng)298N模塊,Arduino Nano為核心控制模塊,MG1、MG2分別為左右電機(jī)。
 
與之前用香蕉電機(jī)+MPU6050做的自平衡小車(chē)相比較要簡(jiǎn)單很多,在MPU6050方案中,用了兩塊電池,其中一塊單獨(dú)用于電機(jī)供電,而且L298N必須用光耦隔離的。
 
而用超聲波做的自平衡小車(chē),雖然用的是TT馬達(dá)(俗稱香蕉電機(jī)),但僅一塊電池供電,L298N電機(jī)驅(qū)動(dòng)模塊也沒(méi)有光耦隔離,從最終調(diào)試后的效果上看,還比前者更穩(wěn)定。
 
成品照:
電路原理圖
材料清單
電路原理圖
這個(gè)材料清單比較完整,是帶遙控器的。在電商平臺(tái)可以收集齊全,大家可以i自行搜索。
 
4、程序設(shè)計(jì)
 
程序源代碼:http://www.52solution.com/auto-dl/7374
 
5、調(diào)試流程
 
最新版超聲平衡小車(chē)裝配完畢后如下圖所示。
電路原理圖
串口調(diào)試助手程序:http://www.52solution.com/auto-dl/7375
 
a、準(zhǔn)備工作
 
將Kp與Kd調(diào)為0,調(diào)整方法是,旋轉(zhuǎn)電位器后,按下Arduino模塊上的復(fù)位鍵調(diào)整方可有效。調(diào)整后用串口調(diào)試助手(sscom42.exe)發(fā)送 “F”命令,讀取超聲自平衡小車(chē)參數(shù)的設(shè)定值。在使用串口調(diào)試助手前,首先選擇串口調(diào)試助手對(duì)應(yīng)的串口號(hào),設(shè)置好波特率,方可發(fā)送上述命令讀取超聲自平衡小車(chē)參數(shù)的設(shè)定值,操作界面如下圖所示。
a、準(zhǔn)備工作
第一個(gè)數(shù)據(jù)為平衡點(diǎn)設(shè)定值,第二個(gè)數(shù)據(jù)為Kp,第三個(gè)數(shù)據(jù)為Kd。
 
b、超聲波測(cè)距測(cè)試
 
發(fā)送相應(yīng)“L”命令,讀取超聲波的測(cè)距值,注意,這里不是實(shí)際的mm或cm值,而是對(duì)應(yīng)距離來(lái)回的傳播時(shí)間值,是單片機(jī)內(nèi)部計(jì)時(shí)的輸出值。
 
操作界面如下圖所示。
超聲波測(cè)距測(cè)試
第一個(gè)數(shù)為超聲波測(cè)距模塊的直接輸出值,第二個(gè)數(shù)為一階濾波后的值。改變超聲波測(cè)距模塊與被測(cè)界面的距離,這兩個(gè)值會(huì)發(fā)生相應(yīng)的改變,距離近,測(cè)得的值變小,距離遠(yuǎn)測(cè)得的值就增大。
 
c、尋找物理平衡點(diǎn)
 
在Kp、Kd為0時(shí),用手尋找自平衡小車(chē)的物理平衡點(diǎn),同時(shí)用“L”命令(500ms定時(shí)發(fā)送)讀取超聲波測(cè)量的返回值,確定平衡點(diǎn)的返回值,并記錄下來(lái)。
 
d、平衡點(diǎn)PB的設(shè)定
 
調(diào)整PB電位器,并在Arduino復(fù)位后,用“F”命令讀取超聲自平衡小車(chē)參數(shù)的設(shè)定值,使得第一個(gè)返回的數(shù)據(jù)與上述確定的物理平衡點(diǎn)相一致。
 
e、判斷電機(jī)運(yùn)轉(zhuǎn)方向是否正確
 
在完成上述調(diào)整后,逐漸增大Kp(請(qǐng)記住,每次調(diào)整后,都必須復(fù)位Arduino模塊,調(diào)整才能生效),看到電機(jī)能夠動(dòng)作時(shí),停止調(diào)整Kp。這時(shí)將超聲波模塊一端稍稍下壓(也就是使超聲波探頭與地面距離縮短),觀察兩個(gè)電機(jī)的轉(zhuǎn)動(dòng)方向,往前(超聲波測(cè)距模塊一端為前)轉(zhuǎn)測(cè)試正確的,往后轉(zhuǎn)則說(shuō)明相應(yīng)的電機(jī)兩根線接反了,將接反的線調(diào)換過(guò)來(lái)即可。
 
f、Kp參數(shù)整定
 
在電機(jī)接線正確后,再逐漸增大Kp,使得小車(chē)能夠來(lái)回有點(diǎn)擺動(dòng)即可進(jìn)入調(diào)整Kd參數(shù)階段。
 
g、Kd參數(shù)整定
 
在調(diào)整完Kp后,逐漸增大Kd,使得擺動(dòng)消失,如果繼續(xù)增大Kd,小車(chē)會(huì)出現(xiàn)明顯的抖動(dòng),此時(shí)將Kd往回調(diào)整,使得抖動(dòng)消失即可。
 
h、平衡點(diǎn)PB的進(jìn)一步調(diào)整
 
在上述參數(shù)調(diào)整完畢后,小車(chē)一般就能保持平衡了,如果出現(xiàn)小車(chē)往一邊跑的現(xiàn)象,可通過(guò)調(diào)整PB電位器加以修正。如果小車(chē)往前跑(超聲波模塊一端為前),調(diào)整PB使得平衡點(diǎn)設(shè)定值增大;如果小車(chē)往后跑,調(diào)整PB使得平衡點(diǎn)設(shè)定值減小,直到小車(chē)能夠長(zhǎng)時(shí)間穩(wěn)定為止。
 
6、總結(jié)與展望
 
超聲自平衡小車(chē)的基本版已經(jīng)完成,在制作過(guò)程中與我之前用MPU6050制作的小平衡車(chē)相比有以下幾點(diǎn)體會(huì):
 
a、在用TT馬達(dá)的情況下,如果系統(tǒng)使用同一組電池供電,電機(jī)一啟動(dòng)Arduino與MPU6050立即死機(jī),或者M(jìn)PU6050的數(shù)據(jù)受干擾極為嚴(yán)重,不可使用。解決辦法是用另一組電池單獨(dú)給L298N供電,并且L298N要選擇帶光耦隔離的。但同樣的使用TT馬達(dá)的情況下,用超聲波測(cè)距方案,系統(tǒng)僅用一組電池即可,而且L298N也無(wú)需光耦隔離,系統(tǒng)很穩(wěn)定。
 
b、超聲波傳感器的選擇要選擇最小測(cè)量周期短的模塊,第一次我使用的是US-015 超聲波測(cè)距模塊,US-015是目前市場(chǎng)上分辨率最高,重復(fù)測(cè)量一致性最好的超聲波測(cè)距模塊,US-015的分辨率高于1mm,可達(dá)0.5mm,測(cè)距精度高,重復(fù)測(cè)量一致性好,測(cè)距穩(wěn)定可靠。但他的最小測(cè)量周期大于10ms,而且對(duì)輸出數(shù)據(jù)經(jīng)常有跳動(dòng)(這是由于它的靈敏度很高,在近距離時(shí)超聲波在模塊與地面之間的來(lái)回反射的二次信號(hào)都能被檢測(cè)到),為此在地面墊上一個(gè)地毯吸收了部分能量的超聲波,才能穩(wěn)定工作。在第二版中更換了HC-SR04超聲波模塊,這個(gè)模塊的測(cè)距精度雖然只有3mm,但它的最小測(cè)量周期僅略大于3ms。但這種模塊市場(chǎng)上有兩種,一種沒(méi)有晶體,一種是帶晶體的,帶晶體的很不穩(wěn)定,建議大家不要選擇。
 
c、小車(chē)的平衡穩(wěn)定性與多種因素有關(guān),建議在結(jié)構(gòu)上,重心越低越好。
 
d、另外,我還做了一個(gè)對(duì)比測(cè)試,數(shù)據(jù)見(jiàn)下表:
誤差絕對(duì)值是指小車(chē)在一段時(shí)間內(nèi),實(shí)測(cè)距離與設(shè)定平衡點(diǎn)距離誤差絕對(duì)值的平均值;濾波是指程序中對(duì)超聲波測(cè)量的距離濾波或不濾波直接使用;循環(huán)周期是程序中的延時(shí)時(shí)間,超聲波測(cè)量需要大約704us,一個(gè)周期大約為3.84ms,程序處理時(shí)間大約為136us.
 
要采購(gòu)電位器么,點(diǎn)這里了解一下價(jià)格!
特別推薦
技術(shù)文章更多>>
技術(shù)白皮書(shū)下載更多>>
熱門(mén)搜索
?

關(guān)閉

?

關(guān)閉