אלגוריתם בקרת PID הוא כיום אחד מאלגוריתמי הבקרה הנפוצים ביותר. בקרת PID מציעה יתרונות כגון פרמטרים מתכווננים, מגוון רחב של יישומים ודיוק בקרה גבוה. בהנדסה מעשית ניתן ליישם את אלגוריתם ה-PID בתחומים שונים, כולל בקרה אלקטרומכנית, אוטומציה תעשייתית, רובוטיקה ובקרת מיקרו-מעבד.
שלושת הפרמטרים של אלגוריתם PID הם: ההגבר היחסי Kp, קבוע הזמן האינטגרלי Ti וקבוע הזמן הנגזרת Td. מערכות שונות דורשות פרמטרים שונים של PID, ופרמטרים אופטימליים מתקבלים בדרך כלל באמצעות ניסויים וניפוי באגים. הקבוע הפרופורציונלי Kp מתאים את הרווח הפרופורציונלי, השולט על היחס בין תפוקת המערכת לשגיאת המשוב במהלך הפעולה; קבוע הזמן האינטגרלי Ti מתאים את הרווח האינטגרלי, שולט בהצטברות השגיאות במהלך פעולת המערכת; וקבוע הזמן הנגזר Td מתאים את הרווח הנגזרת, השולט בקצב השינוי של השגיאות במערכת הבקרה.
מהי הגישה להטמעת אלגוריתם PID על מיקרו-בקר?
כדי ליישם אלגוריתם בקרת PID על מיקרו-בקר, הגישה הכללית היא כדלקמן:
1. **קבע פרמטרי PID**:
- בחר רווח פרופורציונלי מתאים (Kp), זמן אינטגרלי (Ti) וזמן נגזרת (Td) בהתבסס על המאפיינים והדרישות של האובייקט הנשלט בפועל.
2. **רכישת נתוני חיישנים**:
- השתמש בחיישנים מתאימים (כגון חיישני טמפרטורה, חיישני מיקום וכו') כדי להשיג-נתוני משוב בזמן אמת מהאובייקט הנשלט.
3. **השוואה של ערכי נקודת קבע ומשוב**:
- השווה את נקודת ההגדרה (הערך הרצוי) עם ערך המשוב כדי לחשב את השגיאה (שגיאה).
4. **חישוב PID**:
- חשב את משתנה הבקרה (פלט) באמצעות נוסחת אלגוריתם PID: PID=Kp * Error + Ki * ∫ Error dt + Kd * d(Error)/dt.
- Kp, Ki ו-Kd הם פרמטרים של PID; שגיאה הוא ערך השגיאה; ∫ שגיאה dt מייצגת את האיבר האינטגרלי; ו-d(Error)/dt מייצג את המונח הנגזרת.
5. **הגבלה** (אופציונלי):
- עבור יישומים מסוימים, ייתכן שיהיה צורך להגביל את טווח ערך הפלט כדי למנוע ממנו לחרוג מהטווח המקובל של האובייקט הנשלט.
6. **אות בקרת פלט**:
- משתנה הבקרה המחושב משמש כאות בקרה ונשלח אל המפעיל (כגון מנוע או שסתום) כדי לווסת ולשלוט באובייקט הנשלט.
7. **הגדר את תדירות הבקרה**:
- הגדר תדירות בקרה מתאימה-מחזור הביצוע של אלגוריתם הבקרה-בהתבסס על דרישות היישום הספציפיות.
8. **חזרו על אלגוריתם PID**:
- בלולאת זמן אמת-, בצע שוב ושוב את השלבים שלעיל כדי לנטר ברציפות את ערך המשוב, לחשב את משתנה הבקרה ולצאת אות הבקרה כדי להשיג שליטה יציבה על המערכת.
בתכנות מיקרו-בקר בפועל, ניתן לבחור כלי פיתוח ושפות תכנות מתאימים (כגון C או שפת assembly) בהתבסס על מודל המיקרו-בקר הספציפי ופלטפורמת הפיתוח. יש לציין כי ביישומים מעשיים קיימות טכניקות רבות לייעול ושיפור אלגוריתם ה-PID, כגון הפרדה אינטגרלית ו-PID אדפטיבית, שניתן לחקור ולהטמיע בהמשך לפי דרישות ספציפיות.
עקרונות ותפעול של בקרי PID
בקר PID מורכב משלושה מרכיבים: פרופורציונלי (P), אינטגרל (I) ונגזרת (D). הוא מייצר פלט בקרה על ידי עיבוד השגיאה, הסטייה וקצב השינוי של המערכת. פעולתו כוללת את השלבים הבאים:
- השג את ערכי ההגדרה והמשוב
- חשב את השגיאה
- חשב את פלט הבקרה על סמך הרווח הפרופורציונלי, המונח האינטגרלי והמונח הנגזרת
- עדכן את פרמטרי הבקר
- פלט את אות הבקרה
יישום קוד STM32
להלן קוד לדוגמה לתכנון והטמעה של בקר PID באמצעות מיקרו-בקר STM32:
```c
#include "stm32f4xx.h"
// הגדר פרמטרים של בקר PID
לצוף Kp=0.5; // רווח פרופורציונלי
לצוף Ki=0.2; // רווח אינטגרלי
לצוף Kd=0.1; // רווח נגזר
// הגדר משתני אחסון
נקודת קבע ציפה=50.0; // נקודת קבע
משוב צף=0.0; // ערך משוב
שגיאת ציפה=0.0; // שגיאה
float last_error=0.0; // שגיאה קודמת
אינטגרל צף=0.0; // מונח אינטגרלי
// פונקציית חישוב פלט של בקר PID
float pidController(float dt)
{
// חשב שגיאה
שגיאה=נקודת קבע - משוב;
// חשב מונח אינטגרלי
שגיאה אינטגרלית += * dt;
// חשב מונח נגזרת
נגזרת ציפה=(שגיאה - last_error) / dt;
// חשב פלט בקרה
פלט צף=Kp * error + Ki * אינטגרל + Kd * נגזרת;
// עדכן שגיאה קודמת
last_error=שגיאה;
החזר פלט;
}
int main(void)
{
בעוד (1)
{
// אחזר ערך משוב
// הגדר מרווח זמן
// חשב פלט PID
float dt=0.01; // בדוגמה זו, מרווח הזמן הוא 0.01 שניות
float control_output=pidController(dt);
// פלט את אות הבקרה
// עיכוב לפרק זמן
for (int i=0; i < 10000; i++);
}
החזר 0;
}




