احتمالاً نام بردهای آردوینو، رزبریپای و اسامی از این دست را شنیدهاید. بردهایی که در دل آنها یک تراشه پردازشی با نام میکروکنترلر قرار دارد که مدلهای متعددی از آنها وجود داشته و بسیار مورد استفاده قرار میگیرند. اما میکروکنترلرها چه قطعاتی هستند و چه کاربردهایی دارند؟ در این مطلب به معرفی ریز کنترلگرها پرداخته و نحوه کار، انواع و کاربردهای آنها را مورد بررسی قرار دهیم.
فهرست مطالب این مقاله:
- مقدمه
- میکروکنترلر چیست؟
- چرا حس کردیم به میکروکنترلرها نیاز داریم؟
- انواع میکروکنترلر
- شرکتهای برتر تولید کننده میکروکنترلر
- معماری میکروکنترلرها
- واحدهای داخلی یک میکروکنترلر
- میکروکنترلرها چه کاری انجام میدهند؟
- میکروکنترلرها در برابر میکروپروسسورها
- تفاوت میکروکنترلر و PLC
- چطور از میکروکنترلرها استفاده کنیم؟
- برنامهنویسی برای میکروکنترلرها
- آردوینو و رزبری پای
- جمعبندی
- پاسخ به سوالات پرتکرار
مقدمه
میکروکنترلرها یکی از پرکاربردترین و مهمترین قطعات الکترونیکی هستند که در صنعت و زندگی روزمره با آنها سروکار داریم. میکروکنترلر یا ریز کنترلگر یک رایانه کوچک است که در یک تراشه مجتمع شده است و میتواند برنامههای مختلفی را اجرا کند. میکروکنترلرها میتوانند با دنیای خارج ارتباط برقرار کنند و دادهها را دریافت یا ارسال کنند. ریزکنترلگرها برای کنترل و بهبود عملکرد دستگاهها و وسایل مختلفی که با آنها سروکار داریم، استفاده میشوند.
امروزه میکروکنترلرها در اندازه، سرعت، حافظه، قیمت و امکانات متنوع و متعددی هستند و برای اهداف مختلفی طراحی و ساخته میشوند. میکروکنترلرها بر اساس شرکتهای سازنده و معماری پردازندهشان، به خانوادههای مختلفی تقسیم میشوند. برخی از معروفترین خانوادههای میکروکنترلر عبارتند از: AVR، PIC، ARM، 8051 و MSP430.
هدف از این مقاله آشنایی شما با میکروکنترلرها و نحوه کار، انواع و کاربردهای آنها است. در این مقاله ما به توضیح مفهوم میکروکنترلر و اجزای آن، معرفی انواع میکروکنترلر و معیارهای انتخاب آنها، برخی از کاربردهای جالب و متنوع ریزکنترلگر در صنعت و زندگی روزمره و نکات مهم و کاربردی در مورد آنها خواهیم پرداخت. این مقاله برای کسانی که علاقهمند به یادگیری و کار با میکروکنترلرها هستند، مناسب است. امیدواریم این مقاله برای شما مفید و جذاب باشد.
میکروکنترلر چیست؟
میکروکنترلرها (که در بسیاری موارد آنها را با مخفف MCU، μC یا MC نیز نمایش میدهند) تراشههای ریزپردازشگر مستقل یا میکروکامپیوترهای بسیار کوچکی هستند که به طور کامل روی یک تراشه منفرد قرار دارند.
میکروکنترلر، مغز متفکر دنیای الکترونیک است. این تراشه کوچک، در واقع یک کامپیوتر تکبرد است که وظایف مختلف را با دریافت دستورالعمل از طریق برنامهنویسی، پردازش و اجرا میکند. شما میتوانید یک ریز کنترلگر را به عنوان یک کامپیوتر ساده شده تعریف کنید؛ کامپیوتری که عموماً برای اجرای مکرر یک برنامه مشخص طراحی شده است.
طبق تعریف، میکروکنترلرها معمولاً برای انجام یک یا چند کار مشخص به صورت خودکار و طبق برنامهای که به آنها داده شده، مورد استفاده قرار میگیرند. این رویکرد که به عنوان یک برنامه تعبیه شده یا Embedded Application نیز شناخته میشود، در مقابل برنامههای همهکارهتر و همهمنظوره (general-purpose) که توسط ریزپردازندهها و CPUهای کامل مدیریت قرار میگیرند.
برای انجام عملیات عنوان شده، در داخل هر ریزکنترلگر یک ریزپردازنده جای گرفته که تفاوت اساسی آن با پردازنده یا CPUهای معمول موجود در بازار، ساختار پیچیدهتر آن نسبت به CPUهای عادی است. در واقع علت این ساختار مشخص و نه چندان پویا این است که اصولاً میکروکنترلرها برای اجرای انبوه برنامهها با دستورالعملهای متفاوت ساخته نمیشوند و طوری بهینه میشوند که برای اجرای دستورالعملهای مورد نظر خود بهترین عملکرد را داشته باشند؛ حالتی که با روح الگوی طراحی CPUهای همهمنظوره در تضاد است.
میکروکنترلر بر خلاف CPU برای اجرای برنامههای همهمنظوره ساخته نمیشود
برای دستیابی به این هدف، اصول اولیه یک میکروکنترلر حکم میکند که این قطعه به طور کلی بتواند در ارتباط با انواع دیگر قطعات و مدارهای الکترونیکی که روی بردهای مدار چاپی (PCB) به هم وصل میشوند، کار کند. این ترکیب از یک ریزکنترلگر و تجهیزات بستهشده روی یک PCB میتواند برای ایفای نقش کلیدی در کنترل، نظارت و تأثیرگذاری بر انواع مختلف سیستمها و رفتارهای اجزا استفاده شود.
در کنار واحد پردازنده اما واحدهای دیگری قرار میگیرد که تکمیل کننده بخش کنترلی این قطعه باشد. برای مثال در میکروکنترلرهای روز واحدهای ورودی/خروجی، واحدهای ارتباطی، واحد تنظیم ساعت، واحدهای مبدل آنالوگ و دیجیتال به یکدیگر، تایمرها، واحدهای وقفه، راهاندازهای نمایشگر یا درگاههای خاص و ... قرار میگیرند که به فراخور کاربرد و کلاس کاری میکروکنترلر، بسیار متنوع خواهند بود.
میکروکنترلر یا ریزکنترلگر، پردازندهای است که در یک بسته قرار گرفته و به آن واحدهای دیگر الکترونیکی متصل شده تا بتواند به صورت مستقیم با قطعات، مدارها و دستگاههای خارجی ارتباط برقرار کرده یا آنها را کنترل کند.
برای مثال در تصویر فوق، بلوک دیاگرام میکروکنترلر 8051 به عنوان یکی از معروفترین میکروکنترلرهای تاریخ را مشاهده میکنید که علاوه بر پردازنده (CPU)، شامل واحدهای ROM، کنترل وقفه، رم، تایمرها، واحد راهاندازی ارتباط UART یا سریال، واحدهای ورودی و خروجی و کنترلکننده درگاهها به همراه واحد تنظیم کلاک پردازنده است.
پس یک میکروکنترلر را در واقع میتوان پردازندهای دانست که به آن انواع واحدهای ارتباط با دنیای خارجی، ذخیره داده، واحدهای مدیریت زمان و تنظیم کلاک، واحدهای ارتباطی و... متصل شده تا بتواند ارتباط مستقیمی با دیگر قطعات و مدارهای الکترونیکی داشته باشد.
چرا حس کردیم به میکروکنترلرها نیاز داریم؟
این روزها در علم الکترونیک برای کنترل سیستمها (از ابعاد کوچک گرفته تا بزرگ) از مدارهای مجتمع (IC) یا تراشهها استفاده میشود. به بیان ساده یک تراشه، بستری از مجموعه قطعات الکترونیک (مانند ترانزیستور، دیود، خازن، مقاومت و سلف) است که به جای ساخته شدن در ابعاد بزرگ چند میلیمتری و چند سانتیمتری، تا حد ممکن فشرده شده و در کنار هم جای گرفتهاند. به همین دلیل است که به این قطعات فشرده، مدار مجتمع، IC یا Integrated Circuits میگویند.
اما اینکه یک مدار مجتمع واحدی داشته باشد که با انجام عملیات محاسباتی بتواند تصمیمگیری کرده و در نقش یک کنترلکننده، به عنوان مغز یک سیستم عمل کند، ایدهای بود که اولین محصولات پردازشی بر اساس آن شکل گرفتند.
در همین رابطه بخوانید:
- رشته در پردازنده چیست؟ چرا تعداد رشته ها در CPU مهم است؟
پیش از ظهور استفاده از تراشههای پردازشی، لامپهای خلاء این وظیفه را بر عهده داشتند ولی انبوه معایبی که در کار کردن با لامپهای خلاء وجود دارد، شرایط را به نحوی تغییر داد تا در اواخر دهه 1960، مهندسان، هر چه بیشتر به سمت استفاده از ریزپردازندهها بروند؛ قطعاتی که در آن زمان به صورت یک آرایه چند تراشهای توسعه مییافتند. این قطعات در داخل خود علاوه بر یک واحد پردازشی، واحدهای دیگری را نیز جای داده بودند که با فناوری ساخت فشرده MOS LSI، امکان تحقق رویای یک کنترلکننده بسیار کوچک یا همان میکروکنترلر را فراهم میکردند.
اما از دید بسیاری از صاحبنظران تاریخ علم الکترونیک، اولین اقدام واقعی و قابل استفاده مهندسان بر استفاده از میکروپروسسورها جهت ساخت دستگاههایی غیر از کامپیوترها در دنیا در سال 1971 اتفاق افتاد. ساختار مذکور بر پایه تراشه Intel 4004 یا همان i4004 ساخته شد که یک پردازنده 4 بیتی بود. داستان توسعه این طرح نیز در نوع خود جالب است. یک شرکت ژاپنی به نام BUSICOM به دنبال روشی بود که بتواند مدارهای پردازشی با یک تراشه در اختیار داشته باشد و از آنها در دل ماشینحسابهای پیشرفته خود (مانند مدل BUSICOM 141-BCF) استفاده کند.
در واقع هدف این بود تا مدار الکترونیکی مجتمعی داشته باشیم که بتواند بدون تغییر سختافزاری، چندین نوع عملکرد مد نظر را پیاده کند. از این رو باسیکام با اینتل، یکی از بهترین سازندگان تراشه آن زمان که در حوزه پردازندههای تکتراشهای وارد شده بود، قرارداد ویژهای امضا کرد. در ادامه روند همکاری و با توافق دو طرف، قرارداد BUSICOM و اینتل تغییر کرده و مقرر شد، تیم آبی تراشه پردازشی را بسازد که عملکرد همهمنظوره داشته باشد. این ایده در نهایت منجر به خلق اولین میکروکنترلری شد که به صورت تجاری مورد استفاده قرار گرفت.
اینتل طی سالهای بعد، انواع 8 بیتی این تراشه یعنی Intel 4040 و Intel 8008 و Intel 8080 را نیز ساخت و به صورت عمومی در بازار عرضه کرد. همه این پردازندهها به چندین تراشه خارجی از جمله تراشههای حافظه و رابطهای جانبی برای پیادهسازی یک سیستم کاملتر برای کاربرد عملی خود نیاز داشتند. در نتیجه، کل هزینه سیستمی با این ساختار به چند صد دلار میرسید؛ مشکلی که بدون شک ساخت کامپیوترهای کوچک و ارزان قیمت را غیرممکن میکرد.
در همین رابطه بخوانید:
- معیارهای مقایسه سی پی یو (CPU) و بررسی تفاوت پردازندهها با یکدیگر
در سال 1975 شرکت موتورولا پردازنده تحسینبرانگیز Motorola 6800 را معرفی کرد که ارتباطی با دنیای میکروکنترلر نداشت ولی شاید زمینهساز یک اتفاق بزرگ در این حوزه شد. در آن زمان چهار نفر از مهندسان اصلی توسعه این پروژه در اختلاف نظر با مدیریت موتورولا، به صورت دستهجمعی استعفا داده و به شرکت MOS Technology (سازنده پردازندههای مورد استفاده در کامپیوترهای شخصی Commodore 64) پیوستند.
علت استعفای این گروه آن بود که مدیریت ارشد موتورولا مخالف توسعه پردازندههای با قیمت پایین و زیر 100 دلار بود ولی مهندسان با جدیت این ایده را دنبال میکردند. در نهایت و با خروج آنها از موتورولا، MOS Technology توانست با سادهکردن طرح اولیه 6800 و رسیدن به تراشه 6501، هزینه ساخت و قیمت عرضه پردازندههای سادهتر را به حد قابل توجهی کاهش دهد.
البته در این میان شرکتهای ژاپنی از اواسط دهه 1970 شروع به ساخت تراشههای کوچک میکروکنترلر برای کاربردهای خاص از جمله میکروکنترلرهای 4 بیتی برای اموری مانند کنسولهای بازی کوچک، برف پاکنهای خودکار، قفلهای الکترونیکی و ... پرداختند و حتی پا را تا ساخت میکروکنترلرهای 8 بیتی برای استفاده جهت کاربردهایی مانند کنترلر دور موتورهای صنعتی نیز فراتر گذاشتند. برای مثال در سال 1974 شرکت توشیبا میکروکنترلری 12 بیتی ساخت که از آن برای کنترل دور موتور خودروهای فورد استفاده شد.
در همین رابطه بخوانید:
- پردازنده یک نانومتری چیست و چرا میتواند دنیا را تکان دهد؟
در ادامه و طی دهه 1980 و 1990، شرکتهای بسیاری وارد رقابت ساخت تراشههای ریزکنترلگر شدند و به مرور واحدهای بسیار بیشتری از جمله EEPROM، واحدهای کنترلر ارتباطات سریال، واحدهای مبدل داده و ... نیز به میکروکنترلرها راه یافتند و کار به جایی رسید که تا سال 2002 میلادی، حدود 55 درصد از کل پردازندههای فروخته شده در دنیا از دسته میکروکنترلرها و ریزپردازندههای 8 بیتی بودند. جالب است بدانید که بنابر برخی آمارهای منتشر شده در سال 1997 تعداد 2 میلیارد قطعه میکروکنترلر 8 بیتی به فروش رفت و این میزان تا سال 2006 به 8 میلیارد قطعه رسید.
این روزها قیمت ساخت هر ریزکنترلگر به امکانات داخلی، پردازنده و کاربردهای آن وابسته است ولی میتوان در بازار، میکروکنترلرهایی را یافت که قیمت آنها تنها 0.1 دلار است. البته میکروکنترلرهایی نیز وجود دارند که با انبوه فناوریها قیمتهای چند هزار دلاری دارند و در صنایع مختلف از جمله نفت و گاز، پتروشیمی، هواشناسی و حتی جنگافزارهای پیشرفته مورد استفاده قرار میگیرند.
انواع میکروکنترلر
اگرچه بسیاری از برندهای تولیدی شناخته شده و معماریهای برنامهنویسی مورد استفاده برای میکروکنترلرها وجود دارد، تنها سه نوع متمایز از MCU در حال حاضر وجود دارد. اینها هستند:
- میکروکنترلرهای 8 بیتی
- میکروکنترلرهای 16 بیتی
- میکروکنترلرهای 32 بیتی
تمایز اصلی بین سه نوع ریز کنترلگر از نظر عرض گذرگاه داده و موارد کاربری آنهاست.
این در نهایت مشخصات کلیدی است که دقت ریاضی سرعت میکروکنترلر را محدود میکند. به طور خلاصه، یک ریزکنترلگر 8 بیتی برای انجام محاسبات 16 بیتی یا 32 بیتی به تعداد دسترسیهای اتوبوس و دستورالعملهای بیشتری نیاز دارد. بنابراین به پاسخ (یعنی رفتار خروجی) بسیار کندتر از MCU 16 یا 32 بیتی میرسد.
از نظر محاسباتی، این مسئله در واقع همان محدودیتی است که با یک CPU آهسته به جای یک پردازنده سریعتر و قدرتمندتر پیدا میکنید. این معیارهای مهم بر انتخاب و دامنه زبانهای برنامهنویسی که میتوانید به راحتی با یک واحد میکروکنترلر استفاده کنید، تأثیر میگذارد. نگارش برنامه بیشتر میکروکنترلرها با زبانهای سی پلاس پلاس، پایتون، R یا آردوینو باشد، میکروکنترلرها به طور کلی با انواع زبانهای برنامهنویسی سازگار هستند، اگرچه مشخصات آن به دستگاه بستگی دارد.
MCUهای 8 بیتی مدتهاست که به عنوان ابتداییترین و مقرونبهصرفهترین گزینهها، اما با عملکرد محدود در برخی از برنامهها در نظر گرفته میشوند. میکروکنترلرهای 16 بیتی و 32 بیتی معمولاً گرانتر هستند، اما عملکرد مناسبی را ارائه میدهند.
در همین رابطه بخوانید:
- شباهتها و تفاوتهای معماری پردازنده ARM و X86
توجه داشته باشید که عموماً تراشههایی وجود دارند که واحدهای مختلف پردازشی در درون آنها تعبیه شده و از سیستم پردازش 64 بیتی استفاده کنند ولی دیگر نمیتوان نام آنها را میکروکنترلر گذاشت و بهتر است با همان لفظ SoC یا چیپست از آنها یاد کرد.
فاکتور بعدی که در دسته بندی انواع میکروکنترلرها مد نظر قرار میگیرد، معماری پردازنده و نوع کاربری آنها (صنعتی یا عمومی) است که در بخشهای آتی بیشتر به آنها میپردازیم.
شرکتهای برتر تولید کننده ریزکنترلگر
بدون ترتیب خاصی، در اینجا برخی از برترین شرکتهای میکروکنترلر آورده شده است:
- Samsung
- Microchip
- NXP
- Texas Instruments (TI)
- Renesas Electronics
- FreeScale
- ST-Micro
- Infineon
در میان شرکتهای فوق، Renesas یک بازیگر بزرگ برای این حوزه فروش مقادیر زیاد است. Microchip یکی از محبوبترین شرکتها با میکروکنترلرهای PIC است. Atmel نیز سالها پیش یکی از برترین شرکتهای فعال در این حوزه بود که در سال 2016 و به دلایلی مانند گرانی بیش از حد محصولات و عدم نوآوری کافی، تجارت میکروکنترلر خود را به صورت کامل به میکروچیپ فروخت.
معماری میکروکنترلرها
اگرچه تنها سه نوع اصلی میکروکنترلر وجود دارد، اما طیف متنوعی از مارکها و معماریهای سازنده MCU موجود است. برخی از رایجترین نامهایی که کاربران ممکن است اغلب به آنها توجه کنند عبارتند از:
- پردازندههای با هسته ARM (بسیاری از فروشندگان میکروکنترلر آرم و اجزای مرتبط از جمله هستههای ARM Cortex-M را عرضه میکنند)
- میکروکنترلرهای AVR با فناوری شرکت Atmel Technology (سابق) شامل AVR (8 بیتی)، AVR 32 (32 بیتی) و AT91SAM (32 بیتی)
- میکروکنترلرهای PIC با فناوری شرکت Microchip (8 بیت PIC16، PIC18، 16 بیت dsPIC33، PIC24، PIC32 32 بیت)
- Freescale ColdFire (32 بیتی) و S08 (8 بیتی)
- میکروکنترلرهای اینتل 8051
- PowerPC ISE
- میکروکنترلرهای شرکتRenesas Electronics با انواع مختلف(RL78 16-bit, RX 32-bit, SuperH, V850 32-bit, H8, R8C 16-bit)
- میکروکنترلرهای 8 بیتی 8051 Silicon Laboratories و میکروکنترلرهای 32 بیتی مبتنی بر ARM با سیگنال مختلط
- Texas Instruments TI MSP430 (16 بیتی) ، MSP432 (32 بیتی) ، C2000 (32 بیتی)
- Toshiba TLCS-870 (8 بیتی و 16 بیتی)
- CISC و RISC (همچنین RISC-V)
- و ...
همانطور که مشاهده میکنید انبوه مدلهای بر مبنای معماری ریز کنترلگرها وجود دارد که تفاوتها و شباهتهای زیادی با هم دارند. برای مثال اگر به دنبال تفاوت میکروکنترلر AVR و ARM میگردید باید به شما بگوییم که این دو خانواده در مواردی مانند کاربرد، قیمت، توان پردازشی و تجهیزات همراه با هم متفاوتاند.
در همین رابطه بخوانید:
- تفاوت معماری پردازنده RISC و CISC
بیشتر کاربرانی که سراغ میکروکنترلرهای ARM میروند طرحهای صنعتی گرانقیمتتر را با اهداف کنترلی پیشرفتهتر دنبال میکنند. اگرچه امکان پیاده کردن بسیاری از طرحهای صنعتی با میکروکنترلرهای سطح پایینتر دیگر شرکتها (مانند STM32) نیز وجود دارد ولی این میکروکنترلرها به دلیل بازه قیمتی بسیار گسترده آنها از مدلهای بسیار ارزان گرفته تا مدلهای چند صد دلاری، جامعیت بیشتری دارند.
واحدهای داخلی یک میکروکنترلر
همانطور که عنوان شد، یک ریزکنترلگر در واقع یک کامپیوتر کوچک ساده است که بر روی یک تراشه مجتمع واحد قرار گرفته است و به همین دلیل، نیازمند بسیاری از اجزای اساسی مشابه با یک کامپیوتر بزرگتر و پیچیدهتر است.
- واحد پردازش مرکزی (CPU): این جزء، که در واقع مغز میکروکامپیوتر است، یک میکروپروسسور است که کنترل و نظارت بر تمام فرآیندهای در حال انجام در داخل MCU را بر عهده دارد. این جزء مسئول خواندن و اجرای تمام عملیات منطقی و ریاضی است که انجام میشود.
- حافظه دسترسی تصادفی (RAM): این حافظه موقتی است که فقط هنگام روشن بودن استفاده میشود و برای کمک به اجرا و محاسبه برنامههایی که به MCU دستور اجرای آنها داده شده، به کار میرود. این حافظه در حین استفاده مداوماً بازنویسی میشود.
- حافظه فقط خواندنی (ROM): این حافظه دائمی است که پیشنویس شده و حتی با قطع جریان برق نیز در میکرو باقی میماند. این حافظه به طور اساسی به MCU دستور میدهد که چگونه برنامههای خود را هنگام درخواست اجرا کند و وقتی شما برای میکروکنترلر برنامه نوشته و در آن آپلود (یا به اصطلاح، پروگرم) میکنید، در واحد رام MC ذخیره میشود. این واحد در بسیاری از مدلهای امروزی شامل واحد EEPROM نیز میشود.
- نوسانساز داخلی: این جزء به عنوان ساعت اصلی پردازنده و بعضی بخشهای دیگر ریزکنترلگر عمل میکند و ریتمهای اجرایی فرآیندهای داخلی آن را کنترل میکند. مانند هر نوع تایمر دیگری، اسیلاتور میکروکنترلر زمان را در حین انجام یک فرآیند مشخص تنظیم نموده و به MCU کمک میکنند تا عملکردهای خاصی را در فواصل زمانی مشخص شروع و پایان دهد.
- درگاههای ورودی/خروجی (I/O): این شامل یک یا چند درگاه ارتباطی است، که معمولاً به صورت پینهای اتصالی میباشند. آنها اجازه میدهند که MCU به سایر اجزاء و مدارات برای جریان دادههای سیگنال ورودی/خروجی و تأمین برق متصل شود.
- تراشههای کنترلر پیرامونی (لوازم جانبی و اجزاء اختیاری دیگر): واحدهای جانبی بسته به وظیفهای که از MCU انتظار میرود انجام دهد، متغیر هستند. آنها میتوانند هر چیزی از تایمرها و شمارندههای اضافی گرفته تا واحدهای مدولاسیون عرض پالس (PWM)، مبدلهای آنالوگ به دیجیتال (ADC)، مبدلهای دیجیتال به آنالوگ (DAC)، ماژولهای ضبط دادههای متعدد، حافظه فلش، درگاههای ورودی خروجی منطقی بیشتر و بسیاری از موارد دیگر باشند. با این حال، تمام این اجزاء، در یک میکروکنترلر از نظر دامنه و ظرفیت به مراتب کمتر از یک SoC مشابه در یک کامپیوتر شخصی هستند.
میکروکنترلرها چه کاری انجام میدهند؟
میکروکنترلر به زبان ساده مغز متفکر دستگاههای الکترونیکی است، نقش کلیدی در عملکرد انواع مختلفی از سیستمها است. میکروکنترلرها به سرعت به نفوذ گستردهای در بازار در مجموعهای از کاربردها و صنایع مدرن دست یافتهاند و امروزه در بسیاری از فناوریها و ابزارها یافت میشوند. هر وسیله الکترونیکی حاوی سنسور، نمایشگر، رابط کاربری و کنترل خروجی یا محرک قابل برنامهریزی احتمالا دارای یک MCU است.
کاربرد میکروکنترلرها در خانه و محیطهای شخصی
در خانهها، میکروکنترلرها در دستگاههایی مانند ماشینهای لباسشویی، اجاقهای مایکروویو، و سیستم امنیتی هوشمند به کار میروند. آنها با استفاده از حسگرها و تایمرها، فرآیندهایی مانند شستشو یا پختوپز را کنترل میکنند و امکان برنامهریزی و تنظیمات دقیق را فراهم میآورند.
کاربرد میکروکنترلرها در صنعت و تولید
در صنایع، ریز کنترلگرها در سیستمهای اتوماسیون صنعتی و کنترل فرآیند به کار گرفته میشوند. آنها میتوانند دادههای حسگرها را پردازش کرده و بر اساس آنها، دستوراتی را به ماشینآلات و تجهیزات ارسال کنند تا بهینهسازی تولید و افزایش کارایی را به ارمغان آورند.
کاربرد میکروکنترلر در پزشکی و سلامت
میکروکنترلرها در تجهیزات پزشکی مانند دستگاههای نظارت بر ضربان قلب، پمپهای انسولین و دستگاههای تصویربرداری پزشکی نقش حیاتی دارند. آنها دقت و قابلیت اطمینان بالایی را در مانیتورینگ و کنترل فرآیندهای حیاتی بیمار فراهم میکنند.
کاربرد میکروکنترلرها در حمل و نقل
ریزکنترلگرها در سیستمهای کنترل خودرو، هواپیما و حتی کشتیها به کار رفتهاند. آنها میتوانند به طور همزمان چندین وظیفه را مانند کنترل موتور، سیستمهای ترمز و ناوبری انجام دهند و ایمنی و کارایی را در حمل و نقل افزایش دهند.
در همین رابطه بخوانید:
- چرا پردازنده ۱۲۸ بیتی وجود ندارد؟
کاربرد میکروکنترلرها در ارتباطات و شبکهها
میکروکنترلرها در دستگاههای ارتباطی مانند روترها، مودمها و سیستمهای مخابراتی استفاده میشوند. آنها قادر به مدیریت دادهها و ارتباطات هستند و به این ترتیب، امکان انتقال اطلاعات بدون وقفه و با سرعت بالا را فراهم میآورند.
کاربرد میکروکنترلر در تفریح و سرگرمی
در دنیای تفریح و سرگرمی، میکروکنترلرها در دستگاههایی مانند کنسولهای بازی، اسباببازیهای الکترونیکی و سیستمهای صوتی خانگی به کار میروند. آنها تجربه کاربری را با ارائه واکنشهای سریع و دقیق به دستورات کاربر بهبود میبخشند.
برخی از رایجترین پروژهها، توابع، برنامهها و محیطهای میکروکنترلر که در آنها استفاده میشود عبارتند از:
- اتوماسیون و رباتیک
- لوازم الکترونیکی مصرفی و لوازم خانگی
- تجهیزات پزشکی و آزمایشگاهی (دستگاههای تشخیصی دستی، اسکنرها و دستگاههای اشعه ایکس، ابزار اندازه گیری، آنالیز و مانیتورینگ)
- صنایع خودروسازی و سیستمهای کنترل خودرو (تنظیم قوای محرکه، کنسولهای چندرسانهای و نرمافزار ناوبری)
- کنترل محیط صنعتی و تولیدی (گرمایش و روشنایی، سیستمهای HVAC و مکانیزمهای قفل ایمنی)
- دستگاهها و سیستمهای اینترنت اشیا
میکروکنترلرها در برابر میکروپروسسورها
اغلب در مورد اینکه دقیقاً چه چیزی یک میکروکنترلر (MC) را از یک ریزپردازنده (MP) یا سیستم روی تراشه (SoC) متمایز میکند، سردرگمی وجود دارد. در ادامه به مقایسه میکروکنترلر و میکروپروسسور به بیان ساده خواهیم پرداخت.
به طور خلاصه، یک ریزکنترلگر یک نسخه ساده شده و تک کاره از یک SoC است. اگرچه یک MCU از نظر فنی شامل یک CPU یا پردازنده به عنوان بخشی از مدار یکپارچه خود است، اما نسخه بسیار سادهتری است. این ریزپردازنده کمتوان به طور موثر به عنوان یک CPU یا مغز ساده برای واحد میکروکنترلر عمل میکند و به MCU توانایی اولیه برای انجام نقش برنامهریزی شده خود را میدهد.
از نظر تعیین سایر تفاوتهای کلیدی بین ریزپردازنده و میکروکنترلر، سادهترین تعریف این است که از نظر اجزاء صحبت کنیم. یک ریزپردازنده واقعی فاقد هر گونه حافظه (RAM یا ROM) یا پورت ورودی/خروجی است و تنها میتواند به عنوان بخشی از سیستمهای تعبیهشده گستردهتر عمل کند. مجموعههای دستورالعملهایی که به یک ریزپردازنده مستقل میگویند چگونه یک تابع معین را اجرا کند، معمولاً در خارج ذخیره میشوند. در یک میکروکنترلر، همه این اجزای مختلف -از جمله پردازنده ساده شده- در یک واحد مستقل ترکیب میشوند.
از نظر عملکرد، میکروکنترلرها و میکروپروسسورها چیزی شبیه به زیر را تجزیه میکنند:
میکروکنترلرها
- یک واحد کاملاً مستقل هستند که شامل یک CPU یا ریزپردازنده بسیار ساده است.
- برای یک برنامه خاص استفاده میشود، همانطور که از قبل توسط کاربر برنامهریزی شده است.
- از نظر عملکرد قدرتمند نیستند. به طور معمول، آنها فقط مقدار کمی انرژی مصرف میکنند و از نظر ظرفیت ذخیرهسازی داده یکپارچه کمی دارند.
- نیاز به برنامهریزی توسط اپراتور برای انجام هر نقش معنیدار.
- نمیتواند خارج از وظایف برنامهریزی شده آنها عمل کند (کد نوشته شده برای آنها -و کیفیت آن- به طور کامل عملکرد آنها را مشخص میکند).
- عموماً برای استفاده در دستگاهها یا وسایل خاصی طراحی شدهاند که برای انجام مکرر یک کار طراحی شدهاند.
ریزپردازندهها
- از نظر محدوده عملکرد بسیار پیچیدهتر و همهکارهتر هستند و برای استفاده در محاسبات عمومیتر (برخلاف دستگاههای تخصصی تک وظیفهای) در نظر گرفته شدهاند.
- سرعت پردازنده (ساعت) بسیار بالاتری نسبت به MCUها دارند که اغلب به جای هرتز در گیگاهرتز (گیگاهرتز) اندازهگیری میشوند.
- برخلاف میکروکنترلرهای نسبتا ساده و ارزان، ساخت آنها چالشبرانگیز و پرهزینه است
- برای کار کردن به قطعات خارجی بسیار بیشتری (RAM، پورتهای ورودی/خروجی، ذخیره سازی داده، EEPROM یا حافظه فلش) نیاز دارید، که هیچ کدام در MP ادغام نشدهاند و باید جداگانه خریداری و متصل شوند.
- مصرف توان بسیار بالاتری دارند و متعاقباً اجرای مداوم آن بسیار مقرونبهصرفه است.
تفاوت میکروکنترلر و PLC
یک کنترلکننده منطقی قابل برنامهریزی (PLC) مانند یک ریزکنترلگر است، اما بزرگتر، سریعتر و قابل اعتمادتر است. PLCها اجزای بسیار پیچیدهتری هستند که برای طیف وسیعی از برنامههای کاربردی با کارایی بالا مناسب هستند. از سوی دیگر، میکروکنترلرها در مقایسه ساده هستند و برای مصارف کوچکتر و کممصرف ایدهآل هستند. در دنیای اتوماسیون و کنترل، دو جزء اصلی که نقش مهمی ایفا میکنند، میکروکنترلرها و کنترلکنندههای منطق برنامهپذیر (PLC) هستند. هرچند هر دو برای کنترل فرآیندها و ماشینآلات استفاده میشوند، اما تفاوتهای بنیادینی میان آنها وجود دارد.
طراحی و ساختار
میکروکنترلرها، که اغلب در دستگاههای الکترونیکی مصرفی یافت میشوند، به صورت تکتراشهای طراحی شدهاند که تمامی اجزای لازم برای اجرای یک برنامه را در خود جای دادهاند. در مقابل، PLCها برای استفاده در محیطهای صنعتی طراحی شدهاند و اغلب شامل ماژولهای مختلفی هستند که میتوانند برای انجام وظایف متنوع ترکیب شوند.
قابلیت اطمینان و مقاومت
PLCها بهگونهای ساخته شدهاند که در برابر شرایط سخت صنعتی مانند دماهای بالا، لرزش، گرد و غبار و نویز الکتریکی مقاوم باشند. میکروکنترلرها نیز مقاومتهای خود را دارند اما به طور کلی، PLC ها برای دوام بیشتر در محیطهای صنعتی طراحی شدهاند.
برنامهنویسی و توسعه
برنامهنویسی میکروکنترلرها معمولاً با استفاده از زبانهایی مانند C یا C++ انجام میشود، در حالی که PLCها اغلب با استفاده از زبانهای برنامهنویسی سطح بالا و گرافیکی مانند Ladder Logic یا Function Block Diagram برنامهریزی میشوند که برای مهندسین برق و اتوماسیون آشناتر هستند.
در همین رابطه بخوانید:
- مقایسه پردازنده های پنتیوم (Pentium) و سلرون (Celeron)
- تفاوت پردازنده های تری (Tray) و پردازنده های باکس (Boxed) اینتل
هزینه و اقتصادی بودن
از نظر هزینه، میکروکنترلرها معمولاً ارزانتر از PLCها هستند. این امر آنها را برای پروژههای کوچکتر و محصولات مصرفی که نیاز به کنترلهای پایهای دارند، ایدهآل میسازد. PLCها به دلیل قابلیتهای گستردهتر و مقاومت بالا در محیطهای صنعتی، گرانتر هستند.
کاربردها
میکروکنترلرها در دستگاههایی با عملکردهای نسبتاً ساده مانند لوازم خانگی، اسباببازیها و سیستمهای امنیتی به کار میروند. PLCها در کاربردهای صنعتی که نیاز به کنترل دقیقتر و پیچیدهتری دارند، مانند خطوط تولید اتوماتیک و سیستمهای کنترل فرآیند، استفاده میشوند.
چطور از میکروکنترلرها استفاده کنیم؟
استفاده از میکروکنترلرها تا حدودی شبیه به استفاده از سیستم روی تراشه (SoC) است، که معمولاً برای ساخت یک PC (احتمالاً توسط اینتل یا AMD)، میبینید. اما از دید کاربری، راهاندازی و استفاده از آن به طور قابل توجهی پیچیدهتر از SoC است.
مهمترین قدم در استفاده از میکروکنترلرها این است که بدانیم قصد انجام چه کاری را داریم. در واقع اینکه بخواهید در یک پروژه الکترونیکی مدرسهای، دانشگاهی، صنعتی، نظامی یا حتی برای تولید یک محصول تجاری از ریزکنترلگر برای برنامهریزی و اجرای یک یا چندین دستور استفاده کنید است که مسیر پروژه شما را مشخص میکند.
ممکن است در این راه به یک میکروکنترلر چند هزار تومانی نیاز داشته باشید یا حتی مجبور شوید مبلغی هزار برابر آن را برای خرید ریزکنترلگر بپردازید. پس درک ساختار فیزیکی یک دستگاه ریزکنترلگر نیز مهم است. این امر درک بهتری از نحوه برنامهریزی یک میکروکنترلر و همچنین تفاوت بین MCU و اجزای مشابه مانند ریزپردازنده ها را امکانپذیر میکند.
در حالت کلی برای انتخاب میکروکنترلر مناسب برای پروژه باید ابتدا بدانید که محیطی که میخواهید از میکروکنترلر استفاده کنید کجاست. بعد از آن حجم برنامهای که قصد دارید روی میکرو اجرا کنید را باید بررسی کنید. مرحله بعدی این است که سختافزار همراه با میکروکنترلر خود را در نظر بگیرید؛ منظور سختافزاری است که به عنوان عامل اجرای برخی از دستورات یا خروجیها در کنار ریز کنترلگر قرار گرفته و مکمل مدارهای کنترلی یا نظارتی شما خواهد شد. در نهایت میتوانید میکروکنترلر را با توجه به بودجه پروژه انتخاب و از بازارهای داخلی یا حتی خارجی خریداری کنید.
از دید افرادی که با کامپیوترها آشنایی بیشتری دارند، میکروکنترلرها بسیار شبیه به یک SoC بسیار ساده عمل میکنند، زیرا میتوانند محرکها یا شرایط خارجی را از طریق هر تعداد پروتکل ارتباطی مختلف شناسایی کرده و به آن واکنش نشان دهند. هنگامی که یک پردازنده MCU به درستی برای واکنش به ورودیهای خاص یا تشخیص سیگنال برنامهریزی شده باشد، میتواند برای انجام رفتارهای پاسخگو در طیف متنوعی از توابع و برنامهها برنامهریزی شود. اینها میتوانند از محرکهای ساده ورودی-خروجی (I/O) و الگوریتمهای کنترل مؤلفه تا تأثیرگذاری بر رفتار اجزای اضافی در سیستمهای کاملاً یکپارچه بسیار پیچیدهتر باشند.
برنامهنویسی برای میکروکنترلرها
برنامهنویسی میکروکنترلرها دروازهای به دنیای خلاقیت و نوآوری در دنیای الکترونیک و اتوماسیون میگشاید. با یادگیری این مهارت، میتوانید به قلب دستگاههای هوشمند نفوذ کرده و ایدههای خود را در قالب پروژههای شگفتانگیز مانند رباتها، سیستمهای اتوماسیون، اینترنت اشیاء و گجتهای هوشمند جامه عمل بپوشانید.
فرایند برنامهنویسی میکروکنترلر:
برنامهنویسی میکروکنترلر شامل مراحلی است که در ادامه به طور خلاصه شرح داده میشود:
- انتخاب میکروکنترلر مناسب: اولین قدم، انتخاب میکروکنترلر مناسب با توجه به نیازها و ویژگیهای پروژه شما است. عواملی مانند قدرت پردازش، تعداد پینهای ورودی و خروجی، مصرف برق و قیمت در انتخاب ریزکنترلگر مؤثر هستند.
- انتخاب زبان برنامهنویسی: زبانهای مختلفی برای برنامهنویسی میکروکنترلرها وجود دارد که هر کدام مزایا و معایب خاص خود را دارند. برخی از زبانهای رایج عبارتند از C، C++، Assembly و Arduino IDE.
- نوشتن برنامه: با استفاده از زبان برنامهنویسی انتخابی، دستورات لازم برای انجام وظایف مورد نظر را به میکروکنترلر میدهید. این دستورات شامل کنترل پینهای ورودی و خروجی، انجام محاسبات، برقراری ارتباط با دستگاههای دیگر و موارد دیگر میشود.
- کامپایل و آپلود: برنامه نوشتهشده باید به کد قابل فهم برای ریزکنترلگر تبدیل شود. این فرآیند توسط کامپایلر انجام میشود. سپس کد کامپایل شده به حافظه میکروکنترلر آپلود میشود.
- تست و اشکالزدایی: پس از آپلود برنامه، باید عملکرد آن را تست کرده و در صورت وجود خطا، اشکالزدایی انجام شود. این فرآیند شامل شبیهسازی برنامه، بررسی خطاها و اصلاح کد تا حصول عملکرد صحیح است.
هر شرکت سازنده میکروکنترلر ابزارهای توسعه خاص خود را خواهد داشت. این ابزارها معمولاً شامل یک محیط توسعه نرمافزاری مجتمع، کامپایلر یاIDE و یک برنامهریز سختافزاری یا Programmer هستند. IDEها واحد نیستند و ممکن است شرکت سازنده برای یک سری میکروکنترلر، انواع زبانهای برنامهنویسی را در نظر گرفته و بر اساس آنها، IDE مناسب را طراحی و در اختیار توسعهدهندگان و کاربران خود قرار دهد
به عنوان مثال در جدول زیر برخی از معروفترین کامپایلرها و خانواده میکروکنترلرهایی که توسط آنها پشتیبانی میشود آورده شده است:
میکروکنترلر | کامپایلر یا IDE | زبانهای برنامهنویسی |
---|---|---|
ARM (STM32) | STM32CubeIDE, Keil uVision (MDK), IAR Embedded Workbench | C/C++, Python |
AVR | Atmel Studio, CodeVision AVR, BASCOM AVR | C/C++, BASIC, Assembly |
PIC (Microchip) | MPLAB X IDE, PICBASIC (PRO) | C/C++, BASIC, Assembly |
Freescale ColdFire | CodeWarrior Development Studio | C/C++, Assembly |
PowerPC ISE | CodeWarrior for Microcontrollers | C/C++, Assembly |
Renesas Electronics | e² studio, IAR Embedded Workbench | C/C++, Assembly |
8051 Family | Keil μVision, Silicon Labs IDE, CodeVision AVR | C/C++, BASIC, Assembly |
Texas Instruments MSP430 | Code Composer Studio (CCS) | C/C++, Assembly |
Toshiba TLCS-870 | TOSHIBA Integrated Development Environment (IDE) | Assembly |
زبانهای برنامه نویسی برای میکروکنترلرها
میکروکنترلرها به زبان اسمبلی کار میکنند که بومی طراحی پردازنده آنهاست. اتفاقی که میافتد این است که اکثر محیطهای توسعه دارای یک زبان برنامهنویسی سطح بالاتر مانند C نیز هستند که کد طراحان را در اسمبلی کامپایل میکند. به طور کلی، زبانهای برنامهنویسی مورد استفاده برای میکروکنترلرها به دو دسته تقسیم میشوند: زبانهای سطح بالا و زبانهای سطح پایین. در زیر توضیحاتی در مورد هر دسته ارائه میشود:
- زبانهای سطح بالا: این زبانها برای توسعه نرمافزار به صورت انسانخوانا طراحی شدهاند و به توسعهدهندگان اجازه میدهند که به راحتی کد بنویسند. مثالهایی از زبانهای سطح بالا عبارتاند از:
- C/C++: یکی از محبوبترین زبانها برای میکروکنترلرها. C به عنوان زبان کامپایلی و C++ به عنوان زبان شیگرا مورد استفاده قرار میگیرد.
- Python: یک زبان اسکریپتی که برای توسعه سریع و آسان نرمافزار مورد استفاده قرار میگیرد.
- BASIC: یک زبان سطح بالا ساده که برای توسعه سریع نرمافزارها مناسب است.
- زبانهای سطح پایین: این زبانها به طور مستقیم با سختافزار تعامل دارند و به توسعهدهندگان اجازه میدهند که کنترل دقیقتری بر روی دستگاه داشته باشند. مثالهایی از زبانهای سطح پایین عبارتاند از:
- Assembly: زبان برنامهنویسی سطح پایین که به طور مستقیم با دستورات معماری ریزکنترلگر ترجمه میشود.
- Machine Code: کدهای دودویی که توسط میکروکنترلرها اجرا میشوند که به آنها کد Hex نیز میگویند.
پروگرم کردن میکروکنترلرها
همانطور که در بخش قبلی گفته شد، خروجی هر IDE در نهایت به یک فایل Hex (بخوانید هگز) ترجمه میشود که در حافظه میکروکنترلرها ذخیره میشود تا بتواند برنامه را اجرا کند. فرایند انتقال این فایل به میکروکنترلر را پروگرم کردن یا برنامهریزی ریزکنترلگر مینامند. اگرچه ساختار فرایند پروگرم میکروکنترلر برای همه خانوادهها یکسان است ولی در این زمینه باید به مواردی توجه داشته باشیم که گروههای مختلف را از هم تفکیک میکنند. برای پروگرم کردن میکروکنترلر به حداقل یکی از تجهیزات زیر نیاز دارید:
برد توسعه: برد توسعه یا DevBoard، پلتفرمی است که میکروکنترلر را در خود جای داده و امکان اتصال آن به کامپیوتر و سایر اجزا را فراهم میکند. بردهای توسعه مختلفی با توجه به نوع میکروکنترلر و امکانات مورد نیاز در دسترس هستند. برخی از معروفترین بردهای توسعه عبارت اند از: Arduino، STM32 Discovery، PIC Development Board.
- کامپایلر: کامپایلر، برنامه نوشتهشده به زبان برنامهنویسی را به کد قابل فهم برای میکروکنترلر تبدیل میکند. کامپایلرهای مختلفی برای زبانهای برنامهنویسی مختلف وجود دارد.
- پروگرمر: برنامهنویس، برنامهریز یا پروگرمر، ابزاری است که برای آپلود کد کامپایل شده به حافظه میکروکنترلر استفاده میشود. انواع مختلفی از پروگرمرها با توجه به نوع ریزکنترلگر و رابط اتصال در دسترس هستند که از بین مهمترین آنها میتوان به USBasp، AVRISP، ST-Link اشاره کرد. البته پروگرمرهای غیر رسمی نیز برای هر میکروکنترلر وجود دارند که کاربران میتوانند با اتصال صحیح آنها به پایههای مربوط به پروتکلهای ارتباطی مانند I2C، UART، ISP و ...، نسبت به پروگرم کردن مستقیم با کامپیوتر و آنها استفاده کنند.
- کابل اتصال: کابل اتصال برای ارتباط برد توسعه به کامپیوتر و آپلود کد استفاده میشود.
- نرمافزارهای جانبی: معمولاً قبل از انتقال کد Hex به میکروکنترلر و برای صرفهجویی در زمان و هزینه، توسعهدهندگان، برنامههای خود را به برخی از نرمافزارهای شبیهساز الکترونیک مانند Proteus منتقل میکنند تا از صحت عملکرد نسبی کد خود مطلع شوند. این کار میتواند فرایند توسعه تا رسیدن به نتیجه نهایی و به صورت همزمان بسیاری از هزینهها و حتی خطرات احتمالی را نیز به صورت چشمگیری کاهش دهد.
بوت لودر در میکروکنترلرها
بوتلودر (Bootloader) کد کوچکی است که در حافظه میکروکنترلر ذخیره میشود و وظیفه بارگذاری برنامه اصلی را بر عهده دارد. به عبارت دیگر، بوتلودر مانند کلیدی عمل میکند که درب دنیای برنامهنویسی را به روی میکروکنترلر باز میکند. این نرمافزار به میکروکنترلر کمک میکند تا از کامپیوتر میزبان برنامهریزی شود.
بوت لودر در واقع اولین برنامهای است که اجرا میشود، میتواند سایر برنامهها را در مکانهای خاصی از حافظه بارگذاری کند و در اینترفیس سریال ارائه شود. از پروتکلهای RS232 UART برای پروگرام کردن کنترلر استفاده میشود، اما برخی از میکروکنترلرها از SPI، I2C یا Modbus ASCII نیز استفاده میکنند. به عنوان مثال، بوت لودر در برد آردوینو برای فلش کردن نرمافزار اپلیکیشن در فلش مموری تراشه ATMega پیکربندی شده است.
بوت لودر به برنامهنویسان اجازه میدهد برنامههای کاربردی را بدون نیاز به منابع خارجی بارگذاری و به میکروکنترلر ارسال کنند. این امکان به ما اجازه میدهد که برنامهها را بهروز کنیم و تغییرات را بدون نیاز به پروگرامر خارجی اعمال کنیم. این بدان معناست که تراشه در ابتدا توسط سازنده برد آردوینو برنامهریزی شده است.
در همین رابطه بخوانید:
- تراشه اسنپدراگون چیست؟ بررسی انواع پردازنده های اسنپدراگون و قابلیت های آنها
برای افراد متخصص و مستقل، ایجاد بوت لودرهای اختصاصی و به صورت شخصی یا استفاده از گزینههای منبعباز آسانتر است. این بدان معنی است که این گروه میتوانند میکروکنترلرهای خود را یک بار با یک پروگرمر سختافزاری برنامهریزی کنند و سپس از آن نقطه به بعد میتوانند توسط یک رابط باس دیگر (مانند USB یا سریال) برنامهریزی شوند؛ دقیقاً مانند حالتی که در بردهای آردوینو یک بار توسط شرکت سازنده، طی شده است.
بردهای توسعه میکروکنترلرها (Devboard)
بردهای توسعه میکروکنترلرها، بردهایی هستند که یک میکروکنترلر و مجموعهای از اجزای الکترونیکی را برای تسهیل توسعه نرمافزار و سختافزار در خود جای دادهاند. در واقع اگر برد توسعه میکروکنترلر یا Devboard، نوعی زمین بازی است که به شما اجازه میدهد با میکروکنترلرها، آن چیزی که در ذهن خود میپرورانید را با دشواری بسیار کمتری پیاده کنید.
اگر فرض کنید که ریزکنترلگر یک قلب کوچک است که داخل یک بدن قرار بگیرد تا موجودی زنده و کارآمد را شکل دهد، برد توسعه میتواند همان بدن باشد که با انبوه امکانات و رابطهای دنیای خارجی، به میکروکنترلر اجازه میدهد تا با دنیای بیرون ارتباط برقرار کرده و کارهای شگفتانگیزی انجام دهد.
به صورت کلی بردهای توسعه برای آزمایش و توسعه پروژههای الکترونیکی، از جمله سیستمهای کنترلی، رباتیک، و اتوماسیون استفاده میشوند. ویژگی مثبت این بردها آن است که اغلب شامل پورتهای متعدد، ورودی/خروجیها، و مدارات حفاظتی هستند که کار با آنها را برای توسعهدهندگان آسانتر میکند.
اگر برای پیشبرد کارهای خود قصد استفاده از بردهای توسعه را دارید باید بدانید که اولین قدم در انتخاب بردهای توسعه، شناخت نوع و نیازهای پروژه است. همواره باید بروز باشید و با جامعه توسعهدهندگان آن برد توسعه در ارتباط باشید تا از جدیدترین امکانات و طرحهای خلاقانه پیادهشده در بردهای توسعه مطلع شوید. مدلهای مختلف را تست کنید تا بتوانید بهترین برد را برای پروژههای خود انتخاب کنید.
در نهایت باید گفت که بردهای توسعه میکروکنترلرها ابزارهای بسیار مفیدی هستند که به شما اجازه میدهند تا ایدههای خود را به واقعیت تبدیل کنید و در عین حال، فرآیند توسعه را سادهتر و سریعتر میکنند. برخی از مهمترین پروژههای بردهای توسعه عبارتاند از:
- بردهای توسعه خانواده Arduino: این بردها که بر پایه میکروکنترلرهای AVR ساخته و در مدلهای مختلف عرضه میشوند، مشهورترین بردهای توسعه هستند که میتوانند برای پیادهسازی انواع پروژهها از کنترل دور یک موتور ساده تا یک دستگاه برش صنعتی پیشرفته مورد استفاده قرار گیرند.
- ESP32 Dev Board: این برد توسعه دارای بلوتوث، وای فای داخلی و مبدل CP2102 است و برای پروژههایی که نیاز به اتصال بیسیم دارند مناسب است.
- WeMos D1 Mini: این برد توسعه دارای هسته وایفای ESP8266 با رابط USB Type-C است و برای پروژههای IoT کوچک و مقرونبهصرفه مناسب است.
- STM32 Dev Board: بردهای توسعه STM32 با استفاده از پردازنده 32 بیتی و معماری ARM Cortex M3 سرعت بالایی دارند و برای پروژههایی که نیاز به قدرت پردازشی بیشتری دارند مناسب هستند.
آردوینو و رزبری پای
همانطور که در بخشهای قبلی با هم صحبت کردیم، در دنیای امروز، الکترونیک و برنامهنویسی نقش حیاتی در زندگی انسان ایفا میکنند. با ظهور پلتفرمهای قدرتمندی مانند آردوینو و رزبری پای، خلق ایدههای نوآورانه و کاربردی در این حوزه به مراتب آسانتر شده است. این پلتفرمها به کاربران در سطوح مختلف، از مبتدی تا حرفهای، امکان میدهند تا با استفاده از قطعات الکترونیکی ساده و برنامهنویسی، به ایدههای خود جان داده و پروژههای شگفتانگیزی را خلق کنند.
آردوینو: پلتفرمی برای مبتدیان و حرفهایها
آردوینو (Arduino) یک پلتفرم منبع باز است که شامل بردهای توسعه ریز کنترلگر ، محیط برنامهنویسی ساده و جامعه بزرگ و فعال کاربران میشود. این پلتفرم به دلیل سادگی استفاده، قیمت مناسب و تنوع بردها، به انتخابی محبوب برای افراد در سطوح مختلف تبدیل شده است. میکروکنترلرهای مختلفی در بردهای آردوینو به کار میروند که هر کدام ویژگیها و قابلیتهای خاص خود را دارند. برخی از میکروکنترلرهای رایج در آردوینو عبارتند از: ATmega328P، ATmega3250 و ATmega1280.
از جمله ویژگیهای برجسته آردوینو میتوان به موارد زیر اشاره کرد:
- سادگی استفاده: محیط برنامهنویسی آردوینو به زبان ++C ساده شده و برای افراد بدون تجربه برنامهنویسی نیز قابل فهم است. کامپایلر یا محیط برنامهنویسی این بردها Arduino IDE نام دارد. این IDE با محیطی به نام Sketch جهت نوشتن برنامههای آردوینو به کار گرفته میشود. برنامههای کاربران یا همان اسکچها، کدهایی هستند که در رابط متنی IDE نوشته و در یک فایل با پسوند ino. ذخیره میشوند.
- قیمت مناسب: بردهای آردوینو در مقایسه با سایر پلتفرمهای مشابه، قیمت مقرونبهصرفهای دارند. این بردها قیمتی از 100 هزار تومان تا حتی چند میلیون تومانی دارند و در سه رده ارزانقیمت (مانند Arduino Nano، Arduino Uno R3 وArduino Mini Pro)، میانرده (مانند Arduino Mega 2560، Arduino Leonardo و Arduino Due) و تخصصی (مانند Arduino MKR1000، Arduino Yun وArduino Pro Mini) دستهبندی میشوند.
- تنوع بردها: طیف وسیعی از بردهای آردوینو با قابلیتها و ویژگیهای مختلف برای کاربردهای گوناگون در دسترس است. برای مثال بردهای گروه Nano و Uno بسیار ساده و اقتصادی با امکانات حداقلی هستند ولی بردهایی مانند MKR1000 را نیز میتوانید در این خانواده پیدا کنید که انبوه امکانات و قابلیتهای خاص مانند Wi-Fi، بلوتوث و پردازندههای قویتر را داشته و برای پروژههای تخصصی و حرفهای عرضه میشوند.
- جامعه بزرگ: آردوینو از جامعه بزرگ و فعالی از کاربران برخوردار است که منابع آموزشی، راهنمایی و پشتیبانی فراوانی را به صورت آنلاین ارائه میدهند. به همین دلیل میتوانید انبوه کدهای آماده را از اینترنت دریافت کنید یا اگر در پروژه خاصی فعالیت میکنید سوالات خود را در فرومهای مختلف پرسیده و به سرعت راهکار مناسبی که ناشی از تجربیات افراد پیش از شماست را دریافت کنید.
کاربردهای آردوینو:
- رباتیک: ساخت رباتهای ساده تا پیشرفته با قابلیتهای مختلف
- سیستمهای اتوماسیون: کنترل و اتوماسیون سیستمهای مختلف مانند روشنایی هوشمند، آبیاری و تهویه مطبوع
- اینترنت اشیاء: ساخت دستگاههای هوشمند متصل به اینترنت برای جمعآوری و ارسال داده
- گجتهای هوشمند: ساخت گجتهای پوشیدنی، ابزارهای اندازهگیری و سایر دستگاههای هوشمند
- پروژههای آموزشی: آموزش مفاهیم پایه الکترونیک و برنامهنویسی
معروفترین و بهترین مدلهای آردوینو:
- Arduino Uno: محبوبترین برد آردوینو، مناسب برای شروع کار و پروژههای ساده
- Arduino Nano: بردی کوچک و کمجا، مناسب برای پروژههای با فضای محدود
- Arduino Mega: بردی قدرتمند با تعداد پینهای بیشتر، مناسب برای پروژههای پیچیده
- Arduino Esp32: بردی با قابلیت اتصال Wi-Fi و بلوتوث، مناسب برای پروژههای اینترنت اشیاء
رزبری پای: کامپیوتری کوچک با دنیایی از امکانات
رزبری پای (Raspberry Pi) یک کامپیوتر تک برد کوچک است که به دلیل قدرت پردازش بالا، تنوع اتصالات و سیستمعاملهای مختلف، به انتخابی محبوب برای پروژههای پیچیدهتر تبدیل شده است. این پلتفرم برای طیف وسیعی از کاربردها از جمله برنامهنویسی، وبگردی، اجرای سیستمعاملهای سبک و حتی برخی بازیها مناسب است. از آنجایی که رزبری پای یک کامپیوتر کامل است، از میکروکنترلرهای تخصصیتر مانند Broadcom BCM2835 یا BCM2837 استفاده میکند.
- قدرت پردازش بالا: رزبری پای از پردازنده قدرتمند و حافظه رم بیشتری نسبت به آردوینو برخوردار است که آن را برای پروژههای پیچیده و محاسبات سنگین مناسبتر میکند.
- تنوع اتصالات: رزبری پای دارای طیف وسیعی از اتصالات مانند پورتهای USB، HDMI و Wi-Fi است که آن را به پلتفرمی ایدهآل برای اتصال به دستگاههای مختلف تبدیل میکند.
- سیستم عاملهای مختلف: رزبری پای از سیستمعاملهای مختلف مانند لینوکس و ویندوز پشتیبانی میکند و امکان اجرای نرمافزارهای مختلف را فراهم میکند.
- انواع محیطهای برنامهنویسی: طیف وسیعی از محیطهای برنامهنویسی رایگان و غیررایگان برای رزبری پای مانند Thonny IDE، PyCharm و Visual Studio Code در دسترس است. انتخاب محیط برنامهنویسی مناسب به سلیقه شخصی، سطح تجربه و نیازهای پروژه شما بستگی دارد.
- قابلیتهای پیشرفته: رزبری پای از قابلیتهای پیشرفته مانند پردازش تصویر، هوش مصنوعی و یادگیری ماشین پشتیبانی میکند.
در همین رابطه بخوانید:
- تاریخچه پردازنده های کامپیوتر و معرفی تاثیرگذارترین CPU های تاریخ
کاربردهای رزبری پای:
- کامپیوتر شخصی: استفاده به عنوان کامپیوتر رومیزی یا لپتاپ برای انجام کارهای روزمره
- مرکز رسانه: پخش فیلم، موسیقی و عکس
- سرور وب: میزبانی وبسایتها و برنامههای وب
- ایستگاه بازی: اجرای بازیهای کامپیوتری
- هوش مصنوعی: اجرای برنامههای یادگیری ماشین و هوش مصنوعی
معروفترین و بهترین مدلهای Raspberry Pi:
- Raspberry Pi 4: (قدرتمندترین مدل رزبری پای) مجهز به پردازنده 4 هستهای Broadcom BCM2837B0، 4 گیگابایت رم و پشتیبانی از دو پورت HDMI برای اتصال به مانیتورهای مختلف.
- Raspberry Pi 3A+: (مدل اقتصادی و پرفروش) مجهز به پردازنده 4 هستهای Broadcom BCM2837B0، 1 گیگابایت رم و پشتیبانی از پورت HDMI و LAN.
- Raspberry Pi 400: (کامپیوتر یکپارچه) شامل برد Raspberry Pi 4، کیبورد، ماوس و نمایشگر 7 اینچی در یک پکیج کامل.
- Raspberry Pi Zero WH: (کوچکترین و ارزانترین مدل) مجهز به پردازنده تک هستهای Broadcom BCM2835، 512 مگابایت رم و پشتیبانی از Wi-Fi و بلوتوث.
- Raspberry Pi Compute Module 4: (ماژول صنعتی) مناسب برای تعبیه در دستگاههای صنعتی و کاربردهای تخصصی.
انتخاب مدل مناسب رزبری پای:
انتخاب مدل مناسب رزبری پای به نیازها و الزامات پروژه شما بستگی دارد.
- Raspberry Pi 4: برای پروژههای پیچیده و محاسبات سنگین بهترین انتخاب است.
- +Raspberry Pi 3A: برای پروژههای عمومی و کاربردهای روزمره گزینه اقتصادی و مناسبی است.
- Raspberry Pi 400: برای کاربران مبتدی، یک کامپیوتر شخصی ساده و کامل ارائه میدهد.
- Raspberry Pi Zero WH: برای پروژههای کوچک و مجتمع انتخابی ایدهآل است.
- Raspberry Pi Compute Module 4: برای پروژههای حرفهای ماژولی قدرتمند و انعطافپذیر برای نیازهای خاص است.
جمعبندی
میکروکنترلرها کامپیوترهایی کوچک و تک برد هستند که برخلاف CPUها که بیشتر یک پردازنده خام هستند، انبوه واحدهای برقراری ارتباط و تعامل با دنیای خارج درون آنها قرار داده شده است. این تراشهها به دلیل آنکه در ابعاد و با قابلیتهای متنوع عرضه میشوند میتوانند هم در پروژههای بسیار ساده و هم پیچیده مورد استفاده قرار بگیرند. یک ریزکنترلگر برای کار نیاز به یک برنامه دارد که توسط برنامهنویسی در محیط IDE یا کامپایلر نوشته شده و توسط پروگرمرها به آن منتقل میشود.
به دلیل بازه قیمتی بسیار بزرگ، میتوان میکروکنترلرهای زیر یک دلار گرفته تا چند هزار دلاری را از بازار تهیه کرد و انبوه دستگاههای مختلف برای استفاده در امور آموزشی، دانشجویی، صنعتی، چندرسانهای، لوازم خانگی و حتی نظامی را با میکروکنترلرها طراحی کرد و ساخت.
این روزها میتوان به دو صورت از میکروکنترلرها استفاده کرد. راهکار اول این است که خود شما با استفاده از دانش الکترونیکی که دارید اقدام به طراحی مدار الکترونیکی مورد نیاز برای سوار کردن و اجرای دستورات نوشته شده داخل برنامه ریز کنترلگر کنید. روش دوم استفاده از بردهای توسعه است که معروفترین آنها بردهای آردوینو و STM32 یا مدلهایی مانند WeMOS هستند. البته کامپیوترهای تکبرد دیگری نیز به لطف توان بالای میکروکنترلرها و ترکیب آنها با تراشههای حافظه و ارتباطی شکل گرفتهاند که معروفترین مدلهای آنها بردها رزبری پای هستند که میتوانند از پروژههای ساده گرفته تا حتی ساخت لپتاپها و سرورها مورد استفاده قرار بگیرند.
در نهایت باید گفت که میکروکنترلرها به قطعاتی بسیار محبوب تبدیل شدهاند که تصور دنیای بدون آنها تقریباً غیرممکن است. قطعاتی که نه پیچیدگی CPUها برای ساخت را نیاز دارند و نه هزینه بالا و انبوه تجهیزات برای راهاندازی. این قطعات میتوانند به یک دانشآموز کمک کنند که طرحی را بسازد که شاید 30 سال پیش حتی تصورش هم غیرممکن بود و حتی بستری باشند که بتوانید یک هواپیمای بدون سرنشین بسازید که بتواند صدها کیلومتر را پیموده و مأموریتی که برایش در نظر گرفته شده را به نحو احسن انجام دهد.
پاسخ به سوالات پرتکرار
کاربرد میکروکنترلر چیست؟
کاربردهای ریزکنترلگر بسیار گسترده است و در طیف وسیعی از دستگاهها از جمله لوازم خانگی (ماشین لباسشویی، یخچال، تلویزیون و ...)، ابزارهای الکترونیکی (تلفن همراه، تبلت، لپتاپ)، خودروها (سیستمهای کنترل موتور، ترمز ABS، کیسه هوا)، صنعت (رباتها، سیستمهای اتوماسیون، تجهیزات اندازهگیری)، اسباببازیها (ماشینهای کنترلی، رباتهای اسباببازی) و پروژههای DIY (ساخت ربات، سیستمهای هوشمند خانگی) مورد استفاده قرار میگیرد.
انواع میکروکنترلر کدامند؟
میکروکنترلرها در انواع مختلف با ویژگیها و قابلیتهای متنوع عرضه میشوند که هر کدام برای کاربردهای خاصی مناسب هستند. برخی از رایجترین انواع میکروکنترلرها عبارتند از: میکروکنترلرهای AVR (مناسب برای پروژههای مبتدی و عمومی به دلیل قیمت مناسب و کاربری آسان)، میکروکنترلرهای ARM (قدرتمندتر از AVR و مناسب برای پروژههای پیچیده و محاسبات سنگین)، میکروکنترلرهای PIC (مناسب برای پروژههای با مصرف برق کم و نیاز به دقت بالا) میکروکنترلرهای ESP8266 (مجهز به Wi-Fi و بلوتوث، مناسب برای پروژههای اینترنت اشیاء) و میکروکنترلرهای MSP430 (مناسب برای پروژههای با زمان پاسخ سریع و نیاز به دقت بالا).
نظر خود را اضافه کنید.
برای ارسال نظر وارد شوید
ارسال نظر بدون عضویت در سایت