|
第二階段目標:
如標題所述,真正的入門級平衡車,真的低成本,不用陀螺儀和加速度傳感器,用超聲波測距實現(xiàn)平衡的小車!!
見 114# 介紹。!
第一階段總結(jié):
1# 第一版詳細資料。
42# MPU6050-DMP輸出穩(wěn)定性測試,DMP每次啟動后均要20秒左右后角度輸出才穩(wěn)定,使用者要注意此問題。!
43# 第二版小車,硬件做了塊PCB底板,換了一個全光耦隔離的L298N模塊,這個版本做兩款軟件:一是單側(cè)碼盤測速,另一是用PWM輸出值取代測速碼盤,效果也不錯。
50# 藍牙手機控制助手,編寫了一個簡單的安卓控制平衡小車的程序。
56# 自平衡小車參數(shù)整定方法,針對前面一些經(jīng)驗和教訓(xùn),總結(jié)了參數(shù)調(diào)整中的一些問題。
63# 不用MPU6050的DMP輸出,采用原始數(shù)據(jù)一階互補濾波解算角度,也不用PID庫,直接編寫PID計算,效率更高,穩(wěn)定性與控制效果也更好。
65# 第三版源代碼,測試數(shù)據(jù)和最新視頻效果。
2014.12.4
以下為原1#貼內(nèi)容
一、基本材料
1、Arduino Pro Mini模塊
2、CP2102模塊
3、MPU6050模塊
4、CH06藍牙模塊
5、L298N驅(qū)動模塊
6、測速傳感器模塊
7、小車底盤
二、硬件設(shè)計
1、Arduino Pro Mini + MPU6050測試驗證
Arduino Pro Mini模塊與MPU6050模塊的連線圖見前面圖片,即:SDA接A4,SCL接A5,VCC接VCC,GND接GND,INT接2。
下載:i2cdevlib-master(https://github.com/jrowberg/i2cdevlib)
****MPU6050庫的安裝方法*************************
a. 下載arduino編譯器,目前版本為1.0.5。
b. 下載MPU6050庫。進入“https://github.com/jrowberg/i2cdevlib”,點擊“zip”即可。
c. 安裝。將上一步下載的“I2Cdev”、“MPU6050”兩個文件夾拷貝到“arduino-1.0.5libraries”目錄下。
運行arduino可以在例子中看到MPU6050。OK!
2、硬件原理圖
Arduino-Pro-Mini-schematic.pdf
(37.43 KB, 下載次數(shù): 13)
2016-4-11 01:59 上傳
點擊文件名下載附件
其中D2S為外部中斷0的接線選擇:一種選擇是MPU6050的DMP方式,這種方式就只能用一個測速碼盤計數(shù)了;另一種選擇是用兩個測速碼盤計數(shù),但不能用MPU6050的DMP方式。
三、軟件設(shè)計
1、源代碼
WJY_DIY_v1_2.rar
(3.23 KB, 下載次數(shù): 28)
2016-4-11 01:59 上傳
點擊文件名下載附件
2、說明
此處雖然用了速度PID,但這個的輸入是碼盤計數(shù)值,這個值其實不是速度,而是速度的累加,也就是速度的積分,所以其Sd、Sp這兩個參數(shù)分別對應(yīng)于速度環(huán)的P系數(shù)和I系數(shù),也就實現(xiàn)了速度環(huán)的比例和積分這兩項。
PID調(diào)節(jié)公式:PWMOut = KAp*angle + KAd*angle_velocity + KSp*speed + KSi*position
四、參數(shù)整定
1、先將 kp、ki、 kd、 sp、 si、sd 均設(shè)置為0;
2、先設(shè)定一個電機的起步補償值,因為這個之不同,就相當(dāng)于使用了不同的電機,這個值的選擇,是根據(jù)你自己搭建完平臺后,通過測試左右電機的起步值和停止值,然后綜合考慮設(shè)定的,也沒什么理論指導(dǎo),在起步和停止之間分別候選幾個,然后根據(jù)不同的補償值,在分別調(diào)整PID的系數(shù),這樣優(yōu)選一組即可;
3、逐漸增大 kp 使得小車剛剛來回擺動;
4、再逐漸增大 kd 使得小車的擺動消失,再繼續(xù)增大 kd 小車會出現(xiàn)抖動,適當(dāng)減小 kd,使得小車相對平穩(wěn)即可;
5、接下來調(diào)節(jié) sd(注意不是 sp,理由見軟件設(shè)計的說明部分),使得小車能夠來回走動(不是擺動,也不是抖動);
6、最后逐漸增大 sp,使得小車能夠相對穩(wěn)定;
7、什么程度為好,自己花一定的時間慢慢摸索,就能逐漸體會到自己的一套“主觀”標準了!
8、最后一個參數(shù)也要注意,就是“抗積分飽和”值,這個值的選擇我感覺與 sp 的大小有關(guān),自己摸索吧,這個值如果選擇太大會出現(xiàn)往一邊跑,最后跌倒在地;如果太小會很快倒地。
五、初步成果
1、靜態(tài)照片
2、運行曲線圖
3、視頻
六、問題及解決方案
1、電機性能測試
小車平臺裝配完畢,應(yīng)測試一下,兩個電機的特性,測試程序如下:
WJY_DIY_test.rar
(1.01 KB, 下載次數(shù): 19)
2016-4-11 02:01 上傳
點擊文件名下載附件
用此程序分別測試兩個電機的啟動值和停止值,也可測量兩個電機的速差。
2、電機干擾問題
電機一起動,Arduino + MPU6050就無法工作,這個問題,在各論壇中均有提及,我這里采取的措施是,電機單獨用一塊7.4V的鋰電供電,并且L298N的所有控制線均用光耦隔離。
3、系統(tǒng)供電
除上述電機供電外,系統(tǒng)其他部分的供電絕不可僅用 Arduino Pro Mini 上的穩(wěn)壓電源給其他部分供電, Arduino Pro Mini 上的穩(wěn)壓電源輸出所能提供的電流有限,我這里僅用他給 MPU6050 模塊供電,藍牙串口模塊單獨用一個低壓差穩(wěn)壓模塊給其供電。
七、參考資料
1、pz_cloud 的:做了一個小小的自平衡小車(更新完整版,附視頻)
http://www.geek-workshop.com/thread-5688-1-1.html
2、匠人的百寶箱:《自平衡兩輪車》講義 http://bbs.21ic.com/blog-24110-84728.html
3、求助:用MPU6050,L298N控制的平衡小車,運行1分鐘就死機,(含詳細代碼注釋!已上...
http://www.geek-workshop.com/thread-1548-1-1.html
4、MPU6050庫,https://github.com/jrowberg/i2cdevlib
i2cdevlib-master.zip
(295.46 KB, 下載次數(shù): 13)
2016-4-11 02:01 上傳
點擊文件名下載附件
5、PID庫:
PID_v1.zip
(7.47 KB, 下載次數(shù): 19)
2016-4-11 02:01 上傳
點擊文件名下載附件
|
|