معرفی میکروکنترلر

توسط | 28 بهمن, 1398 | میکروکنترلر | 39 دیدگاه ها

در این نوشته به معرفی میکروکنترلر، تفاوت میکروکنترلر با میکروپروسسور، کاربردهای میکروکنترلر و توضیح مفاهیم وابسته به میکروکنترلرها می پردازیم.
میکروکنترلر-microcontroller

میکروکنترلر (Microcontroller) در لغت از دو واژۀ میکرو به معنی ریز و کوچک و کنترلر به معنی کنترل کننده یا کنترل گر تشکیل شده و به معنای ریز کنترل کننده یا ریز کنترل گر است. پس میکروکنترلر به صورت ریز کنترل کننده، ریز کنترل گر یا کنترل کنندۀ کوچک معنی می شود. میکروکنترلر در اصطلاح به معنای یک مدار مجتمع (IC – Integrated Circuit) قابل برنامه ریزی است که اجزای یک کامپیوتر را در ابعاد کوچک در خود جای داده است و برای اجرای یک برنامه به کار گرفته می شود. یعنی میکروکنترلر یک IC است که در آن CPU، حافظه ها و ورودی/خروجی ها قرار گرفته اند و این IC قابلیت اجرای برنامه ای مشخص دارد که  این برنامه توسط کاربر برای میکروکنترلر نوشته شده است. میکروکنترلرها را با MCU که مخفف Micro Controller Unit است نیز می شناسند.

میکروکنترلر یک آی سی VLSI (Very Large Scale Integration – ادغام در مقیاس بسیار بزرگ) است که شامل واحد محاسبۀ الکترونیکی و منطقی (که CPU شناخته می شود)، حافظه، پورت های I/O و تعدادی المان دیگر است. همۀ این واحدها همانطور که گفته شد در یک تراشه در کنار هم قرار گرفته اند. گاهی به میکروکنترلر، کامپیوتر در یک تراشه (Computer on a chip یا Single-chip Computer) نیز گفته می شود. چرا که میکروکنترلرها همۀ واحدهای اصلی یک کامپیوتر را در ابعاد کوچکتر در خود جای داده اند و عملکردی بسیار شبیه یک کامپیوتر دارند. میکروکنترلرها نیز مانند کامپیوترها ورودی، پردازش و خروجی دارند. از آنجا که میکروکنترلرها به همراه مدارات وابسته به آنها اغلب در دستگاه هایی که عمل کنترل را انجام می دهند، تعبیه می شوند، میکرکنترلرها را به عنوان کنترل کنندۀ تعبیه شده یا نهفته (Embedded Controller) نیز می نامند.

امروزه میکروکنترلرها در خیلی جاها استفاده می شوند. اگر یک دستگاه کارهایی مانند اندازه گیری، ذخیره سازی محاسبه کنترل و نمایش اطلاعات را انجام می دهد، آن دستگاه دارای میکروکنترلر است. در ادامه به طور مختصر دربارۀ تاریخچه میکروکنترلرها، تفاوت میکروکنترلر و میکروپروسسور، واحدهای داخلی میکروکنترلرها، کاربرد میکروکنترلرها و … صحبت می کنیم.

اصطلاحات موجود دربارۀ میکروکنترلرها

پیش از ورود به توضیحات بیشتر دربارۀ میکروکنترلرها لازم دانستیم برخی واژهها و عباراتی را که بین مهندسان و علاقه مندان دنیای میکروکنترلرها مصطلح شده بیان کنیم.

میکرو

این واژه همان میکروکنترلر است که برای راحت تر شدن تلفظ، در بین مهندسان و علاقه مندان الکترونیک مصطلح شده است.

پروگرم یا پروگرام

یا پروگرم کردن یا پروگرام کردن. این عبارات به عمل برنامه ریزی میکروکنترلر توسط کامپیوتر و پروگرامر گفته می شود.

میکروکنترلر ARM، میکروکنترلرهای آرم

در واقع میکروکنترلری به نام ARM وجود ندارد. ARM Holdings نام شرکتی است که پردازنده هایی با معماری ARM طراحی می کند. میکروکنترلر ARM اصطلاحاً (و به اشتباه) به میکروکنترلرهایی گفته می شود که در ساخت پردازندۀ آنها از معماری ARM استفاده شده است.

اولین میکروکنترلر دنیا و آغاز ساخت میکروکنترلر

اختراع میکروکنترلر (اولین کامپیوتر در یک تراشه) به سال 1971 میلادی بر می گردد. هنگامی که شرکت اینتل در حال اختراع اولین میکروپروسسور دنیا بود، یک مهندس از شرکت Texas Instruments به نام Gary Boone موفق به ساخت اولین میکروکنترلر شد. این میکروکنترلر که TMS1802NC نام گرفت، دارای 128 بیت RAM و 3000 بیت ROM بود و قابلیت استفاده در ساخت یک ماشین حساب را داشت. این میکروکنترلر بعدها دوباره طراحی شد و جزء سری TMS100 قرار گرفت. شرکت TI در سالهای 1972 تا 1974 میکروکنترلرهای TMS100 را در محصولات محاسباتی خود استفاده می کرد. این شرکت در سال 1974 سری TMS1000 را روانۀ بازار کرد و تا سال 1983 تعداد 100 میلیون از میکروکنترلرهای TMS1000 را به فروش رساند. لازم به ذکر است میکروکنترلرهای TMS100 و TMS1000 دارای پردازندۀ 4 بیتی بودند. در سال 1973 حق اختراع اولین میکروکنترلر تک تراشه ای به Gary Boone اعطا شد.در همین سال ها شرکت اینتل نیز علاوه بر ساخت میکروپروسسور، به ساخت میکروکنترلر پرداخت. میکروکنترلر 8048 از سری MCS-48 که در سال 1976 منتشر شد اولین میکروکنترلر اینتل بود. میکروکنترلرهای 8035 و 8748 نیز از اولین میکروکنترلرهای سری MCS-48 بودند. میکروکنترلر محبوب و پر استفادۀ 8051 توسط اینتل در سال 1980 معرفی شد.

دو-محصول-محاسباتی-شرکت-texas-instrument-میکروکنترلر

تصویر 1 – دو محصول از شرکت TI مربوط به سال 1972

دو-میکروکنترلر-tms1000-texas-instrument

تصویر 2 – دو میکروکنترلر سری TMS1000

میکروکنترلر-tms1802nc-ti-ماشین-حساب

تصویر 3 – میکروکنترلر TMS1802NC اولین میکروکنترلر دنیا

میکروکنترلرهای امروزی

امروزه شرکت های متعددی میکروکنترلر می سازند. میکروکنترلرهای امروزی از لحاظ معماری، توان مصرفی، ولتاژ و فرکانس کاری، مقدار حافظه و امکانات سخت افزاری نسبت به میکروکنترلرهای ساخته شده در دهۀ 70 قرن بیستم میلادی پیشرفت های بسیار چشمگیری داشته اند.

