طراحی کنترلر، مدارت دلخواه، پروژه ها و تمرینات درس میکروکنترلرها
این پروژه یک مدار گیرنده رادیویی 433 یا 315 مگاهرتز می باشد که قابلیت تعریف و ذخیره سازی انواع ریموت کنترل هایی از قبیل (ریموت دزدگیر ماشین، پارکینگ، بالابر و ...) را دارد. می توان رله مربوطه را روی هر کلید دلخواه تعریف نمود.با استفاده از ماژول HM-R و HM-T ابتدا به کمک سنسور LM35 دما اندازه گیری شده و به ماژول HM-T ارسال می شود، در سمت گیرنده سیگنال توسط HM-R دریافت شده و بر اساس مقدار دما دور موتور به صورت PWM کنترل می شود. همچنین قابلیت تعریف رنج دمای کاری برای موتور نیز امکان پذیر می باشد.یک کنترل کننده موتور با جریان خروجی 2 آمپر شامل کنترل جهت چرخش و سرعت می باشد. این مدار دارای نمایشگر LCD متنی بوده که سرعت و جهت چرخش موتور را نمایش می دهد.این پروژه یک مدار واسط I/O می باشد که دارای 4 خروجی رله است. توسط نرم افزار کنترلی که قابل نصب بروی ویندوز های XP, Win7, Win8, Win10 می باشد می توان هر چهار رله را به صورت مجزا فعال و غیر فعال کرد.با استفاده از میکروکنترلر ATMEGA8 و کیبورد 3×4 می توان حروف و اعداد را تایپ کرد و درون یک متغییر ذخیره نمود و محتوای این متغییر بر روی نمایشگر LCD نمایش داده می شود. در صورتی که فضای LCD پر شود کاراکترها به سمت چپ شیفت داده می شوند. تمامی حروف و اعداد کوچک و بزرگ انگلیسی قابل تایپ می باشند.
پروژه ریموت کنترل 433-315 مگاهرتز تک کاناله با قابلیت لرنینگ

MCP-30

پروژه ریموت کنترل 433-315 مگاهرتز تک کاناله با قابلیت لرنینگ
پروژه کنترل بی سیم دور موتور برحسب دما با avr

MCP-8

پروژه کنترل بی سیم دور موتور برحسب دما با avr
کنترل سرعت و جهت موتور DC

MCP-9

کنترل سرعت و جهت موتور DC
پروژه کنترل رله توسط پورت USB با AVR و C شارپ

MCP-31

پروژه کنترل رله توسط پورت USB با AVR و C شارپ
پروژه تایپ حروف و اعداد با کیبورد 3.4 به زبان سی با avr

MCP-3

پروژه تایپ حروف و اعداد با کیبورد 3.4 به زبان سی با avr

پروژه کنترل دمای هیتر با استفاده از کنترل کننده PID با میکروکنترلر AVR

www.picpars.com پروژه کنترل دمای هیتر با استفاده از کنترل کننده PID با میکروکنترلر AVR 193

امروز یک پروژه جالب به نام کنترل کننده PID طراحی کردم، که هدف من از این پروژه پیاده سازی کنترلر PID با استفاده از میکروکنترلر AVR می باشد. من این پروژه را تا آنجایی که بتوانم به زبان ساده توضیح خواهم داد که افراد مبتدی هم متوجه قضایای این کنترلر PID شوند. و اما اول اینکه کنترل کننده PID چیست؟

 PID مخفف Proportional Integral Derivative می باشد. کنترل PID یعنی عمل کردن بر روی متغییر مورد کنترل از طریق ترکیب مناسب سه عمل کنترلی تناسبی، انتگرالی، مشتق گیر، که به شرح زیر میباشد:

  1. تناسبی: که در آن عمل کنترل با سیگنال خطای محرک که برابر تفاضل میان سیگنال ورودی و سیگنال پس خور است متناسب می باشد.
  2. انتگرالی: که در آن عمل کنترل با انتگرال سیگنال خطای محرک متناسب است.
  3. مشتق گیر: که در آن عمل کنترل با مشتق سیگنال خطای محرک متناسب است.

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


چه موقع باید از کنترلر PID استفاده کنیم؟

