آموزش PID در MATLAB | شبیهسازی برای مهندسی برق و کنترل + کد نمونه
آموزش PID در MATLAB | شبیهسازی برای مهندسی برق و کنترل
⚡مقدمه: اهمیت PID در مهندسی برق و کنترل
یکی از پرکاربردترین موضوعات در مهندسی برق و کنترل، طراحی و شبیهسازی کنترلکننده PID است. تصور کنید در حال رانندگی هستید: اگر فرمان را کمی دیر بچرخانید، خودرو منحرف میشود. در سیستمهای صنعتی هم همین مشکل وجود دارد. برای اینکه خروجی دقیقاً همان چیزی شود که میخواهیم، باید از ابزاری استفاده کنیم که سریع، دقیق و پایدار واکنش نشان دهد. این ابزار همان PID Controller است.
در واقع بیش از ۹۰٪ سیستمهای کنترل صنعتی در دنیا از PID بهره میبرند. از کنترل دما و فشار در پالایشگاهها گرفته تا کنترل سرعت موتورهای الکتریکی و پرواز پهپادها.
🧩کنترلکننده PID چیست؟
کنترلکننده PID (Proportional–Integral–Derivative) ترکیبی از سه بخش است:
- تناسبی (P): واکنش به خطای لحظهای (مثل فرمان دادن راننده).
- انتگرالی (I): حذف خطاهای باقیمانده در طول زمان.
- مشتقی (D): پیشبینی تغییرات خطا و جلوگیری از نوسان شدید.
📌 ترکیب این سه بخش باعث میشود سیستم کنترل، هم سریع و هم پایدار باشد.
بریم برای توضیح بیشتر در مورد کنترلر PID:
1. توضیح دقیقتر هر بخش (P، I، D)
- کنترل تناسبی (P): ضریب Kp مستقیماً خطای لحظهای رو تقویت میکنه. اگر Kp بزرگ باشه، سیستم سریعتر واکنش میده اما ممکنه ناپایدار بشه.
- کنترل انتگرالی (I): خطاهای کوچک ولی ماندگار رو حذف میکنه. برای مثال، در یک سیستم دما اگر همیشه ۲ درجه کمتر از مقدار مطلوب باشیم، انتگرالی این خطا رو به مرور جبران میکنه.
- کنترل مشتقی (D): با توجه به نرخ تغییر خطا عمل میکنه. اگه خطا به سرعت در حال افزایش باشه، D به سیستم هشدار میده و جلوی نوسانات شدید رو میگیره.
🔹 2. رابطه ریاضی PID ✏️
فرمول استاندارد PID:

که در آن:
- e(t): خطای لحظهای
- Kp: ضریب تناسبی
- Ki: ضریب انتگرالی
- Kd: ضریب مشتقی
🔹 3. مثال کاربردی برای درک بهتر
فرض کنید یک موتور DC میخواهیم روی سرعت 1500 دور در دقیقه نگه داریم:
- P باعث میشه به سرعت به سمت مقدار هدف حرکت کنه.
- I خطای کوچک و ماندگار رو حذف میکنه (مثلاً همیشه روی 1480 نمیمونه).
- D جلوی نوسان و overshoot زیاد رو میگیره.
💻 آموزش PID در MATLAB (مرحلهبهمرحله)
یکی از بهترین راهها برای یادگیری PID، شبیهسازی آن در MATLAB است. در این بخش قدمبهقدم یاد میگیریم چطور یک سیستم را تعریف کنیم، کنترلکننده PID بسازیم، و خروجی را بررسی کنیم.
🔹 مرحله 1: تعریف سیستم دینامیکی
% تعریف تابع انتقال سیستم
num = [1]; % صورت تابع انتقال
den = [1 3 2]; % مخرج تابع انتقال
sys = tf(num, den); % ایجاد سیستم در MATLAB
📝 توضیح:
- در کنترل، خیلی وقتها سیستمها را به صورت تابع انتقال (Transfer Function) نمایش میدهیم.
tf(num, den)یک تابع انتقال میسازد که صورتشnumو مخرجشdenاست.- اینجا داریم سیستمی مثل زیر تعریف میکنیم:

