میکروکنترلر چیست؟

microcontrollers

میکروکنترلر یک مدار مجتمع فشرده است که برای کنترل یک عملیات خاص در یک سیستم تعبیه شده (embedded system) طراحی شده است. یک میکروکنترلر معمولی شامل پردازنده، حافظه و تجهیزات جانبی ورودی/خروجی (I/O) روی یک تراشه است.

گاهی اوقات به‌ عنوان یک کنترلر تعبیه‌شده (embedded system) یا واحد میکروکنترلر MCU شناخته می‌شود، میکروکنترلرها در وسایل نقلیه، ربات‌ها، ماشین‌ها، دستگاه‌های پزشکی، ماشین‌های فروش خودکار و لوازم‌خانگی و غیره یافت می‌شوند. آن‌ها اساساً کامپیوترهای ساده‌ای هستند که برای کنترل عملکردهای کوچک یک جزء بزرگ‌تر بدون سیستم‌عامل پیچیده طراحی شده‌اند.

میکروکنترلرها در انواع سیستم‌ها و دستگاه‌ها استفاده می‌شوند. دستگاه‌ها اغلب از چندین میکروکنترلر استفاده می‌کنند که با هم در داخل دستگاه کار می‌کنند تا وظایف مربوطه‌ی خود را انجام دهند.

به‌ عنوان‌ مثال، یک خودرو ممکن است دارای میکروکنترلرهای زیادی باشد که هرکدام سیستم‌های مختلف را در داخل خودرو کنترل می‌کنند، مانند ترمزهای ضد قفل، کنترل کشش، تزریق سوخت یا کنترل تعلیق. همه‌ی میکروکنترلرها با یکدیگر ارتباط برقرار می‌کنند تا اقدامات درست را انجام دهند. برخی ممکن است با یک کامپیوتر مرکزی پیچیده‌تر در خودرو ارتباط برقرار کنند، در حالی‌ که برخی دیگر ممکن است فقط با سایر میکروکنترلرها ارتباط برقرار کنند. میکروکنترلر داده‌ها را از طریق دستگاه‌های جانبی ورودی/خروجی خود ارسال و دریافت می‌کند و این داده‌ها را برای انجام وظایف محوله پردازش می‌کند.

عناصر اصلی میکروکنترلر

عناصر اصلی یک میکروکنترلر عبارت‌اند از:

  1. پردازنده (CPU)
  2. حافظه
  3. پورت‌های ورودی / خروجی (I/O)

پردازنده (cpu)

پردازنده یا همان CPU دستورات مختلفی را پردازش می‌کند و به آنها پاسخ می‌دهد و عملکرد میکروکنترلر را کنترل می‌کند. این عملکرد شامل انجام عملیات محاسباتی، منطقی و  انتقال ورودی/خروجی می‌شود. همچنین عملیات انتقال داده را انجام می‌دهد که دستورات را به اجزای دیگر در سیستم جاسازی‌شده‌ی بزرگ‌تر منتقل می‌کند.

حافظه

میکروکنترلر برای ذخیره‌ی داده‌هایی که پردازنده دریافت می‌کند و برای پاسخ به دستورالعمل‌هایی که برای اجرای آنها برنامه‌ریزی‌ شده است از حافظه استفاده می‌کند. میکروکنترلر دو نوع حافظه اصلی دارد.

  • حافظه‌ای که اطلاعات طولانی‌مدت دستورالعمل‌های اجرا شده توسط CPU را ذخیره می‌کند. این نوع حافظه غیر فرار است، یعنی اطلاعات را برای مدت طولانی بدون نیاز به منبع تغذیه حفظ می‌کند. به این نوع حافظه ROM گفته می‌شود.
  • حافظه‌ی داده که برای ذخیره‌سازی موقت داده‌ها هنگام اجرای دستورات موردنیاز است و برای ذخیره‌سازی داده‌های فرار استفاده می‌شود؛ به این معنی که داده‌های موجود در آن موقتی است و تنها زمانی که دستگاه به منبع برق متصل است، حفظ می‌شود. به این نوع حافظه RAM گفته می‌شود.

