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

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

مقدمه و معرفی

  • میکروکنترلرهای PIC محصول شرکت Microchip هستند و انواع 8 بیت، 16 بیت و 32 بیتی دارند.
  • خود میکروکنترلرهای 8 بیتی PIC خانواده‌ها‌ی گسترده و متنوعی دارند که در جدول زیر مشخصاتی از آنها را می‌بینیم.

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

  • اغلب این خانواده ها از نظر پین‌ها به هم شباهت دارند و به لحاظ ظاهری هر یک می‌توانند در جایگاه دیگری هم استفاده شوند. اما به لحاظ عملکردی هر خانواده کاربرد و عملکرد مخصوص به خود را دارد.
  • به عنوان نمونه PIC16F877A دارای پین I2C (SDA و SCL) و PORTC است اما در PIC18F4550 به جای PORTC، از PORTB استفاده شده است. هرچند که از لحاظ ظاهری دقیقا به هم شبیه هستند.
  • در نام‌گذاری میکروهای هر خانواده از پیشوندهایی استفاده می‌شود که به این شرح هستند.
  • PIC18FXXX: حرف F نشان دهنده‌ی وجود Flash Program Memory است.
  • PIC16CXXX: حرف C نشان‌دهنده‌ی EPROM Program Memory است.
  • PIC18LFXXX: حروف LF نشان‌دهنده‌ی ولتاژ کاری پایین (Low Voltage operation) است.
  • این نمادها و نام‌گذاری‌ها در خانواده‌های مختلف متفاوت هستند.
  • یکی دیگر از قوانینی که در نام‌گذاری این میکروها وجود دارد این است که هر زمان قرار باشد یک میکروی قدیمی شده را با مدل جدیدتری از آن جایگذاری کرده و مدل قدیمی را از رده خارج کنند، به انتهای نام مدل قدیمی یک یا چند حرف الفبا اضافه کرده و به عنوان نام مدل جدید انتخاب می‌کنند. مثلا 16F877 و 16F877A.

در ادامه‌ی این آموزش مدل PIC18 را با جزئیات معرفی می‌کنیم چرا که این مدل نسبت به سایر مدل‌ها در انجام پروژه‌ها بیشتر مورد استقبال است.

از میان این خانواده ابتدا به سراغ PIC18F4550 می‌رویم. این میکروی 8 بیتی دارای معماری RISC است و مشخصات آن به صورت زیر می‌باشد.

  • Timer: دارای یک تایمر 8 بیتی و سه تایمر 16 بیتی است؛ Timer0 – Timer3
  • USART: دارای USART پیشرفته‌ی داخلی (in-built)
  • ADC: دارای ADC ده بیت، 13 کانال
  • دارای ماژول‌های Capture ،Compare و PWM (که CCP گفته می‌شوند) و CCP پیشرفته
  • USB: دارای USB v2.0 با سرعت انتقال 5Mb/s تا 12Mb/s
  • دارای پورت سریال Master Synchronous (MSSP) که از پروتکل‌های I2C و SPI پشتیبانی می‌کند
  • دارای EEPROM با ظرفیت 256 بایت، حافظه فلش با ظرفیت 32 کیلوبایت و SRAM داخلی با ظرفیت 2 کیلوبایت
  • پورت‌ها: A ،B ،C ،D و E
  • دارای پورت SSP (Streaming Parallel Port) برای انتقالات USB streaming
  • دارای 3 عدد وقفه (Interrupt) خارجی
  • مشخصات اسیلاتور:
  1. کریستال آن دارای 4 مود مختلف است از جمله دارای مود PLL با دقت بالا برای کاربردهای USB است.
  2. دارای دو مود کلاک خارجی که تا 48MHz قابل استفاده‌اند، می‌باشد.
  3. اسیلاتور داخلی آن دارای 8 فرکانس مختلف در بازه‌ی 32KHz-8MHz است که هر یک توسط خود کاربر قابل انتخاب هستند.
  4. اسیلاتور ثانویه‌ی آن را می‌توان با استفاده ازTIMER1 در فرکانس 32KHz استفاده کرد.
  • از LIN bus پشتیبانی می‌کند.
