یک میکروکنترلر یک مدار یکپارچه فشرده برای مدیریت یک عملیات خاص در یک سیستم مجتمع می باشد. یک MCU شامل پروسسور، حافظه و ورودی-خروجی (I/O) بر روی یک چیپ می باشد.
گاهی اوقات به یک کنترلر تعبیه شده یا واحد میکروکنترلر (MCU) گفته می شود. میکروکنترلرها در وسایل نقلیه، رباتها، ماشین های اداری، تجهیزات پزشکی، فرستنده های رادیویی موبایل، وندینگ ماشین (دستگاه فروش اتوماتیک) و لوازم خانگی کاربرد دارند. در واقع کامپیوترهای PC کوچکی هستند که به گونه ای طراحی شده اند تا قطعات بزرگتر را بدون سیستم عامل front-end پیچیده کنترل کنند.
میکروکنترلرها چگونه کار می کنند؟
یک میکروکنترلر درون یک سیستم برای کنترل یک تابع یکتا در یک دستگاه تعبیه شده است. این کار را با استفاده از توصیف داده هایی که از دستگاه های ورودی-خروجی دریافت می کند و با استفاده از پردازنده مرکزی انجام می دهد. اطلاعات موقتی که میکروکنترلر دریافت می کند در حافظه داده ای، جاییکه پروسسور به آنها دسترسی دارد و دستورات ذخیره شده در حافظه برنامه نویسی خود را برای رمز گشایی و به کارگیری داده های ورودی استفاده می کند، ذخیره می شوند. سپس از دستگاههای ورودی-خروجی برای ارتباط و نمایش عملکرد مناسب استفاده می کند.
میکروکنترلرها در سیستم ها و دستگاه های بسیاری کاربرد دارند. دستگاهها اغلب از چندین میکروکنترلر استفاده می کنند که برای کنترل کارهایی که این دستگاهها انجام می دهند به صورت هماهنگ با هم در یک دستگاه واحد کار می کنند.
به عنوان مثال، یک اتومبیل از چندین میکروکنترلر تشکیل شده که چندین سیستم درون آن همانند سیستم ترمز ABS ، سیستم کنترل جهت حرکت ماشین و سیستم کنترل میزان سوخت ماشین را کنترل می کند. تمام این میکروکنترلرها با هم ارتباط دارند تا عملکرد درستی را ارائه دهند. بعضی از آنها نیز با کامپیوتر مرکزی پیچیده تری که درون اتومبیل قرار گرفته، ارتباط دارند و باقی آنها تنها با میکروکنترلرهای دیگر ارتباط برقرار می کنند. آنها داده ها را از طریق دستگاه های ورودی-خروجی ارسال و دریافت می کنند و آن داده ها را برای کارهای مورد نظر پردازش می کنند.
میکروکنترلر از چه قطعاتی تشکیل شده است؟
قطعات اصلی یک میکروکنترلر شامل موارد زیر می باشد:
پردازنده (CPU) : یک پروسسور در واقع مغز دستگاه می باشد. دستورات مختلف میکروکنترلر که شامل عملیات منطقی، محاسباتی و ورودی-خروجی می باشد را پردازش می کند. همچنین عملیات انتقال داده را که بین دستورات و قطعات دیگر در یک سیستم تعبیه شده بزرگتر ارتباط برقرار می کند، فراهم می کند.
حافظه : حافظه ی میکروکنترلر برای ذخیره داده هایی که پردازنده دریافت می کند، به کار می رود و برای پاسخ به دستورالعمل هایی که برای انجام آنها برنامه ریزی شده استفاده می شود. میکروکنترلر دارای دو نوع حافظه اصلی است:
حافظه داده ، که در هنگام اجرای دستورالعمل ، برای ذخیره موقت داده ها مورد نیاز است. حافظه اطلاعات بی ثبات است ، به این معنی که داده هایی که در اختیار دارد موقتی است و فقط در صورت اتصال دستگاه به منبع تغذیه نگهداری می شود.
1. حافظه برنامه : دستورات بزرگ درباره دستورالعمل هایی که پردازنده مرکزی انجام می دهد را ذخیره می کند. حافظه برنامه یک حافظه غیر فرار است، به این معنا که اطلاعات را بدون نیاز به منبع تغذیه ذخیره می کند.
2. حافظه داده : هنگام اجرای دستورالعمل ها برای ذخیره موقت داده ها به کار می رود. حافظه داده فرار است، به این معنا که داده های که ذخیره می کند، موقتی است و تنها زمانیکه به منبع تغذیه متصل است، عمل می کند.
قطعات ورودی-خروجی : دستگاه های ورودی و خروجی رابط هایی برای اتصال به دستگاه های خارجی هستند. پورت های ورودی اطلاعات را دریافت می کنند و به شکل داده های باینری به پردازنده می فرستند. پروسسور آن داده ها را دریافت می کند و دستورالعمل های لازم را به بخشهایی که وظایف را در میکروکنترلر انجام می دهند، ارسال می کند.
علاوه بر پروسسور، حافظه و دستگاه های ورودی-خروجی که المان های موجود در میکروکنترلر هستند، قطعات دیگری را نیز شامل می شود. دستگاه های ورودی-خروجی به نوعی دستگاه های پشتیبانی می باشند که با حافظه و پردازنده ارتباط دارند. دستگاه های پشتیبانی زیادی وجود دارد که می توانند به عنوان دستگاه های جانبی دسته بندی می شوند.
قطعات پشتیبانی یک میکروکنترلر شامل چه مواردی است؟
- مبدل آنالوگ به دیجیتال (ADC) : یک ADC مداری است که سیگنالهای آنالوگ را به سیگنالهای دیجیتال تبدیل می کند. به پردازنده مرکزی در میکروکنترلر اجازه می دهد تا با دستگاه های آنالوگ خارجی همانند سنسورها ارتباط برقرار کند.
- مبدل دیجیتال به آنالوگ (DAC) : یک DAC عملکردی معکوس نسبت به مبدل ADC دارد و به پردازنده مرکزی در میکروکنترلر اجازه می دهد تا سیگنالهای خارجی آن با دستگاه های آنالوگ خارجی ارتباط برقرار کنند.
- سیستم bus : سیستم bus یک سیم اتصال است که تمام قطعات میکروکنترلر را به یکدیگر وصل می کند.
- پورت سریال : پورت سریال یک مثال از پورت های ورودی-خروجی است که به میکروکنترلر اجازه می دهد تا به قطعات خارجی متصل شود. عملکردی مشابه usb یا پورت موازی دارد اما در نحوه تبادل بیت متفاوت است.
مشخصات میکروکنترلر
پردازنده میکروکنترلر از نظر کاربردی متفاوت است. انواع آنها شامل پروسسورهای ساده 4 بیت، 8 بیت یا 16 بیت و انواع پیچیده تر شامل 32 بیت و 64 بیت می باشد. میکروکنترلرها می توانند از انواع حافظه فرار مانند حافظه RAM و انواع حافظه غیر فرار مانند فلش مموری، حافظه های فقط خواندنی EPROM و EEPROM استفاده کنند.
عموماً، میکروکنترلرها به گونه ای طراحی شده اند که بدون نیاز به محاسبات اضافی قطعات، قابل استفاده باشند، زیرا آنها دارای حافظه onboard مناسب هستند و همچنین دارای پین هایی برای اتصال به قطعات ورودی و خروجی هستند. به همین دلیل می توانند به طور مستقیم به سنسورها و قطعات دیگر متصل شوند.
معماری میکروکنترلر می تواند مبتنی بر معماری Harvard یا معماری von Neumann باشد که هر دو روش متفاوتی برای تبادل داده بین پردازنده و حافظه ارائه می دهند. در معماری Harvard ، داده باس (data bus) و دستورالعمل جداگانه هستند و امکان انتقال همزمان را می دهند. در معماری von Neumann، یک bus برای داده و دستورالعمل به کار می رود.
پردازنده های میکروکنترلر می توانند مبتنی بر محاسبه مجموعه دستورالعمل پیچیده (CISC) یا محاسبه مجموعه دستورالعمل کاهش یافته (RISC) باشد. CISC معمولاً حدود 80 دستورالعمل دارد در حالیکه RISC حدود 30 دستورالعمل دارد و همچنین دارای حالتهای آدرس دهی بیشتری می باشد به طوریکه 24-12 حالت مختلف دارد در صورتیکه RISC 3-5 حالت دارد. پیاده سازی CISC ساده تر است و کارایی حافظه آن بیشتر است. به دلیل چرخه کلاک مورد نیاز زیاد برای اجرای دستورالعمل ها می تواند باعث تخریب عملکرد شود. RISC که تأکید بیشتری بر نرم افزار دارد، به دلیل مجموعه دستور العمل ساده و سادگی در طراحی معمولاً کارایی بیشتری نسبت به پروسسورهای CISC که بیشتر بر سخت افزار تأکید می کنند، دارد. اما به دلیل تأکید بر نرم افزار، از نظر نرم افزاری پیچیدگی بیشتری دارد.
زمانیکه میکروکنترلرها برای اولین بار عرضه شدند، تنها از زبان اسمبلی استفاده می کردند. امروزه، زبان برنامه نویسی C بسیار پرکاربرد می باشد. زبانهای معروف دیگر میکروپروسسورها پایتون و جاوا اسکریپت می باشد.
میکروکنترلرها پین های ورودی و خروجی را برای اجرای عملکردی قطعات جانبی همانند سنسورها را ارائه می دهند. این نوع عملکردها شامل مبدل های آنالوگ به دیجیتال، کنترلر نمایشگر LCD، کلاک بلادرنگ (RTC)، فرستنده و گیرنده همزمان و غیر همزمان جهانی (USART)، تایمرها، فرستنده و گیرنده غیر همزمان جهانی (UART) و اتصال USB (باس سریال جهانی) می باشند. سنسورهایی که داده های مربوط به رطوبت و دما را جمع آوری می کنند، اغلب به میکروکنترلرها متصل هستند.
انواع میکروکنترلرها
میکروکنترلرهای پرکاربرد شامل Intel MCS-51 که اغلب به عنوان میکروکنترلر 8051 گفته می شود و در سال 1985 ساخته شده، میکروکنترلر AVR توسط Atmel در سال 1996 ساخته شد و کنترلر رابط قابل برنامه نویسی (PIC) از تکنولوژی میکروچیپ استفاده می کند و میکروکنترلرهای ARM (دستگاههای پیشرفته RISC) مختلف دارای مجوز و لایسنس می باشند.
تعدادی از کمپانی های تولید کننده و فروشنده میکروکنترلرها شامل: NXP Semiconductors، Renesas Electronics، Silicon Labs و Texas Instruments می باشند.
کاربرد میکروکنترلرها
میکروکنترلرها در برنامه ها و صنایع مختلف از جمله در خانه ها و شرکت ها، اتوماسیون ساختمان، تولید، رباتیک، اتومبیل ها، روشنایی، انرژی هوشمند، اتوماسیون صنعتی، ارتباطات و اینترنت اشیا کاربرد دارند.
یکی از کاربردهای بخصوص میکروکنترلرها پردازش سیگنال دیجیتالی می باشد. سیگنالهای آنالوگ دارای مقداری نویز هستند. نویزها مقادیر مبهمی هستند که به آسانی به مقادیر دیجیتالی استاندارد تبدیل نمی شوند.
یک میکروکنترلر می تواند با استفاده از ADC یا DAC سیگنالهای آنالوگ نویزی را به سیگنالهای دیجیتالی خروجی تبدیل کنند.
ساده ترین میکروکنترلرها کار سیستم های الکترومکانیکی موجود در وسایل رفاهی روزمره مانند اجاق ها، یخچال، توستر، دستگاه های تلفن همراه، فیبرهای کلیدی، سیستم های بازی ویدیویی، تلویزیون ها و سیستم های آبیاری چمن را تسهیل می کنند. همچنین در دستگاه های اداری مانند فتوکپی، اسکنرها، ماشین های فکس و پرینترها و همچنین کنتورهای هوشمند، دستگاه های خودپرداز و سیستم های امنیتی کاربرد دارند.
میکروکنترلرهای پیشرفته تر عملکردهای مهم را در هواپیماها، فضاپیماها، کشتی های اقیانوس، وسایل نقلیه، سیستم های پزشکی و پشتیبانی از زندگی و همچنین در رباتها کنترل می کنند. در بخش پزشکی، می توانند عملکرد قلب مصنوعی، کلیه یا سایر اُرگان ها را تنظیم کنند. همچنین می توانند در دستگاه های پروتز نیز به کار روند.
مقایسه میکروکنترلرها و میکروپروسسورها
تفاوت بین میکروکنترلرها و میکروپروسسورها به دلیل تراکم تراشه و پیچیدگی تولید کاملاً مشخص نیست. به طور کلی می توان گفت که میکروکنترلرها قابلیت اتصال مستقیم به سنسورها و محرک ها را دارند در حالیکه میکروپروسسورها به گونه ای طراحی شده اند که بالاترین قدرت پردازش و محاسبات را بر روی چیپ ارائه می دهند و همچنین اتصالات داخلی باس را برای پشتیبانی سخت افزاری همچون RAM و پورت های سریال ارائه می دهند. به طور مثال، قهوه سازها از میکروکنترلرها و کامپیوترها از میکروپروسسورها استفاده می کنند.
میکروکنترلرها ارزانتر هستند و نسبت به میکروپروسسورها برق کمتری مصرف می کنند. میکروپروسسورها حافظه RAM داخلی، ROM یا قطعات جانبی دیگر بر روی چیپ ندارند، اما با استفاده از پین هایی که دارد به این قطعات وصل می شود. یک میکروپروسسور را قلب یک سیستم کامپیوتری و میکروکنترلر را قلب یک سیستم embedded می گویند.
انتخاب میکروکنترلر مناسب
نکات زیادی برای انتخاب یک میکروکنترلر مناسب در هر پروژه وجود دارد. علاوه بر هزینه، میزان سرعت حداکثر، میزان حافظه RAM یا ROM، تعداد و انواع پین های ورودی-خروجی، میزان مصرف برق و محدودیت ها و پشتیبانی، مسائلی هستند که زمان انتخاب میکروکنترلر باید به آنها توجه کرد.
به طور کلی برای انتخاب یک میکروکنترلر مناسب به سوالات زیر پاسخ دهید:
- چه سخت افزارهای جانبی نیاز است؟
- آیا به ارتباط های خارجی نیاز است؟
- از چه معماری باید استفاده کرد؟
- چه منابعی برای میکروکنترلر وجود دارد؟
- آیا میکروکنترلر در بازار موجود است؟