מהו אלגוריתם PID?
אלגוריתם PID הוא סוג של בקר לולאת משוב (feedback control loop) המתבסס על שלושה רכיבים:
רכיב פרופורציונלי (P) – מייצר תגובה פרופורציונלית לשגיאה (הפרש בין ערך הרצוי לערך הנמדד).
רכיב אינטגרלי (I) – מצטבר את השגיאה לאורך זמן, ומתקן טעויות עקביות.
רכיב נגזרי (D) – מגיב לקצב השינוי של השגיאה, לצורך חיזוי והתייצבות מוקדמת.
הפלט הכולל של הבקר מחושב כך:
u(t) = Kp·e(t) + Ki·∫e(t)dt + Kd·de(t)/dt
כאשר:
e(t) – השגיאה בזמן t
Kp, Ki, Kd – מקדמים קבועים שיש לכוונן (tuning)
סוגי בקרי PID
בהתאם ליישום, ניתן להשתמש באחד או יותר מרכיבי הבקר:
| סוג בקר | תיאור | יתרונות | חסרונות |
| P – פרופורציונלי | פלט יחסי לשגיאה בלבד | תגובה מהירה | אינו מבטל שגיאה קבועה |
| PI – פרופורציונלי + אינטגרלי | מבטל שגיאה קבועה לאורך זמן | יציבות טובה | תגובה איטית יותר |
| PD – פרופורציונלי + נגזרי | תגובה מהירה וחיזוי שינויים | מתאים לתגובות קצרות | שגיאות קבועות נשארות |
| PID מלא | שלושת הרכיבים | תגובה מדויקת, יציבה וחזויה | דורש כיוונון מדויק, רגיש לרעש |
יישומים נפוצים של PID
בקרה תעשייתית – ויסות טמפרטורה, לחץ, זרימה ומהירות (למשל בכבשנים, מערבלי חומרים, רובוטיקה).
תחבורה – בקרת שיוט (Cruise Control), איזון יציבות של רחפנים, ייצוב מערכות הנעה.
אלקטרוניקה וחשמל – מייצבי מתח (Voltage Regulators), ספקי כוח, מנועים חשמליים.
מערכות רפואיות – משאבות אינפוזיה, בקרה על חמצן וזרימות.
עיבוד תמונה ובקרה חזותית – ייצוב מצלמות, מעקב אחר אובייקטים בתנועה.
בקרה מבוססת תוכנה – משחקים, סימולציות פיזיקליות, אינטראקציות אדם-מכונה.
פיתוח אלגוריתמי PID
שלבי הפיתוח:
הגדרת המערכת והמשתנה המבוקר
זיהוי ה־Setpoint (ערך היעד)
מדידת ערך הפלט מהמערכת
תכנון הארכיטקטורה
בחירה בין PID רציף (Continuous) או בדיד (Discrete)
שילוב חיישנים ומגיבים (Actuators)
כיוונון מקדמים (Tuning)
שיטות ידניות (Ziegler-Nichols, Cohen-Coon)
אלגוריתמים חכמים (Genetic Algorithm, Fuzzy Logic, Neural PID)
סימולציה ובדיקה
ניתוח תגובת מדרגה (Step Response)
בדיקות יציבות, רגישות לרעש ועמידות לזעזועים
יישום במערכת בזמן אמת
קידוד בשפות כמו C, Python או MATLAB
שילוב במיקרו־בקרים (כגון STM32, Arduino)
אופטימיזציה
הוספת סינון רעשים ל־D
מימוש anti-windup למניעת הצפה של רכיב I
שאלות ותשובות בנושא אלגוריתם PID
כיצד משפיע רכיב ה־D על תגובת המערכת?
רכיב ה־D מגיב לשינויים מהירים בשגיאה, ולכן הוא מסייע בהפחתת אוברשוט (overshoot) ו”מרסן” תנודות.
אך הוא רגיש לרעש ולכן לעיתים נדרש סינון (Low-pass filter) על ה־D.
מתי נשתמש ב־PI ולא ב־PID?
כאשר מערכת אינה רגישה לשינויים פתאומיים ואין צורך בניבוי עתידי (derivative), נעדיף PI.
לדוגמה, במערכות טמפרטורה איטיות יחסית, שבהן רכיב D יגרום לרעש מיותר.
מה זה anti-windup, ולמה הוא חשוב?
כאשר הפלט של הבקר מוגבל (למשל, מגבלות מתח או זרם), רכיב I יכול להמשיך “להיערם” גם כשהמערכת לא יכולה לפעול בהתאם.
זה גורם לאוברשוט ולתגובות לא יציבות.
מנגנון anti-windup מגביל או מאפס את האינטגרל במצבים כאלה.
מהן שיטות נפוצות לכוונון אוטומטי של PID?
Ziegler-Nichols: מבוססת על מציאת נקודת תנודות קבועה במערכת.
Auto-Tune: מנגנון שמבצע סקירה אוטומטית של תגובת המערכת בזמן אמת.
למידת מכונה: שימוש ב־Reinforcement Learning או רשתות עצביות לאופטימיזציה של PID עבור מערכות משתנות.
איך ניתן ליישם PID בדיגיטל, כאשר המדידה מתבצעת בדגימה (sampling)?
במערכות בדידות משתמשים בגרסה הדיסקרטית של PID, לרוב בצורת הבדל (difference equations).
חשוב לבחור תדר דגימה גבוה מספיק (לרוב פי 10 לפחות מתדר המערכת) כדי לשמור על יציבות וביצועים טובים.

