سلام به همه همراهان آکادمی اسمارت کامپ! امیدواریم حال همه شما خوب باشه. در این مقاله، قصد داریم شما به معرفی دقیقی از تراشه میکروکنترلر خانواده AVR به شماره ATmega328 بپردازیم. ATmega328 یک میکروکنترلر پیشرفته AVR با معماری ریسک RISC است. از پردازش اطلاعات 8 بیتی پشتیبانی می کند و دارای حافظه فلش داخلی 32 کیلوبایتی است.

ATmega328 دارای 1 کیلوبایت حافظه قابل برنامه ریزی (EEPROM) قابل پاک کردن الکتریکی است. این ویژگی نشان می‌دهد که اگر منبع تغذیه اعمال شده به میکروکنترلر حذف شود، حتی در آن صورت می‌تواند داده‌ها را ذخیره کند و می‌تواند نتایج را پس از تامین برق آن ارائه دهد. علاوه بر این، ATmega-328 دارای حافظه دسترسی تصادفی استاتیک 2KB (SRAM) است. سایر خصوصیات بعدا توضیح داده خواهد شد. ATmega 328 دارای چندین ویژگی مختلف است که آن را به یکی از محبوب ترین میکروکنترلرها در بازار تبدیل می کند. این ویژگی ها شامل معماری پیشرفته RISC، عملکرد خوب، مصرف انرژی کم، شمارنده تایمر واقعی دارای نوسانگر مجزا، 6 پین PWM، Serial USART قابل برنامه ریزی، قفل برنامه نویسی برای امنیت نرم افزار، توان عملیاتی تا 20MIPS و غیره می باشد. جزئیات بیشتر در مورد ATmega 328 در ادامه در بخش های بعدی ارائه شده است.

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

http://smartcomp.ir/product-4

http://smartcomp.ir/product-6

مقدمه ای بر ATmega328

ATmega328 یک میکروکنترلر 8بیتی AVR با 28 پایه است که توسط Microchip ساخته شده و از معماری RISC پیروی می کند و دارای حافظه برنامه نوع فلش 32 کیلوبایت است.

Atmega328 میکروکنترلری است که در بردهای اصلی آردوینو مانند Arduino UNO، Arduino Pro Mini و Arduino Nano استفاده می شود.

دارای حافظه EEPROM  به ظرفیت 1KBو حافظه SRAM آن 2KB است.

دارای 8 پین برای عملیات ADC است که همگی ترکیب شده و PortA را تشکیل می دهند (PA0 - PA7).

همچنین دارای 3 تایمر داخلی است که دو تای آن 8 بیتی و سومی تایمر 16 بیتی است.

حتماً نام Arduino UNO را شنیده اید، UNO مبتنی بر میکروکنترلر atmega328 است. این تراشه قلب UNO است. :)

از 3.3 ولت تا 5.5 ولت کار می کند اما معمولاً ما از 5 ولت به عنوان ولتاژ استاندارد استفاده می کنیم.

از ویژگی های عالی آن می توان به کارایی هزینه، اتلاف انرژی کم، قفل برنامه نویسی برای اهداف امنیتی، شمارنده تایمر واقعی با نوسانگر مجزا اشاره کرد.

جدول زیر ویژگی های کامل ATmega328 را نشان می دهد:

ATmega328 Features
تعداد پایه ها28
CPURISC 8-Bit AVR
ولتاژ کاری1.8 to 5.5 V
حافظه برنامه32KB
نوع حافظه برنامهFlash
SRAM2048 Bytes
EEPROM1024 Bytes
ADC10-Bit
تعداد   کانال های ADC8
تعداد پایه های PWM6
مقایسه کننده1
بسته بندی (4 نوع)8-pin PDIP 32-lead TQFP 28-pad QFN/MLF 32-pad   QFN/MLF
اسیلاتورحداکثر   تا 20 MHz 
تایمر   (3 عدد)2 تا 8 بیتی و یک 16 بیتی
ریست در هنگام روشن   شدنبلی
Power Up تایمربلی
I/O پایه   های23
سازندهMicrochip
SPIبلی
I2Cبلی
Watchdog تایمر   سگ نگهبانبلی
Brownout   detect (BOD)بلی
Resetبلی
USI   (Universal Serial Interface)بلی
دمای کاری-40 C to +85 C

پایه های ATmega328

ATmega-328 یک میکروکنترلر AVR است که در مجموع دارای بیست و هشت (28) پین است.

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

حالا بیایید نگاهی دقیق به پایه های Atmega328 بیندازیم:

پایه بندی ATmega328

از طریق نمودار پایه بندی، می‌توانیم پیکربندی پایه ها هر قطعه الکترونیکی را بفهمیم، بنابراین اگر در حال کار بر روی هر پروژه مهندسی هستید، ابتدا باید پایه بندی قطعات را مرور کنید.

نمودار پایه بندی ATmega328 در شکل زیر نشان داده شده است:

توضیحات پایه های ATmega328