📊 این سیستم یک سیستم مرتبه دوم پایدار است.
🔹 مرحله 2: طراحی کنترلکننده PID
% طراحی کنترلکننده PID
C = pidtune(sys, 'PID');
📝 توضیح:
- دستور
pidtuneیکی از بهترین ابزارهای متلب است که به صورت خودکار یک کنترلکننده PID برای سیستم پیدا میکند. - ورودی اول
sysهمان سیستمی است که ساختیم. - ورودی دوم
'PID'میگوید میخواهیم یک کنترلکننده کامل PID (و نه فقط PI یا PD) طراحی کنیم. - خروجی
Cیک شیء کنترلکننده است که ضرایب (K_p)، (K_i) و (K_d) را شامل میشود.
🔹 مرحله 3: بستن حلقه کنترل
% بستن حلقه فیدبک
T = feedback(C*sys, 1);
📝 توضیح:
- در عمل، کنترلکننده PID در مسیر فیدبک بسته قرار میگیرد.
C*sysیعنی کنترلکننده و سیستم را پشت سر هم (سری) قرار دادیم.feedback(..., 1)یعنی یک حلقه فیدبک (Feedback Loop) با بهره ۱ بستیم.- خروجی
Tحالا سیستم حلقه بسته است.
📌 به زبان ساده: حالا سیستم ما مجهز به کنترلکننده PID شد.
🔹 مرحله 4: نمایش پاسخ پله
% نمایش پاسخ پله
step(T)
grid on
📝 توضیح:
- دستور
stepخروجی سیستم را در برابر ورودی پله (Step Input) رسم میکند. - ورودی پله یعنی از زمان صفر به بعد مقدار ورودی یکباره از صفر به ۱ تغییر کند.
grid onشبکهی پسزمینه را فعال میکند تا نمودار خواناتر باشد.
📊 این نمودار به ما نشان میدهد که سیستم با PID چگونه به تغییر ناگهانی ورودی پاسخ میدهد.

🔹 مرحله 5: مقایسه با سیستم بدون کنترلکننده
% مقایسه عملکرد سیستم با و بدون PID
step(sys, T)
legend('بدون کنترلکننده','با PID')
📝 توضیح:
- دستور
step(sys, T)دو نمودار را روی یک شکل رسم میکند: یکی مربوط به سیستم اصلی (sys) و دیگری مربوط به سیستم کنترلشده با PID (T). legendبرای مشخص کردن نام هر نمودار استفاده میشود.

