找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 3097|回復(fù): 0
打印 上一主題 下一主題
收起左側(cè)

零基礎(chǔ)制作平衡小車【連載】14---平衡小車調(diào)參

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:223481 發(fā)表于 2020-12-17 22:11 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
目錄

    一:前言
    二:調(diào)參過程
    三:總結(jié)



一:前言

發(fā)現(xiàn)少了一節(jié)調(diào)參,今天補(bǔ)上,關(guān)于這個(gè)項(xiàng)目先說兩句吧。

參數(shù)調(diào)節(jié)最好自己做個(gè)實(shí)物出來,慢慢調(diào)節(jié)。根據(jù)前面的PID理論部分的知識(shí),慢慢體會(huì)一下各個(gè)參數(shù)在實(shí)際項(xiàng)目中的作用,這樣才能真正學(xué)會(huì)PID。

關(guān)于平衡小車這個(gè)項(xiàng)目到這應(yīng)該是最后一節(jié)教程了,后面會(huì)更新加入藍(lán)牙的代碼,有時(shí)間會(huì)畫一版PCB,直接引出引腳,模塊即插即用,比較方便。關(guān)于PCB教程就不出了,網(wǎng)上很多軟件學(xué)習(xí)的視頻,跟著畫個(gè)板子就行了。這也不涉及到高頻信號(hào),所以比較簡(jiǎn)單。

另外下一個(gè)項(xiàng)目準(zhǔn)備繼續(xù)圍繞平衡小車,做一個(gè)遙控手柄。遙控手柄也是為了下下個(gè)項(xiàng)目做準(zhǔn)備。

其他不多說,開始調(diào)參。

二:調(diào)參過程

首先單獨(dú)調(diào)節(jié)直立環(huán),直立環(huán)調(diào)完之后調(diào)節(jié)速度環(huán),最后轉(zhuǎn)向環(huán)。每一環(huán)調(diào)節(jié)都是先調(diào)P,把其他項(xiàng)系數(shù)設(shè)置為0,找到P參數(shù)的合適值之后再調(diào)節(jié)其他參數(shù)。

1.先確定機(jī)械中值,上節(jié)已說過:

測(cè)量機(jī)械中值的方法(手動(dòng)):

關(guān)閉輸出,不讓電機(jī)旋轉(zhuǎn),只采集角度值,并顯示在屏幕上,觀察其值的變化

將oled和mpu6050都連接好并調(diào)試通過之后,將采樣的Pitch值顯示在oled上。之后讓小車輪子固定不動(dòng),用手沿電機(jī)旋轉(zhuǎn)方向先逆時(shí)針(順時(shí)針)慢慢推動(dòng)小車上方,讓小車直立,當(dāng)小車從直立狀態(tài)向逆時(shí)針方向傾斜時(shí),看看屏幕上顯示的角度是多少,之后同樣的方法測(cè)順時(shí)針,看看角度是多少,之后兩值相加/2,得出的值就是機(jī)械中值。

2.直立環(huán)Kp:

作用:Kp增加回復(fù)力的響應(yīng)速度,Kp過小,響應(yīng)太慢,不能達(dá)到直立。Kp過大,會(huì)出現(xiàn)大幅度低頻振蕩。

只打開直立環(huán)輸出(調(diào)節(jié)直立環(huán)需要將其他環(huán)都屏蔽掉,單獨(dú)調(diào)節(jié)直立環(huán))如果用的我的程序,你可以這樣:

Balance_Pwm =balance(Pitch,gyroy);          //===角度環(huán)//Velocity_Pwm=velocity(Encoder_Left,Encoder_Right);   //===速度環(huán)PID控制         記住,速度反饋是正反饋,就是小車快的時(shí)候要慢下來就需要再跑快一點(diǎn)//Turn_Pwm =turn(Encoder_Left,Encoder_Right,gyroz);  //===轉(zhuǎn)向環(huán)PID控制     PWM_out=Balance_Pwm - Balance_Kp*Velocity_Pwm;//最終輸出

1.先確定極性直立環(huán)極性很好確認(rèn),你只需要拿起小車觀察兩個(gè)輪子轉(zhuǎn)向,沿電機(jī)軸傾斜小車,如果輪子也往那個(gè)方向轉(zhuǎn),不讓小車倒下,說明極性是正確的,反之錯(cuò)誤。