Silicon Motion Intel Altera
Sony Lattice Semiconductor Analog Devices
Spansion Microchip Technology Atmel
STMicroelectronics National Semiconductor Cypress Semiconductor
Texas Instruments NEC Maxim Integrated
Toshiba NXP Semiconductors ELAN Microelectronics Corp
Ubicom Nuvoton Technology EPSON Semiconductor
Xemics Panasonic Espressif Systems
Xilinkx Parallax Freescale Semiconductor
XMOS Rabbit Semiconductor Fujitsu
ZiLOG Renesas Electronics Holtek
Rockwell Hyperstone
Silicon Laboratories Infineon

جدول 1 – لیست تولید کنندگان میکروکنترلرهای رایج در دنیا

تفاوت میکروکنترلر با میکروپروسسور و میکرو کامپیوتر

ابتدا به تعریف میکروپروسسور، میکرو کامپیوتر و میکروکنترلر می پردازیم.

میکروپروسسور چیست؟

میکروپروسسور (Microprocessor) هستۀ پردازندۀ هر سیستم دیجیتال است که تمام عملیات محاسباتی و منطقی روی داده ها و عملیات تصمیم گیری توسط این بخش انجام می شود. میکروپروسسور همان CPU است که به صورت یک مدار مجتمع (IC) عرضه می شود. کمپانی های متعددی میکروپروسسور می سازند از جمله AMD و IBM و Intel و Philips و NEC و Motorola و HP و Atmel و  Sharp و Sony و Zilog  و Tesla.

از جمله تأثیرگذارترین میکروپروسسورها نیز می توان به موارد زیر اشاره کرد:

  • Intel 4004
  • Intel 8080
  • پردازنده های ARM2
  • Intel 8088
  • MOS Technology 6502
  • Z80
  • AMD Opteron 240
  • RCA COSMAC CPD 1802
  • AIM PowerPC 601
  • Motorola 68000
  • Intel Pentium

میکروپروسسور-intel4004

تصویر 4 – میکروپروسسور Intel 4004

میکرو کامپیوتر چیست؟

میکرو کامپیوتر (Microcomputer) از یک CPU (میکروپروسسور) و بلوک های دیگر از جمله ورودی/خروجی ها، حافظه ها، ADCها، DACها و … روی یک برد مدار چاپی (PCB) ساخته شده است. کامپیوتر، کیت های DIY، کامپیوترهای اینتل در دهۀ 70 قرن بیستم میلادی و TRS-80، نمونه هایی از میکرو کامپیوتر هستند.

کیت-linc80-پردازنده-z80

تصویر 5- کیت LiNC80 با پردازندۀ Z80

میکروکنترلر چیست؟

وقتی بلوک های یک میکرو کامپیوتر روی یک چیپ سیلیکونی پیاده شوند یک میکروکنترلر ساخته شده است. در میکروکنترلر بلوک های CPU، حافظه، پورت ها، تایمر، ADC و رابط های سریال (نظیر USART و SPI)، واحد وقفه (Interrupt) و … روی یک تراشۀ سیلیکونی پیاده شده اند. یعنی بلوک های مذکور همگی در کنار هم در یک IC قرار گرفته اند. از جمله میکروکنترلرهای نام آشنا می توان موارد زیر را نام برد:

  • میکروکنترلرهای AVRمثل ATmega32، ATmega16، ATmega128، ATtiny13، ATtiny26؛
  • میکروکنترلرهای LPC مانند LPC1768 و LPC1788؛
  • میکروکنترلرهای STM مانند سری STM32F1؛
  • میکروکنترلرهای PIC مثل PIC18F2680، PIC16F877 و PIC16F874.

تفاوت بین میکروکنترلر و میکروپروسسور و میکرو کامپیوتر

همان طور که از تعریف آنها برمی آید میکروپروسسور همان CPU است، حال اگر میکروپروسسور را در کنار بلوک های دیگری نظیر حافظه ها، PORTها، Timerها، ADCها و … روی یک بورد مدار چاپی (PCB) قرار دهیم، یک میکرو کامپیوتر شکل می گیرد. ولی میکروکنترلر شامل یک CPU در کنار حافظه ها، PORTها، Timerها و دیگر بلوک های جانبی در یک تراشه واحد به صورت مدار مجتمع (IC) است.

شمای-داخلی-میکروکنترلر-microcontroller

تصویر 6 – میکروکنترلر و اجزای داخلی آن

وقتی می گوییم یک میکروکنترلر 8 بیتی است، یعنی چه؟

وقتی می گویند یک میکروکنترلر 8 بیتی است یعنی:

  • Data Busآن 8 بیتی است؛
  • رجیسترهای آن 8 بیتی هستند؛
  • خانه های حافظه های آن 8 بیت 8 بیت است؛
  • CPU آن عملیات ریاضی را برای داده های 8 بیتی انجام می دهد.

خیلی از میکروکنترلرهای 8 بیتی دارای باس آدرس (Address Bus) 16 بیتی هستند. بنابراین نمی توان گفت میکروکنترلر 8 بیتی دارای باس آدرس  8 بیتی است. مثلاً برای دستیابی به تمام آدرس ها در یک حافظۀ 64 کیلو بایتی باید باس آدرس 16 بیتی داشت. چون 2 به توان 16 برابر 65536  (64 کیلوبایت) است. اگر باس آدرس 8 بیتی باشد، تنها به 256 آدرس حافظه دسترسی وجود خواهد داشت. زیرا 2 به توان 8 می شود 256. پس در میکروکنترلرهای 8 بیتی لزوماً باس آدرس 8 بیتی نیست.

انواع حافظه های نیمه هادی

پیش از آن که انواع حافظه در میکروکنترلرها را بررسی کنیم، به معرفی و بررسی انواع حافظه های نیمه هادی می پردازیم.

حافظۀ RAM (Random Access Memory)

حافظه با دستیابی تصادفی است به این معنا که تمام آدرس های آن با زمان های مساوی در دسترس اند. این حافظه هم قابلیت نوشتن دارد و هم خواندن. این حافظه از نوع فرّار (Volatile) است و اطلاعات آن با قطع منبع تغذیه از بین می رود.

حافظۀ DRAM (Dynamic RAM)

در این نوع RAM داده ها در سلول های خازنی ذخیره می شوند. بنابراین نیاز به Refresh کردن دارند.

حافظۀ SRAM (Static RAM)

در این نوع RAM سلول های ذخیره سازی از نوع Latch هستند. تا زمانی که تغذیۀ حافظه وصل است داده ها در SRAM باقی خواهند ماند.

حافظۀ SDRAM (Synchronous DRAM)

DRAMهایی با سرعت بالاتر از DRAMهای معمولی هستند. این نوع حافظه قابلیت نگهداری دو دسته آدرس را به طور هم زمان دارد.

حافظۀ MRAM (Magnetic RAM یا Magneto-resistive RAM)

این حافظه یک حافظۀ غیر فرّار (Non Volatile) است که به جای شارژ الکتریکی از شارژ مغناطیسی برای ذخیره سازی استفاده می کند. هچنین مصرف توان کمی دارد.

حافظۀ ROM (Read Only Memory)

ROMها داده ها را به صورت پایدار یا نیمه پایدار ذخیره می کنند. همان طور که از نامش مشخص است داده های ذخیره شده در یک ROM فقط قابل خواند است. یا اصلاً نمی توان روی آن نوشت و داده های آن را تغییر داد یا تنها با وسایل خاص این امر امکان پذیر است. داده هایی که در ROM ذخیره می شود معمولاً مجموعه دستورالعمل هایی است که برای راه اندازی یک سیستم نیاز است. ROM از دستۀ حافظه های غیر فرّار (Non Volatile) است و با قطع برق داده های آن پاک نمی شود.

حافظۀ PROM (Programmable ROM)

در ROM قابل برنامه ریزی، داده ها توسط کاربر در آن ذخیره می شود. PROMها برای ذخیره کردن داده ها از فیوز استفاده می کنند که هنگام پروگرم کردن، این فیوز ها می سوزند یا باقی می مانند که بیانگر دادۀ 0 یا 1 هستند. چون سوزاندن فیوز یک عمل برگشت ناپذیر است بنابراین داده های ذخیره شده در PROMها را نمی توان تغییر داد. به این نوع حافظه OTP (One Time Programmable) نیز می گویند.

حافظۀ EPROM (Erasable PROM)

این نوع حافظه PROMهای قابل پاک شدن هستند و می توان آنها را در صورتی که ابتدا پاک شوند، دوباره برنامه ریزی کرد. دو دسته EPROM وجود دارد که در دو مورد بعد به آن می پردازیم.

حافظۀ UV EPROM (Ultra Violet EPROM)

این نوع EPROM برای پاک شدن اطلاعات نیاز به اشعۀ نور ماورای بنفش دارد. روی آی سی های این نوع EPROM یک درپوش شفاف کوارتز قرار دارد که با تاباندن نور قوی ماورای بنفش به داخل آن به مدت چند دقیقه تا یک ساعت حافظۀ EPROM پاک می شود.

حافظۀ EEPROM (Electrically EPROM)

این نوع EPROM قابلیت پاک شدن با سیگنال الکتریکی را دارد. این حافظه را می توان با پالس های الکتریکی پاک یا برنامه ریزی کرد. چون این حافظه با پالس های الکتریکی برنامه ریزی یا پاک می شوند، بنابراین سرعت برنامه ریزی و پاک کردن آن از UV EPROM بیشتر است.

حافظۀ MROM (Mask ROM)

ROMهای پوششی حافظه هایی هستند که داده های آن هنگام طراحی و ساخت در آن ذخیره می شوند.

حافظۀ Flash

حافظۀ Flash یک نوع EEPROM تکامل یافته است با سرعت بالاتر و قابلیت پاک شدن و برنامه ریزی بیشتر. این حافظه همان حافظه ای است که در فلش های USB (USB Flash Drive) و حافظه های SD (SD Card) استفاده می شود.

حافظۀ FRAM یا FeRAM (Ferroelectric RAM)

این حافظه یک حافظه شبیه DRAM است با این تفاوت که در ساخت آن از مادۀ فروالکتریک به جای دی الکتریک خازن استفاده شده است. این ساختار باعث شده که این حافظه Non Volatile شود. یعنی با قطع برق اطلاعات آن از بین نمی رود. پس بر خلاف دیگر RAMهایی که نام آنها گفته شد، این حافظه از نوع Non Volatile است. عملکرد این حافظه شبیه به حافظه های Flash است. همچنین این حافظه سرعت بالایی دارد.

چند-نوع-rom-ram-حافظه

تصویر 7 – چند نوع حافظۀ ROM و RAM

انواع حافظه در میکروکنترلرها

در میکروکنترلرها دو نوع حافظه داریم که به صورت زیر نام گذاری می شوند:

  • حافظۀ برنامه (Program Memory): برنامۀ نوشته شده توسط کاربر و همچنین برنامۀ Boot در این حافظه ذخیره می شود. این حافظه معمولاً از نوع Flash است. حافظه های ROM، EPROM و OTP نیز در میکروکنترلرها به عنوان حافظۀ برنامه دیده می شوند. وجود یا عدم وجود حافظه های مذکور در میکروکنترلرهای مختلف، متفاوت است. برای مثال برخی در کنار حافظۀ Flash، حافظۀ ROM هم دارند (مثلاً میکروکنترلرهای STM32L0).
  • حافظۀ داده (Data Memory): در میکروکنترلرها برای ذخیره کردن متغیرها از حافظه های SRAM استفاده می کنند. رجیسترهای عمومی و رجیسترهای I/O و … نیز در این حافظه قرار می گیرند. همچنین برای ذخیره کردن مقادیری که نباید با قطع برق از بین بروند، از حافظه های EEPROM استفاده می شود. حافظه های EEPROM در میکروکنترلرها نیز نوعی حافظۀ داده محسوب می شوند. حافظۀ EEPROM در همۀ میکروکنترلرها به صورت داخلی وجود ندارد. برای چنین میکروکنترلرهایی در صورت نیاز از حافظۀ EEPROM خارجی استفاده می شود.

نقشه-حافظه-داده-data-memory-atmega128

تصویر 8 – نقشۀ حافظۀ دادۀ داخلی در میکروکنترلر AVR ATmega128

اجزای داخلی میکروکنترلرها

میکروکنترلرها عموماً دارای واحدهای زیر هستند. همۀ واحدهای زیر به صورت یکجا ممکن است در میکروکنترلرها وجود نداشته باشند. همچنین ممکن است در میکروکنترلرهای متفاوت، نام های متفاوتی برای برخی واحدها وجود داشته باشد.

  • پردازنده یا CPU؛
  • حافظۀ RAM؛
  • حافظۀ ROM؛
  • حافظۀ Flash؛
  • حافظۀ EEPROM؛
  • واحد تولید کلاک؛
  • پورت های ورودی/خروجی یا همان پورت های I/O؛
  • واحدهای تایمر/کانتر؛
  • تایمر Watchdog؛
  • تایمر System tick یا تایمر SYSTICK؛
  • واحدهای وقفۀ خارجی؛
  • مبدل آنالوگ به دیجیتال (ADC)؛
  • مبدل دیجیتال به آنالوگ (DAC)؛
  • واحد PGA؛
  • پروتکل ارتباطی USART یا UART؛
  • پروتکل ارتباطی I2C یا TWI؛
  • پروتکل ارتباطی SPI؛
  • پروتکل ارتباطی I2S؛
  • پروتکل S/PDIF؛
  • پروتکل ارتباطی JTAG؛
  • پروتکل ارتباطی CAN؛
  • مدار Reset؛
  • مقایسه کننده آنالوگ؛
  • واحد DMA؛ یا DMA Controller
  • واحد Ethernet؛
  • واحد USB؛
  • واحدهای PWM؛
  • واحد RTC (Real Time Clock)؛
  • واحد Display Controller؛
  • واحد کنترل HDMI-CEC؛
  • واحد SAI، رابط صوتی سریال؛

بلوک-دیاگرام-میکروکنترلر-nxp-lpc178x-lpc177x

تصویر 9 – بلوک دیاگرام میکروکنترلرهای LPC178x و LPC177x

بلوک-دیاگرام-میکروکنترلر-avr-atmega128a

تصویر 10 – بلوک دیاگرام میکروکنترلر AVR ATmega128A

بلوک-دیاگرام-میکروکنترلر-stm32h753xi

تصویر 11 – بلوک دیاگرام میکروکنترلر STM32H753XI

پایه های میکروکنترلر

