舵機控制
在對舵機的控制中,我采用的是位置式PD算法。
將左右電感的偏差值賦給error,再代入公式進行解算,最后傳給舵機輸出子函數(shù),控制舵機正確打角。
void steer_control()
{
error=AD_M_Left[0]-AD_M_Right[0];
direction_controlout=dirP*error+dirD*(error-lasterror);
angle=mid_angle+direction_controlout;
angle=angle >right_angle?right_angle:angle;
angle=angle< left_angle?left_angle:angle;
PWM_SetSteer((int)angle);
lasterror=error;
}
另外,如果想使舵機更順滑,可以對偏差error的計算進行處理,如將歸一化后的值開方處理等。
在對電機的控制中,我采用的是增量式PID算法。
首先要設定一個目標速度set_speed,再將當前速度與其比較,得出的差值代入公式計算,得到最終需要輸出的電機占空比,從而控制電機轉速。
需要注意的是,電機PID控制作為閉環(huán)控制,最好將其放入PIT定時器中斷,同時在中斷中用左右兩個編碼器分別測出實時速度,這樣可以使其控制的更精確。
void PID_computer_newL(int left_speed_in)
{
ec_left=set_speed-left_speed_in;
pwm_L+=speedL_P*(ec_left)+speedL_I*(ec_left-eb_left)+speedL_D*(ec_left-2*eb_left+ea_left);
if(pwm_L > 600) pwm_L=600;
if(pwm_L< -600) pwm_L=-600;
PWM_SetMotorL((int)pwm_L);
ea_left=eb_left;
eb_left=ec_left;
}
-
PID
+關注
關注
35文章
1473瀏覽量
85756 -
函數(shù)
+關注
關注
3文章
4345瀏覽量
62911 -
代碼
+關注
關注
30文章
4823瀏覽量
68954 -
控制算法
+關注
關注
4文章
166瀏覽量
21776
發(fā)布評論請先 登錄
相關推薦
什么是PID,PID算法代碼實現(xiàn)
什么是PID控制算法?PID控制算法C語言是如何實現(xiàn)的?
PID算法的代碼實現(xiàn)
使用C語言進行PID算法實現(xiàn)
PID控制算法原理是什么?pid控制算法的c語言實現(xiàn)介紹和測試代碼概述
![<b class='flag-5'>PID</b>控制<b class='flag-5'>算法</b>原理是什么?<b class='flag-5'>pid</b>控制<b class='flag-5'>算法</b>的c語言<b class='flag-5'>實現(xiàn)</b>介紹和測試<b class='flag-5'>代碼</b>概述](https://file.elecfans.com/web1/M00/61/0E/o4YBAFt-geKALy43AAAkmqlgPzI133.png)
使用C語言實現(xiàn)51單片機中的PID算法代碼免費下載
![使用C語言<b class='flag-5'>實現(xiàn)</b>51單片機中的<b class='flag-5'>PID</b><b class='flag-5'>算法</b><b class='flag-5'>代碼</b>免費下載](https://file.elecfans.com/web1/M00/A8/10/o4YBAF2LL9eAKMXVAAM9OQ3dO-M871.png)
PID控制算法的C語言實現(xiàn)
![<b class='flag-5'>PID</b>控制<b class='flag-5'>算法</b>的C語言<b class='flag-5'>實現(xiàn)</b>](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
評論