کنترل کننده PID گسسته

بدون دیدگاه

شرکت Atmel یک یادداشت کاربردی درباره آشنایی با کنترل کننده PID منتشر کرده که در اون روابط مربوط به پیاده سازی کنترل کننده PID گسسته هم توضیح داده شده. در واقع خواننده با استفاده از این توضیحات می تونه برنامه یک کنترل کننده PID گسسته رو بنویسه که به راحتی در میکروکنترلرهای AVR هم قابل اجرا باشه. البته خود برنامه داخل این یادداشت گنجونده نشده اما کسانی که با دقت این ترجمه رو بخونند می تونند برنامه دلخواهشون رو بنویسند.

فایل PDF این ترجمه رو می تونید از انتهای همین مطلب  به طور مستقیم دانلود کنید.

استفاده از این ترجمه با ذکر نام سایت karakit.ir بلامانع است.

در این مطلب قراره راه اندازی ترایاک رو به کمک یک اپتو ترایاک معروف از سری MOC30xx آموزش بدیم.
شاید تا حالا سعی کرده باشید که یک وسیله مثل المنت یا لامپ رو با میکرو روشن و خاموش کنید. یکی از انواع وسایلی که می تونه به عنوان کلید به کار بره ترایاک هست. ترایاک نسبت به رله جای کمتری می گیره و سرعت کلیدزنی بهتری هم داره.

و حتما می دونید که در انواع مختلف برای انواع حالات کاری در توانهای مختلف به کار می ره. اما این وسیله با برق 220 سر و کار داره. بنابراین باید راه مطمئنی برای راه اندازی و تریگر کردنش با میکرو پیدا کرد. یکی از ساده ترین راه ها استفاده از اپتوترایاک moc3022 است. اپتوترایاکهای سری moc30xx دارای 6 پایه هستند که انواع moc302x ساده تر و ارزانتر هستند. moc 3022 می تونه تا 400 ولت رو تحمل کنه. اما این آی سی ها توانایی عبور جریانهای تا 100 میلی آمپر رو دارند و برای راه اندازی کلیدهای قوی مانند ترایاکها به کار می رن. یکی از مزایای استفاده از اونها ایزوله شدن مدار میکرو از قسمت ولتاژ بالای مداره و دیگری راه اندازی مطمئنه.
شکل کلی مدار در زیر دیده می شه

سمت چپ بین پایه 1 و 2 یه LED داخلی وجود داره که اونو با یه مقاومت به میکرو متصل می کنیم. با روشن و خاموش شدن این LED ترایاک داخلی آی سی در سمت راست که بین پایه های 4 و 6 قرار داره فعال و غیر فعال می شه. مقاومتها باید کوچیک باشند. مثلا برای راه اندازی آی سی 470 اهم و برای اتصال اون به ترایاک اصلی 1 کیلو اهم مناسبه.
نکته پایانی اینه که نصب هیت سینک بر روی ترایاک فراموش نشه

اگه قصد دارید کار با میکروکنترلر LPC1768 رو که از خانواده ARM Cortex-M3 هست شروع کنید، احتمالا این آموزش که توسط کاراکیت براتون تدارک دیده شده بدردتون می خوره.
برای شروع یک فولدر در محل دلخواه ایجاد کنید و نام متناسب با پروژه رو بهش اختصاص بدید. بعد نرم افزار Keil رو باز کنید و طبق شکل زیر روی منوی Project برید و روی New uVision Project کلیک کنید و پروژه رو با نام دلخواه در فولدری که ایجاد کردید ذخیره کنید.

بلافاصله پنجره ای باز می شه و از شما می خواد که تراشه مورد نظر رو انتخاب کنید. ابتدا مثل شکل زیر نام NXP رو که سازنده میکروکنترلر LPC1768 هست انتخاب کنید.

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

با کلیک روی دکمه ok نرم افزار مثل شکل پایین از شما می پرسه که آیا باید فایل استارت آپ رو اضافه کنه یا نه که شما yes رو انتخاب می کنین.

حالا پروژه شما ایجاد شده و شما باید فایلهای مورد نیاز رو به پروژه تون اضافه کنید. قبل از هر کاری باید دو تا فایل ضروری رو توی فولدر پروژه کپی کنید. اولی system_LPC17xx.c و دومی core_cm3.c هست.

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

حالا منوی File رو باز کنید و با استفاده از گزینه New یک فایل جدید بوجود بیارید. این فایل فعلا به فرمت متن یا text هست.

بنابراین دوباره منوی File رو باز کنید و با کلیک روی گزینه Save as فایل رو در محل فولدر پروژه و با نام مناسب و پسوند .c ذخیره کنید. مثلا می تونید اسمش رو main.c بگذارید.