هر میکروکنترلر برای ارتباط با دنیای خارج نیاز به تعدادی پایه دارد. انواع و اقسام پکیج ها با تعداد پایه های مختلف برای میکروکنترلرها وجود دارد. در تصویر 12 ترتیب پایه های میکروکنترلر ATmega128A و در تصویر 13 ترتیب و نام پایه های میکروکنترلر STM32H753XI در پکیج LQFP176 نمایش داده شده است.

ترتیب-نام-پین-میکروکنترلر-avr-atmega128a

تصویر 12 – ترتیب و نام پایه های میکروکنترلر ATmega128A

ترتیب-نام-پین-میکروکنترلر-stm32h753xi-پکیج-lqfp176

تصویر 13 – ترتیب و نام پایه های میکروکنترلرهای STM32H753XI پکیج LQFP176

فرکانس کلاک میکروکنترلرها

هر میکروکنترلر برای کار کردن نیاز به یک پالس ساعت یا سیگنال کلاک (Clock) دارد. منظور از فرکانس کلاک در اینجا فرکانس کلاکی است که به CPU داده می شود. فرکانس کلاک یکی از فاکتورهای سرعت پردازش میکروکنترلرهاست. منبع این سیگنال کلاک در بسیاری از میکروکنترلرها یک کریستال است. در برخی میکروکنترلرها مانند میکروکنترلرهای AVR  منبع کلاک می تواند از راه های مختلف مثل «اسیلاتور RC کالیبره شدۀ داخلی»، «اسیلاتور داخلی با مدار RC خارجی»، «اسیلاتور داخلی با کریستال خارجی» یا … باشد. فرکانس کلاک در هر میکروکنترلر با توجه به دیتاشیت آن در محدوده های مشخصی است. در برخی میکروکنترلرها نیز یک واحد PLL داخلی وجود دارد که فرکانس کریستال متصل شده به میکروکنترلر را در اعدادی ضرب می کند. بنابراین برای واحدهای مختلف فرکانس های مختلف ساخته می شود. فرکانس کلاک میکروکنترلرهای امروزی نسبت به میکروکنترلرهای گذشته بالاتر است و میکروکنترلرها در آینده از فرکانس کلاک بالاتری نسبت به فرکانس کلاک میکروکنترلرهای امروزی بهره مند خواهند شد. برای مثال فرکانس کلاک میکروکنترلر ATmega64A تا 16 مگاهرتز می تواند باشد. فرکانس کلاک میکروکنترلر STM32H7A3LI تا 280 مگاهرتز، فرکانس کلاک میکروکنترلر STM32H753XI تا 480 مگاهرتز و  فرکانس کلاک میکروکنترلر STM32G031K8 تا 64 مگاهرتز می تواند باشد. همچنین فرکانس کلاک میکروکنترلر NXP MKV56F1M0VLL24 می تواند تا 220 مگاهرتز و فرکانس کلاک میکروکنترلر NXP MIMXRT1061DVL6A می تواند تا 600 مگاهرتز باشد.

ولتاژ کاری میکروکنترلرها

منظور از ولتاژ کاری میکروکنترلر ولتاژ تغذیه ای است که باید به میکروکنترلر داد و آن را روشن کرد. محدودۀ این ولتاژ در میکروکنترلرها در دیتاشیت آنها ذکر شده است. برای مثال محدودۀ ولتاژ کاری میکروکنترلر ATmega128A برابر 2.7 ولت تا 5.5 ولت و محدودۀ ولتاژ کاری میکروکنترلر LPC1768 برابر 2.4 ولت تا 3.6 ولت است. برای میکروکنترلر STM32H753XI ولتاژ کاری بین 1.62 ولت تا 3.6 ولت است.

توان مصرفی میکروکنترلرها

میکروکنترلرها نیز مانند سایر المان های الکترونیکی هنگام کار کردن مقداری توان مصرف می کنند. توان مصرفی میکروکنترلرها ممکن است در دیتاشیت آنها ذکر نشود. توان مصرفی میکروکنترلرها در شرایط مختلف متفاوت است. این شرایط مختلف به این بستگی دارد که کدام یک از واحدهای داخلی میکروکنترلر فعال شده باشد. مثلاً آیا از پورت های I/O میکروکنترلر برای درایو کردن المانی خارجی جریانی کشیده می شود یا خیر؟ اگر جریانی کشیده می شود، از چند پایۀ پورت I/O جریان کشیده می شود؟ عوامل موثر دیگر بر توان مصرفی میکروکنترلرها عبارتند از: دما، فرکانس کلاک، ولتاژ کاری، مقدار استفاده از حافظه، زمان اجرای برنامه و دستورات، دسترسی به حافظۀ خارجی و … . برای مثال میکروکنترلر STM32H753XI در حالت کم مصرف 4 میکرو آمپر و به صورت معمول به ازای هر مگاهرتز 270 میکرو آمپر جریان کشی دارد (یعنی 270uAPMHz). همچنین میکروکنترلر ATmega128L در مد Active با فرکانس کاری 8 مگاهرتز و ولتاژ تغذیۀ 5 ولت، 17 میلی آمپر جریان کشی دارد.  میکروکنترلر LPC1768 نیز هنگامی که ولتاژ تغذیۀ آن 3.3 ولت است، در فرکانس کلاک 120 مگاهرتز، جریانی برابر 51 میلی آمپر می کشد.

مدهای Sleep در میکروکنترلرها

یکی از امکانات مهم میکروکنترلرها وجود مدهای Sleep در آنهاست. مدهای Sleep برای بهینه کردن مصرف توان در میکروکنترلرها استفاده می شود. همچنین با وجود مدهای Sleep، میکروکنترلرها می توانند به مدت طولانی تر مورد استفاده قرار گیرند. یعنی عمر میکروکنترلرها وقتی که از مدهای Sleep استفاده می شود، نسبت به حالتی که استفاده نمی شود، بیشتر می شود. مفهموم و نام مدهای Sleep در میکروکنترلرهای مختلف، متفاوت است. برای مثال در میکروکنترلرهای AVR مدهای Sleep با نام های Idle و Power-Down و Power Save و Standby و … است. در میکروکنترلرهای STM32F1 نام های Sleep و Stop و Standby برای مدهای Low Power در نظر گرفته شده است. همچنین میکروکنترلرهایی وجود دارند که کلاً توان مصرفی خیلی کمی دارند. برای مثال میکروکنترلر STM32L522QC در حالت Low Power جریانی برابر 0.02 میکرو آمپر و در حالت نرمال به ازای هر مگاهرتز جریان 96 میکروآمپر می کشد. همچنین میکروکنترلرهایی برای کاربرد TPMS (سیستم مانیتور فشار لاستیک خودرو – Tire Pressure Monitoring System) وجود دارد که توان مصرفی آنها بسیار کم است. برای مثال میکروکنترلر NXP FXTH871x7 برای کاربرد TPMS است.

میکروکنترلرهای پر استفاده در ایران

در ایران میکروکنترلرهای AVR، PIC، LPC و STM استفاده های فراوان دارد. از این رو آموزش های مهم و کاربردی STM32 و AVR و LPC و همچنین آردوینو را در بخش آموزش میکروکنترلرها در یوبرد قرار داده ایم.

کاربردهای میکروکنترلر