2.再確認(rèn)大小Kp的值慢慢增大,直到小車左右擺動(dòng)來回?cái)[動(dòng),出現(xiàn)低頻震蕩(只有P參與作用時(shí),擺動(dòng)的頻率不大)。

注意:在調(diào)節(jié)直立環(huán)的時(shí)候如果你的編碼器反向或者是電機(jī)轉(zhuǎn)向和程序不匹配的話,可能會(huì)和上面說的情況不一致,比如一個(gè)電機(jī)正轉(zhuǎn)一個(gè)電機(jī)反轉(zhuǎn),這種情況一看就是電機(jī)方向和程序不一致,可以試試將控制正反轉(zhuǎn)的兩個(gè)引腳IN1和IN2調(diào)換下方向。或者是更改程序中的IN1和IN2的高低電平也行。如下圖:

/**************************************************************************函數(shù)功能:賦值給PWM寄存器入口參數(shù):左輪PWM、右輪PWM返回  值:無**************************************************************************/void Set_Pwm(int moto1,int moto2){            if(moto1>0)                        AIN2=0,                        AIN1=1;                        else                   AIN2=1,                        AIN1=0;                        PWMA=myabs(moto1);                  if(moto2>0)        BIN1=1,                        BIN2=0;                        else        BIN1=0,                        BIN2=1;                        PWMB=myabs(moto2);        }

3.直立環(huán)Kd:

作用:Kd消除Kp過大帶來的低頻振蕩。Kd過大,會(huì)出現(xiàn)高頻抖動(dòng)。

1.先確定極性將Kp = 0,調(diào)節(jié)Kd極性,提起小車觀察兩個(gè)輪子轉(zhuǎn)向,沿電機(jī)軸傾斜小車,輪子也往那個(gè)方向轉(zhuǎn),不讓小車倒下,說明極性是正確的,反之錯(cuò)誤。

2.再確認(rèn)大小調(diào)解大小時(shí),需要加入剛才調(diào)好的Kp值,之后將Kd的值慢慢增大,直到小車左右擺動(dòng)來回?cái)[動(dòng),出現(xiàn)高頻震蕩(擺動(dòng)的頻率相比Kp有所增加)。

為什么加了Kd之后震蕩頻率變高?

可以參考第10小節(jié)加入和未加入kd調(diào)參的現(xiàn)象,加入Kd后,明顯過沖變小。因?yàn)镵d有抑制作用,會(huì)抑制占空比的增長(zhǎng),使得曲線在目標(biāo)值附近震蕩。所以抖動(dòng)頻率增加。

上面兩個(gè)調(diào)試的參數(shù)都是其最大值,在實(shí)際應(yīng)用當(dāng)中不使用最大值,而是乘上一個(gè)系數(shù)。兩個(gè)參數(shù)都調(diào)試完后,讓其乘以0.6作為最終參數(shù)。該值為經(jīng)驗(yàn)值,可根據(jù)實(shí)際效果做變更。至此直立環(huán)調(diào)節(jié)完畢。有些小車如果各方面參數(shù)都比較好的話,到這就能直立了,不過大部分不能直立,會(huì)出現(xiàn)小車沿一個(gè)方向加速倒下的現(xiàn)象,等加入速度環(huán)就好了。出現(xiàn)這一現(xiàn)象的原因有很多,比如機(jī)械結(jié)構(gòu)不行又或者是參數(shù)沒調(diào)好,再或者電機(jī)間隙大等等。主要還是理論和實(shí)際的差距,理論上參數(shù)都是完美的,實(shí)際上參數(shù)是沒有完美的。

4.速度環(huán)Kp、Ki:

1.先確定極性在調(diào)節(jié)速度環(huán)極性時(shí),先將其他環(huán)都屏蔽掉。調(diào)節(jié)速度環(huán)時(shí),只需轉(zhuǎn)動(dòng)其中一個(gè)輪子,兩個(gè)輪子就會(huì)同方向加速至最大。如果不是上述現(xiàn)象,則調(diào)節(jié)Kp極性。調(diào)節(jié)之后還不行,就要檢查程序和硬件接線是否一致了。這里在強(qiáng)調(diào)下,極性確認(rèn)這個(gè)環(huán)節(jié)一定要把正確的現(xiàn)象調(diào)出來,如果發(fā)現(xiàn)現(xiàn)象不一致,很大可能就是程序和硬件不一致。2.再確認(rèn)大小確認(rèn)大小時(shí),將調(diào)好的直立環(huán)加入進(jìn)來。并且同時(shí)打開速度環(huán)的Kp和Ki,Kp = 200ki,這個(gè)關(guān)系是一個(gè)經(jīng)驗(yàn)值。所以調(diào)節(jié)一個(gè)Kp即可。調(diào)節(jié)大小時(shí),使得小車保持平衡的同時(shí),速度接近于零即可。當(dāng)然這是理想情況下才能完全靜止,一般情況只要小車不倒,并且擺動(dòng)幅度不大就已經(jīng)可以了。因?yàn)殡姍C(jī)存在死區(qū),機(jī)械結(jié)構(gòu)也有很大影響。

調(diào)節(jié)到這里基本已經(jīng)能夠使小車直立不倒了。

5.轉(zhuǎn)向環(huán)Kd:

1.先確定極性調(diào)節(jié)轉(zhuǎn)向環(huán)時(shí),將其他兩個(gè)環(huán)屏蔽掉,調(diào)節(jié)時(shí)推動(dòng)小車沿Z軸旋轉(zhuǎn),如果電機(jī)會(huì)阻礙小車旋轉(zhuǎn)說明極性是正確的,反之錯(cuò)誤。2.再確認(rèn)大小調(diào)節(jié)大小時(shí)讓小車走直線效果較好,且無劇烈抖動(dòng)即可。

三:總結(jié)

至此,零基礎(chǔ)制作平衡小車連載教程更新完畢。和我一起制作的小伙伴們應(yīng)該收獲也不小吧。第一篇文章是6月底開始的,截止到目前剛好4個(gè)月,時(shí)間也蠻長(zhǎng)的。后面的項(xiàng)目盡量縮短時(shí)間吧。



分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏2 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表