مطلب پیشنهادی:  راه اندازی LCD کاراکتری و ADC در میکروکنترلر PIC

نمودار شکل ظاهری پایه‌‌ها

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

5 عدد پورت داریم که هر پورت دارای این 3 رجیستر است.

  1. TRIS: استفاده به عنوان رجیستر (DDR (0-output and 1-input
  2. LAT: استفاده به عنوان رجیستر خروجی
  3. PORT: برای خواندن سطح (level) پین‌های ورودی از آن استفاد می‌شود.
  • PORTB و PORTD در این میکروها مقاومت‌های پول نسبتا ضعیفی دارند.
  • همچنین در POR (Power On Reset)، تمام پین‌هایی که با پین‌های ADC مالتی‌پلکس شده باشند هم مانند پین‌های ADC رفتار می‌کنند.
  • برای دسترسی داشتن به پین‌های GPIO، ابتدا باید مود پیش‌فرض ADC را با استفاده از رجیستر PBADEN تغییر دهیم.

ساختار داخلی PIC18F4550

Timer

  • این میکروها دارای ماژول تایمر داخلی هستند که می‌توان از آن برای کاربردهای مختلف مانند تولید تاخیرهای دقیق، شمارش پالس و اندازه‌گیری پالس استفاده کرد.
  • Timer2 ،Timer0 و Timer3 شانزده بیتی هستند و Timer1، هشت بیتی است.
  • هر کدام از این تایمرها، رجیستر و کنترل مربوط به خودشان را دارند که می‌توان از آنها استفاده کرد.
  • اگر بخواهیم از تایمر به عنوان کانتر (شمارنده) استفاده کنیم، برای Timer0 باید یک پالس خارجی را به RA4 و برای Timer1 باید یک پالس خارجی را به RC0 متصل کنیم. این سیگنال ها به ترتیب T1CKI و T3CKI هستند.

ADC

  • همانطور که گفتیم، این میکرو دارای 13 کانال ADC است که دارای نام‌های AN1 ،AN0 و … هستند.
  • از ADC برای خواندن سیگنال‌های آنالوگ دریافتی از سنسورهایی مانند سنسور دماسنج، رطوبت‌سنج، شتاب‌سنج و … و تبدیل این سیگنال‌ها به مقادیر دیجیتال قابل پردازش در میکرو استفاده می‌شود.
مطلب پیشنهادی:  کار با میکروکنترلر PIC18F4550 و MPLABX IDE

UART

  • این میکرو دارای پروتکل UART یا Universal Asynchronous Receiver Transmitter نیز هست. از UART برای برقراری ارتباط سریال بین دو دستگاه استفاده می‌شود. مخصوصا در مواردی که بین دو دستگاه فاصله‌ی طولانی وجود دارد، استفاده از پروتکل ارتباط سریال به سایر موارد ترجیح داده می‌شود.
  • بیشتر ماژول‌های الکترونیکی مانند GSM ،GPS، بلوتوث، WiFi و … برای برقرای ارتباط از همین پروتکل استفاده می‌کنند و فقط Baud Rates آنها با هم فرق می‌کند؛ مثلا 9600، 115200 و …
  • برای استفاده از این پروتکل، از پین Rx برای دریافت داده و از پین Tx برای ارسال داده‌ها استفاده می‌شود.

External Interrupt

  • پین‌های INT1 ،INT0 و INT2 به عنوان وقفه‌های خارجی استفاده می‌شوند. کاربرد این وقفه‌ها در تشخیص رخداد مطلوب یک پالس مشخص و انجام کارهای متناظر با آن است. این پالس‌های مطلوب می‌توانند روی لبه‌های بالارونده یا پایین‌رونده تنظیم شده باشند.

ماژول CCP

  • این میکرو ماژول CCP نیز دارد که خود این ماژول شامل موارد گفته شده یعنی Capture ،Compare و PWM است. این ماژول کاربردهای مختلفی می‌تواند داشته باشد.
  1. Capture: برای اندازه‌گیری فرکانس، پالس و duty cycle مربوط به پالس‌های ورودی استفاده می‌شود. برای این اندازه‌گیری کافیست پالس ورودی را به پین RC2 متصل کنیم و تنظیمات میکرو را روی مود Capture قرار دهیم.
  2. Compare: برای تولید موج مربعی استفاده می‌شود. برای این کار سیگنال شمارش (count) را در داخل رجیستر لود می‌کنیم تا با تایمر مقایسه شود. در هر نقطه‌ای که تطابق این دو سیگنال رخ بدهد یا ندهد، در خروجی پین RC2 سیگنال ولتاژ بالا یا ولتاژ پایین متناظر تولید خواهد شد.
  3. PWM: ازPWM در موارد مختلفی استفاده می‌شود مثلا در کنترل سرعت موتورهای DC، تغییر شدت نور LED و یا تولید موج سینوسی و …

پورت سریال MSSP

  • این ماژول (Master Synchronous) در حقیقت یک اینترفیس سریال است که برای مواردی چون برقراری ارتباط با سایر میکروکنترلرها و یا پریفرال‌ها از آن استفاده می‌شود.
  • پریفرال‌ها می‌توانند مواردی مانند EEPROM سریال، شیفت رجیستر، درایورهای نمایشگر، مبدل‌های آنالوگ به دیجیتال و برعکس و … باشند.
مطلب پیشنهادی:  آموزش برنامه نویسی میکروکنترلرهای PIC به زبان C

ماژول MSSP می‌‌تواند در دو مود کاری استفاده شود:

1. I2C

  • I2C یک پروتکل ارتباطی Two-Wire است. این دو عدد wire یکی SDA (Serial Data) و دیگری SCL (SerialClock) است. SDA و SCL به ترتیب با پورت‌های PortB.0 و PORTB.1 مالتی‌پلکس می‌شوند.
  • سرعت این پروتکل بین 100 تا 400 کیلوهرتز است.
  • از این پروتکل در تعاملات بسیاری مانند تعامل با ژیروسکوپ، مگنتومتر و … استفاده می‌شود.

2. SPI

  • SPI هم یک پروتکل ارتباط سریال است که به جای دو wire چهار wire دارد

(Serial Data Input)  SDI

(Serial Data Output)  SDO

(Serial Clock )  SCK

SS’ (Slave Select)

  • از پروتکل SPI برای برقراری ارتباط با مواردی مانند کارت ADC ،SD چیپ‌ها و غیره استفاده می‌شود.

هم پروتکل SPI و هم پروتکل I2C هر دو سرعتی بیشتر از UART دارند و هر دو پروتکل‌های Master-Slave هستند.

Universal Serial Bus (USB)

  • این میکرو دارای USB داخلی است. USB نیز یکی از واسطه‌های برقرار ارتباط، و در حقیقت یک پورت موازی (SPP) ارتباطی است که امکان تبادل پرسرعت اطلاعات را بین میکرو و دستگاه‌های خارجی فراهم می‌کند.

Power Saving

  • این ویژگی در کاربردهایی که مصرف توان در آنها اهمیت و محدودیت دارد، مورد نیاز و استفاده است. شیوه‌ای که این ویژگی در کنترل توان میکرو دارد، به این صورت است که در لحظاتی که میکرو فعالیتی ندارد، آن را در مود sleep قرار می‌دهد. اصطلاحا به این مود power saving یا مود ذخیره‌کننده‌ی توان گفته می‌شود.
  • منبع: ترجمه از سایت electronicwings.com

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

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

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *