پروژه کنترل دمای المنت به صورت pid

پروژه های میکروکنترلر AVR

به نام خدا و باسلام خدمت دوستان

در این مطلب قصد دارم پروژه کنترلر دما به صورت pid  را خدمت دوستان معرفی کنم،در این پروژه ابتدا سیستم را شناسایی میکنیم و از سیستم نمونه برداری میکنیم و سپس نمونه هارا وارد نرم افزار متلب میکنیم و در متلب با استفاده بلوک ها و محاسباتی تابع تبدیل سیستم را محاسبه می کنیم و سپس این تابع تبدیل را  وارد بلوک سیمولینک متلب میکنم و یک کنترل کندده pid قرار می دهیم سپس با تیون کردن ضرایب بهینه را بدست می آوریم و در مرحله بعد از تعریف pid  استفاده کرده و آن را به کد به زبان c تبدیل میکنیم و ضرایب را به برنامه میکرو در کدویژن انتقال می دهیم سپس میکروکنترلر با استفاده از pwm دما کنترلر می کند،دقت کنید که برای اجرای کنترلر pid حتما باید سیستم فیدبک دار داشته باشید به عنوان مثال در این پروژه بنده یک المنت قرار دادم (12 ولتی دست ساز،که البته شما روش کار را یادبگیرید در تمام سیستم ها می توانید اجرا کنید)و یک سنسور دمای دیجیتال ds1307  که این سنسور دما نقش فیدبک را دارد.

برای درست کردن المنت میتوانید سیم مخصوص المنت را تهیه کنید که مخصوص برق 220 ولت است و 11 دور آن را دور خودکار بپیچید(در این پروژه بنده به همین شکل است)وبا استفاده از ترانزیستور tip122 ان را  با 12 ولت درایو کنید.

شماتیک پروژه به صورت زیر است :

در مدار فوق دو کلید برای up  و down هم قرار دارد که میتوانید مقدار setpoint  را تغییر دهید…

برای تعیین ضرایب کنترل کننده pid به غیر از نرم افزار متلب میتوانید از روش زیگلر-نیکولز استفاده کنید که به صورت زیر است:

نحوه تعیین ضرایب کنترل کننده pid برای یک موتور به صورت زیر است است که شما میتوانید این روند را برای پروژه دما نیز تعمیم بدهید(پروژه کنترل دور موتور pid هم انجام شده است) :

ابتدا موتور مورد نظر را شناسایی میکنیم به طوری که هر ثانیه یک بار با دادن ولتاژ  های مختلف به موتور دور را اندازه گیری میکنیم و نمونه ها را وارد نرم افزار متلب میکنیم و با استفاده از دستور ident موتور مورد نظر را شناسایی میکنیم

که نمونه ها ،برای یک موتور صنعتی به شرح زیر است:

x=[50    60   70   80   90  100  110  120  130  140  150  160  170  180  190  200  210  220  230 ]

y=[900  1020 1300 1800 2100 2500 2900 3400 3950 4300 4700 5100 5600 6100 6300 6700 6800 6900 7000]

پس از وارد کردن مقادیر که ماتریس x مقادیر ولتاژ و ماتریس y مقادیر دور موتور است به نرم افزار متلب وارد بخش  ident   در شکل 10 می شویم :

شکل10- پنجره قسمت ident

در پنجره شکل11  در بلوک 1 گزینه imprt data را انتخاب میکنیم و در بلوک 2 ترانهاده ماتریس های xوy را وارد میکنیم و در بلوک 3 دکمه import را می فشاریم که پنجره شکل 11 گشوده می شود

شکل11-پنجره قسمت ident و process models

در این پنجره در بلوک 4 گزینه process models  را انتخاب می کنیم و در پنجره جدید تنظیمات را مانند بلوک 5 انجام می دهیم و یک قطب برای موتور انتخاب می کنیم و در بلوک 6 تخمین را  اعمال می کنیم که پنجره شکل12 به نمایش در می آید

شکل 12-پنجره قسمت ident  و رسم نمودار موتور

در پنجره شکل 12 روی بلوک هفت دوبار کلیک میکنیم و تابع تبدیل موتور مورد نظر  در بلوک 8 به نمایش در می آید و همینطور با زدن تیک بلوک 9 نمودار بلوک 10 به نمایش در می آید  که نمودار موتور مورد نظر را با تخمین 88.82 درصد نمایش می دهد

حال تابع تبدیل مورد نظر را با استفاده از دستور c2d و با سرعت نمونه برداری 1 ثانیه به فضای گسسته z برده و ضرایب pid را برای آن مانند شکل زیر تعیین میکنیم

شکل13- انتقال تابع تبدیل از فضای s به فضای z

پس از محاسبه تابع تبدیل در فضای z وارد قسمت سیمولینک متلب میشویم و شکل زیر را رسم میکنیم

شکل14-شکل رسم شده در سیمولینک برای موتور

حال بر روی بلوک pid دوبار کلیک میکنیم و ضرایب را مانند شکل زیر tune میکنیم

 

شکل15- Tune ضرایب برای بهترین حالت ممکن

و پس از طراحی بهینه، دکمه آپدیت را می فشاریم و سپس پنجره شکل16 به نمایش در می آید که ضرایب محاسبه شده را به صورت بهینه ترین شکل ممکن نمایش می دهد

 

 

شکل16-ضرایب محاسبه شده برای موتور مورد نظر

و در مرحله آخر کافیست تا ضرایب فوق را در برنامه میکرو کنترلر قرار دهیم .

فیلم نحوه عملکرد پروژه به صورت زیر است :

دوستان در فیلم منظور از مقدار ocr همان مقدار دیوتی سایکل موج pwm است که 10 بیت است.

برا دریافت پروژه میتوانید اقدام کنید و سوالی بود در قسمت نظرات در خدمتم.

350,000 ریال – خرید

 

مطالب پیشنهادی:

بخش نرم افزار پروژه ردیاب : برنامه اندرویدی tracker (ردیاب) و نمایش مختصات

سخت افزار پروژه ردیاب : ارسال موقعیت جغرافیایی روی سرور از طریق ماژول A7 و LPC1768

لینک مطلب بخش نرم افزار پروژه ماژول بلوتوث که تحت #C نوشته شده است.

لینک مطلب بخش سخت افزار پروژه ارتباط ماژول بلوتوث با میکروکنترلر lpc1768 با برنامه اندرویدی و #C )

لینک مطلب بخش نرم افزار پروژه ماژول بلوتوث که تحت اندروید نوشته شده است.

2
دیدگاه بگذارید

avatar
1 Comment threads
1 Thread replies
0 Followers
 
Most reacted comment
Hottest comment thread
2 Comment authors
faridmicrodroidprjsiteعادل Recent comment authors
عادل
Guest
عادل

سلام
تشکر میکنم از مطلب مفیدی که در این پست قرار دادید
میخواستم بدونم با این برنامه میشه دمای یک مخزن آب رو با استفاده از یک المنت ثابت نگه داشت؟
(بدون استفاده از ترموستات)
مثلا دمای مخزن آب ما دائما در دمای 60 درجه باقی بمونه؟(البته بدون قطع و وصل با یک ترموکوپل)