میکروکنترلر چیست؟
شما ممکن است از خود بپرسید که میکروکنترلر چیست و چه کاری انجام میدهد؟ میکروکنترلر یک دستگاه محاسبه ای می باشد که قابلیت اجرای یک برنامه را دارد و اغلب به عنوان “مغز” یا “مرکز کنترل” ربات یاد می شود چرا که معمولا مسئول انجام محاسبات و تصمیم گیریها میباشد. به منظور ارتباط با جهان خارج، میکروکنترلر دارای یک سری پین (اتصالات سیگنال الکتریکی) میباشد که میتواند به بالا (۱/on) و پایین (۰/off)، از طریق دستور العملهای برنامه ریزی، تبدیل شود. این پینها همچنین میتوانند به عنوان سیگنالهای الکتریکی هم بکار روند (به شکل سنسور و یا دستگاههای دیگر) و خبر دهند که آن ها بالا یا پایین هستند. اکثر میکروکنترلرهای مدرن هم میتوانند سیگنالهای ولتاژ آنالوگ را اندازه گیری کنند (یعنی سیگنالهایی که میتوانند طیف گستردهای از مقادیر را به جای فقط دو عدد به خوبی دارا باشند) از طریق استفاده تبدیل آنالوگ به دیجیتال (ACD). با استفاده از ACD یک میکروکنترلر میتواند یک مقدار عددی را به یک ولتاژ آنالوگ اختصاص دهد که نه بالاست و نه پایین.
یک میکروکنترلر چه کاری می تواند انجام دهد؟
اگرچه در نگاه اول به نظر میرسد میکروکنترلرها محدود هستند، اما بسیاری از اقدامات پیچیده را میتوان با تنظیم پین بالا و پایین در یک راه هوشمندانه بدست آورد. با این حال ایجاد الگوریتم های بسیار پیچیده (مانند پردازش پیشرفته چشم انداز و رفتار هوشمند) و یا برنامه های بسیار بزرگ ممکن است به سادگی برای یک میکروکنترلر، به علت منابع ذاتی و محدودیتهای سرعت، غیرممکن باشد. میکروکنترلرر ها می توانند برای کنترل انواع دستگاه های الکتریکی مورد استفاده قرارگیرند، مانند: محرک ها (هنگامی که به کنترل کننده موتورها متصل می باشند)، دستگاه های ذخیره سازی (مانند کابل های SD)، WIFI و یا رابط بلوتوث و غیره. به دنبال این تطبیق پذیری باورنکردنی، میکروکنترلر ها را می توان در تولیدات روزمره پیدا کرد. عملا همه لوازم های خانگی و یا دستگاه های الکترونیکی از حداقل یک (اغلب چند) میکروکنترلر استفاده می کنند. به عنوان مثال دستگاه تلویزیون، ماشین لباس شویی، کنترل از راه دور، تلفن، ساعت، اجاق های ماکروویو، و در حال حاضر ربات ها هم به این دستگاه های کوچک نیازمند هستند تا به کار بیافتند.
برخلاف ریزپردازنده ها (مانند CPU در کامپیوترهای شخصی)، یک میکروکنترلر نمی تواند لوازم جانبی ای مانند RAM خارجی و یا دستگاه های ذخیره ساز خارجی را بکار بگیرد. این به این معنی است که اگرچه میکروکنترلر ها نسبت به PC همتای خود، دارای قدرت کمتری می باشند، اما توسعه دادن مدارها و محصولات بر پایه میکروکنترلر ها بسیار ساده تر و ارزان تر شده است، به این دلیل که اجزای سخت افزاری اضافی به مقدار کمتری مورد نیاز می باشند. این مهم است که توجه داشته باشید میکروکنترلر تنها می تواند مقدار بسیار کمی از انرژی الکتریکی را از پین های خود خارج کند. این بدان معنی است که یک میکروکنترلر به احتمال زیاد قادر نخواهد بود که قدرت موتورهای الکتریکی، سیم پیچ ها، چراغ های بزرگ و یا دیگر دستگاه های عظیم را مستقیما عبور دهد. تلاش برای انجام این کار ممکن است به میکروکنترلر آسیب فیزیکی بزند.
ویژگی های تخصصی تر در میکروکنترلر چیست؟
سخت افزار ویژه ای که میکروکنترلر ها دارند به این معنی است که این دستگاه ها می توانند کارهایی بیشتر از دیجیتال معمولی I/O ، محاسبات عمومی، ریاضیات پایه و تصمیم گرفتن انجام دهند. بسیاری از میکروکنترلر ها توسط محبوب ترین پروتکل های ارتباطی حمایت می شوند، مانند UART، SPI و I2C. این ویژگی در هنگام برقراری ارتباط با دستگاه های دیگر مانند رایانه ها، سنسورهای پیشرفته و یا دیگر میکروکنترلر ها فوق العاده مفید است. اگرچه پیاده سازی این پروتکل ها به صورت دستی امکان پذیر می باشد، اما همیشه خوب است که یک سخت افزار اختصاصی که در جزئیات آن دقت کافی شده است داشته باشیم. بنابراین به میکروکنترلر اجازه داده می شود که بر روی کارهای دیگر تمرکز کند، و همچنین اجازه یک برنامه پاک کننده می دهد.
تبدیل کننده آنالوگ به دیجیتال (ADC) برای برگرداندن سیگنال های ولتاژ آنالوگ به مقدار متناسبی از دیجیتال استفاده می شود. سپس این مقدار می تواند در میکروکنترلر ها مورد استفاده قرار گیرد. به منظور خروج یک مقدار متوسط از قدرت های مختلف “بالا” و “پایین” ، برخی میکروکنترلر ها قادر به استفاده از مدولاسیون عرض پالس (PWM) می باشند. به عنوان مثال این روش هموار کم نور LED را ممکن می سازد. در نهایت، برخی میکروکنترلر ها با یک تنظیم کننده در برد توسعه خود ادغام شده اند. این امر نسبتا راحت تر شده است؛ از زمانی که تنظیم کننده به میکروکنترلر ها اجازه می دهد با طیف گسترده ای از ولتاژها طراحی شوند که دیگر شما نیاز به ارائه ولتاژ دقیق مورد نیاز خود نخواهید داشت. همچنین اجازه می دهد که در سنسورهای قدرت و لوازم جانبی دیگر، نیاز به منبع قدرت تنظیم کننده خارجی نباشد.
آنالوگ یا دیجیتال؟
در زیر شما می توانید دو مثال را ببینید که نشان دهنده زمانی است که از یکی از پین های دیجیتال یا آنالوگ استفاده می شود:
۱٫ یک سیگنال دیجیتال به منظور ارزیابی وضعیت جفتی از یک سوئیچ استفاده می شود. همانطور که در زیر نشان داده شده است (در سمت چپ نمونه solderless)، یک سوئیچ لحظه ای یا دکمه بسته مدار هنگامی که فشرده می شود، و به جریان اجازه جاری شدن می دهد (مقاوم در برابر بالا کشیدن هم نشان داده شده است). پین دیجیتال که متصل به مدار می باشد (از طریق یک سیم سبز در تصویر) یا پایین/۰ (بدین معنی که ولتاژ پین، در محدوده کمی می باشد، در اینجا ۰v) و یا بالا (بدین معنی که دکمه فشرده شده است و ولتاژ در محدوده بالایی قرار دارد، در اینجا ۵v) را نشان می دهد.
۲٫ آنالوگ: مقاومت متغیر یا پتانسیومتر (همانطور که در زیر نشان داده شده است،طرف راست برد زیر) برای ارائه یک سیگنال الکتریکی آنالوگ متناسب با چرخش استفاده می شود (به عنوان مثال دکمه تنظیم صدا در استریو) . همانطور که در زیر نشان داده شده است، هنگامی که یک پتانسیومتر به بازه ۵v متصل می شود و محور می چرخد، خروجی بین ۰ تا ۵v متناسب با زاویه چرخش، متفاوت خواهد بود. ADC در یک میکروکنترلر ولتاژ را تفسیر کرده و آن را به یک مقدار عددی تبدیل می کند. بنابراین اگر شما در رابطه با دستگاهی که می خواهید متصل کنید، شک دارید که ارزش متناسب با چیز دیگری را ارائه دهد (به عنوان مثال: دما، نیرو، موقعیت)، به احتمال زیاد نیاز به پین آنالوگ می باشد.
برنامه ریزی چه می شود؟
ترس از برنامه ریزی میکروکنترلرها دیگر از مد افتاده است. برخلاف زمان های گذشته که در آن ساخت یک چشمک زن نوری، دانش پیشرفته میکروکنترلر ها و ده ها خط کد، را نیازمند بود (بدون اشاره به کابل موازی یا سریال متصل به برد توسعه بزرگ) برنامه ریزی میکروکنترلر ها به لطف محیط های توسعه یکپارچه (IDE) بسیار ساده شده است، که از زبان های به روز، کتابحانه های جامع و ویژه که به راحتی بیشتر عمل های شایع را (و نه چندان شایع) را دربردارند و چند نمونه کدهای آماده برای شروع مبتدیان، استفاده می کنند. درحال حاضر میکروکنترلر ها می توانند در سطح بالایی از زبان های برنامه نویسی، همچون C# , C++ , C ، پردازش (نوعی از C++)، جاوا، پایتون، دات نت و پایه ای، برنامه ریزی شوند. البته همیشه ممکن است که آن ها را در اسمبلر برنامه ریزی کنند اما این امکان برای کاربران پیشرفته تر و دارای شرایط خیلی ویژه، محفوظ می باشد. بدین ترتیب همه باید قادر به پیدا کردن یک زبان برنامه نویسی باشند که با توجه به سلیقه آن ها و تجربه قبلی آن ها از برنامه نویسی، مناسب باشد.
IDM ها درحال تبدیل شدن به شکل ساده تری از تولیدکنندگان محیط های برنامه نویسی گرافیکی هستند. دنباله هایی که استفاده می شوند و به چند خط کد نیاز دارند، به یک تصویر تقلیل می یابند که می تواند به دیگر تصاویر موجود در فرم کد ارتباط داشته باشد. به عنوان مثال یک تصویر ممکن است نشان دهنده کنترل یک موتور باشد و کاربر تنها باید جایی که مدنظر دارد این تصویر را قرار دهد و جهت و دور در دقیقه (rpm) را مشخص کند. در بخش سخت افزار، میکروکنترلر بردهای اضافی را توسعه بخشیده است که استفاده از آن ها در طول زمان بسیار آسان تر شده است. این بردها معمولا تمام پین های مفید میکروکنترلر را بیرون می گذارد و آن ها را برای دسترسی سریع به نمونه سازی مدار آماده می کنند. آن ها همچنین قدرت مناسب USB و برنامه ریزی رابط را ارائه می دهند و در هرکامپیوتر مدرنی این دوشاحه قرار دارند. برای کسانی که ناآشنا با شرایط هستند، یک برد توسعه، یک برد مداری است که یک تراشه میکروکنترلر را با تمام حمایت الکترونیکی فراهم می کند (مانند: تنظیم کننده ولتاژ، اسیلاتور، مقاومت محدودکننده جریان ها، و شاخه های USB) . اگر شما در حال برنامه ریزی برای ساخت مدار خود نیستید، خرید یک برد توسعه به داشتن یک تراشه ساده میکروکنترلر ترجیح داده می شود. برنامه ریزی ربات به صورت کامل تر و با جزئیات بیشتر در بخش ۱۰ توضیح داده شده است.
چرا از یک کامپیوتر استاندارد استفاده نکنیم؟
واضح است که یک میکروکنترلر بسیار شبیه به یک CPU کامپیوتر و یا یک ریزپردازنده و برد توسعه هم شبیه به مادربرد کامپیوتر می باشد. اگر اینگونه است چرا از یک کامپیوتر کامل برای کنترل ربات استفاده نکنیم؟ در واقع در بیشتر ربات های پیشرفته، بویژه آن هایی که شامل محاسبات پیچیده و چشم انداز الگوریتم ها هستند، میکروکنترلر اغلب جایگزین (یا تکمیل کننده) یک کامپیوتر استاندارد می باشند. یک کامپیوتر رومیزی شامل مادربرد، پردازنده، یک دستگاه ذخیره سازی اصلی (مانند هارد دیسک)، پردازش تصویری (بر روی برد یا به صورت خارجی)، RAM، و البته لوازم های جانبی مانند: مانیتور، صفحه کلید، موس و … می باشد. این نوع سیستم معمولا گران می باشد و از نظر جسمی بزرگ می باشد و به قدرت زیادی نیاز دارد.
انتخاب میکروکنترلر صحیح
مگر در مواردی که شما در ارتباط با رباتیک BEAM هستید و یا به دنبال کنترل ربات خود با استفاده از محدود کننده و یا سیستم R/C می باشید (که بر اساس تعریف ما از درس ۱، یک ربات را درنظر نمی گیرد)، شما به یک میکروکنترلر برای هر پروژه نیاز خواهی داشت. برای یک مبتدی، انتخاب یک میکروکنترلر صحیح ممکن است مانند یک وظیفه دلهره آور به نظر برسد، به خصوص با توجه به اینکه طیف وسیعی از محصولات، مشخصات و برنامه های کاربردی بالقوه وجود دارند. تعداد بسیار زیادی از میکروکنترلر ها درحال حاضر در بازار موجود می باشند: Arduino، BasicATOM، BasicX، فناوری POB، Pololu، Parallax و بسیار انواع دیگر. با درنظر گرفتن میکروکنترلر صحیح، از خود سوالات زیر را بپرسید:
۱٫ کدام میکروکنترلر برای مقصودمن متداول تر می باشد؟
البته ساخت ربات و پروژه های الکترونیکی یک رقابت برای محبوبیت نیست، اما این واقعیت که یک میکروکنترلر دارای حمایت بزرگ عوام می باشد و به طور موفقیت آمیز در موقعیت های مشابه (و یا دقیقا به همین صورت) استفاده شده است، می تواند فاز طراحی شما را به شکل قابل توجهی ساده کند. بدین ترتیب شما می توانید از تجربه سایر کاربران و علاقه مندان بهره مند شوید. این امر در بین سازندگان ربات بسیار متداول می باشد که آن ها نتایج، کد، تصاویر، فیلم ها، موفقیت های جزئی و حتی شکست ها را به اشتراک بگذارند. در دسترس بودن همه این موارد و امکان دریافت مشاوره از کاربران باتجربه تر می تواند بسیار با ارزش واقع شود.
۲٫ آیا دارای خصوصیت ویژه ای که مورد نیاز ربات است، می باشد؟
همانطور که واضح است، میکروکنترلر شما باید قادر باشد نیازهای ربات شما را برطرف کند تا ربات تمامی عملکرد های خود را انجام دهد. برخی از ویژگی ها به تمامی میکروکنترلر ها باز می گردند (به عنوان مثال داشتن ورودی و خروجی دیجیتال، قادر به انجام عملیات ساده ریاضی، مقایسه مقادیر و تصمیم گیری) در حالی که بقیه ویژگی ها نیازمند سخت افزار ویژه ای هستند (به عنوان مثال ADC، PWM و پشتیبانی از پروتکل های ارتباطی). همچنین حافظه و سرعت مورد نیاز و تعداد پین ها را هم باید در نظر گرفت.
۳٫ آیا لوازم جانبی مورد نیاز برای یک میکروکنترلر مخصوص می باشند؟
اگر ربات شما دارای شرایط خاصی باشد و لوازم ویژه ای را لازم دارد که برای طراحی شما مهم است، مسلما انتخاب یک میکروکنترلر سازگار بسیار مهم می باشد. اگرچه بیشتر سنسورها و لوازم جانبی را می توان به صورت مستقیم با میکروکنترلر ها مرتبط کرد، برخی از لوازم جانبی به عنوان رابط با یک میکروکنترلر خاص می باشند و حتی خارج از جعبه عملکرد و یا نمونه کد ارائه می دهند.
ازآنجایی که قیمت کامپیوتر کاهش یافته و پیشرفت در تکنولوژی آن ها را کوچکتر و میزان انرژی آن ها را کارآمدتر کرده است، تک برد کامپیوتر به عنوان یک گزینه جذاب برای ربات ها پدیدآمده است. این تک بردهای کامپیوتر اساسا کامپیوتر هایی هستند که ممکن است شما در ۵ سال گذشته استفاده می کردید و ترکیب بسیاری از دستگاه ها در یک برد می باشند (بنابراین شما نمی توانید هرچیزی را جانشین آن ها کنید). آن ها می توانند یک سیستم عامل کامل را اجرا کنند (Windows و Linux رایج ترین آن ها هستند) و همچنین می توانند به دستگاه های جانبی مانند USB و LCDها متصل شوند. برخلاف نمونه های گذشته، این تک بردهای کامپیوتر تمایل به قدرت بسیار کارآمدتر دارند.
به منظور انتخاب یک میکروکنترلر، ما لیستی ار ویژگی ها و معیارهایی که باید درنظر بگیریم، بیان میکنیم:
۱٫ هزینه میکروکنترلر در حالی که برد توسعه را هم شامل می شود باید کم باشد.
۲٫ استفاده از آن باید راحت باشد و بخوبی پشتیبانی شود. همچنین مهم است که تعداد زیادی استاد و مدارک در اختیار داشته باشیم.
۳٫ این میکروکنترلر باید در زبان C و یا هر زبانی مبتنی بر C برنامه نویسی شود.
۴٫ باید محبوب بوده و انجمن کاربری فعالی داشته باشد.
۵٫ از آنجا که ربات به عنوان یک پلت فرم برای مصارف عمومی استفاده خواهد شد، میکروکنترلر باید قابلیت بسیار غنی ای داشته باشد تا اجازه انجام آزمایش های گسترده را بدهد. بنابراین باید چندین پین آنالوگ و دیجیتال و همچنین یک تنظیم کننده ولتاژ یکپارچه داشته باشد.
از آنجا که ربات ما از دو موتور استفاده می کند، میکروکنترلر به دو پین دیجیتال برای کنترل جهت و دو پین PWM برای کنترل سرعت، نیاز دارد که درباره جزئیات بیشتر در درس ۵ توضیح داده خواهد شد. در بخش بعدی آموزش ساخت ربات به انتخاب موتور برای ساخت ربات میپردازیم. شما میتوانید سوالاتتان را از طریق ثبت کامنت در انتهای همین پست مطرح کنید. من در سریعترین زمان ممکن پاسخ سوال شما را ارسال میکنم.