با توجه به پیشرفت تکنولوژی تولید میکروکنترلرها و کارآیی آنها امروزه در بسیاری از لوازم محیط کار و زندگی انسان ها از میکروکنترلرها استفاده می شود. در سراسر دنیا میکروکنترلرها به طور گسترده در صنعت و وسایل و ادوات صنعتی و خانگی و همچنین تجهیزات نظامی مورد استفاده قرار می گیرند. کاربردهای میکروکنترلرها عبارتند از: خانه هوشمند، اسباب بازی، وسایل پرنده مثل پهپادها و کوادکوپترها، تلفن همراه، لوازم خانگی مثل یخچال، ماشین ظرفشویی، ماشین لباسشویی و اجاق گاز، خودروسازی، تجهیزات پزشکی، دستگاه های کنترل از راه دور، روترها و مودم ها، سیستم های کنترل شرایط محیطی، سیستم های اعلان و اطفای حریق، کشاورزی، صنایع غذایی، اتوماسیون، تجهیزات ناوبری مثل گیرنده های GPS، وسایل صوتی و تصویری مثل سینمای خانگی و تلویزیون، رباتیک، دوربین های عکاسی دیجیتال، دوربین های فیلم برداری، لوازم اندازه گیری آزمایشگاه های الکترونیک مثل مولتی متر، اسیلوسکوپ و فانکشن ژنراتور، بردهای توسعه و بردهای توسعۀ آموزشی و … .

کاربردهای-میکروکنترلر-microcontroller

تصویر 14 – کاربردهای میکروکنترلر

فیوزبیت چیست؟

فیوزبیت ها فقط در میکروکنترلرهای AVR مشاهده شده اند و در اکثر میکروکنترلرهای امروزی فیوزبیت وجود ندارد. در میکروکنترلرهای AVR بخشی از حافظۀ Flash به فیوزبیت ها اختصاص داده شده است. فیوزبیت ها در میکروکنترلرهای AVR با مقدار صفر فعال و با مقدار 1 غیر فعال می شوند. تنظیماتی از قبیل انتخاب منبع کلاک میکروکنترلر، محدودۀ فرکانس کلاک، تنظیمات مربوط به پاک شدن یا نشدن حافظۀ EEPROM داخلی هنگام پروگرام، مقدار حافظه ای که به برنامۀ Boot اختصاص می یابد و … با مقدار دهی به فیوزبیت ها انجام می شود. فیوزبیت ها در هنگام پروگرام کردن مقدار دهی می شوند و مقدار آنها در طول اجرای برنامه تغییر نخواهد کرد.

رجیستر چیست؟

در میکروکنترلرها بخشی از حافظۀ داده (RAM و نه  EEPROM) به رجیسترها اختصاص می یابد. مقداری که در رجیسترها قرار می گیرد در واقع تنظیماتی برای راه اندازی واحدهای داخلی میکروکنترلرهاست. معمولاً برای هر واحد تعدادی رجیستر وجود دارد و این رجیستر در جای معینی از حافظۀ داده قرار دارد. با مقدار دهی به بیت های این رجیسترها، واحد مورد نظر فعال (و یا غیر فعال) می شود. و تنظیماتی که برای آن واحد تعریف شده، انجام می شود. رجیسترها در طول برنامه قابل مقدار دهی و تغییر هستند.

نرم افزارهای مرتبط با میکروکنترلرها

از آنجایی که میکروکنترلرها المان هایی برنامه پذیر هستند لازم است نرم افزارهایی برای نوشتن کدهای برنامۀ میکروکنترلرها و انتقال کدها به حافظۀ برنامۀ میکروکنترلر وجود داشته باشد.

کامپایلر (Compiler)

میکروکنترلرها برای کار کردن نیاز به کد ماشین یا کد هگز دارند. از این رو نرم افزارهایی وجود دارد که برنامۀ نوشته شده به زبان های برنامه نویسی را به کد هگز تبدیل می کنند. به این نرم افزارها کامپایلر گفته می شود. از جمله کامپایلرهای میکروکنترلرها می توان به کامپایلر WinAVR، کامپایلر GCC و کامپایلر  ARMCC اشاره کرد.

ویرایشگر کد

نرم افزارهایی وجود دارد که در یک ویرایشگر کد می توان با یک زبان برنامه نویسی برای میکروکنترلر به نوشتن کدهای برنامه پرداخت. ویرایشگرهای کد معمولاً در IDEها وجود دارند و به صورت جدا موجود نیستند.

نرم افزارهای پروگرامر

نرم افزارهایی وجود دارد که با استفاده از آنها و یک سخت افزار که به کامپیوتر متصل می شود (پروگرامر)، میتوان کد هگز تولید شده توسط کامپایلر را به حافظۀ برنامۀ میکروکنترلر انتقال داد. از جمله نرم افزارهای پروگرامر می توان نرم افزار Prog ISP، نرم افزار Flash Magic و نرم افزار STM32 ST Link را نام برد.

نرم افزارهای Debugger

این نرم افزارها عموماً در IDEها هستند. برای مثال در نرم افزار Atmel Studio امکان دیباگ کردن برنامۀ نوشته شده به صورت On-chip debugging وجود دارد. همچنین برای میکروکنترلرهای STM32، نرم افزار STM-SUDIO-STM32 به عنوان یک ابزار برای مشاهدۀ برنامۀ در حال اجرا توسط میکروکنترلر، عرضه شده است. برای Debug کردن میکروکنترلر باید میکروکنترلر توسط سخت افزار Debugger به کامپیوتر متصل شود و با نرم افزارهای Debugger عمل اشکال زدایی انجام شود. یعنی میکروکنترلر که با سخت افزار Debugger به کامپیوتر متصل است، برنامه ای را که در حافظۀ خود دارد، اجرا می کند و کاربر با استفاده از نرم افزار Debugger به Debug کردن می پردازد.

نرم افزارهای جادوگر و تولید کنندۀ کد

این نرم افزارها که معمولاً با نام Wizard خوانده می شوند، این قابلیت را ایجاد کرده اند که با استفاده از تیک زدن و انتخاب مواردی، کدهای برنامه تولید شود. برای مثال می توان در نرم افزار CodevisionAVR ابزار Codewizard را نام برد. همچنین نرم افزار ARMWizard نمونه ای از نرم افزارهای تولید کنندۀ کد است.

IDEها برای میکروکنترلرها

نرم افزارهایی تحت عنوان IDE (مخفف Integrated Development Environment به معنی محیط توسعۀ یکپارچه) وجود دارند که شامل محیط کدنویسی (ویرایشگر کد)، کامپایلر، نرم افزار پروگرامر، رابط گرافیکی و ابزارهایی برای توسعۀ نرم افزار میکروکنترلر هستند. یعنی بخش زیادی از نرم افزارهای مورد نیاز برای کار کردن با یک میکروکنترلر را در خود جای داده اند. نرم افزار Keil، نرم افزار Atmel Studio، نرم افزار  CodevisionAVR، نرم افزار STM32CubeIDE  و نرم افزار TASKING همگی IDE هستند.

ide-atmel-studio-keil

تصویر 15 – IDEهای Atmel Studio و keil

نرم افزارهای شبیه ساز برای میکروکنترلرها

از جمله نرم افزارهایی که برای کار با میکروکنترلرها وجود دارد، شبیه ساز ها هستند.

