میکروکنترلر
میکروکنترلر به معنای کنترلر کوچک پرکاربرد ترین و پرتیراژترین پردازنده و تراشه ساخت بشر است و در اغلب دستگاه ها و تولیدات نقش اصلی را ایفا می نماید. تمامی دانش های نوین وابستگی کامل به میکروکنترلر ها دارند مانند : پزشکی ،کشاورزی ،هوانوردی ،دریانوردی ،هوافضا ،خودروسازی ، رایانه و … . که این استفاده گسترده باعث شده است که یک فرد متخصص در این زمینه بتوان در هر صنعتی فعالیت مایل باشد به فعالیت بپردازد.
طراحی مدارات الکترونیک یکی از مهمترین قسمت های طراحی با میکروکنترلر هاست که میکروکنترلر و برنامه نوشته شده روی آن در صورت کار کرد بی عیب و نقص مدارات متصل به آن است که می توانند کار خود را انجام دهند، که در اکثر پروژه ها طراحی مدار از برنامه نویسی میکروکنترلر چالش های بیشتری دارد و زمان بیشتری را به خود اختصاص می دهد و یک طراح به این دلیل باید هم طراحی مدار و هم برنامه نویسی میکروکنترلر را بلد باشد که بتواند در شرایط مختلف برای عملکرد بهتر پیچیدگی های نرم افزاری را به سخت افزار و بلعکس منتقل کند. دانش طراحی مدارات الکترونیک بسیار گسترده است که خود از چند زیر دانش تشکیل شده است که به شرح زیر می باشد:
-
طراحی مدار آنالوگ
طراحی هایی که به وسیله ی ترانزیستور ها و نحوه ی اتصال ترانزیستورها به هم برای انجام یک کار مشخص که ترانزیستور در اینجا نقش یک قطعه ی اصلی را دارد و بقیه قطعات در کنار ترانزیستور به ایفای نقش می پردازند.
-
طراحی مدار دیجیتال
طراحی با گیت ها منطقی مانند AND,OR,NAND,XOR,XNORNOT و غیره صورت میگیرد تا یک عملکرد خاص را بتوان با این گیت ها بوجود آورد.
-
طراحی مدارات الکترونیکی
یک طراح مدار با استفاده از قطعات آنالوگ و قطعات دیجیتال یک مدار طراحی می کند که ممکن است با نیاز یا بدون نیاز به میکروکنترلر یا پردازشگر یک وظیفه خاص را انجام دهد.
-
طراح منابع تغذیه
طراح منابع با استفاده از قطعاتی مانند ترانسفرماتور و رگولاتور و در کنار آن ها ممکن است از بسیاری قطعات آنالوگ و دیجیتال استفاده نماید تا بتواند یک ولتاژ و جریان را به یک ولتاژ و جریان دیگر تبدیل نماید.
-
طراح بورد مدار چاپی (PCB)
طراحان بورد به چگونگی قرارگیری قطعات از لحاظ مکانی و برقراری ارتباط بین آن ها با مسیر کشی طبق طراحی هایی که توسط یک طراح مدار به آن ها داده شده است می پردازند و ظاهر فیزیکی بورد را آن ها تعیین و طراحی می کنند.
-
مونتاژ کننده
مونتاژ کار قطعات طراحی شده توسط طراح مدار را بر روی بورد طراحی شده توسط طراح بورد نصب و لحیم کاری می نماید
- برنامه نویس میکروکنترلر
برنامه نویس با نوشتن یک برنامه بر روی میکروکنترلر به عنوان هسته اصلی مدار کنترل مدارات طراحی شده را به عهده گرفته تا با دریافت ورودی های موردرنظر پردازش را انجام داده و خروجی مورد نیاز را تولید نماید که یک میکرو برای کار کردن نیاز به منبع تغذیه و دیگر مدارات و قطعات آنالوگ و دیجیتال دارد که همگی روی یک بورد نصب می شوند. -
برنامه نویس FPGA
FPGA نیز مانند میکروکنترلر است فقط نحوه برنامه نویسی و مدارات داخلی آن با میکروکنترلر متفاوت است
-
طراحی آی سی (IC Design)
طراح آی سی به طراحی مدارات داخلی یک آی سی و یا پردازشگر یا حتی میکروکنترلر می پردازد که فقط در تعداد معدودی کشور این کار انجام می شود که با استفاده از برخی قطعات آنالوگ و گیت های منطقی در مقیاسی بسیار کوچک با تکنولوژی های بسیار High Tech این طراحی انجام می شود.
-
طراحی مواد الکترونیک
این طراحان با بهره گیری از اصول بنیادی فیزیک و اکتریسیته و بهره گیری از دانش مواد به طراحی سنسورها ، قطعات آنالوگ و دیجیتال موتورها ، هادی ها و … می پردازند.
کسانی که قراره با میکیوب تخصص میکروکنترلر رو انتخاب کنند قراره که تمامی موارد بالا رو غیر از بند 8، 9 و 10 رو یاد بگیرند ،مورد 8 که FPGA هست و یک تخصص جدا هست و بهتر هست کسانی که میکرو کار می کنند وارد بحث FPGA نشوند و کسانی هم که FPGA کار می کنند به میکرو کاری نداشته باشند چون مباحث هر کدام سنگین هست و یک نفر توانایی این را دارد که هر دو را یاد بگیرد ولی زمان کافی را نخواهد داشت و در هیچ کدام حرفه ای نخواهد شد؛ مور 9 و 10 که در ایران نداریم در خارج از کشور هم فقط در کشور های آمریکا، کانادا، ژاپن، آلمان، فرانسه، انگلستان، سنگاپور، کره جنوبی، هند، چین، اسرائیل و تایوان این دانش وجود داره و اخیرا مالزی و ویتنام هم دارن یه کارایی میکنن و در عربستان هم یک صحبت هایی هست .آی سی دیزاین و طراحی مواد یک نوع دانشی هستند که حتما برای کار کردن شما باید عضو یکی از شرکت های صاحب این صنعت در این کشور ها باشید وگرنه دیگه کسی شمارو تحویل نمی گیره.
کسی که میکروکنترلر کار می کنه حتی اگر بخواد صرفا برنامه نویس باشه باید مورد 1 تا 7 رو حتما بگذرونه تا در برنامه نویسی یک دید وسیع برای نوشتن یک برنامه صنعتی داشته باشه واقعا برای کار کردن و یادگیری میکروکنترلر اگر این مراحل رو طی نکنید نتیجه نمی گیرید حتی اگر شده در حد خیلی ابتدایی باید این مراحل سپری بشوند، جدایی از این شما برای حرفه ای شدن در بحث میکروکنترلر و برنامه نویسی نیاز به تمرین و انجام پروژه دارید که در اون ابتدا که هنوز حرفه ای نشدید به ناچار خودتون باید تمامی قسمت ها رو طراحی کنید که اگر به این شیوه عمل نکنید هیچ وقت حرفه ای نخواهید شد.
با یاد گیری این مباحث به راحتی می توانید در هر زمینه و صنعتی مشغول به کار شوید و پیش زمینه رباتیک و اینترنت اشیاء نیز همین موارد می باشد. در دنیا میکروکنترلر های مختلفی داریم نیاز نیست که کار کردن با همه آن ها را بلد باشید هرکس اگر فقط به یک میکرو تسلط درست و حسابی داشته باشه همه کاری می تونه انجام بده.
میکرو ها به دو دسته کلی از لحاظ معماری تقسیم می شوند یکی معماری هاروارد(هاروارد) و یکی معماری ARM که هردو رو در قسمت مقالات که کاملا هم دسته بندی شده هست برای این که راحت تر مطالب رو پیدا کنید گذاشته شده.
مقایسه میکرو ها
میکروهای هاروارد اولین گزینه برای انتخاب میکرو برای یک پروژه هستند مثل AVR و یا PIC در صورتی که برای بعضی از کارها قیمت هاروارد ها بالا برود و توجیه اقتصادی نداشته باشد به سراغ ARM ها می رویم که قیمت پایین تری دارند و جوابگوی نیاز ما هستند، هاروارد ها چند ویژگی دارند که رغبت بیشتری در استفاده از آن ها وجود دارد، اول اینکه بسیار برنامه نویسی با آن ها ساده تر می باشد ولی این سادگی به معنای این نیست که میکرو ضعیف و از قابلیت های اون زده شده بلکه این سادگی به دلیل طراحی بسیار هوشمندانه با توجه به نیاز هر پروژه هست البته این سادگی در سطح ریجستری می باشد و در سطوح توابع ARM ها ساده تر می باشند که همین موضوع باعث شده است کسانی که با هاروارد ها کار می کنند خیلی دید بهتری به میکرو ،طراحی و منطق درونی میکرو داشته باشند که باز به همین دلیل است که بهتر است قبل از یادگیری ARM یک میکرو هاروارد را فرا بگیرید، نه به این دلیل که چون هارواد سادست و آرم سخت هاروارد رو اول یاد بگیریم بلکه به همین دلیل که گفتم برای یادگیری منطق میکرو و برنامه نویسی باید هاروارد آموخته شود. این رو بارها و بارها هرجایی گفتم هیچ میکروی بهتر یا بدتری نداریم، تنها و تنها شرایط یک پروژه هست که مشخص می کند چه میکرویی خوب و چه میکرویی بد است با یک مثال این موضوع رو روشن میکنم:
فرض کنید میکروی A دارای تمامی واحد های داخلی با حجم رم 12 گیگابایت و حافظه 1 ترابایت و فرکانس کاری 4 گیگا هرتز باشد که قیمت همچین میکرویی مسلما بالا است که فرض میکنیم 1000 دلار نه 100 دلار؛ در طرف دیگر میکرو B با 128 بایت رم و فقط با تعداد محدودی واحد داخلی و حافظه 2 کیلوبایتی و فرکانس کاری 4 مگا هرتز باشد با قیمت 30 سنت ؛
شما هم متخصص میکرو A هستید و منتظر پروژه یا کار توی یک شرکت، هرچی میشینی میبینی هیچ کس با میکرو A هیچ کاری نداره ولی از اون طرف میبینی متخصص میکرو B انقدر پروژه بهش میخوره که نمیتونه قبول کنه، شما در 20 سال گیریم سالی یدونه پروژه انجام دادی با تیراژ پایین یا شاید یدونه فقط، ولی متخصص B هر سال دو سه تا پروژه تولید انبوه با تیراژ بالا تولید کرده و تو سال اول بارشو بسته ، حالا به نظر شما کی عاقل تر بوده !!!!!؟؟؟؟؟
ما همیشه فکر میکنیم باید بریم ته یه چیزیو یاد بگیریم ولی این شکلی نیست و یا منظورم هم این نیست که اون میکرو غوله بدرد نمیخوره ولی شما ابتدای کار متوجه نیستید که این میکروهای غول فقط توسط شرکت های خاص و معدودی استفاده می شوند و حتی اگر قرار باشه که شما هم با اون ها کار کنید به تنهایی که قرار نیست کار کنید، درغالب یک تیم کار میکنید چون کار سنگینه و یک نفر از پسش بر نمیاد در این حالت شما اگر فقط با ضعیف ترین میکرو هم کار کرده باشید ولی اون واحد هایی رو که کار کرده باشید به خوبی فرا گرفته باشید میتونید با او غوله هم کار کنید مثلا اگر شما با واحد وقفه خوب کار کرده باشید اونجا مسئولیت واحد وقفه رو قبول می کنید. از طرف دیگه کسی که منطق میکروکنترلر رو یاد بگیره به راحتی با صرف یک زمان بسیار اندک میتونه یه میکرو دیگر رو هم یاد بگیره چه از هاروارد به آرم، چه از آرم به هاروارد ولیییی از هاروارد به آرم خیلی مسیر بهتری هست، بنا به تجربه میگم.
هاروارد ها میکروهایی هستند که بسیاری از تنظیمات به صورت سخت افزاری درون آن ها با توجه شماره میکرو و نیاز پروژه های هدف انجام شده است که همین امر موجب شده است که قابلیت اطمینان بیشتری داشته باشند همراه با باگ کمتر و سرعت پردازش بالاتر و نیاز به حجم رم و فلش پایین تر و حتی قیمت هم در آن ها معمولا پایین تر است و به دلیل تنوع زیاد شماره ها و مدل های آن ها می توان به راحتی مدل متناسب با پروژه را تهیه کرد و حالش و برد. همینطور که سخت افزار بیشتر و پردازش بالاتر می رود قیمت هاورارد ها از آرم ها پیشی گرفته و فاصله معنا داری را پیدا می کند که چون قیمت حرف اول و آخر رو در پروژه می زنه میریم سراغ آرم ها و دلیل دیگرش هم اینه که در پردازش های بالا برنامه نویسی با ARM مقداری راحت تر هست .
میکرو ها یه دسته بندی دیگه هم دارند اون هم چند بیتی بودنشون هست که 8،16 و 32 داریم در منطق با هم تفاوتی ندارند یعنی هرکس با 8 بیتی کار میکنه با 16 و 32 هم میتونه به راحتی کارکنه ولی سرعت پردازش در بیت های بالاتر بیشتر هست ، کلا منظور از این اعداد این است که میکرو در آن واحد روی چند بیت می تواند پردازش انجام دهد که مسلما هرچه بیشتر باشد سرعت پردازش بالاتر می رود که هم هاروارد ها و هم آرم ها 8، 16 و 32 رو دارند ولی باز هم 8 بیتی ها بیشترین استفاده را دارند به دلیل قیمت پایین تر و بهتر هم هست ابتدا مبتدی با یک میکرو 8 بیتی شروع به یادگیری نماید که هم حجم وسیعی از پروژه ها را بتواند انجام دهد و هم بهتر و ساده تر با میکرو آشنا شود.
هر کاری که با هاروارد ها میشه کرد با آرم ها هم میشه کرد و بلعکس و این قوی تره و اون ضعیف ترو این بهتر او بدتر نداریم، برای اینکه بهتر موضوع رو درک کنید یه سر به یوتیوب و اینستا بزنید اونجا کاملا توضیح دادم این هارو.
تعداد میکرو های زیادی در دنیا وجود داره که در انجا از چند تا شون که در دنیا و ایران معروف تر و پرکاربرد تر هستن نام می برم.
میکروکنترلر AVR
دیگه هر کسی کلمه میکروکنترلر به گوشش خورده این نام رو شنیده، این میکرو یک میکرو 8 بیتی با معماری هاروارد هست که از سال 1993 میلادی توسط ATMEL به بازار عرضه شده و در سال 2016 توسط میکروچیپ خریداری گردید، در ایران حجم زیادی از پروژه ها توسط این میکرو انجام میشه، قیمت بسیار مناسبی داره و منابع اطلاعات زیادی از این میکرو میتوان یافت، بالا بودن منابع اطلاعاتی و در دسترس بودن مدرسین زیاد باعث شده که بیشترین تعداد متخصصین را این میکرو به خود اختصاص دهد این میکرو از لحاظ پارامتر های صنعتی از سطح پایین تری نسبت به بقیه میکرو ها برخوردار است، نگفتم صنعتی نیست،صنعتیه ولی نسبت به بقیه سطحش پایین تره ولی بیشترین حجم پروژه های صنعتی در کشور با این میکرو انجام میشه به دلیل قیمت و ویژگی های مناسبی که داره.
میکروکنترلر Xmega
این میکرو سری 16 بیتی AVR است که از لحاظ منابع و واحد های داخلی ، فرکانس و سطح صنعتی ارتقاء بسیار زیادی پیدا کرده است که آن را هم رده با PIC ها و ARM ها کرده است. منابعی مانند رم و فلش بسیار افزایش یافته اند، فرکانس میکرو به دو برابر افزایش یافته و واحد های داخلی را در این میکرو می بینیم مانند DMA که در میکروهای خیلی رده بالاتر قابل مشاهده است ولی از لحاظ ساختاری و برنامه نویسی با AVR تفاوتی ندارد و هرکس که AVR سری ATmega رو کار کرده باشه به راحتی می تواند با AVR سری Xmega هم کار کند که با ترکیب این دو سری حجم بسیار وسیعی از پروژه ها را می توان انجام داد که از لحاظ قیمتی هم بسیار مناسب است.
میکروکنترلر PIC
این میکرو متعلق به میکروچیپ است همون شرکتی که AVR رو هم خرید و الان هردو توسط یک شرکت تولید می شوند، PIC که از سال 1993 به بازار عرضه گردید، بااختلاف صنعتی ترین میکرو مورد بحث ماست که معماری هاروارد داره و 8 ، 16 و 32 بیتی این میکرو هم وجود داره. PIC ها از محبوبیت بسیار بالایی در دنیا برخوردار است و کمترین متخصص را در بین بقیه میکرو ها در کشور دارد و حتی می توانم بگویم گمنام ترین میکرو هست که آن هم بدلیل مدرس کم این میکرو و منابع اطلاعاتی به زبان پارسی کم درحالی که این میکرو در منابع اطلاعاتی بسیار قوی است. صنعت ایران و جهان تشنه متخصصین این میکرو هست علارقم داشتن قیمت بالاتر نسبت به بقیه میکرو ها باز هم به دلیل صنعتی بودن، منابع اطلاعاتی زیاد، واحد های داخلی متنوع و خدمات نرم افزاری بسیار عالی تمایل به استفاده از این میکرو بشدت بالاست ولی متخصص کم برخلاف AVR.
PIC یک میکرویی است که با داشتن تمامی واحد های داخلی و هر امکانات دیگری که بخواهید میتواند به تنهایی جواب گوی تمامی پروژه ها باشد ولی تقریبا 90 درصد پروژه ها را با PIC انجام داده و فقط 10 درصد از پروژه ها هستند که استفاده از ARM ها به جای PIC بهتر، ساده تر و مقرون به صرفه تر است، کسی که از PIC استفاده می کند اصلا نیازی به AVR ندارد مگر آنکه از لحاظ قیمتی AVR در برخی اوقات ارزان تر باشد.
میکروکنترلر Stm8
این میکرو توسط شرکت ST در سال 2007 با معماری هاروارد ارائه گردید و بسیار از لحاظ واحد های داخلی متنوع به همراه قیمت بسیار مناسب بود، این میکرو از لحاظ منابع اطلاعاتی و پشتیبانی نرم افزاری مقداری ضعیف تر از AVR و PIC عمل کرد ولی با داشتن قابلیت ها و واحد های داخلی متنوع بسیار در پروژه هایی که نیاز به مصرف کم انرژی و همچنین قیمت پایین نیاز داشتند مورد استفاده قرار گرفت و از لحاظ کلی یه چیزی بین PIC و AVR هست در بیشتر مدل ها از AVR قابلیت ها و سخت افزار قوی تری دارد و در بیشتر مدل ها از PIC کمتر.اکثر پروژه هایی که نیاز به پردازش بالایی ندارند توسط این میکرو قابل انجام است ولی برای شروع یادگیری میکروکنترلر پیشنهاد نمی شود و با وجود PIC و AVR کمتر به سراغ این میکرو می رویم مگر در مواقعی که از لحاظ هزینه ای شرایط بهتری داشته باشد و یا نیاز به یک واحد داخلی خاص مانند Touch داشته باشیم.
میکرو کنترلر STM32
شرکت ST با این سری از میکروهای خود و با رفع کردن کاستی های STM8 توانست جایگاه ویژه ای را برای خود در این عرصه تصاحب کند این سری از میکرو ها با معماری 32 بیتی ARM و تنوع در کرتکس ها ، شماره ها، واحد های داخلی متنوع و قدرتمند و مهمترین موردها که یکی خدمات و پشتیبانی نرم افزاری بسیار عالی همراه با ارزان سازی قیمت است و با داشتن منابع اطلاعاتی بالا توانست گوی سبقت را از بقیه ARM ها بگیرد نسبت به آن ها بیشترین تولید و استفاده را داشته باشد.
این سری از میکروهای خانواده ها و شماره های زیادی دارند که همین تنوع باعث شده است که بتوان تمامی پروژه ها را توسط این میکرو انجام داد.
STM32 یک میکرو صنعتی است که سطح صنعتی بودن آن از AVR ها بالاتر و از PIC پایین تر می باشد که معمولا به دلیل خدمات نرم افزاری عالی و قیمت مناسب میکرو ها انتخاب اول اکثر افراد در میکروهای ARM می باشد.
میکروکنترلر LPC
سری LPC شرکت NXP محبوب ترین و پر استفاده ترین میکرو ARM بود تا قبل از فراگیر شدن STM32 ،کلا همه ARM رو با این میکرو میشناختند، اما با فراگیر شدن STM32 به دلیل خدمات نرم افزاری بسیار عالی و کاهش هزینه هایی که شرکت ST داده بود کم کم ST سهم زیادی از بازار را NXP گرفت، LPC یک میکرو معماری ARM و 32 بیتی است که در برخی از ویژگی ها برتری هایی نسبت به STM32 دارد و همچنین از لحاظ سطح صنعتی بالاتر از STM32 و پایین تر از PIC قرار دارد که هنوز یکی از پر استفاده ترین میکروهای ARM می باشد و در بسیاری از صنایع جایگاه اول خود را حفظ نموده است .LPC و STM32 هردو معماری 32 بیتی دارند یعنی در هر لحظه بر روی 32 بیت پردازش انجام می دهند ولی رجیستر های STM32 در اغلب شماره ها 16 بیتی بوده در حالی که LPC 32 بیتی می باشد و همچنین این مورد برای واحد های تایمر و ADC و دیگر واحد ها نیز صادق است و در واحد تولید نوسان نیز LPC بسیار عملکرد بهتری داشته است.
این ها میکروهایی بودند که بیشترین استفاده را در بین میکروهای دیگر دارند و شما با توجه به اهداف خود می توانید هرکدام از آن ها را انتخاب نمایید.