پورت‌های ورودی /خروجی (I/O)

پورت‌های ورودی/خروجی (I/O) رابط پردازنده با دنیای خارج (پرینتر،نمایشگر و …) هستند. پورت‌های ورودی اطلاعات را دریافت کرده و به صورت داده‌های باینری به پردازنده ارسال می‌کنند. پردازنده این داده‌ها را دریافت می‌کند و دستورالعمل‌های لازم را برای دستگاه‌های خروجی که وظایف خارج از میکروکنترلر را انجام می‌دهند ارسال می‌کند.

حافظه و پورت‌های ورودی/خروجی عناصر تعیین‌کننده‌ی میکروکنترلر هستند. اصطلاح پورت جانبی ورودی/خروجی، خود به اجزای پشتیبانی‌کننده‌ی مرتبط با حافظه و پردازنده اشاره دارد. عناصر پشتیبان زیادی وجود دارد که می‌توان آنها را به‌عنوان لوازم جانبی طبقه‌بندی کرد.

عناصر پشتیبانی‌کننده یک میکروکنترلر عبارت‌اند از:

  • مبدل آنالوگ به دیجیتال (ADC)
    مبدل آنالوگ به دیجیتال مداری است که سیگنال‌های آنالوگ را به سیگنال دیجیتال تبدیل می‌کند. در واقع این مدار اجازه می‌دهد تا پردازنده‌ی میکروکنترلر به دستگاه‌های آنالوگ خارجی مانند سنسورها متصل شود.
  • مبدل دیجیتال به آنالوگ (DAC)
    مبدل دیجیتال به آنالوگ عملکرد معکوس مبدل آنالوگ به دیجیتال ADC را انجام می‌دهد و به پردازنده‌ی موجود در قلب میکروکنترلر اجازه می‌دهد تا سیگنال‌های خروجی خود را به اجزای آنالوگ خارجی منتقل کند.
  • تایمر
    تایمر یا شمارنده تمام عملیات و عملکردهای زمان‌بندی‌شده شامل عملیات تولید پالس، اندازه‌گیری فرکانس، تایمر شمارنده‌ی پالس خارجی و … را کنترل می‌کند.
  • پورت سریال
    پورت سریال نمونه‌ای از رابط ورودی/خروجی است که به میکروکنترلر اجازه می‌دهد به اجزای خارجی متصل شود. عملکرد آن مشابه پورت USB یا موازی است.

انواع پردازنده‌ی میکروکنترلر

پردازنده‌ی یک میکروکنترلر بسته به کاربرد می‌تواند متفاوت باشد. تنوع پردازنده از پردازنده‌های ساده‌ی 4 بیتی، 8 بیتی یا 16 بیتی تا پردازنده‌های پیچیده‌تر 32 بیتی یا 64 بیتی را شامل می‌شود.

به طور کلی، میکروکنترلرها به گونه‌ای طراحی شده‌اند که به راحتی بدون اجزای محاسباتی اضافی مورد استفاده قرار گیرند، زیرا دارای حافظه‌ی داخلی و پین‌های کافی برای عملیات ورودی/خروجی هستند که به آن‌ها اجازه می‌دهد مستقیما به حسگرها و سایر اجزا متصل شوند.

معماری میکروکنترلر

معماری میکروکنترلر می‌تواند بر اساس معماری‌ هاروارد (hardvard) یا معماری فون نویمان (Von Neuman) باشد که هر دو، روش‌های مختلفی را برای تبادل داده بین پردازنده و حافظه ارائه می‌دهند. در معماری‌ هاروارد، گذرگاه داده و فرمان از هم جدا هستند و امکان انتقال هم‌زمان را فراهم می‌کنند. در معماری Von Neuman، از یک گذرگاه برای داده‌ها و دستورات استفاده می‌شود.

