آیا میدانید قران دارای 1,771 مد است
راز جواني من در اين است که هر روز چيز تازه اي ياد
مي گيريم. از سولون |
![]() |
کامپایلر قدرتمند Atmel AVR Studio 6 نسخه 6
دانلود شبیه ساز قدرتمند proteus 7.10 SP0 همراه با کرک و لایسنس و کتابخانه
آموزش گام به گام برنامه نویسی AVR به زبان C
کتابخانه شبیه ساز LCD های نوکیا برای پروتیوس
پروژه تولید سیگنال های ویدیوئی PAL با AVR به زبان اسمبلی
پروژه ارتباط AVR با RS232 و برنامه کنترلی با ویژوال بیسیک
اتصال کیبورد 4*4 به میکروکنترلر AVR و نمایش روی سون سگمنت|
پروژه کنترل دمای هیتر با استفاده از کنترل کننده PID با میکروکنترلر AVR
![]()
امروز یک پروژه جالب به نام کنترل کننده PID طراحی کردم، که هدف من از این پروژه پیاده سازی کنترلر PID با استفاده از میکروکنترلر AVR می باشد. من این پروژه را تا آنجایی که بتوانم به زبان ساده توضیح خواهم داد که افراد مبتدی هم متوجه قضایای این کنترلر PID شوند. و اما اول اینکه کنترل کننده PID چیست؟ PID مخفف Proportional Integral Derivative می باشد. کنترل PID یعنی عمل کردن بر روی متغییر مورد کنترل از طریق ترکیب مناسب سه عمل کنترلی تناسبی، انتگرالی، مشتق گیر، که به شرح زیر میباشد:
چه موقع باید از کنترلر 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 را به نحوی تنظیم کرد که نه اورشوت و نه فراجهش بیش از حدی داشته باشیم و سیستم در وضعیت پایداری قرار گیرد. اما پروژه و قسمت های مختلف آن:
برنامه از قسمت های مختلفی که به صورت روتین نوشته شده است تشکیل شده که به شرح زیر می باشد:
جهت جلوگیری از شلوغی برنامه برنامه اسکن کیبورد را در یک فایل هدر جداگانه نوشتم و این فایل را با استفاده از دستور #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
بعد از اجرای دستورات مرحله 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
صفحات مرتبط با این مطلب اتصال کیبورد 4*4 به میکروکنترلر AVR کار با تایمر کانتر صفر AVR در حالت ساده به زبان سی کدویژن CodeVision کار با تایمر کانتر صفر AVR در حالت CTC به زبان سی کدویژن CodeVision کار با تایمر کانتر صفر AVR در حالت PWM سریع به زبان سی کدویژن CodeVision کار با مبدل آنالوگ به دیجیتال ADC میکروکنترلر AVR به زبان سی C لینک ثابت این صفحه: © کپی برداری از مطالب این سایت تنها با ذکر منبع مجاز می باشد
در صورت داشتن هر گونه سوال، نظر و پیشنهاد راجب این مطلب میتوانید در قسمت نظرات همین صفحه مطرح نمائید. همچنین با شرکت در نظر سنجی های سایت، ما را در بهبود بخشیدن به مطالب یاری کنید. پی-آیسی-پارس برنامه-نویسی-میکروکنترلرها میکرو میکروکنترلر میکروکنترولر برنامه زبان بیسیک سی فایل دانلود رایگان کنترل کنترلر پی ای دی کنترلpid کنترلرpid هوشمند تناسبی انتگرالی مشتق گیر خطا انالوگ دیجیتال مدولاسیون micro microcontroler avr pic C 8051 pdf Proteus schematic source bascom Download electronic free picpars picpars.com pid PID controlerPID conrol pid pwm adc Proportional Integral Derivative مرتبط باموضوع : پروژه RFID - آر اف آی دی - 100 درصد عملی - پروژه ساخت [ دوشنبه، 5 مهر ماه، 1389 ] 191068 مشاهده
دانلود پروژه کامل چراغ راهنمایی (trafic _ light) تحت کدویژن [ چهارشنبه، 3 شهريور ماه، 1389 ] 11609 مشاهده
دانلود پروژه کامل فرستنده و گیرنده رادیویی با ماژول TX433 and RX433 [ شنبه، 6 شهريور ماه، 1389 ] 7497 مشاهده
پروژه کنترل از راه دور 5 کاناله مادون قرمز به زبان سی [ شنبه، 9 ارديبهشت ماه، 1391 ] 697 مشاهده
دانلود پروژه کامل ماشین حساب مهندسی با AVR با (Codevision) [ پنجشنبه، 4 شهريور ماه، 1389 ] 8193 مشاهده
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
آیا این مطالب مورد رضایت شما واقع گردید؟ لطفا با رای دادن به این مطلب ما را در بهبود بخشیدن به مطالب کمک کنید. با اینکار به سایر دوستانتان نیز کمک خواهید کرد.
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| ||||||||||||||||||||||||||||||||||||||||||
رویداد ها: روز بزرگداشت ملاصدرا - روز بهره وری و بهینه سازی مصرف |