میکروکنترلر (Microcontroller) یک تراشه الکترونیکی قابل برنامهریزی است که برای کنترل و مدیریت تجهیزات و سیستمهای الکترونیکی طراحی شده است. این قطعه معمولاً شامل پردازنده، حافظه و واحدهای جانبی ورودی و خروجی در یک تراشه است.
به زبان ساده، میتوان میکروکنترلر را یک کامپیوتر کوچک در نظر گرفت که برای انجام وظایف مشخص در داخل یک دستگاه قرار میگیرد.
میکروکنترلر میتواند اطلاعات را از سنسورها دریافت کند، آنها را پردازش کند و بر اساس برنامهای که در حافظه آن قرار گرفته است، فرمان لازم را به قطعات مختلف ارسال کند.
برای مثال، در یک سیستم کنترل دما، میکروکنترلر میتواند دمای محیط را از یک سنسور دریافت کند، مقدار آن را با دمای تنظیمشده مقایسه کند و در صورت نیاز فن یا سیستم گرمایشی را روشن یا خاموش کند.
عملکرد میکروکنترلر بر پایه اجرای یک برنامه از پیش تعیینشده است.
فرایند کلی عملکرد آن را میتوان به شکل زیر توضیح داد:
دریافت اطلاعات → پردازش دادهها → تصمیمگیری → ارسال فرمان
برای مثال، فرض کنید یک میکروکنترلر در سیستم کنترل یک موتور استفاده شده است.
ابتدا اطلاعاتی مانند سرعت موتور یا موقعیت شفت از سنسورها دریافت میشود. سپس پردازنده داخلی میکروکنترلر این اطلاعات را بررسی میکند.
در مرحله بعد، بر اساس برنامه موجود در حافظه، تصمیم لازم گرفته میشود و در نهایت سیگنال مناسب برای درایور موتور یا سایر عملگرها ارسال میشود.
این چرخه میتواند هزاران یا میلیونها بار در مدت کوتاه تکرار شود.
میکروکنترلر فقط یک پردازنده ساده نیست و معمولاً چندین بخش مهم را در یک تراشه در اختیار طراح قرار میدهد.
هسته پردازنده یا CPU وظیفه اجرای دستورهای برنامه را بر عهده دارد.
معماری پردازنده، سرعت کلاک، مجموعه دستورها و امکانات پردازشی از عوامل مهم در عملکرد میکروکنترلر هستند.
در بسیاری از میکروکنترلرهای امروزی، حافظه Flash برای ذخیره برنامه استفاده میشود.
یکی از مزایای Flash این است که اطلاعات آن پس از قطع برق نیز حفظ میشود؛ بنابراین برنامهای که روی میکروکنترلر نوشته شده، در خاموش و روشن شدن دستگاه باقی میماند.
RAM برای نگهداری موقت دادههایی که برنامه هنگام اجرا به آنها نیاز دارد استفاده میشود.
متغیرها، دادههای موقت و برخی اطلاعات پردازششده در زمان اجرای برنامه میتوانند در RAM قرار بگیرند.
برخی میکروکنترلرها دارای EEPROM داخلی هستند.
این حافظه برای نگهداری اطلاعاتی که باید بعد از خاموش شدن دستگاه باقی بمانند، مانند تنظیمات کاربر یا پارامترهای کالیبراسیون، کاربرد دارد.
البته همه میکروکنترلرها EEPROM داخلی ندارند.
پایههای GPIO یا ورودی و خروجی عمومی امکان ارتباط میکروکنترلر با قطعات خارجی را فراهم میکنند.
این پایهها میتوانند برای اتصال مواردی مانند:
استفاده شوند.
ADC یا مبدل آنالوگ به دیجیتال برای تبدیل سیگنالهای آنالوگ به داده قابل پردازش توسط پردازنده استفاده میشود.
برای مثال، اگر یک سنسور ولتاژی متناسب با دما تولید کند، ADC میتواند این ولتاژ را به مقدار دیجیتال تبدیل کند تا میکروکنترلر آن را پردازش کند.
Timer و Counter برای ایجاد تأخیر، اندازهگیری زمان، شمارش رویدادها و تولید سیگنالهای زمانبندیشده استفاده میشوند.
این بخش در بسیاری از پروژههای کنترل موتور، تولید PWM و اندازهگیری سیگنالها اهمیت زیادی دارد.
PWM یا مدولاسیون پهنای پالس برای کنترل مواردی مانند سرعت موتور DC، شدت نور LED و برخی عملگرهای دیگر استفاده میشود.
در بسیاری از میکروکنترلرها، واحد PWM به صورت سختافزاری در تراشه وجود دارد.
میکروکنترلرها معمولاً دارای رابطهای ارتباطی مختلفی هستند.
برخی از رایجترین آنها عبارتاند از:
وجود هر رابط و مشخصات آن به خانواده و مدل میکروکنترلر بستگی دارد.
میکروکنترلرها را میتوان از جنبههای مختلف دستهبندی کرد.
میکروکنترلرهای 8 بیتی برای بسیاری از پروژههای ساده و کمهزینه مناسب هستند.
این گروه به دلیل سادگی، مصرف توان مناسب و هزینه پایین در پروژههای آموزشی و برخی تجهیزات Embedded کاربرد دارند.
میکروکنترلرهای 16 بیتی در برخی کاربردهای صنعتی و کنترلی استفاده میشوند و از نظر توان پردازشی و امکانات بین بسیاری از محصولات 8 و 32 بیتی قرار میگیرند.
میکروکنترلرهای 32 بیتی معمولاً امکانات پردازشی و جانبی بیشتری دارند و در پروژههای پیشرفتهتر مورد استفاده قرار میگیرند.
بسیاری از خانوادههای مبتنی بر معماری ARM در این دسته قرار میگیرند.
در بازار خانوادههای مختلفی از میکروکنترلرها وجود دارد.
میکروکنترلرهای AVR به دلیل سادگی و وجود منابع آموزشی فراوان، در پروژههای آموزشی و سیستمهای Embedded مورد استفاده قرار گرفتهاند.
خانواده PIC نیز یکی از خانوادههای شناختهشده میکروکنترلرها است و در پروژههای صنعتی، آموزشی و کنترل تجهیزات کاربرد دارد.
ARM یک معماری پردازنده است و طیف گستردهای از میکروکنترلرهای 32 بیتی بر پایه هستههای ARM تولید شدهاند.
RISC-V یک معماری مجموعه دستورهای باز است که در برخی میکروکنترلرها و سیستمهای Embedded جدید مورد استفاده قرار گرفته است.
میکروکنترلرها تقریباً در هر حوزهای که به کنترل الکترونیکی نیاز باشد میتوانند مورد استفاده قرار گیرند.
در محصولاتی مانند:
میتوان از میکروکنترلر برای کنترل عملکرد دستگاه استفاده کرد.
در خودروهای جدید، تعداد زیادی سیستم الکترونیکی وجود دارد که برای کنترل آنها از میکروکنترلرها استفاده میشود.
از جمله کاربردها میتوان به:
اشاره کرد.
در تجهیزات صنعتی، میکروکنترلر میتواند وظایفی مانند کنترل موتور، خواندن سنسورها، کنترل شیرها و ارتباط با سایر تجهیزات را انجام دهد.
در رباتها، میکروکنترلر برای دریافت اطلاعات از سنسورها و کنترل موتور، سروو موتور، LED، نمایشگر و سایر تجهیزات مورد استفاده قرار میگیرد.
در تجهیزات IoT، میکروکنترلر میتواند دادههای سنسورها را دریافت و در صورت وجود رابط ارتباطی مناسب، اطلاعات را به شبکه یا سایر دستگاهها ارسال کند.
یکی از سوالات رایج در زمینه قطعات الکترونیکی، تفاوت Microcontroller و Microprocessor است.
| ویژگی | میکروکنترلر | میکروپروسسور |
|---|---|---|
| CPU | داخلی | داخلی |
| حافظه | معمولاً داخلی | معمولاً خارجی یا ترکیبی |
| ورودی و خروجی | اغلب داخلی | معمولاً نیازمند تراشههای جانبی |
| مصرف انرژی | معمولاً پایینتر | بسته به سیستم میتواند بیشتر باشد |
| کاربرد | کنترل تجهیزات | سیستمهای پردازشی پیچیدهتر |
| طراحی | نسبتاً سادهتر | معمولاً پیچیدهتر |
| هزینه سیستم | اغلب پایینتر | بسته به طراحی متفاوت |
به طور خلاصه، میکروکنترلر بیشتر برای کنترل یک دستگاه یا فرایند مشخص طراحی شده است، در حالی که میکروپروسسور بیشتر در سیستمهایی با نیاز پردازشی عمومی و پیچیده مانند کامپیوترها کاربرد دارد.
استفاده از میکروکنترلر در طراحی تجهیزات الکترونیکی مزایای مختلفی دارد.
بخشهای مختلف مانند CPU، حافظه و برخی واحدهای جانبی در یک تراشه قرار دارند.
تجمیع اجزای مختلف میتواند به کوچکتر شدن PCB کمک کند.
عملکرد دستگاه را میتوان با تغییر نرمافزار تغییر داد، بدون اینکه الزاماً ساختار اصلی سختافزار تغییر کند.
بسیاری از میکروکنترلرها برای سیستمهای کممصرف طراحی شدهاند و دارای حالتهای مختلف مدیریت توان هستند.
در بسیاری از کاربردها استفاده از یک میکروکنترلر میتواند هزینه و پیچیدگی مدار را کاهش دهد.
وجود ADC، PWM، تایمر، GPIO و رابطهای ارتباطی در یک تراشه باعث سادهتر شدن طراحی میشود.
با وجود مزایای فراوان، میکروکنترلرها برای تمام پروژهها بهترین گزینه نیستند.
برخی محدودیتها عبارتاند از:
بنابراین انتخاب میکروکنترلر باید بر اساس نیاز واقعی پروژه انجام شود.
انتخاب میکروکنترلر یکی از مهمترین مراحل طراحی یک سیستم Embedded است.
ابتدا مشخص کنید که پروژه به یک میکروکنترلر 8، 16 یا 32 بیتی نیاز دارد.
البته تعداد بیت به تنهایی معیار مناسبی برای مقایسه عملکرد نیست و باید مشخصات کامل پردازنده بررسی شود.
فرکانس بالاتر الزاماً به معنی مناسبتر بودن میکروکنترلر نیست. نیاز پردازشی پروژه باید با سرعت پردازنده تطبیق داده شود.
حجم برنامه، دادهها و نیازهای سیستم تعیین میکند که چه مقدار Flash و RAM موردنیاز است.
تعداد ورودی و خروجی مورد نیاز باید با تعداد GPIOهای موجود در میکروکنترلر مطابقت داشته باشد.
اگر پروژه با سیگنالهای آنالوگ سروکار دارد، مشخصات ADC اهمیت زیادی دارد.
در برخی کاربردها وجود DAC نیز مورد نیاز است.
اگر قرار است میکروکنترلر با ماژولها یا تجهیزات دیگر ارتباط داشته باشد، رابطهای موردنیاز مانند UART، SPI، I2C یا CAN باید در نظر گرفته شوند.
برای تجهیزات باتریمحور، مصرف توان و حالتهای Sleep اهمیت زیادی دارند.
برای کاربردهای صنعتی و خودرویی، محدوده دمای کاری میکروکنترلر باید با شرایط محیطی سازگار باشد.
وجود کامپایلر، کتابخانه، SDK، ابزار برنامهنویسی و منابع آموزشی مناسب میتواند فرایند توسعه را بسیار سادهتر کند.
برای استفاده از میکروکنترلر باید Firmware مناسب برای آن نوشته و در حافظه برنامه قرار داده شود.
زبانها و ابزارهای مورد استفاده به خانواده میکروکنترلر بستگی دارند، اما زبانهایی مانند C و C++ در توسعه سیستمهای Embedded بسیار رایج هستند.
فرایند کلی توسعه شامل مراحل زیر است:
برای انتقال برنامه به میکروکنترلر از ابزارهایی مانند Programmer یا Debugger/Programmer استفاده میشود.
نوع ابزار موردنیاز به خانواده میکروکنترلر بستگی دارد.
برخی میکروکنترلرها از رابطهایی مانند JTAG، SWD، ISP یا روشهای دیگر برای برنامهریزی و دیباگ استفاده میکنند.
خرابی میکروکنترلر میتواند علائم مختلفی داشته باشد، اما تشخیص آن نیازمند بررسی مدار است.
برخی نشانههای احتمالی عبارتاند از:
با این حال، پیش از تعویض میکروکنترلر باید مواردی مانند منبع تغذیه، کلاک، مدار Reset، پروگرام بودن تراشه، اتصالات PCB و Firmware بررسی شوند.
برای خرید میکروکنترلر مناسب، صرفاً توجه به نام خانواده کافی نیست.
موارد زیر را بررسی کنید:
همچنین بهتر است مشخصات قطعه با دیتاشیت و مستندات رسمی سازنده تطبیق داده شود.
میکروکنترلر یک تراشه قابل برنامهریزی است که معمولاً پردازنده، حافظه و واحدهای جانبی مختلف را در یک مدار مجتمع در اختیار طراح قرار میدهد. این قطعه برای کنترل تجهیزات و فرایندهای الکترونیکی در حوزههایی مانند خودرو، لوازم خانگی، تجهیزات صنعتی، رباتیک، اینترنت اشیا و سیستمهای Embedded کاربرد گستردهای دارد.
میکروکنترلرها در معماریها و خانوادههای مختلفی تولید میشوند و از نظر توان پردازشی، حافظه، تعداد پایهها، رابطهای ارتباطی و امکانات جانبی با یکدیگر تفاوت دارند.
برای انتخاب یک میکروکنترلر مناسب باید ابتدا نیازهای پروژه مشخص شود و سپس عواملی مانند پردازنده، حافظه، GPIO، ADC، PWM، رابطهای ارتباطی، مصرف انرژی، دمای کاری و ابزارهای توسعه مورد بررسی قرار گیرد.
در نهایت، انتخاب یک میکروکنترلر مناسب میتواند باعث کاهش هزینه، کوچکتر شدن مدار، کاهش مصرف انرژی و افزایش انعطافپذیری محصول نهایی شود.
میکروکنترلر یک تراشه قابل برنامهریزی است که معمولاً شامل پردازنده، حافظه و واحدهای ورودی و خروجی بوده و برای کنترل تجهیزات الکترونیکی استفاده میشود.
کنترل سنسورها، موتورها، نمایشگرها، رلهها، تجهیزات صنعتی، لوازم خانگی، سیستمهای خودرو و تجهیزات IoT از کاربردهای مهم میکروکنترلر است.
میکروکنترلر معمولاً پردازنده، حافظه و بسیاری از واحدهای جانبی را در یک تراشه دارد و برای کنترل تجهیزات طراحی شده است؛ اما میکروپروسسور معمولاً به اجزای خارجی بیشتری برای تشکیل یک سیستم کامل نیاز دارد.
بله. بسیاری از میکروکنترلرها دارای Flash و RAM داخلی هستند و برخی مدلها حافظههای دیگری مانند EEPROM نیز دارند.
یک میکروکنترلر به صورت مطلق بهترین نیست. انتخاب مناسب به نیاز پروژه، تعداد ورودی و خروجی، حافظه، سرعت، رابطهای ارتباطی، مصرف انرژی، قیمت و ابزارهای توسعه بستگی دارد.
بسیاری از میکروکنترلرها قابلیت برنامهریزی مجدد دارند؛ اما روش برنامهریزی و محدودیتهای آن به مدل و خانواده تراشه بستگی دارد.