بهترین مثال برای روشن شدن این قضیه کنترل دمای یک هیتر می باشد که در پروتیوس هم این هیتر برای شبیه سازی وجود دارد. همانطور که می دانیم وقتی که ما هیتر را روشن می کنیم عوامل زیادی در دمای آن نقش دارند مثلا هیتر در فضای باز قرار دارد یا در فضای بسته و یا اینکه اندازه ابعاد اتاق چقدر است و ... خلاصه وقتی ما سیگنالی به هیتر اعمال می کنیم دما کم کم شروع به بالا رفتن می کند بعد از مدتی دیگه با اعمال تعدادی پالس مشخص دما به صورت تناسبی بالا نمی رود و می بینیم که دما به طور چشمگیری خود به خود بالا می رود و کنترل آن از دست ما خارج می شود. این مسئله را می توانید در پروتیوس به صورت عملی اجرا کنید که من آن را به صورت فایل جداگانه در پوشه Test_heter گذاشتم. می بینیم که کلیک کردن بر روی Button دمای هیتر بالا می رود شما چند کلیک که انجام بدهید دما سریع بالا می رود و دیگه قابل کنترل نیست و خود به خود بالا می رود. (حتما اجرا کنید تا به نقش مهم کنترلر PID پی ببرید)

 حالا نقش کنترل کننده PID چیست؟

کنترل PID از حاصل جمع سه کنترل کننده تناسبی، انتگرالی، مشتق گیر، تشکیل شده است به عنوان مثال ما می خواهیم دمای هیتر را روی 50 درجه سانتیگراد تثبیت کنیم پس مقدار مطلوب ما یا همان Set Point برابر با SP=50 می باشد.

 اگر ما سیگنالی به هیتر اعمال کنیم و دمای هیتر 50 درجه شود یعنی اینکه سیگنال خطا برابر با صفر شده پس فقط کنترل کننده تناسبی وارد عمل می شود و پروسه را کنترل می کند و قسمت انتگرالی و مشتق گیری ما مقدار صفر را خواهند داشت. OUT=P+0+0

اگر دمای اندازه گیری شده بیشتر یا کمتر از مقدار SP شود آنگاه کنترل کننده انتگرالی و مشتق گیر وارد عمل خواهند شد تا پروسه را به مقدار مطلوب برسانند. OUT=P+I+D  وقتی این دو کنترل کننده وارد عمل خواهند شد که ما سیگنال خطا داشته باشیم (صفر نباشد) آنگاه قسمت انتگرالی از سیگنال خطا انتگرال می گیرد و قسمت مشتق گیر هم از سیگنال خطا مشتق می گیرد که حاصل جمع این سه خروجی PID ما می باشد.

 تا اینجا مسئله روشن شده که کنترل PID چه کاربرد مهمی در پروسه ها مخصوصا پروسه های غیر قابل پیش بینی دارد. PID با استفاده خطا های قبلی و خطا های حال، آینده را پیش بینی کرده و تدابیری برای کنترل هر چه بهتر سیستم ایجاد می کند.

پس معاله خروجی ما برابر است با:

Kp+Ki(Integral (e(t)))+Kd(dif(e(t)))

که در این معادله Kp, Ki, Kd ضرایب تناسبی و انتگرالی و مشتق گیر ما می باشد که با انتخاب درست این ضرایب که اکثرا به صورت عملی و تجربی بدست می آیند می توان کنترلر PID را به نحوی تنظیم کرد که نه اورشوت و نه فراجهش بیش از حدی داشته باشیم و سیستم در وضعیت پایداری قرار گیرد. 

اما پروژه و قسمت های مختلف آن:

  1. LCD 4*16
  2. Micro ATMEGA32
  3. Keypad 3*4
  4. Heater (OVEN)

برنامه از قسمت های مختلفی که به صورت روتین نوشته شده است تشکیل شده که به شرح زیر می باشد:

  1.  روتین کیبورد که وظیفه اسکن کیبور را دارد و با آن مقدرا دمای مطلوب SP را وارد می کنیم.
  2. روتین وقفه INT0 که در آن برنامه اسکن کیبور نوشته شده.
  3. روتین مبدل آنالوگ به دیجیتال ADC که  دمای هیتر را تبدیل و برای میکرو آماده می کند.
  4. روتین LCD و حلقه بی نهایت که وظیفه نمایش اطلاعات و محاسبات مربوط به PID را انجام می دهد.

 جهت جلوگیری از شلوغی برنامه برنامه اسکن کیبورد را در یک فایل هدر جداگانه نوشتم و این فایل را با استفاده از دستور #include <keypad.h> معرفی می کنیم و در برنامه با استفاده از دستور key = keypad(); کیبورد اسکن و عدد مربوطه قرائت می شود.

 در روتین ext_int0_isr ابتدا وقفه سراسری غیر فعال شده و وارد حلقه شرطی می شود که شرط آنkey!=11 می باشد عدد 11 یعنی همان کد کلید # که به در اینجا به عنوان کلید ثبت تعریف شده و وقتی شرط برقرار شود یعنی ما کلید ثبت را فشار دادیم میکرو اعداد وارد شده را با یک ضرب و تقسیم ساده به هم می چسباند و به متغییر SP اختصاص داده می شود. از کلید * با کد 10 هم به عنوان کلید DEL استفاده شده.

در روتین adc_isr هم با استفاده از وقفه ADC عمل آنالوگ به دیجیتال انجام شده و دمای قرائت شده در متغییر temp قرار می گیرد.