نرم افزار پروتئوس: یکی از نرم افزارهای شبیه سازی مدارات الکترونیکی، نرم افزار Proteus است. در این نرم افزار تعدادی از میکروکنترلرهای AVR، میکروکنترلرهای شرکت Microchip Technology، میکروکنترلرهای شرکت NXP Semiconductors، میکروکنترلرهای شرکت STMicroelectronic و … وجود دارد.

میکروکنترلر-atmega128-proteus

تصویر 16 – میکروکنترلر ATmega128 در نرم افزار Proteus

شبیه سازهای داخلی IDEها: در برخی IDEها مانند Keil و Atmel Studio نرم افزار شبیه سازی به صورت یکپارچه وجود دارد. تفاوت شبیه سازی با Debug کردن در این است که در Debug کردن، کاربر با سخت افزار Debugger، میکروکنترلر را به کامپیوتر متصل می کند و با استفاده از نرم افزار Debugger به مشاهدۀ عملی نتایج برنامۀ نوشته شده برای میکروکنترلر می پردازد. اما در شبیه سازی کاربر در درون نرم افزار به مشاهدۀ تغییرات وضعیت رجیسترها و گاهی مشاهدۀ سیگنال های خروجی میکروکنترلر می پردازد. در واقع تفاوت شبیه سازی با Debug کردن، وجود یا عدم وجود سخت افزار است. البته می توان گفت شبیه سازی نیز نوعی Debug کردن برنامۀ نوشته شده به صورت نرم افزاری است.

شبیه-سازی-keil

تصویر 17 – شبیه سازی در نرم افزار Keil

اشکال زدایی یا Debug یا دیباگ

Debug کردن به معنای اشکال زدایی کردن است. به این صورت که میکروکنترلر پروگرام شده، با بخش سخت افزاری Debugger به کامپیوتر متصل می شود و با بخش نرم افزاری Debugger توسط کاربر دیباگ می شود. کاربر با اجرای دستورات برنامۀ نوشته شده به صورت مرحله به مرحله، سطر به سطرِ برنامۀ نوشته شده را که توسط میکروکنترلر اجرا می شود، مشاهده می کند. برخی نرم افزارها مانند Atmel Studio قابلیت این را دارند که Debug کردن را برای برنامۀ نوشته شده نیز انجام دهند (بدون اتصال میکروکنترلر به کامپیوتر). که به این عمل شبیه سازی گفتیم. به این صورت که کاربر به جای دیدن اجرای برنامه توسط میکروکنترلر، تغییر رجیسترها را در نرم افزار مشاهده می کند. بنابراین می توان گفت عمل Debug برای برنامۀ نوشته شده انجام می شود.

پروگرامر چیست؟

پروگرامر (Programmer) یک سخت افزار است که از یک طرف به کامپیوتر و از طرف دیگر به میکروکنترلر متصل می شود. کاربر با اجرای یک نرم افزار که مربوط به پروگرامر است، کدهای هگز برنامۀ نوشته شده را به حافظۀ میکروکنترلر منتقل می کند. به این عمل اصطلاحاً پروگرام کردن میکروکنترلر گفته می شود. پروگرامرها بسته به نوع میکروکنترلرها انواع و اقسام مختلف دارند. در ادامه به طور مختصر چند پروگرامر را معرفی می کنیم.

پروگرامر USBASP

این پروگرامر یکی از پروگرامرهای ساده برای میکروکنترلرهای AVR است. در ساخت این پروگرامر از میکروکنترلر ATmega8 یا میکروکنترلر ATmega88 استفاده شده است. با توجه به تعداد قطعات کم و حجم کم، می توان از آن در بردهای توسعه استفاده کرد. برای استفاده از این پروگرامر هم می توان از نرم افزار ProgISP استفاده کرد و هم از نرم افزار Atmel Studio. نحوۀ اضافه کردن پروگرامر USBASP به ابزارهای نرم افزار Atmel Studio را در «آموزش Atmel Studio مهاجرت از کدویژن به اتمل استودیو» ببینید.

پروگرامر-stk500-microchip

تصویر 18 – پروگرامر UABASP ساخت یوبرد

پروگرامر STK500

پروگرامر STK500 یک پروگرامر برای میکروکنترلرهای AVR است که می تواند بسیاری از میکروکنترلرهای AVR سری ATtiny و ATmega و AT90S را پروگرام کند. این پروگرامر قابلیت شناسایی توسط نرم افزارهای Atmel Studio و CodevisionAVR را نیز دارد.

پروگرامر-stk500-microchip

تصویر 19 – پروگرامر STK500 ساخت شرکت Microchip

پروگرامر Atmel-ICE

این پروگرامر و دیباگر ساخت Microchip Technology است و قابلیت پروگرام و دیباگ میکروکنترلرهای AVR از جمله سری ATxmega و همچنین کلیۀ میکروکنترلرهای SAM ARM Cortex-M این شرکت را دارد.

پروگرامر-دیباگر-atmel-ice

تصویر 20 – پروگرامر و دیباگر Atmel-ICE

پروگرامر MK2 (پروگرامر MKII یا AVR-ISP-MK2)

پروگرامر MK2 نیز یک پروگرامر برای میکروکنترلرهای AVR است که میکروکنترلرهای سری ATxmega را نیز پشتیبانی می کند.

پروگرامر ST-Link/V2

پروگرامر ST-Link ورژن 2 برای میکروکنترلرهای STM32 و میکروکنترلرهای STM8 استفاده می شود. ST-Link/V2 هم پروگرامر است و هم دیباگر و قابلیت کار با IDEهای IAR و Keil و TASKING را دارد.

پروگرامر LPC-Link2

این پروگرامر ساخت شرکت NXP و Embedded Artist است و برای میکروکنترلرهای شرکت NXP از جمله سری LPX1700 Cortex-M3 قابل استفاده است. LPC-Link2 همچنین یک Debugger است.

پروگرامر USB Multilink Universal FX

این پروگرامر و دیباگر نیز ساخت شرکت NXP است و از پروگرامر LPC-Link2 دارای قابلیت های بیشتر است و تعداد میکروکنترلرهای بیشتر را پشتیبانی می کند.

پروگرامر J-Link

این پروگرامر و دیباگر که ساخت شرکت SEGGER Microcontroller است، از بسیاری از میکروکنترلرهای شرکت های مختلف از جمله میکروکنترلرهای شرکت STMicroelectronics و شرکت NXP Semiconductors و Microchip Technology و … پشتیبانی می کند.

دیباگر (Debugger) چیست؟

منظور ما از دیباگر یا اشکال زدا، بخش سخت افزاری عمل Debug کردن است. میکروکنترلر پروگرام شده، به وسیلۀ سخت افزار Debugger به کامپیوتر متصل می شود و کاربر با نرم افزار Debugger به اشکال زدایی می پردازد. در بخش «پروگرامر چیست؟» چند پروگرامر را نام بردیم که قابلیت دیباگ کردن هم دارند.

زبان برنامه نویسی میکروکنترلرها

