کنترلر P در ربات فوتبالیست
همان طور که گفتیم هدف تمام سیستمهای کنترلی به حداقل رساندن اندازه خطا در کمترین زمان ممکن است .
همچنین گفتیم اختلاف بین پارامتر سیستم و دستور ورودی را خطای سیستم میگوییم
پارامتر سیستم توسط سنسور اندازه گیری میشود و دستور ورودی هم از یک مدار دیگر به سیستم داده میشود
یاد آوری میکنیم که دستور ورودی و پارامتری که میخواهیم کنترل کنیم و خروجی سنسور باید از یک جنس باشند و فعال کنند هم باید توانایی تغییر دادن پارامتر را داشته باشد
برای مثال در ربات فوتبالیست وقتی میخواهیم ربات رو به دروازهٔ حریف بایستد : پارامتری که میخواهیم کنترل کنیم ( زاویه ) جلوی ربات است ، دستور ورودی به ما میگوید که ربات باید در چه جهتی ( چه زاویهای ) بایستد و سنسور هم جهتی که ربات ایستاده ( زاویه ربات ) را اندازه گیری میکند . پس هر سه از جنس زاویه هستند و فعال کنندههای ربات ( موتورها ) میتوانند زاویه را تغییر دهند
همانطور که در شکل پست بالا دیده میشود : خطا در هر لحظه برابر است با مقدار مورد نظر ورودی ( reference ) منهای مقدار سنسور
توجه کنید که مقدار خطا در بعضی از لحظات مثبت و در بعضی از لحظات منفی خواهد بود .
حالا ربات فوتبالیست را فرض کنید که قرار است رو به زاویه ی صفر درجه بایستد یعنی مقدار مورد نظر ورودی ( Reference ) همیشه برابر صفر است . سنسور قطب نما هم در هر لحظه زاویه ی ربات رو اندازه گیری میکنه .
فرض کنید در یک لحظه قطب نما زاویه ۱۰ درجه را نشان دهد . ( تمام زوایا در دایره مثلثاتی هستند ) در این حالت خطا برابر صفر منهای ده مساوی ( منفی ده ) میشود . واضح است که در این حالت ربات باید در جهت خلاف مثلثاتی ( منفی ) بچرخد تا این انحراف ( خطا ) تصحیح شود ( کمتر شود تا به صفر برسد )
در حالت بر عکس اگر قطب نما زاویه -۱۰ درجه را نشان دهد . در این حالت خطا برابر صفر منهای منفی ده مساوی ( مثبت ده ) میشود . واضح است که در این حالت ربات باید در جهت مثلثاتی ( مثبت ) بچرخد تا این انحراف ( خطا ) تصحیح شود ( بیشتر شود تا به صفر برسد )
خوب پس اگر علامت خطا مثبت شد ربات باید در جهت مثبت بچرخد و اگر منفی شد باید در جهت منفی بچرخد ( واضح است که اگر خطا صفر باشد ربات باید بایستد )
سوال اینجاست که ربات با چه سرعتی بچرخد ؟
جواب واضح است : چون میخواهیم در کمترین زمان ممکن به خطای صفر برسیم پس ربات باید با حداکثر سرعت بچرخد
اما چرخیدن با حداکثر سرعت مشکلی به وجود میآید .
مشکل : فرض کنید خطا مثبت ده باشد . ربات شروع به چرخیدن میکند و خطا کم میشود تا به صفر برسد و وقتی به صفر رسید دستور میدهیم تا موتورها خاموش شوند و ربات بایستد . اما ربات که نمیتواند درجا!!! بایستد . چیزی شبیه لختی یا اینرسی باعث میشود تا ربات نتواند درجا بایستد ، بلکه سرعت ربات به تدریج کم میشود تا بایستد . همین باعث میشود تا ربات به جای ایستادن در صفر ، صفر را رد کند و برود در مثلا منفی ۱۵ بایستد . حالا باید دوباره برگردیم و در برگشت نیز همین مشکل تکرار میشود یعنی به جای ایستادن در صفر آن را رد میکند و مثلا در مثبت هیجده میایستد و ...
راه حل این مشکل استفاده از کنترلر است که در اینجا با استفاده از کنترلر PID میخواهیم این مشکل را حل کنیم .
سادهترین کاری که شاید به ذهن خیلیها برسد این است که سرعت را کم کنیم اما این کار نه تنها مشکل را حل نمیکند بلکه باعث میشود ربات خیلی کند خطا را تصحیح کند .
کار بهتری که میتوان انجام داد این است که : وقتی اندازه خطا زیاد است ربات با سرعت زیاد بچرخد و وقتی اندازه خطا کم است ربات با سرعت کم بچرخد . یعنی ربات با دو سرعت متفاوت بچرخد یا حتی وقتی اندازه خطا زیاد است ربات با سرعت زیاد و وقتی اندازه خطا متوسط است با سرعت متوسط و وقتی اندازه خطا کم است با سرعت کم بچرخد ( یعنی با سه سرعت متفاوت ).
پیشنهاد بهتر این است که ربات با n سرعت متفاوت بچرخد یعنی : سرعت ربات = خطا باشد و هر چه خطا کمتر شد سرعت ربات هم کمتر شود و هر چه خطا بیشتر شد سرعت ربات هم بیشتر شود .
در این حالت اگر دیدیم تصحیح خطا خیلی آرام انجام میشود میتوانیم خطا را در عددی ( بزرگتر از قبل ) ضرب کنیم یعنی : سرعت ربات = خطا * K
همچنین ممکن است باز هم مشکله قبلی ( رد کردن صفر و دوباره برگشتن و دوباره رد کردن و ... ) را داشته باشیم که در آن صورت میتوانیم خطا را در عددی ( کوچک تر از قبل ) ضرب کنیم تا مشکل حل شود .
این قاعده کلی را به یاد داشته باشید که در رابطه ( سرعت = خطا * K ) : هر چه K کوچک تر شود ، سیستم کند تر حرکت میکند و هر چه K بزرگ تر شود سیستم بیشتر نوسان ( رد کردن هدف و برگشت دوباره ) میکند تا به تعادل برسد ( خطا صفر شود )
( نوسان کردن سیستم کاملا طبیعی است و همیشه وجود دارد ولی هر چه تعداد این نوسانات کمتر شود بهتر است )
چیزی که تا به اینجا توضیح داده شد کنترلر P است . P حرف اول Proportional به معنی تناسب است . یعنی سرعت چرخش ( تغییر زاویه ) ربات با خطا تناسب ( نسبت مستقیم ) دارد . ضریب تناسب ( K ) به کار برده شده در این کنترلر را از این به بعد Kp مینامیم
دوستان اگر سوالی راجع به این پست و یا قبلی دارند بپرسند ولی خواهشا سوالات متفرقه راجع به PID رو بزارید بعد از اینکه توضیحات I و D هم تموم شد بپرسید