STM32平衡小車 平衡小車的PID環體會心得

2021-09-02 14:57:49 字數 1522 閱讀 2339

2023年12月11日17:47:56更新:

平衡環:

p可增加響應速度

p過小,響應太慢,不能達到直立。

p過大,會出現大幅度的低頻抖動。

d可消除p大了之後產生的大幅低頻抖動。

d過大,會出現高頻抖動。

速度環:

p可增加速度的響應,i和p有比例關係i=p/200.

p過小,響應慢,出現的現象是加速減速慢,遲鈍。

p過大,會出現低頻抖動。

轉向環p過下,轉彎不及時

p過大,大幅度抖動

兩個東西待解決

1、左右輪編碼器之和數值輸出的範圍確定

2、小車轉向的gyro範圍確定

不管是那個環,小車物理人為的短時直立,這個必須要做到,不然除錯任何引數,任何環都是扯。

機械中值的確定方法,通過oled上顯示的陀螺儀傾角確定,存在某乙個角度是前傾和後仰的臨界點,這個點對應的角度就是z*******.

//直立環的最基本**實現

//angle-小車傾角 gyro-y 軸陀螺儀(前進方向是 mpu6050 的 x 軸的正方向,電機軸與 y 軸平行。)

int balance(float angle,float gyro)

直立環的kp極性確定

直立環的kp大下確定

直立環的kd極性確定

直立環的kd大小確定

此時kp,kd同時乘上0.6,就是一組合適的直立引數,可以發現不會抖了,但是小車也仍舊不能一直保持直立,原因是單獨的直立環不足以實現小車直立,還需要配合速度環。

//輸入左右輪電機編碼器

int velocity(int encoder_left,int encoder_right)

速度環的kp極性確定

速度環的kp大小確定

遙控的加入

int velocity(int encoder_left,int encoder_right)

//其中encoder_integral=encoder_integral-movement; 遙控的速度通過積分融入

速度控制器,減緩了速度突變對直立控制的影響。

//積分限幅中的最大賦值決定了小車的最大前進速度,而 movement 值決定了小車的給定速度。

基本**實現

//gyro是陀螺儀的y軸,電機方向.

int turn(int encoder_left,int encoder_right,float gyro)

直立環kp的大小確定

遙控功能加入

int turn(int encoder_left,int encoder_right,float gyro)

//其中turn+=amplitude; 轉向遙控疊加在轉向控制裡面。

STM32循跡 藍芽小車

在做小車之前,首先應該明確需要的器件,其次劃分功能模組,乙個模組乙個模組的來,在完成乙個模組之後新增另乙個能保證最終小車的穩定功能實現。有兩種思路 一,以實現功能為主,不考慮後期要加什麼東西,實現以後再做優化。二,先將專案整體需要做的東西全部過一遍,再一步步做出成品。我是第一種,在搭建的過程中也遇到...

stm32 藍芽 智慧型小車

電源問題已經解決,還是18650更給力,兩節就可以達到8v上下。原來是模仿網上下的模板,把模板燒進去發現並沒有成功,所以就把原來寫的 全部推翻,重新開始寫。其實寫乙個工程,最快的方法並不是一口氣把所有東西都給新增上,因為一旦出現錯誤,當然肯定會出現錯誤,根本不知道從 下手改bug,所以還不如乙個乙個...

STM32紅外尋跡小車

循跡模組我用的是紅外感測器。黑線的檢測原理是紅外發射管發射光線到路面,紅外光遇到白底則被反射,接收管接收到反射光,經施密特觸發器整形後輸出低電平 當紅外光遇到黑線時則被吸收,接收管沒有接收到反射光,經施密特觸發器整形後輸出高電平。簡單的說就是當紅外尋跡模板遇見黑線時會產生乙個高電平,遇見白線時會返回...