برای میکروکنترلرها زبان های برنامه نویسی Assembly، زبان برنامه نویسی C، زبان برنامه نویسی C++، زبان برنامه نویسی Basic و … استفاده می شود. برای یادگیری کار با میکروکنترلرها بهتر است با زبان برنامه نویسی C شروع کنیم و در ادامه پس از یاد گرفتن زبان برنامه نویسی C، زبان برنامه نویسی C++ را نیز یاد بگیریم. این دو زبان برنامه نویسی برای کار با میکروکنترلرها کافی است.

آموزش زبان C میکروکنترلرها

آموزش زبان C++ میکروکنترلرها

نام میکروکنترلرها

نام میکروکنترلرها نیز مانند دیگر ICها ترکیبی از حروف انگلیسی و عدد و گاهی علامت دش (-) و Space است. نام هر میکروکنترلر می تواند دارای معنای خاصی باشد. برای مثال میکروکنترلرهای شرکت STMicroelectronics با حرف STM شروع می شوند. در میکروکنترلرهای AVR عددی که در نام آن می آید (دو یا سه رقم اولی که توانی از عدد 2 باشد) نشان دهندۀ مقدار حافظۀ Flash میکروکنترلر است. مثلاً ATmega328 دارای 32 کیلوبایت (2 به توان 5) حافظۀ Flash است. و میکروکنترلر ATmega64 دارای 64 کیلوبایت (2 به توان 6) حافظۀ Flash است. در نام میکروکنترلرها اغلب پسوندهایی نیز وجود دارد که هر کدام از این پسوندها نشان دهندۀ مشخصه ای از میکروکنترلر است.

بردهای توسعه مبتنی بر میکروکنترلر

بردهای توسعه در صنعت الکترونیک دو کاربرد دارند. یکی استفاده در دستگاه هایی که نیاز به یک برد برای کنترل و یا راه اندازی برخی وسایل و ابزارها دارند. دوم استفاده برای علاقه مندان دنیای میکروکنترلرها که با تهیۀ این بردهای توسعه به یادگیری نوشتن برنامه و کار کردن با میکروکنترلرها می پردازند. می توان گفت همۀ شرکت هایی که میکروکنترلر می سازند، برای میکروکنترلرهای خود بردهای توسعه نیز می سازند. برای مثال برد توسعه STM32F3DISCOVERY برای میکروکنترلر STM32F303VC توسط شرکت STMicroelectronics ساخته شده است. همچنین گاهی شرکت های دیگر (به جر شرکت های تولید کنندۀ میکروکنترلر) برای میکروکنترلرها برد توسعه می سازند. در این راستا یوبرد نیز به ساخت بردهای توسعۀ با کیفیت برای میکروکنترلر AVR ATmega64 و میکروکنترلرهای STM32F1  و میکروکنترلر LPC1768 پرداخته است.

برد-توسعه-atmega64pin-یوبرد

تصویر 21 – برد توسعه ATmega64pin یوبرد

برد-توسعه-stm32f10xvxxx-یوبرد

تصویر 22 – برد توسعه STM32F10xVxxx یوبرد

برد-توسعه-lpc1768-یوبرد

تصویر 23 – برد توسعه LPC1768 یوبرد

بوت لودر (Bootloader) چیست؟

Bootloader یک برنامه است که در بخشی از حافظۀ Non volatile میکروکنترلرها ذخیره می شود و وظیفۀ آن ایجاد امکان برقراری ارتباط بین میکروکنترلر و کامپیوتر از طریق پروتکل های ارتباطی میکروکنترلر برای پروگرام شدن است. یعنی میکروکنترلرها برای این که بتوانند از طریق پروگرامری که به کامپیوتر متصل شده، پروگرام شوند، نیاز به برنامه ای دارند که بتواند عمل پروگرام شد را کنترل کند. یکی از وظایف Bootloader این است که پس از Reset شدنِ میکروکنترلر، بررسی می کند که آیا پروگرامر قصد پروگرام کردن میکروکنترلر را دارد یا خیر. در صورتی که ما بخواهیم یک فایل هگز را با پروگرامر روی حافظۀ میکروکنترلر بریزیم، کدهای صفر و یک که درفایل هگز وجود دارد، توسط پروگرامر به میکروکنترلر منتقل می شود و در آنجا توسط برنامۀ Bootloader در حافظۀ برنامۀ میکروکنترلر ذخیره می شود. برنامه های Bootloaderی وجود دارند که با استفاده از آنها می توان میکروکنترلرها را از راه دور برای مثال از طریق شبکۀ اینترنت، پروگرام کرد و برنامۀ میکروکنترلر را بدون نیاز به حضور در محل نصب آن، آپدیت کرد.

ریست (Reset) در میکروکنترلرها

می توان گفت همۀ میکروکنترلرها یک پایه به نام Reset یا RST دارند که با صفر (یا یک) شدن آن پایه، میکروکنترلر از ابتدا شروع به اجرای برنامه ها می کند و اصطلاحاً Reset می شود. این ریست را ریست سخت افزاری می نامیم. البته تنها راه ریست شدن میکروکنترلر ریست سخت افزاری نیست. منابع مختلفی برای ریست میکروکنترلر وجود دارد. برای مثال در میکروکنترلرهای STM32F1، ریست نرم افزاری نیز وجود دارد که WWDG Reset و Power Reset و Software Reset از این جمله اند.

کتابخانه های موجود برای میکروکنترلرها

با توجه به گسترده شدن امکانات میکروکنترلرها و همچنین ادوات جانبی آنها نظیر نمایشگرها، سنسورها، درایورهای موتورهای الکتریکی، ماژول های ارتباط Wireless و … و همچنین پر استفاده بودن این ادوات جانبی، کتابخانه هایی برای راه اندازی و استفاده از این ادوات جانبی برای میکروکنترلرها به زبان های مختلف برنامه نویسی ایجاد شده است. برای مثال در نرم افزار کدویژن کتابخانه هایی برای راه اندازی LCDهای کاراکتری و LCDهای گرافیکی، آی سی DS1307 و … وجود دارد. خیلی از این کتابخانه ها مختص نرم افزار و یا میکروکنترلر خاصی نیستند و قابل حمل هستند و می توانند برای گسترۀ وسیعی از میکروکنترلرها استفاده شوند.

انتخاب میکروکنترلر مناسب برای پروژه ها

در پروژه های الکترونیکی که قرار است مطابق برنامه ای خاص، روند خاصی از عملیات اجرا و انجام شود، از میکروکنترلرها می توان استفاده کرد. حال سؤال این است که از چه میکروکنترلری می خواهیم استفاده کنیم؟ پاسخ به این سوال خود می تواند یک نوشتۀ مفصل باشد. یکی از جوانب مؤثر در انتخاب میکروکنترلر مناسب، جنبۀ فنی آن است. سرعت انجام دستورات، مشخصات شکل موج های خروجی میکروکنترلر (مثلاً خروجی تایمرها)، توان مصرفی میکروکنترلر، ولتاژ کاری میکروکنترلر، فرکانس کاری میکروکنترلر، تعداد پورت های I/O میکروکنترلر، پروتکل های ارتباطی میکروکنترلر، ابعاد و پکیج میکروکنترلر، مقدار حافظۀ برنامه و دادۀ میکروکنترلر و دیگر مشخصات فنی میکروکنترلرها می توانند تعیین کنندۀ نوع میکروکنترلر مورد استفاده در پروژه ها باشند. جنبۀ دیگر، سیاست های پروژه است که از میان می توان به مدت زمان انجام پروژه و قیمت تمام شدۀ محصول نهایی اشاره کرد.

