自己做的自平衡小車,基本達(dá)到預(yù)期效果。制作資料在壓縮包里面,供參考。
該兩輪自平衡小車硬件設(shè)計概述:
- 控制器:ATmega16;8MHz;
- 加速度傳感器:MMA2260;陀螺儀:EWTS82;
- 傳感器的融合:卡爾曼濾波;
- 馬達(dá):EN_2342CR(速比64)+雙路12脈沖編碼器+CD40106對信號整形;
- 驅(qū)動板芯片:CD4001+IR2111+IRF1404(驅(qū)動電流可以很大);
圖片(拍攝效果不佳),視頻如下:
小車實物圖展示:
設(shè)計分析:
其實控制很簡單,利用定時器產(chǎn)生10ms中斷,每次中斷進(jìn)行如下工作:
1:AD采樣加速度傳感器和陀螺儀,然后卡爾曼濾波得出角度與角速度;(濾波模塊借鑒老外的)(互補濾波效果感覺不是很好);
2:計算車輪的速度,積分得出位置;
3:利用PD算法得出PWM值=K1*angle + K2*angle_dot + K3*speed + K4 * position;
4:前進(jìn)后退給定參考速度計算即可;
注意:
- 增量式輪速傳感器A相中斷,讀取B相電位判斷前進(jìn)還是后退,在10ms的時間內(nèi)累加,計算車輪的速度;
- 由于10ms累加的輪速信號不多,直接計算車體會發(fā)抖,所以增加了低通濾波,解決問題;
- 我在外面增加4個電位器可以手動調(diào)節(jié)4個K值,方便調(diào)試;
- 附件的文件夾里面有matlab建模的資料,可以求出所需的4個K的值,(參考NXT的),大家可自行調(diào)試K值看看對車輛的影響;
電機選取建議:
- 由于考慮到減速器,而且?guī)鞲衅鳌F鋵嵑竺鎸嵺`得知可以不要位置傳感器,這樣選擇電機的空間就很大了,買便宜的;
- 電機扭矩要大;說白了,功率要大;轉(zhuǎn)動慣量大似乎的更穩(wěn)定,所以不用空心杯的也許更好;
- 減速比可以大一點,用較大的輪子;
- 重心越靠下,抗擾性越強;但是可能會影響穩(wěn)定性;
購買的電機型號參考:
算法:
常用計算方法有兩種:互補濾波和卡爾曼濾波;都可以輸出校正后的角度與角速度;我采用的是卡爾曼濾波,考慮到單片機的運算能力,是經(jīng)過精簡的,當(dāng)然這些都是老外做的,關(guān)于卡爾曼濾波,我找了很多資料,詳見附件內(nèi)容。