功能介紹放開頭, 使用便捷無需愁
這是全網最詳細、性價比最高的STM32實戰項目入門教程,通過合理的硬件設計和詳細的視頻筆記介紹,硬件使用STM32F103主控資料多方便學習,通過3萬字筆記、12多個小時視頻、20多章節代碼手把手教會你如何開發和調試。讓你更快掌握嵌入式系統開發。
V3.3.0-STM32智能小車
視頻: https://www.bilibili.com/video/BV16x4y1M7EN/?spm_id_from=333.337.search-card.all.click
V3:HAL庫開發、功能:PID速度控制、PID循跡、PID跟隨、遙控、避障、PID角度控制、視覺控制、電磁循跡、RTOS等功能。
第九章-PID整定方法
9.1-調整合適的采樣周期和PID調參方法
正如之前所說,現在我們PID控制函數是在主函數中循環調用,這樣的調用方式并不能保證實時性,不能保證周期得到調用
所以我們要把PID控制函數放到中斷里面定時執行,那么如何放到中斷里面執行,執行的周期是多少合適那?
if(TimerCount %10 ==0)//每20ms一次
{
Motor_Set(PID_realize(&pidMotor1Speed,Motor1Speed),0);
TimerCount=0;
}
}
燒錄測試一下,是否可以改變波形和調整參數
借助上位機調節PID
- 調節P 把I=0、D=0先給正值或負值值測試P 正負、然后根據PID函數輸入和輸出估算P 大小,然后I=0 D=0去測試,調節一個較大值
- 調節I 把P等于前面的值 然后測試I給較大正值和負值 測試出I正負,然后I從小值調節,直到沒有偏差存在
- 一般系統不使用D
然后當前系統特點 :I 對于系統更重要
下面我們調節I
給一個較小的i 發現 有一個大的超調,我們就減少p 、減小一半p
下面是減少一半p 的效果
這個效果還可以
整理雙電機速度控制
首先我們的需要是控制兩個電機,那么這兩個電機的特點不同,他們的P I D 參數不同,要控制不同的目標速度,那么他們的目標值、實際值、偏差等都會不同,所以我們的PID函數就要能夠根據輸入參數控制電機
我們增加tPid 類型函數的定義用于控制電機
tPid pid1_speed;//電機1的轉速控制
tPid pid2_speed;//電機2的轉速控制
//初始化PID參數
void PID_init()
{
pid1_speed.actual_val=0.0;//初始化電機1轉速PID 結構體
pid1_speed.target_val=0.0;
pid1_speed.err=0.0;
pid1_speed.err_last=0.0;
pid1_speed.err_sum=0.0;
pid1_speed.Kp=0.0;
pid1_speed.Ki=0.0;
pid1_speed.Kd=0.0;
pid2_speed.actual_val=0.0;//初始化電機2轉速PID 結構體
pid2_speed.target_val=0.0;
pid2_speed.err=0.0;
pid2_speed.err_last=0.0;
pid2_speed.err_sum=0.0;
pid2_speed.Kp=0.0;
pid2_speed.Ki=0.0;
pid2_speed.Kd=0.0;
}
更改一下PID函數,這里我們使用結構體作為函數地址
訪問因為是地址,訪問結構體變量要用->
float PID_realize(tPid * pid,float actual_val)
{
pid- >actual_val = actual_val;//傳遞真實值
pid- >err = pid- >target_val - pid- >actual_val;//目標值減去實際值等于誤差值
pid- >err_sum += pid- >err;//誤差累計求和
//使用PID控制
pid- >actual_val = pid- >Kp*pid- >err + pid- >Ki*pid- >err_sum + pid- >Kd*(pid- >err - pid- >err_last);
//保存上次誤差:最近一次 賦值給上次
pid- >err_last = pid- >err;
return pid- >actual_val;
}
更改主函數,對PID函數的使用
然后可以分別調節電機1的參數和電機二的參數
把測試好的PID 參數分別寫在PID_init里面
以上是入門篇
通過上面的學習與實操,大家對:PWM、電機驅動、PID閉環控制、串口通信等有了一定掌握,如果上面那個章節掌握不好,一定要多看兩遍視頻,多敲邊代碼,還有疑惑可以百度查找或者留言問題。
后面的內容就是偏應用比較簡單了。
這樣咱們第九章就結束了,PID就完成了,后面的章節利用PID做小車控制。
審核編輯 黃宇
-
編碼器
+關注
關注
45文章
3638瀏覽量
134426 -
PID
+關注
關注
35文章
1472瀏覽量
85478 -
電機轉速
+關注
關注
0文章
63瀏覽量
11367
發布評論請先 登錄
相關推薦
評論