加入星計劃,您可以享受以下權益:

  • 創(chuàng)作內容快速變現(xiàn)
  • 行業(yè)影響力擴散
  • 作品版權保護
  • 300W+ 專業(yè)用戶
  • 1.5W+ 優(yōu)質創(chuàng)作者
  • 5000+ 長期合作伙伴
立即加入

第九章-PID整定方法 STM32 PID驅動編碼器 控制電機轉速

06/20 10:11
1948
服務支持:
技術交流群

完成交易后在“購買成功”頁面掃碼入群,即可與技術大咖們分享疑惑和經(jīng)驗、收獲成長和認同、領取優(yōu)惠和紅包等。

虛擬商品不可退

當前內容為數(shù)字版權作品,購買后不支持退換且無法轉移使用。

加入交流群
掃碼加入
獲取工程師必備禮包
參與熱點資訊討論
放大
實物圖
相關方案
  • 方案介紹
    • 第九章-PID整定方法
    • 以上是入門篇
  • 相關文件
  • 推薦器件
  • 相關推薦
  • 電子產(chǎn)業(yè)圖譜
申請入駐 產(chǎn)業(yè)圖譜

第九章-PID整定方法

9.1-調整合適的采樣周期和PID調參方法

正如之前所說,現(xiàn)在我們PID控制函數(shù)是在主函數(shù)中循環(huán)調用,這樣的調用方式并不能保證實時性,不能保證周期得到調用

所以我們要把PID控制函數(shù)放到中斷里面定時執(zhí)行,那么如何放到中斷里面執(zhí)行,執(zhí)行的周期是多少合適那?
在這里插入圖片描述
在這里插入圖片描述

		if(TimerCount %10 ==0)//每20ms一次
		{
			Motor_Set(PID_realize(&pidMotor1Speed,Motor1Speed),0);
		    TimerCount=0;
		}
	}

燒錄測試一下,是否可以改變波形和調整參數(shù)
在這里插入圖片描述

借助上位機調節(jié)PID

  1. 調節(jié)P 把I=0、D=0先給正值或負值值測試P 正負、然后根據(jù)PID函數(shù)輸入和輸出估算P 大小,然后I=0 D=0去測試,調節(jié)一個較大值
  2. 調節(jié)I 把P等于前面的值 然后測試I給較大正值和負值 測試出I正負,然后I從小值調節(jié),直到?jīng)]有偏差存在
  3. 一般系統(tǒng)不使用D
    在這里插入圖片描述

然后當前系統(tǒng)特點 :I 對于系統(tǒng)更重要

下面我們調節(jié)I
在這里插入圖片描述

給一個較小的i 發(fā)現(xiàn) 有一個大的超調,我們就減少p 、減小一半p

下面是減少一半p 的效果

在這里插入圖片描述

這個效果還可以

整理雙電機速度控制

首先我們的需要是控制兩個電機,那么這兩個電機的特點不同,他們的P I D 參數(shù)不同,要控制不同的目標速度,那么他們的目標值、實際值、偏差等都會不同,所以我們的PID函數(shù)就要能夠根據(jù)輸入?yún)?shù)控制電機

我們增加tPid 類型函數(shù)的定義用于控制電機

在這里插入圖片描述

tPid pid1_speed;//電機1的轉速控制
tPid pid2_speed;//電機2的轉速控制

//初始化PID參數(shù)
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函數(shù),這里我們使用結構體作為函數(shù)地址

訪問因為是地址,訪問結構體變量要用->

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;
}

更改主函數(shù),對PID函數(shù)的使用

在這里插入圖片描述

然后可以分別調節(jié)電機1的參數(shù)和電機二的參數(shù)

把測試好的PID 參數(shù)分別寫在PID_init里面

以上是入門篇

通過上面的學習與實操,大家對:PWM、電機驅動、PID閉環(huán)控制、串口通信等有了一定掌握,如果上面那個章節(jié)掌握不好,一定要多看兩遍視頻,多敲邊代碼,還有疑惑可以百度查找或者留言問題。

后面的內容就是偏應用比較簡單了。

這樣咱們第九章就結束了,PID就完成了,后面的章節(jié)利用PID做小車控制。

聯(lián)系:Q,1930299709

  • 聯(lián)系方式.txt

推薦器件

更多器件
器件型號 數(shù)量 器件廠商 器件描述 數(shù)據(jù)手冊 ECAD模型 風險等級 參考價格 更多信息
ABS07-32.768KHZ-9-T 1 Abracon Corporation CRYSTAL 32.7680KHZ 9PF SMD

ECAD模型

下載ECAD模型
$1.4 查看
LTC6994IS6-1#TRMPBF 1 Analog Devices Inc LTC6994IS6-1#TRMPBF

ECAD模型

下載ECAD模型
$4.83 查看
71V416S15PHGI 1 Integrated Device Technology Inc TSOP-44, Tube

ECAD模型

下載ECAD模型
$17.14 查看

相關推薦

電子產(chǎn)業(yè)圖譜