پایه های ATmega-328 به پورت های مختلفی تقسیم می شوند که در زیر به تفصیل آورده شده است.

VCC یک منبع ولتاژ دیجیتال است.

AVCC یک پایه ولتاژ تغذیه برای مبدل آنالوگ به دیجیتال است.

GND نشان دهنده زمین است و 0 ولت دارد.

پورت A از پین های PA0 تا PA7 تشکیل شده است. این پین ها به عنوان ورودی آنالوگ به مبدل های آنالوگ به دیجیتال عمل می کنند. اگر از مبدل آنالوگ به دیجیتال استفاده نمی شود، پورت A به عنوان یک پورت ورودی/خروجی دو طرفه هشت بیتی عمل می کند.

پورت B از پین های PB0 تا PB7 تشکیل شده است. این پورت یک پورت دو طرفه 8 بیتی است که دارای مقاومت بالاکش داخلی (PULL UP) است.

پورت C از پین های PC0 تا PC7 تشکیل شده است. بافرهای خروجی پورت C دارای ویژگی های درایو متقارن با قابلیت منبع و همچنین سینک جریان بالا هستند.

پورت D از پین های PD0 تا PD7 تشکیل شده است. همچنین یک پورت ورودی/خروجی 8 بیتی است که دارای یک مقاومت بالاکش داخلی است.

AREF یک پین مرجع آنالوگ برای مبدل آنالوگ به دیجیتال است.

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

معماری ATmega328

معماری ATmega-328 در شکل زیر نشان داده شده است.

حافظه ATmega328

ATmega 328 دارای سه نوع حافظه به نام های زیر است:

حافظه فلش: 32 کیلوبایت این یک حافظه فقط خواندنی (ROM) قابل برنامه ریزی است. این یک حافظه غیر فرار است.

SRAM. مخفف Static Random Access Memory. این یک حافظه فرار با ظرفیت 2KB است یعنی داده ها پس از جدا کردن منبع تغذیه حذف می شوند.

EEPROM مخفف Electrically Erasable Programmable Read-Only Memory دارای ظرفیت 1 کیلوبایت است.

فضاهای حافظه AVR در شکل زیر نشان داده شده است.

رجیسترهای ATmega328

ATmega-328 دارای سی و دو (32) رجیستر عمومی (GP) است.

همه این رجیسترها بخشی از حافظه دسترسی تصادفی استاتیک (SRAM) هستند.

تمامی رجیسترها در شکل زیر آورده شده است.

بسته های ATmega328

هر بسته دارای ابعاد مختلفی است تا به راحتی متمایز شود.

بسته های ATmega 328 در جدول نشان داده شده در شکل زیر آورده شده است.

بلوک دیاگرام ATmega328

بلوک دیاگرام ATmega 328 در شکل زیر نشان داده شده است.

ویژگی های ATmega328

برای انجام هر کاری می توانیم یک دستگاه را بر اساس ویژگی های آن انتخاب کنیم. یعنی آیا ویژگی های آن برای به دست آوردن نتایج مطلوب مطابقت دارند یا خیر.

برخی از ویژگی های اصلی میکروکنترلر AVR ATmega328 در جدول ارائه شده در شکل زیر نشان داده شده است.

ATmega328 و آردوینو

ATmega328 میکروکنترلر مورد استفاده در برد آردوینو UNO است.

هنگامی که ما کد را در آردوینو UNO آپلود می کنیم، در واقع در Atmega328 آپلود می شود.

کاربردهای Atmega328

یک بسته کامل شامل ATmega 328 و Arduino را می توان در چندین برنامه مختلف در زندگی واقعی استفاده کرد.

می توان از آن در پروژه های سیستم های embeded استفاده کرد.

همچنین می توان از آن در رباتیک استفاده کرد.

از طریق آن می توان کوادکوپتر و حتی هواپیماهای کوچک نیز طراحی کرد.

با استفاده از این دستگاه می توان سیستم های نظارت و مدیریت برق را نیز تهیه کرد.

سیستم های امنیتی خانه را می توان با استفاده از Arduino UNO طراحی کرد.

نحوه شروع کار بر روی Atmega328

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

مزیت استفاده از آردوینو این است که می توانید از تمام کتابخانه های داخلی آن استفاده کنید که کار را بسیار آسان تر می کند.

پس از طراحی پروژه خود در آردوینو، مدار اولیه Atmega-328 را طراحی کنید که بسیار ساده است و در بالا در مورد آن صحبت کردیم.

هنگام استفاده از پایه های آن باید مراقب باشید، پایه بندی Atmega328 و Arduino در بالا مورد بحث قرار گرفته اند.

نکته دیگری که در اینجا باید به آن اشاره کرد این است که قبل از کار بر روی سخت افزار، ابتدا باید شبیه سازی Proteus آن را طراحی کنید.

کتابخانه آردوینو را برای پروتئوس را دانلود کنید و سپس پروژه خود را بر روی آن طراحی کنید.