تاثیر میکروکنترلر بر زندگی انسان

از زمان پیدایش میکروکنترلرها با توجه به این که میکروکنترلر را می توان یک کامپیوتر در یک چیپ سیلیکونی تلقی کرد، دستگاه ها و وسایل الکترونیکی پیشرفت چشمگیری داشتند. از جمله این پیشرفت ها وسایل همراه هستند. امروزه در تبلت ها و تلفن های همراه از میکروکنترلرهای پیشرفته استفاده می شود. این وسایل خود به تنهایی بر زندگی انسان امروزی تأثیر بسزایی داشته است. از جمله این تأثیرها می توان به ارتباط اینترنتی با سراسر دنیا و مشاهدۀ اتفاقات، اخبار و زندگی مردم کشورهای دیگر و طبیعت و چشم اندازهای این کرۀ خاکی و دنیای پیرامون اشاره کرد. همچنین با قابلیت هایی که میکروکنترلرها دارند، در اغلب لوازم هوشمند خانگی و لوازم محل کار استفاده شده اند. استفاده از میکروکنترلرها در لوازم خانگی و وسایل محل کار در راستای راحت شدن کار با این لوازم و وسایل بوده است. برای مثال در گذشته لباسشویی هایی وجود داشت (لباسشویی های دو قلو) که برای مدتی لباس را می شست و ما برای خشک کردن آن مجبور بودیم لباس ها را از مخزن شست و شو دربیاوریم و در مخزن خشک کن قرار دهیم. این لباسشویی ها دو موتور مجزا برای دو مخزن داشتند. همچنین اغلب این لباسشویی ها دارای تنظیمات به صورت سوییچ ها و تایمر های مکانیکی بودند. لباسشویی های جدید تنها یک مخزن و یک موتور دارند، برای شست و شو برنامه های متنوعی دارند که با کلید ها و ولوم های الکتریکی انتخاب می شوند و برای شستن لباس تنها کافی است برنامۀ مورد نظر انتخاب شود تا لباسشویی لباس ها را بشوید، آبکشی کند و خشک نماید. این عملیات توسط میکروکنترلری که در لباسشویی قرار دارد انجام می شود.

رضا بداغی

رضا بداغی

عضو هیئت مدیره یوبرد، طراح و برنامه نویس سیستم های دیجیتال مبتنی بر میکروکنترلر، طراح PCB و مدرس آموزش های میکروکنترلر، طراحی PCB و برنامه نویسی میکروکنترلر

آموزش میکروکنترلرهای ARM سری STM32 یوبرد

آموزش میکروکنترلرهای AVR یوبرد

آموزش میکروکنترلرهایARM سری LPC یوبرد

آموزش Arduino یوبرد

خدمات برنامه نویسی میکروکنترلر یوبرد

راه-اندازی-dac-stm32

راه اندازی DAC در STM32

راه اندازی DAC در STM32، ویژگی های DAC در میکروکنترلرهای STM32F1، بلوک دیاگرام DAC در STM32، اتصالات راه اندازی DAC در میکروکنترلر STM32F107VC، نمونه کد رجیستری راه اندازی واحد DAC در میکروکنترلرهای STM32F1، ساخت موج سینوسی با STM32، راه اندازی مبدل دیجیتال به آنالوگ STM32 با توابع HAL

راه-اندازی-سون-سگمنت-با-آردوینو

راه اندازی سون سگمنت با آردوینو

راه اندازی سون سگمنت با آردوینو UNO، راه اندازی سون سگمنت 4 تایی آند مشترک با آردوینو، اتصال سون سگمنت به آردوینو، کتابخانۀ سون سگمنت برای آردوینو، نمونه کد راه اندازی سون سگمنت، نمایش اعداد در سون سگمنت 4 تایی، نکات راه اندازی سون سگمنت

راه-اندازی-adc-در-آردوینو

راه اندازی ADC در آردوینو

راه اندازی ADC در آردوینو، راه اندازی LCD گرافیکی KS0108 با کتابخانۀ U8g2، اتصالات لازم برای راه اندازی ADC و LCD گرافیکی KS0108، نمونه کد راه اندازی ADC آردوینو، فرمول محاسبۀ دما با TMP36، راه اندازی سنسور دما با آردوینو، راه اندازی فتوسل (LDR) با آردوینو

39 دیدگاه ها

  1. سلام جناب مهندس. خیلی عالی بود. فقط یه سوال. فرمودید "هنگامی که شرکت اینتل در حال اختراع اولین میکروپروسسور دنیا بود، یک مهندس از شرکت Texas Instruments به نام Gary Boone موفق به ساخت اولین میکروکنترلر شد."

    سوالم اینه که خود میکروکنترلر cpu داره. مخترع میکروکنترلر حتما قبلش یه cpu بوده که بخواد اونو تو میکروکنترلر به کار ببره دیگه. بعد فرمودید که میکروپروسسور همون cpuعه. یعنی مخترع میکروکنترلر خودش cpu هم ساخته و توی میکروکنترلر قرار داده؟ ممنون

    پاسخ
    • سلام. خواهش میکنم. این جمله درسته: “هنگامی که شرکت اینتل در حال اختراع اولین میکروپروسسور تک تراشه ای دنیا بود، یک مهندس از شرکت Texas Instruments به نام Gary Boone موفق به ساخت اولین میکروکنترلر شد.”

      قبلش cpu بوده. متن هم در آینده اصلاح میشه. ممنون از دقت شما.

      پاسخ
  2. باعرض سلام وادب.بسیار ممنون وسپاسگزارم.واقعا عالی بودنمیدونم باچه کلمات وجملاتی تشکر کنم.ولی هرجا باشید آرزوی سلامتی و سربلندی برایتان رادارم

    پاسخ
    • سلام دوست عزیز. خواهش میکنم. زنده باشید. ممنون از دعای خیرتون. موفق و پیروز باشید

      پاسخ
  3. باعرض سلام و خسته نباشید محمد جواد زرگر هستم و ۱۳ سالم است
    از برنامه ی شما کمال تشکر را دارم خیلی عالی بود

    پاسخ
    • درود بر جناب زرگر. ممنون از نظرتون. موفق و پیروز باشید

      پاسخ
  4. عالی و کامل بی نهایت متشکرم مهندس

    پاسخ
    • خیلی ممنون. لطف دارید. خواهش میکنم

      پاسخ
  5. با سلام: بسیار خوب و مفید

    پاسخ
    • سلام. خیلی ممنون. نظر لطف شماست

      پاسخ
  6. با سلام. ممنون از اطلاعات شما. بسیار عالی و کاربردی

    پاسخ
    • سلام. سپاسگزارم از مطالعه تون. خیلی لطف دارید

      پاسخ
  7. زنده باد.
    مفید بود.

    پاسخ
    • سلام خیلی ممنون. لطف دارید.

      پاسخ
  8. خیلی عالی بود.ممنون

    پاسخ
    • خواهش میکنم. لطف دارید

      پاسخ

یک دیدگاه بنویسید

نشانی ایمیل شما منتشر نخواهد شد.

ضبط پیام صوتی

زمان هر پیام صوتی 4 دقیقه است