با اینکه فایلها در محل فولدر پروژه ایجاد شدند اما هنوز به خود پروژه اضافه نشدند. به همین علت در این مرحله باید طبق شکل زیر روی آیکن File extensions کلیک کنید تا فایلها رو به پروژه اضافه کنید.

با کلیک روی دکمه Add files فایلهای مورد نیاز رو به پروژه تون اضافه کنید.


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

حالا موقع اونه که تنظمات پروژه رو انجام بدیم. برای اینکار روی آیکن Target Options کلیک کنید.

پنجره ای باز می شه که چند تا لبه داره و به صورت پیش فرض لبه Target فعال هست. در این لبه اول مقدار کریستال متصل به میکروکنترلر رو تنظیم کنید. بعد اگه برای پروگرام میکرو از بوتلودر استفاده می کنید آدرس ابتدای حافظه رو در محل IROM1 به 0x2000 تغییر بدید

بعد از انجام این تنظیمات روی لبه Output کلیک کنید و طبق شکل زیر چک گزینه Create HEX File رو بذارید تا موقع کامپایل برنامه فایل HEX تولید بشه و بتونید اون رو روی میکرو پروگرام کنید. با کلیک روی دکمه OK کار تنظیمات پروژه به پایان می رسه و می تونید کدنویسیتون رو شروع کنید.

قبل از هر کاری طبق شکل زیر فایل هدر #include “lpc17xx.h” رو معرفی کنید. سایر فایلها و کتابخونه های مورد نیاز رو هم می تونید بعدا زیر همین خط اضافه کنید. بلوک تابع اصلی یا main رو هم طبق همین شکل اضافه کنید و حتما می دونید که متن برنامه اصلی داخل آکولادهای همین تابع نوشته می شه. نکته آخر اینه که بعد از آکولاد پایانی تابع اصلی main چند تا Enter بزنید و چند تا خط خالی ایجاد کنید تا موقع کامپایل برنامه با خطا مواجه نشید.

ضمن عرض تبریک بابت ایجاد و تنظیم موفقیت آمیز پروژه ، می تونید برنامه نویسی رو شروع کنید! تنها نکته ای که بد نیست بهش اشاره بشه اینه که روال ایجاد پروژه برای سایر میکروکنترلرهای خانواده ARM هم مشابه همین فرایندی هست که توضیح داده شد. اگه دقت کرده باشید فقط چند مرحله از مراحلی که توضیح داده شد منحصر به LPC1768 بود و با طی کردن مراحل مشابه می شه برای سایر میکروکنترلرهای ARM هم پروژه جدید در Keil ایجاد کرد.

شاید براتون پیش اومده باشه که نیاز داشته باشین توی یک پروژه میکروکنترلری سرعت یک فن 12 ولت رو کنترل کنید و احتمالا می دونید که یکی از راحت ترین راه حل ها استفاده از PWM هست. یعنی با یکی از پایه های میکروکنترلر یه سیگنال PWM تولید کنیم و با کم و زیاد کردن دیوتی سایکل سرعت فن رو کنترل کنیم.
در این صورت ممکنه با توجه به اینکه ولتاژ کاری میکروکنترلرها کمتر از 12 ولته ( معمولا 5 ولت یا پایین تر ) با این مشکل مواجه شده باشین که چطور می شه این کار رو انجام داد؟
مدار زیر کاری رو که لازمه انجام می ده:

DC pan control

سیگنال pwm رو که به فرض دامنه 5 ولت داره به آند LED اپتوکوپلر اعمال می کنیم. مقاومت R1 و خازن C1 با هم یک فیلتر پایین گذر رو تشکیل می دن و باعث می شن که با کم و زیاد کردن دیوتی سایکل ولتاژ DC که روی پایه 1 اپتوکوپلر افتاده کم و زیاد بشه. در نتیجه مقدار نوری که به گیرنده می رسه هم کم و زیاد می شه و جریان ترانزیستور گیرنده هم تغییر می کنه. حالا هر چقدر این جریان بیشتر بشه ولتاژ بیشتری روی مقاومت R3 می افته و باعث می شه که جریان کلکتور ترانزیستور Q1 هم بالا بره و فن با سرعت بیشتری کار کنه.
انتخاب مقادیر مقاومت R1 و خازن C1 به فرکانس سیگنال PWM ورودی بستگی داره و البته به حداقل جریانی که برای راه اندازی فن لازمه. بنابراین اگر فن جریان بیشتری برای راه اندازی لازم داشته باشه باید مقدار R1 رو کاهش بدین و بعد خازن متناسب با اون رو انتخاب کنبن.
در پایان باید گفت که می شه خازن C1 رو هم در مدار قرار ندین و در این صورت اگه با اسیلسکوپ نگاه کنید ولتاژ کاملا DC روی فن نمی افته و اعوجاج متناسب با سیگنال PWM روش دیده می شه، اما در عمل در عملکرد فن اختلالی ایجاد نمی کنه که ملموس باشه.