در روتین main هم دستورات مربوط به پیکره بندی LCD و وقفه INT0 و ADC که همگی با Code Wizard انجام شد قرار گرفته است. در آخر هم عملیات مربوط به محاسبات کنترلر PID نوشته شده که به شرح زیر می باشد:

error=SP-temp; //H1
pterm=kp*error; //H2
iterm=(ki*error)+last_iterm;//H3
dterm=(error-last_error)*kd;//H4
D=(pterm+iterm+dterm)*100; //H5
if(D<1) D=1; //H6
if(D>1020) D=1020; //H7
last_iterm=iterm; //H8
last_error=error; //H9
D2=D; //H10
HD=D2/256; //change to int val [xx xx] //H11
LD=D2%256; //H12

 

  1. خطای فعلی برابر است با مقدار مطلوب منهای دمای اندازه گیری شده.
  2. مقدار خطای فعلی در ضریب تناسبی Kp ضرب می شود و جمله اول معادله یعنی قسمت تناسبی را ایجاد می کند.
  3. مقدار خطای فعلی در ضریب انتگرالی Ki ضرب می شود و با مقدار خطای قبلی جمع می شود و جمله دوم معادله یعنی قسمت انتگرالی را ایجاد می کند. (همانطور که می دانید انتگرال حاصل جمع می باشد)
  4. مقدار خطای فعلی از خطای قبلی کم می شود و در ضریب مشتق گیر Kd ضرب می شود و جمله سوم معادله یعنی قسمت مشتق گیر را ایجاد می کند.
  5. حاصل جمع سه قسمت در عدد 100 ضرب شده و در متغییر D قرار می گیرد.
  6. شرطی جهت جلوگیری از کوچکتر شدن D
  7. شرطی جهت جلوگیری از بزرگتر شدن D از 1020 (ماکزیمم OCR0 تایمر)
  8. برای مرحله بعدی خطای فعلی انتگرالی در درون متغییر خطای قبلی انتگرالی قرار می گیرد.
  9. برای مرحله بعدی خطای فعلی مشتق گیر در درون متغییر خطای قبلی مشتق گیر قرار می گیرد.
  10. کپی مقدار D
  11. عدد درون D2 یک عدد در حوزه شانزده بیتی می باشد که با یک عمل ضرب و تقسیم ساده به اجزای  هشت بیتی سبک و سنگین تجزیه می کنیم

 بعد از اجرای دستورات مرحله 10 و 11 ORC1BL و ORC1BH که حاصل نتیجه عملیات PID می باشد بارگذاری شده و موج PWM کنترل شده را ایجاد و به استفاده از یک تقویت ترانزیستوری به هیتر اعمال می شود و بنابراین دمای هیتر همواره روی مقدار SP باقی خواهد ماند.

اصول کار مدار: بعد اجرای شبیه سازی سیستم شروع کار میکند تا دمای هیتر را به دمای SP برساند. برای تغییر دادن SP می توانید کلید فشاری را کلیک کرده تا یک وقفه رخ دهد و برنامه وارد روتین اسکن کیبورد شود در اینجا شما می توانید SP را از 0 تا 99 وارد کنید جهت تصحیح کلید * را فشار دهید و برای ثبت نهایی SP کلید # را فشار دهید.

این پروژه همراه با توضیحات آن تنها در وب سایت www.picpars.com به صورت متن باز ارئه شده و کپی برداری از آن تنها با ذکر منبع امکان پذیر می باشد.

با تشکر فراوان سید محسن قاسمیان

ورژن نرم افزار ها: CodeVisionAVR V2.04.4a  و Proteus 7.7 sp2 Professional

  منبع: www.picpars.com

  لطفا مقالات، آموزش‌ها و پروژه های خود را به آدرس ایمیل ارتباطی ایمیل نمائید تا آن را با نام خودتان در سایت منتشر کنیم.




فایل های ضمیمه ( ورود - عضويت )

فایل شماره 108 | حجم 76 کیلوبایت | دانلود 11956 بار

منبع www.picpars.com  نویسنده: سید محسن قاسمیان

منبع www.picpars.com  دانلود پروژه کنترل دمای هیتر با استفاده از کنترل کننده PID با میکروکنترلر AVR

منبع www.picpars.com  پسورد: www.picpars.com

به این مطلب امتیاز دهید

برچسب ها:
تاریخ ارسال يكشنبه، 10 بهمن ماه، 1389    نویسندهنویسنده: مدیریت    نظرات 32 نظر    بازدید بازدید [ 64244 ]   پرینتنسخه چاپی
فایل پی دی اف فایل پی دی اف   ارسال به دوستان ارسال به دوستان   

در ارتباط با این مطلب پروژه های آماده زیر جهت خرید موجود است