در این شبیهسازی پاسخ پلهی سیستم با و بدون کنترلکننده PID مقایسه شده است. همانطور که مشاهده میشود:
-
بدون کنترلکننده (آبی)، سیستم خطای ماندگار دارد و خروجی تنها تا حدود ۰.۵ میرسد.
-
با کنترلکننده PID (قهوهای)، خطای ماندگار حذف شده و خروجی دقیقاً روی مقدار مرجع (۱) همگرا میشود.
✅ این نمودار بهخوبی نشان میدهد که استفاده از کنترلکننده PID باعث افزایش سرعت پاسخ و حذف خطای ماندگار میشود.
📊 نتیجه:
- نمودار اول (بدون کنترلکننده) معمولاً کندتر است و ممکن است خطا یا نوسان بیشتری داشته باشد.
- نمودار دوم (با PID) سریعتر به مقدار نهایی میرسد و نوسان کمتری دارد.
✅ جمعبندی بخش شبیهسازی
با همین چند خط کد ساده یاد گرفتیم که:
- چطور یک سیستم تعریف کنیم.
- چطور کنترلکننده PID طراحی کنیم.
- چطور حلقه بسته را ببندیم.
- و در نهایت، عملکرد سیستم را با و بدون PID مقایسه کنیم.
📌 این تمرین ساده اولین قدم برای آموزش PID در MATLAB است و بعداً میتوانیم وارد تنظیم دستی ضرایب PID، رسم مکان هندسی ریشهها (Root Locus) و نمودار بود (Bode Plot) هم بشویم. این بخش را در آینده به آن خواهیم پرداخت.
📊جاهایی که شکل و نمودار کمککننده هستند
- نمودار پاسخ پله: مقایسه قبل و بعد از PID.
- بلوکدیاگرام سیستم: نمایش جایگاه PID در حلقه فیدبک.
- نمودار مکان هندسی ریشهها (Root Locus): بررسی پایداری.
🌍کاربردهای واقعی کنترلکننده PID
- کنترل سرعت موتورهای DC (یکی از مثالهای رایج در آموزش PID در MATLAB)
- تنظیم دمای کورهها در صنایع فولاد
- کنترل فشار و دبی در صنایع نفت و گاز
- پایدارسازی پرواز پهپادها و هواپیماها
- کنترل موقعیت بازوهای رباتیک
📌 این مثالها نشان میدهد چرا شبیهسازی سیستمهای کنترل با PID یکی از مهمترین مهارتهای پژوهشگران و مهندسان برق و کنترل است.
در زیر شبیه سازی های آماده با کنترل PID را به صورت نمونه قرار داده ایم:
- طراحی کنترلکننده PID تطبیقی برای سیستمهای غیرخطی
- شبیه سازی بازوی رباتیک سه درجه آزادی با کنترلر PID
- کنترل فازی PID برای سیستم های تنفسی
- کنترل سرعت موتور القایی سه فاز با استفاده از پل یونیورسال و کنترلر PID
- کنترل عملکرد سیستم تعلیق خودروها با کنترل PID بر اساس مدل دینامیکی سه بعدی
اینها تنها تعداد از پروژه های کنترل PID با متلب هستند, برای دیدن پروژه های بیشتر به فروشگاه متلبی بروید و کلیدواژه PID را جستجو نمایید.
⚠️نکات کاربردی و خطاهای رایج در شبیهسازی PID
- انتخاب نادرست ضرایب PID:
Kp خیلی بزرگ → ناپایداری
Ki زیاد → نوسان شدید
Kd کم → واکنش کند

خروجی کد PID در متلب و مقادیر ضرایب در کامنت ویندوز
- عدم استفاده از توابع آماده MATLAB مثل
pidtune,bode,rlocus - نادیده گرفتن مقیاس سیگنالها که میتواند منجر به خطای شبیهسازی شود.
❓پرسشهای متداول
پرسشهای متداول کنترلر PID
- ❓ تفاوت PID با کنترلکننده PI چیست؟
✅ کنترلکننده PI بخش مشتقگیر (D) ندارد. بنابراین برای سیستمهایی با نویز زیاد مناسبتر است چون نویزها توسط D تقویت نمیشوند.
- ❓ آیا میتوان PID را در سیستمهای غیرخطی استفاده کرد؟
✅ بهطور کلی PID برای سیستمهای خطی طراحی شده است. اما با تنظیم دقیق ضرایب میتوان در برخی سیستمهای غیرخطی هم از آن استفاده کرد.
- ❓ چرا بیشتر از ۹۰٪ سیستمهای صنعتی از PID استفاده میکنند؟
✅ چون ساده، کارآمد و پیادهسازی آن در عمل (حتی با سختافزار ساده) راحت است.
✅جمعبندی نهایی
در این مقاله دیدیم که کنترلکننده PID چگونه با ترکیب سه جزء P، I و D، عملکرد سیستمهای دینامیکی را بهبود میدهد. همچنین یاد گرفتیم که در آموزش PID در MATLAB میتوان با چند خط کدنویسی، شبیهسازی و تحلیل سیستم را انجام داد.
👉 حالا نوبت شماست:
- 📥 [دانلود فایل نمونه کد متلب PID]
- 💬 سوال یا نظری دارید؟ همین پایین در بخش کامنتها بپرسید تا به آن پاسخ داده شود.
متلبی دارای متخصصین حرفه ای و مجرب در انجام پروژه های متلب در زمینه برق کنترل هستند. اگر دغدغه انجام پروژه کنترلی خود و آموزش شبیه سازی را دارید, ما در کنار شما هستیم. انجام دقیق, آموزش و پشتیبانی جهت رفع ابهام را از متلبی بخواهید.




دیدگاه خود را ثبت کنید
تمایل دارید در گفتگوها شرکت کنید؟در گفتگو ها شرکت کنید.