پردازنده‌های میکروکنترلر می‌توانند مبتنی بر محاسبات مجموعه‌ی دستورالعمل‌های پیچیده CISC یا محاسبات مجموعه‌ی دستورالعمل‌های کاهش‌یافته مبتنی بر RISC باشد. در معماری CISC مستقیم می‌توان با حافظه‌ی رم کار کرد که این حالت باعث کاهش پردازش داده می‌شود؛ همچنین نیازمندی‌های سخت‌افزاری بیشتری دارد یعنی ترانزیستورهای بیشتری مورد نیاز است. برخلاف معماری CISC درمعماری RISC ترانزیستورهای کمتری مورد نیاز است. این یعنی کاهش مصرف انرژی و گرما. در پردازنده‌ی RISC سرعت کلاک بالاتر است چون تاکید بیشتری بر نرم افزار دارد، همین‌طور دستورها در طی یک سیکل اجرا می‌شود. اینکه کدام پردازنده استفاده می‌شود بسته به برنامه متفاوت است.

زبان برنامه‌نویسی میکروکنترلر

هنگامی‌ که میکروکنترلرها برای اولین‌بار در دسترس قرار گرفتند، منحصراً از زبان اسمبلی استفاده می‌کردند. امروزه زبان برنامه‌نویسی C یک گزینه‌ی محبوب است. سایر زبان‌های رایج ریزپردازنده پایتون و جاوا اسکریپت هستند. لازم به ذکر است شما نیز می‌‌توانید برای برنامه نویسی میکروکنترلر از آموزش های آموزشگاه هوش برتر استفاده کنید.برای کسب اطلاعات بیشتر پیشنهاد می‌کنیم مقاله برنامه نویسی avr  را مطالعه کنید.

کاربردهای میکروکنترلر

میکروکنترلرها در طیف گسترده‌ای از صنایع، از جمله خانگی و سازمانی، اتوماسیون ساختمان ، تولید، روباتیک، خودروسازی، روشنایی، شبکه‌های هوشمند، اتوماسیون صنعتی، ارتباطات و اینترنت اشیا (IoT) استفاده می‌شوند.

یک کاربرد بسیار خاص میکروکنترلر استفاده از آن به عنوان یک پردازشگر سیگنال دیجیتال است. اغلب سیگنال‌های آنالوگ دریافتی با سطح خاصی از نویز همراه هستند. نویز در این زمینه به معنای مقادیر مبهم است که به راحتی نمی‌توان آن‌ها را به مقادیر دیجیتال استاندارد ترجمه کرد. یک میکروکنترلر می‌تواند از دو مبدل ADC و DAC خود برای تبدیل سیگنال آنالوگ نویز ورودی به سیگنال خروجی دیجیتال صاف استفاده کند.

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

میکروکنترلرهای پیچیده‌تر عملکردهای حیاتی را در هواپیما، فضاپیما، کشتی‌های دریایی، وسایل نقلیه، سیستم‌های پزشکی و پشتیبانی حیات و روبات‌ها انجام می‌دهند. در زمینه‌ی پزشکی میکروکنترلرها می‌توانند عملکرد قلب مصنوعی، کلیه یا سایر اندام‌ها را تنظیم کنند.

تفاوت میکروکنترلر و ریزپردازنده

تفاوت بین میکروکنترلرها و ریزپردازنده‌ها شاید خیلی واضح نباشد! زیرا میکروکنترلرها عملکردهای محاسباتی عمومی‌تری را انجام می‌دهند. مرزبندی آن‌ها را می‌توان بر اساس این واقعیت دسته‌بندی کرد که میکروکنترلرها با اتصال مستقیم به حسگرها و محرک‌ها، قابل استفاده هستند و شامل RAM، ROM و I/O می‌شوند؛ در حالی که ریزپردازنده‌ها برای به حداکثر رساندن قدرت پردازش روی تراشه، با اتصالات داخلی (به جای I/O مستقیم) طراحی شده‌اند که یعنی نیازمند به حافظه، تایمر و کانتر، هستند. به زبان ساده ماشین لباسشویی از میکروکنترلرها استفاده می‌کنند درحالی که کامپیوترهای رومیزی از ریزپردازنده استفاده می‌کنند.