میکرو کنترلر چیست ؟
1- معرفی میکروکنترلرها :
به آی سی
هایی که قابل برنامه ریزی می باشد و عملکرد آنها از قبل تعیین شده
میکروکنترلرگویند میکرو کنترل ها دارای ورودی - خروجی و قدرت پردازش می باشد .
2- بخشهای مختلف میکروکنترلر :
میکروکنترلر ها از بخشهای زیر تشکیل شده
اند
Cpu واحد
پردازش
Alu
واحد محاسبات
I
/O ورودی ها
و خروجی ها
Ram
حافظه اصلی میکرو
Rom
حافظه ای که برنامه روی آن ذخیره می گردد
Timer
برای کنترل زمان ها
و . . .
3- خانواده های میکروکنترلر
خانواده : Pic
- AVR - 8051
4- یک میکروکنترلر چگونه برنامه ریزی میشود .
میکرو
کنترلر ها دارای کامپایلرهای خاصی می باشد که با زبان های
Assembly basic, c می توان برای آنها برنامه نوشت سپس برنامه نوشته شده را توسط دستگاهی
به نام programmer که در
این دستگاه ای سی قرار می گیرد و توسط یک کابل به یکی از در
گاه های کامپیوتر وصل می شود برنامه نوشته شده روی آی سی انتقال پیدا
میکند و در Rom ذخیره می شود .
5- با میکرو کنترلر چه کارهایی می توان انجام داد .
این آی
سی ها حکم یک کامپیوتر در ابعاد کوچک و قدرت کمتر را دارند بیشتر این آی سی ها برای
کنترل و تصمیم گیری استفاده می شود چون طبق الگوریتم برنامه ی آن عمل می کند این
آی سی ها برای کنترل ربات ها تا استفاده در کارخانه صنعتی کار برد دارد .
6- امکانات میکرو کنترلرها :
امکانات
میکرو کنترلرها یکسان نیست و هر کدام امکانات خاصی را دارا می باشند و در قیمت های
مختلف عرضه می شود .
7- شروع کار با میکرو کنترلر:
برای
شروع کار با میکرو کنترلر بهتر است که یک زبان برنامه نویسی مثل c یا basic را
بیاموزید سپس یک برد programmer تهیه
کرده و برنامه خود را روی میکرو ارسال کنید سپس مدار خود را روی برد برد بسته و
نتیجه را مشاهده کنید.
چنان چه در مدارهای الکترو نیکی تجربه ندارید بهتر است از برنامه های
آ موزش استفاده کنید.
8- مقایسه خانواده های مختلف میکرو وکنترلرها:
خانواده 8051 :
این
خانواده از میکرو کنترولر ها جزو اولین نوع میکرو کنترولر ها یی بود که رایج شده و
جزو پیشکسوتان مطرح میشود . معروف ترین کامپایلر برای این نوع میکرو keil یا franklin می باشد
میکرو های این خانواده به نوسان ساز نیاز مند هستند و درمقابل خانواده pic یا AVR از
امکانات کمتری برخور دار می باشد معروف ترین آی سی ها این خانواده 89S51 یا 89C51 می باشد .
خانواده AVR :
این
خانواده از میکرو کنترلرها تمامی امکانات 8051 را دارا می باشد و امکاناتی چون ADC (مبدل آنالوگ به دیجیتال) – نوسان ساز داخلی و قدرت و سرعت بیشتر – EEPROM (حافظه) از جمله مزایای این خانواده می باشد
مهم ترین آی سی این خانواده Tiny و Mega است.
خانواده pic :
این
خانواده از نظر امکانات مانند AVR میباشد و
در کل صنعتی تر است .
9- مزایای میکرو کنترلر نسبت به مدار های منطقی :
1- یک میکرو کنترلر را می توان طوری برنامه ریزی کرد که کار چندین گیت
منطقی را انجام دهد.
2- تعداد آی سی هایی که در مدار به کار میرود به حداقل میرسد .
3- به راحتی می توان برنامه میکرو کنترلر را تغییر داد و تا هزاران بار
میتوان روی میکرو برنامه های جدید نوشت و یا پاک کرد .
4- به راحتی میتوان از روی یک مدار منطقی کپی کرد و مشابه آن را ساخت ولی
در صورتی که از میکرو کنترلر استفاده شود و برنامه میکرو را قفل کرد به هیچ عنوان
نمی توان از آن کپی گرفت .
احمدرضا طباطبائیان
میکرو کنترلر در اصطلاح به ریز پردازنده هایی گفته می شود که بجز CPU حداقل شامل سیستم های ورودی و خرو جی (I/o) حافظه و
مدارات ارتباط با حافظه در داخل تراشه اصلی هستند و نیازی به مدارات واسطه بیرونی
جهت ارتباط با سیستم های جانبی را ندارد. البته امکانات همه میکرو کنترلر ها هشابه
و یکسان نمی باشد و برخی از میکرو کنترلر ها علاوه بر امکانات فو ق العاده شامل
مبدل های دیجیتال به آنالوگ و آنالوگ به دیجیتال و یا حتی امکانات بیشتر و اختصاصی
تر می باشند.
میکرو کنترلر MC68HC7058 ساخت
شرکت MOTOROLA نمونه ای
از میکرو کنترلر های مدرن می باشد که امروزه در ساختمان مانیتور های پارس از آن
استفاده شده است. قلب این میکرو کنترلر را ریز پردازنده 6805 تشکیل می دهد و حافظه
آن شامل 3.75 کیلو بایت حافظه ROM جهت
ذخیره کردن نرم افزار اجرایی و 256 بایت حافظه RAM جهت
ذخیره سازی مو قت می باشد.
نرم افزار ذخیره شده در حافظه این میکرو کنترلر تحت امتیاز شرکت
هیوندای کره جنوبی بوده و قابل دسترسی یا دخل و تصرف ننی باشد و فقط مختص 15 اینج مدل HL -5870 می باشد.
از و ضایف اصلی میک رو کنترلر می توان به موارد زیر اشاره کرد:
1- کنترل دکمه های جلوی مانیتور در صنعت ساخت
2- ایجاد ولتاژ های DC جهت
کنترل قسمت های مختلف مدار
3-ارتباط با حامظه none volatile جهت
ذخیره سازی و باز خوانی اطلاعات.
4- ارتباط با سیستم تغذیه جهت مدیریت توان مصرمی
5- ارتباط با سیستم مولد OSD
6- ارتباط با سیستم تنظیم گر خودکار
7- تنظیم اعو جاجات و تصحیح خطاها
8- مضناتیس جدایی
9- پردازش سیگنال های همزمانی
10- کنترل پیچش تصویر
میکروکنترلر چیست
قطعه ای که این روزها دارد جای خود را در خیلی از وسایل الکتریکی
باز میکند .از تلفن گرفته تا موبایل از ماوس لیزری که الان دستتان روی
آن است و دارین باهاش کامپیوتر رو کنترل میکنید تا هر وسیله ای که بتوان پیچیدگی
رو در اون دید میتونید یک میکروکنترلر رو ببینید .
کلمه میکروکنترلر:
این کلمه از دو کلمه 1- میکرو -2 کنترلر تشکیل شده
*میکرو : میدونین که این یک واحد یونانی است و برابر با 10 به توان
منفی 6 متر است. یعنی یک ملیونیوم متر واحده خیلی کوچیکیه نه....ولی
واحدهای خیلی کوچیکتر از این هم داریم که در الکترونیک مورد استفاده
قرار میگیرند در قسمتهای بعدی توضیحیهاتی راجع به این واحد ها و موارد استفاده
آنها داده میشه.
*کنترلر : که همه معنی و مفهومشو میدونین . یعنی کنترل کننده به تعبیری
یعنی "مغز " البته بدون تفکر فقط دستوراتی که به اون داده میشه
به نحو احسن انجام میده.
حالا چرا این کلمات ؟
به نظر من کلمه میکرو به دو منظور استفاده شده منظور اول و مهم سرعت
عمل میکروکنترلر است که میتواند تا یک ملیونیوم ثانیه باشد و دستوارتی
که به اون میدیم با این سرعت انجام بده به همین خاطر واژه میکرو رو به
اون اختصاص دادن البته معنی دوم آن شاید کوچیکی این قطعه باشد که تا یک ملیونیوم
متر کوچیک شده شاید باور کردنی نباشه ولی در یک تراشه ممکنه بیش از یک ملیون
تراتزیستور به کار رفته باشه. این کلمه وقتی اهمیتش کامل میشه که با واژه کنترلر
عجین بشه تا معنیش کامل بشود .
حالا نحوه انجام دادن کار میکروکنترلر را به صورت کلی بررسی میکنیم :
تا حالا همه شما با ماشین حساب کار کردین تا حالا به نحوه کار
کردنش فکر کردین شما اطلاعاتتون را که همون عملیات ریاضی هست به وسیله
صفحه کلید به اون میدید بعد ماشین حساب این اطلاعات رو بر مبنای دستوراتی که قبلا
به اون داده شده پردازش میکند و جواب را رویlcd نمایش
میدهد. در واقع یک میکروکنترلر برنامه ریزی شده به عنوان مغز ماشین حساب این
اطلاعات یا داده رو از صفحه کلید میگیره روشون پردازش انجام میده و بعد
بر روی lcd نمایش میده.
کار میکروکنترلر دقیقا مشابه این است میکرو کنترلر بر مبنای یک
سری ورودی که به اون داده میشه مثلا این ورودی از یک سنسور دما باشه که
درجه حرارت رو میگه یا از هر چیز دیگه مثل صفحه کلید بر مبنای این ورودی ها و
برنامه ای که قبلا ما به اون دادیم خروجیشو تنظیم میکنه که ممکنه خروجیش یک موتور
باشه یا یک lcd یا هر چیز دیگری که با الکتریسیته کار بکند. حالت دیگری هم میتونه باشه که فقط میکروکنترلر بر مبنای
برنامه ای که به اون دادیم عمل کند و خروجیش رو فقط بر اساس برنامه بگیرد.
ساختمان داخلی میکروکنترلر:
کامپیوتری که الان بر روی اون دارین کار انجام میدین دارای
یک پردازنده مرکزیه به نام cpu که از
کنار هم قرار گرفتن چندین ملیون ترانزیستور تشکیل شده و بر روی اطلاعات پرداژش
انجام میده . میکرو کنترلر هم عینا دارای یک پردازنده مرکزی به نام cpu است که دقیقا کار cpu کامپیوتر
رو انجام میده با این تفاوت که قدرت و سرعت پردازشش از cpu کمتره که
به اون میکروپرسسور میگن در بخش بعدی فرق میکرو پرسسور و میکروکنترلر را بررسی میکنیم.
میکروکنترلر علاوه بر cpu دارای
حافظه است که ما برنامه ای که بهش میدیم در اون قرار بگیره در کنار حافظه در
میکروکنترلرهای امروزی تایمرها برای تنظیم زمان کانتر ها برای شمردن
کانال های آنالوگ به دیجیتال پورت های برای گرفتن و دادن اطلاعات و امکاناتی دیگر که
بعدا مفصل راجع به هر کدام توضیح داده میشه تشکیل شده و همه اینها در
یک چیپ قرار گرفته که تنکنولوژی جدید اونو تو یک تراشه به اندازه یک سکه قرار داده.
تفاوت میکروپروسسور و میکروکنترلر:
میکروپرسسور همانطور که گفته شد یک پردازنده است و برای کار باید
به آن چیپ های حافظه و چیز های دیگری را به اون اضافه کرد این امکان به
درد این میخورد که بر حسب کارمان حافظه مناسب و دیگر قطعات را مانند تایمرها و
غیره به صورت بیشتری استفاده کنیم ولی مدار خیلی پیچیده میشود و از
لحاظ هزینه هم هزینه بیشتر میشود به همین دلیل امروزه از میکروپرسسورها
کمتر استفاده میشود اما این روزها میکرو کنترلر های جدید با حافظه های
زیاد تعداد تایمر زیاد پورت های زیاد و تنوع بسیار زیاد انها بر حسب
این امکانات دست ما را باز گذاشته است تا دیگر میکروپرسسورها را فراموش کنیم.
آیا میکروکنترلر چیز جدیدی را با خود آورده است ؟
جواب منفی است تمام کارهایی که ما با میکروکنترلر میتوانیم
انجام بدهیم با قطعات دیگر هم میتوانیم انجام بدهیم چون ما قبلا هم
تایمر داشتیم هم کانتر هم حافظه هم پردازنده و... . در واقع میکروکنترلر قطعه ای
است با تمام این امکانات که به صورت یک آی سی آماده شده است و هزینه پیچیدگی
و حجم را به نحوه قابل ملاحضه ای کاهش میدهد.
عیب میکروکنترلر:
میکروکنترلر با این همه مزایا که گفتیم دارای یک عیب کوچیک است .و آن
سرعت پایین ! است آیا سرعتی معادل یک ملیونیوم ثانیه سرعت کمی است ؟ سرعت کمی نیست
ولی یک مثال شاید بحثو بهتر باز کند
یک گیت منطقی رو در نظر بگیرین که با توجه به ورودی خروجیشو
تنظیم مکنه سرعت عمل این گیت منطقی 10 به توان منفی 9 ثانیه است یعنی
نانو ثانیه ولی اگر ما بخواهیم این گیت رو با میکروکنترلر کار کنیم سرعتی معادل
میکرو ثانیه داریم پس از لحاظ سرعت برای کاربردهای خیلی محدودی میکروکنترلر مناسب
نیست.
خب حالا این میکروکنترلر را با این همه کاربرد کی ساخته؟
حدود 4 دهه پیش در سال 1971 میلادی شرکت اینتل اولین میکروکنترلر را
ساخت و اولین میکروکنترلر را با نام 8080 در اوایل سال 1980 روانه
بازار کرد .همین شرکت اینتلی که الان در ساخت cpu یکه تاز
دنیاست .اما بعدا این امتیاز رو به شرکت های دیگری واگذار کرد و شرکت های زیادی در
حال حاضر میکروکنترلر های مختلف تولید میکنند
تمام میکروکنترلرها جزء این 5 قسمت هستنند:
1) 8051
2) Pic
3) Avr
4) 6811
5) Z8
البته مدل های 6811 ساخت شرکت موتورلا و z8 ساخت
شرکت زایلوگ حداقل در ایران خیلی کم استفاده می شوند و رقابت اصلی بین سه نوع دیگر
است.
تا به امروز هر میکروکنترلری که ساخته شده زیر مجموعه یکی از این5 نوع
است. البته کارخانه های خیلی زیادی با مارک های مختلف میکرو کنترلر تولید میکنند
ولی همه اونها زیر مجموعه یکی از این 5 قسمت هستنند .شما برای هر کدام از این5 نوع
میکروکنترلر میتوانید میکروکنترلر های مختلفی از شرکت های مختلفی را پیدا
کنید.(البته در بازار ایرن کمی با مشکل).
اما خوشبختانه همه میکروکنترلر هایی که جزء هر کدام از 5 نوع بالا
باشند از یک برنامه پیروی میکنند. بدین معنا که اگر شما کار با یکی از مدل های آن
میکرو را یاد گرفته باشید مثل اینکه کار با تمام میکروکنترلرهای آن نوع را یاد
گرفته اید.مثلا شما اگر با یکی از مدل های میکروکنترلر avr مثلا atmega8 را یاد گرفته باشید دیگر با صد ها مدل دیگر میکروکنترلر avr مشکلی ندارید وتقریبا بدون هیچ مشکلی میتوانید با دیگر مدل های این
میکرو کار کنید.
اما یه مشکل که در میکروکنترلر ها وجود دارد این است که این5 نوع از
لحاظ برنامه نویسی به هیچ وجه با هم دیگر سازگاری ندارند . به طور مثال اگر شما
میکروکنترلر های avr و 8051 را کامل یاد گرفته باشید حتی ساده
ترین برنامه رو روی یک میکروکنترلر pic نمیتوانید
اجرا کنید. واین یکی از بزرگترین عیب و مشکل برای یاد گیری میکرو است .بنابراین از
همون اول باید یک انتخاب درست داشته باشید و میکروکنترلر مناسب را برگزینید تا با
یادگیری آن میکروکنترلر بتوانید بعدا به سادگی پروژه های خود را اجرا کنید . البته
بسیاری از دوستان هستنند که کار با چند میکروکنترلر را میدونند و حتما این هم از
هوش بالای ایرانی هاست. ولی اگر به صورت خیلی حرفه ای نخواهید وارد این بحث بشوید
باید یکی از این میکروکنترلرها را انتخاب کنید و کار با آن را آغاز کنید. در قسمت
بعدی شما را برای این انتخاب کمک خواهم کرد.
معایب و مزایای میکروکنترلر های مختلف نسبت به هم
از آن جای که 6811 و z8 خیلی
کمتر استفاده میشوند به معرفی سه نوع دیگر میپردازم.
1) : اول از 8051
که اولین میکروکنترلری بود که به دست بشر ساخته شد شروع میکنیم . همانطور که در مقاله قبلی گفته شد ابتدا این میکروکنترلر توسط شرکت
بزرگ intel ساخته شد .اما بعدا intel این
امکان را به دیگر شرکت ها داد که این میکروکنترلر را تولید کنند و شرکت هایی مانند ATMEL , PHILIPS , SIEMENS , DALLAS و... به
تولید این میکروکنترلر پرداختنند یکی از شرکت هایی که به صورت گسترده به تولید این
تراشه پرداخت ATMEL بود که
مدل های مختلف میکروکنترلر ساخت این شرکت در سرار جهان و در ایران به خوبی یافت می
شود. اما اگربخواهیم به صورت کلی سیر پیشرفت این
نوع میکروکنترلر رو در نظر بگیریم اولین میکروکنترلر هایی که ساخته شد با جدیدترین
میکروکنترلرهای 8051 که الان تولید میشود با توجه به این پیشرفت
شگفت در تمام زمینه ها که صنایع دیگر در دنیا دارند پیشرفت زیادی ندارد به طور
مثال AT89S5X که
میکروکنترلر 8051 جدید ساخت ATMEL است نسبت
به مدل های اولیه 8051 پیشرفت آنچنانی ندارد . امکانات این میکرو نسبت به AVR و PIC قابل مقایسه نیست . به صورتی
که که همین مدل جدید 8051 تقریبا حافظه ای برابر یک صدم (0.001 ) میکروکنترلر های AVR را دارد
و سرعتش 4 برابر کمتر از میکروکنترلر های PIC و 12 بار کمتر از میکروکنترلر های AVR است . از
لحاظ امکانات دیگر هم چنین ضعفی احساس میشود. اما برای کارهای ساده تر که پیچیدگی
زیادی در آن نباشد به خاطر قیمت بسیار پایینی که این میکروکنترلر دارد بسیار مناسب
است . قیمت همین مدل جدید AT89S5X حول و
حوش 1000 تومان است که قیمت بسیار مناسبی است.
این میکرو کنترلر از زبان اسمبلی و C پشتیبانی
میکند که زبان برنامه نویسی اصلی آن اسمبلی است که واقعا نوشتن با این زبان برنامه
نویسی نسبت به زبان های برنامه نویسی دیگر هم مشکل تر و هم طولانی تر است. در کل
این میکروکنترلر امروزه دیگر توانای رقابت با AVR و PIC رو ندارد و امروزه رقابت اصلی بین این دو میکروکنترلر است.
2) میکروکنترلر PIC
واقعا میکروکنترلر خیلی قوی است که بر اساس بعضی آمار ها بیشترین کاربر
را به خود اختصاص داده است البته متذکر شوم که در ایران این آمار به نفع AVR است. این میکروکنترلر ساخت شرکت میکرو چیپ است که PIC رو در مدل های خیلی زیادی با امکانات مختلف برای کارهای مختلف میسازد
. این میکروکنترلر با مدل های مختلفPIC16XXX و PIC12XXXX که به جای X دوم از
چپ به راست حروف C ,X,E,F قرار
میگره که هر کدام مفهوم خاصی داره که چون بحث ما آموزش AVR است از
روی اون سریع میگزریم X های بعدی
هم اعدادی هستنند که نشان دهنده مدل های مختلف هستنند.
3)میکروکنترلر AVR
به میکروکنترلر AVR میرسیم
که به نظر من و خیلی از دیگر بهترین میکروکنترلر موجود در بازار است البته خود من
با 8051 و AVR بخصوص AVR خیلی کار
کردم ولی تجربه ای با PIC ندارم و
قضاوت من ممکنه یه طرفه باشه ولی این نظر بسیاری از کسانی است که با AVR کار کرده اند .به دلایلی.....
اول از همه سرعت این میکروکنترلر بسیار بالاست و به قولی دستوراتی که
بهش داده میشه در یک سیکل کلاک انجام میده در صورتی که این سیکل کلاک برای 8051 باید تقسیم بر12شودو برای PIC باید
تقسیم بر 4 بنابراین AVR سریعترین
میکروکنترلر موجود در بازار است . AVR از زبان
های برنامه نویسی سطح بالا یا به اصطلاح (HIGH
LEVEL LANGUAGE) HLL پشتیبانی میکند که باعث تولید کدهای بیشتری میشود که در کل برنامه
نوشته شده نسبت به برنامه هایی که برای 8051 و PIC نوشته میشود کوتاهتر است. امکانات جانبی این میکروکنترلر بسیار مناسب
است و شما را از خرید بعضی لوازم جانبی مانند چیپ های آنالوگ به دیجیتال (ADC) , مقایسه گر آنالوگ و... راحت میکند .در ضمن AVR از
بسیاری از استاندارد های ارتباطی مانند SPI,UART,12C,JTAG پشتیبانی
میکند که به راحتی میتوان این میکروکنترلر را با میکروکنترلر دیگر یا و سایل دیگر
وصل کرد و با وسایل دیگر به راحتی ارتباط برقرار کند. قیمت این میکروکنترلر هم به
نسبت امکانات فراوانی که داره بسیار پایین است به طوری که یک میکروکنترلر AVR تقریبا پیشرفته رو با قیمت حول و حوش 3 تا 4 هزار تومان خرید .
خلاصه من که خیلی با این میکرو ور رفتم و پروژه های خیلی زیاد و پیچیده
ای رو باهاش اجرا کردم بسیار راضی هستم و هیچ مشکلی باهاش نداشتم.اگر هم مشکلی
بوده از جانب من بوده نه میکروکنترلر . خلاصه اگر برنامه نویسی و کار با این
میکروکنترلر رو خوب یاد بگیرید هر کاری رو میتونید باهاش انجام بدید.
پروگرام میکروکنترلر
شاید تا حالا به نظرتون رسیده باشه که این میکروکنترلر رو چگونه میشه
برنامه ریزی کرد تا کار مورد نظرمان را انجام بده در صورتی که یک میکروکنترلر
برنامه ریزی نشده هیچ کاری رو نمیتونه انجام بده و هیچ کاربردی نداره در واقع
برنامه هر میکرو روح وجانی است که در اون دمیده میشه و اون رو زنده میکنه.
برای برنامه ریزی میکروکنترلر نیاز به دستگاه یا بردی هست به نام
پروگرامر که یه پل ارتباطیه بین کامپیوتر و میکروکنترلر . پروگرامر را هم میشه از
بازار تهیه کرد و هم میشه اون رو ساخت.
البته پروگرامرهای مختلفی در بازار هستنند که متانسب با کاربردشان
قیمت های مختلفی دارند بعضی ها فقط چند مدل رو پروگرام میکنند بعضی از پروگرامر ها
همه فن حریفند و تمام میکروکنترلر های 8051,AVBR ,
PIC , رو برنامه ریزی میکنند به طبع قیمت زیادتری دارند.
اما میشه براحتی برای میکروکنترلری که داریم یه پروگرامر ساخت اغلب
نقشه هایی هستنند که میشه یه پروگرامر ساخت که در همین سایت آقا حامد نقشه مدل STK300-200 رو توضیح داده.
ولی توصیه من اینه که خودتون رو به دردسر نندازین و برای همیشه یه
پروگرامر بخرین ارزششو داره چون همیشه کاربرد داره و همیشه به اون احتیاج دارین.
در این قسمت از مقاله قصد دارم تا لغات و اصطلاحاتی که در این موضوع
هست رو تا اونجایی که بتونم روشن کنم برای این کار قسمت اول برگه اطلاعاتی atmega32 که تقریبا تمام خصوصیات میکروکنترلر های avr را
داراست انتخاب کردم و به توضیح بیشتر موارد میپردازم که اکثر این اصطلاحات رو در
بر داره در طول مقاله سعی میکنم توضیحاتی راجع به سخت افرار میکرو بدم.