PID控制應該算是非常古老而且應用非常廣泛的控制算法了,小到熱水壺溫度控制,大到控制無人機的飛行姿態(tài)和飛行速度等等。在電機控制中,PID算法用得尤為常見。
一、位置式PID
1.計算公式
在電機控制中,我們給電機輸出的是一個PWM占空比的數值。
話不多說,直接上位置式PID基本公式:
控制流程圖如下:
上圖中的目標位置一般我們可以通過按鍵或者開關等方式編程實現(xiàn)改變目標值,測量位置就是通過 stm32 去采集編碼器的數據。
目標位置和測量位置之間作差就是目前系統(tǒng)的偏差。送入 PID 控制器進行計算輸出,然后再經過電機驅動的功率放大控制電機的轉動去減小偏差, 最終達到目標位置的過程。
2.C語言實現(xiàn)
如何把我們以上的理論分析和控制原理圖使用 C 語言寫出來呢,這是一個有趣且實用的過程。位置式 PID 具體通過 C 語言實現(xiàn)的代碼如下:
intPosition_PID(intEncoder,intTarget) { static float Bias,Pwm,Integral_bias,Last_Bias; Bias=Target- Encoder; //計算偏差 Integral_bias+=Bias; //求出偏差的積分 //PID基本公式 Pwm=Position_KP*Bias+Position_KI*Integral_bias+Position_KD*(Bias-Last_Bias); Last_Bias=Bias; //保存上一次偏差 return Pwm; //輸出 }
入口參數為編碼器的位置測量值和位置控制的目標值,返回值為電機控制PWM(現(xiàn)在再看一下上面的控制框圖是不是更加容易明白了)。
第一行是相關內部變量的定義。
第二行是求出位置偏差,由測量值減去目標值。
第三行通過累加求出偏差的積分。
第四行使用位置式 PID 控制器求出電機 PWM。
第五行保存上一次偏差,便于下次調用。
最后一行是返回。
二、增量式PID
1.計算公式
速度閉環(huán)控制就是根據單位時間獲取的脈沖數(這里使用了 M 法測速)測量電機的速度信息,并與目標值進行比較,得到控制偏差,然后通過對偏差的比例、積分、微分進行控制,使偏差趨向于零的過程。
在我們的速度控制閉環(huán)系統(tǒng)里面只使用 PI 控制,因此對 PID 控制器可簡化 為以下公式:
?
控制框圖和位置式的一樣的。
上圖中的目標速度一般我們可以通過按鍵或者開關等方式編程實現(xiàn)改變目標值,測量速度前面在編碼器的章節(jié)已經有說到就是通過單片機定時去采集編碼器的數據并清零。
目標速度和測量速度之間做差就是目前系統(tǒng)的偏差。送入 PID 控制器進行計算輸出,然后再經過電機驅動的功率放大控制電機的轉動去減小偏差, 最終達到目標速度的過程。
2.C語言實現(xiàn)
如何把我們以上的理論分析和控制原理圖使用 C 語言寫出來呢,這是一個有趣且實用的過程。位置式 PID 具體通過 C 語言實現(xiàn)的代碼如下:
intIncremental_PI(intEncoder,intTarget) { static float Bias,Pwm,Last_bias; Bias=Encoder-Target; //計算偏差 //增量式 PI 控制器 Pwm+=Velocity_KP*(Bias-Last_bias)+Velocity_KI*Bias; Last_bias=Bias; //保存上一次偏差 return Pwm; //增量輸出 }
入口參數為編碼器的速度測量值和速度控制的目標值,返回值為電機控制 PWM。
第一行是相關內部變量的定義。
第二行是求出速度偏差,由測量值減去目標值。
第三行使用增量 PI 控制器求出電機 PWM。
第四行保存上一次偏差,便于下次調用。
最后一行是返回。
三、P、I、D各個參數的作用
自動控制系統(tǒng)的性能指標主要有三個方面:穩(wěn)定性、快速性、準確性。
穩(wěn)定性:系統(tǒng)在受到外作用后,若控制系統(tǒng)使其被控變量隨時間的增長而最終與給定期望值一致,則稱系統(tǒng)是穩(wěn)定的,我們一般稱為系統(tǒng)收斂。
如果被控量隨時間的增長,越來越偏離給定值,則稱系統(tǒng)是不穩(wěn)定的,我們一般稱為系統(tǒng)發(fā)散。穩(wěn)定的系統(tǒng)才能完成自動控制的任務,所以,系統(tǒng)穩(wěn)定是保證控制系統(tǒng)正常工作的必要條件。
一個穩(wěn)定的控制系統(tǒng)其被控量偏離給定值的初始偏差應隨時間的增長逐漸減小并趨于零。
快速性:快速性是指系統(tǒng)的動態(tài)過程進行的時間長短。過程時間越短,說明系統(tǒng)快速性越好,過程時間持續(xù)越長,說明系統(tǒng)響應遲鈍,難以實現(xiàn)快速變化的指令信號。
穩(wěn)定性和快速性反映了系統(tǒng)在控制過程中的性能。系統(tǒng)在跟蹤過程中,被控量偏離給定值越小,偏離的時間越短,說明系統(tǒng)的動態(tài)精度偏高。
準確性:是指系統(tǒng)在動態(tài)過程結束后,其被控變量(或反饋量)對給定值的偏差而言,這一偏差即為穩(wěn)態(tài)誤差,它是衡量系統(tǒng)穩(wěn)態(tài)精度的指標,反映了動態(tài)過程后期的性能。
在實踐生產工程中,不同的控制系統(tǒng)對控制器效果的要求不一樣。比如平衡車、倒立擺對系統(tǒng)的快速性要求很高,響應太慢會導致系統(tǒng)失控。
智能家居里面的門窗自動開合系統(tǒng),對快速性要求就不高,但是對穩(wěn)定性和準確性的要求就很高,所以需要嚴格控制系統(tǒng)的超調量和靜差。
審核編輯:湯梓紅
-
電機控制
+關注
關注
3555文章
1921瀏覽量
270270 -
STM32
+關注
關注
2281文章
10974瀏覽量
360621 -
PID控制
+關注
關注
10文章
461瀏覽量
40796 -
控制算法
+關注
關注
4文章
169瀏覽量
22042
原文標題:STM32實現(xiàn)電機的PID控制
文章出處:【微信號:電子工程師筆記,微信公眾號:電子工程師筆記】歡迎添加關注!文章轉載請注明出處。
發(fā)布評論請先 登錄
相關推薦
限時免積分下載:增量式與位置式PID算法的C語言實現(xiàn)分享
教你用C語言實現(xiàn)位置式PID和增量式PID
位置型PID的C語言代碼的實現(xiàn)過程詳細資料概述
使用單片機和Arduino實現(xiàn)增量式PID位置式PID算法和PID庫免費下載

評論