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

بدون دیدگاه

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

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

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

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

در روش 4 بیتی پایه های D0 تا D3 استفاده نمی شن و به طور کلی در مدار به جایی متصلشون نمی کنیم. اتصال بقیه پایه ها مثل روش 8 بیتی هست.

راه اندازی LCD کاراکتری به روش 4 بیتی

ابتدا تغذیه LCD رو وصل می کنیم و 100mS صبر می کنیم. بعد مراحل زیر رو به ترتیب انجام می دیم:

1- پایه E رو high می کنیم
2- پایه RS رو low می کنیم
3- عدد 0011 رو روی پایه های D4 تا D7 قرار می دیم. طوری که رقم سمت چپ به D7 و رقم سمت راست به D4 اعمال بشه.
4- پایه E رو به مدت حداقل 500nS low می کنیم و بعد دوباره high می کنیم.
5- به مدت 50mS صبر می کنیم.
6- عدد 0011 رو روی باس داده قرار می دیم.
7- پایه E رو به مدت حداقل 500nS low می کنیم و بعد دوباره high می کنیم.
8- به مدت 100uS صبر می کنیم.
9- عدد 0011 رو روی باس داده قرار می دیم.
10- پایه E رو به مدت حداقل 500nS low می کنیم و بعد دوباره high می کنیم.
11- به مدت 100uS صبر می کنیم.
12- عدد 0010 رو روی باس داده قرار می دیم.
13- پایه E رو به مدت حداقل 500nS low می کنیم و بعد دوباره high می کنیم.
14- به مدت 100uS صبر می کنیم.
15- عدد 0010 رو روی باس داده قرار می دیم.
16- پایه E رو به مدت حداقل 500nS low می کنیم و بعد دوباره high می کنیم.
17- عدد 1000 رو روی باس داده قرار می دیم.
18- پایه E رو به مدت حداقل 500nS low می کنیم و بعد دوباره high می کنیم.
19- به مدت 100uS صبر می کنیم.
20- عدد 0000 رو روی باس داده قرار می دیم.
21- پایه E رو به مدت حداقل 500nS low می کنیم و بعد دوباره high می کنیم.
22- عدد 1000 رو روی باس داده قرار می دیم.
23- پایه E رو به مدت حداقل 500nS low می کنیم و بعد دوباره high می کنیم.
24- به مدت 100uS صبر می کنیم.
25- عدد 0000 رو روی باس داده قرار می دیم.
26- پایه E رو به مدت حداقل 500nS low می کنیم و بعد دوباره high می کنیم.
27- عدد 0001 رو روی باس داده قرار می دیم.
28- پایه E رو به مدت حداقل 500nS low می کنیم و بعد دوباره high می کنیم.
29- به مدت 3mS صبر می کنیم.
30- عدد 0000 رو روی باس داده قرار می دیم.
31- پایه E رو به مدت حداقل 500nS low می کنیم و بعد دوباره high می کنیم.
32- عدد 0110 رو روی باس داده قرار می دیم.
33- پایه E رو به مدت حداقل 500nS low می کنیم و بعد دوباره high می کنیم.
34- به مدت 100uS صبر می کنیم.
35- عدد 0000 رو روی باس داده قرار می دیم.
36- پایه E رو به مدت حداقل 500nS low می کنیم و بعد دوباره high می کنیم.
37- به مدت 100uS صبر می کنیم.
38- عدد 1100 رو روی باس داده قرار می دیم.
39- پایه E رو به مدت حداقل 500nS low می کنیم و بعد دوباره high می کنیم.
40- به مدت 100uS صبر می کنیم.

با پایان این مراحل LCD آماده نوشتنه. از ابتدای مرحله 15 تا آخر مرحله 19 مربوط به تنظیم حالت کاری LCD در نمایشگر 2 ردیفی، نحوه اتصال 4 بیتی و فونت 7×5 پیکسلی هست. از ابتدای مرحله 20 تا آخر مرحله 24 صفحه نمایشگر خاموش می شه. از ابتدای مرحله 25 تا آخر مرحله 29 دستور پاک کردن صفحه نمایش صادر می شه. از ابتدای مرحله 30 تا آخر مرحله 34 نحوه افزایش شاخص مکان نما مشخص می شه که در اینجا با تایپ هر کاراکتر یکی به اون اضافه می شه. و بالاخره از ابتدای مرحله 35 تا آخر مرحله 40 نمایشگر روشن می شه، cursor خاموش و چشمک زن هم غیر فعال می شه.
حالا LCD آماده دریافت کد اسکی کاراکترهاست. برای نمایش هر کاراکتر مراحل زیر رو انجام می دیم:

1- پایه RS رو high می کنیم.
2- 4 بیت سمت چپ کد اسکی رو روی باس داده قرار می دیم. مثلا 0100 رو برای حرف K
3- پایه E رو به مدت حداقل 500nS low می کنیم و بعد دوباره high می کنیم.
4- 4 بیت سمت راست کد اسکی رو روی باس داده قرار می دیم. مثلا 1011 رو برای حرف K
5- پایه E رو به مدت حداقل 500nS low می کنیم و بعد دوباره high می کنیم.

در اینجا اگه همه مراحل درست انجام شده باشه باید حرف K روی LCD ظاهر بشه.

اگه قصد دارید کار با میکروکنترلر 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 ایجاد کرد.

در صورتی که از سایت شرکت SEGGER مجموعه نرم افزار JLink رو دانلود و نصب کرده باشید حتما نرم افزار J-Flash Lite هم براتون نصب شده.
این نرم افزار قابلیت پروگرام کردن انواع میکروکنترلرهای مبتنی بر پردازنده های ARM رو داره و نسبت به نرم افزار J-Flash خیلی ساده تر و جمع و جور تره.
برای اینکه برنامه تون رو به حافظه فلش میکروکنترلر منتقل کنید باید اون رو به hex یا bin تبدیل کنید.

با فرض اینکه فایل آماده است ابتدا نرم افزار J-Flash Lite رو باز می کنیم. بعد طبق شکل زیر نوع میکروکنترلر رو انتخاب می کنیم و روش پروگرام رو هم به JTAG تغییر می دیم و نیازی هم به تغییر سرعت وجود نداره. همین طور که دیده می شه میکروکنترلر LPC1768 انتخاب شده.

در این مرحله با کلیک روی دکمه OK صفحه زیر ظاهر می شه.

از قسمت Data File فایل برنامه رو که در اینجا اسمش led.hex هست انتخاب می کنیم. بعد با کلیک روی دکمه Program Device فایل به حافظه میکرو منتقل می شه. اگه پروگرام درست انجام شده باشه مثل شکل زیر پیغام Programming Done رو می تونیم ببینیم.

اگه از هدر برد استفاده می کنین چند تا نکته ساده اما مهم هست که باید رعایت کنید ، وگرنه میکرو پروگرام نمی شه.
اول اینکه تغذیه هدربرد باید جداگانه تامین شه که این کار معمولا از طریق یک کابل USB جداگانه که به پورت هدربرد متصل می شه صورت می گیره.
دوم اینکه حتما دیپ سوییچ ها رو طبق دستورالعمل سازنده تنظیم کنید. مثلا در همین مثال از هدربرد فروشگاه eca استفاده شده که برای ارتباط با پروگرامر J-link باید دیپ سوییچ شماره یک فعال باشه و بقیه غیر فعال باشن.
سوم اینکه اگه هدربرد دکمه ON/OFF داره حتما اون رو روی حالت ON قرار بدید.