ماژول CMPS10

معرفی و تشریح کامل ماژول CMPS10

ماژول CMPS10 یک قطب نما حرفه ای متشکل از یک پردازنده پرقدرت 16 بیتی، شتاب سنج سه محورx،y،z و مغناطیس سنج حول سه محورx،y،z می باشد.

ماژول CMPS10 به صورت یکپارچه طراحی شده و حذف تمامی خطاهای اندازه گیری در اولویت طراحی آن قرار گرفته است.

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

این سه شامل محور های زیر هستند:

  • زاویه حول محور عمودی که از آن با نام Bearing  یاد می کنیم.
  • زاویه حول محور طولی  که از آن با نام Roll یاد می کنیم.
  • زاویه حول محور عرضی که از آن با نام  Pitch یاد می کنیم.

تغذیه ماژول CMPS10 بین 3.3 تا 5 ولت می باشد که جریان نامی 25mA را نیاز دارد.

اطلاعات خام شتاب سنج و مغناطیس سنج با فرکانس 75 هرتز در اختیار کاربر قرار می گیرند. بدین معنی که هر 13.3ms اطلاعات به روز شده را می توان دریافت کرد.

همچنین بافری برای نمونه گیری این اطلاعات در ماژول در نظر گرفته شده که 45 عملیات  نمونه گیری را انجام خواهد داد که زمان کلی بروز رسانی پس از عبور از فیلتر ها و با در نظر گرفتن محاسبات 640ms خواهد بود.

در محاسبه زاویه حول محور عمودی یا Bearing ، از اطلاعات خام شتاب سنج، مغناطیس سنج همراه با اطلاعات Roll و Pitch استفاده شده است.

همچنین سه روش ارتباط با ماژول CMPS10 وجود دارد به شرح ذیل:

  • ارتباط (I2C) مورد بحث در این فصل
  • ارتباط سریال (USART)
  • مدولاسیون عرض پالس (PWM)

در ادامه به صورت گام به گام به توضیحات مربوط به نحوه ارتباط با ماژول، نحوه دسترسی به رجیسترهای داخلی آن، بررسی ویژگی ها و قابلیت های دیگر ماژول خواهیم پرداخت.

نحوه ارتباط با رجیسترهای داخلی CMPS10

رجیسترهای مختلفی در این ماژول تعبیه شده اند که هر کدام حاوی اطلاعاتی هستند.

مهم ترین رجیستر ماژول فوق، رجیستر Bearing می باشد که به دو فرمت زیر در اختیار کاربر قرار می گیرد:

1) دو بایتی، حاوی عددی بین 0 تا 3599 مشخص کننده زاویه های 0 تا 359.9 درجه

2) یک بایتی، حاوی عددی بین 0 تا 255 مشخص کننده زاویه های 0 تا 360 درجه

از رجیسترهای مهم دیگر آن دو رجیستر Roll و Pitch می باشند که هر کدام زوایای حول محور های طولی و عرضی را با یک بایت حاوی عددی بین -85 تا +85 مشخص می کنند.

به عنوان مثال عدد +23 از رجیستر Pitch نمایانگر زاویه در راستای محور طولی نسبت به خط طولی 0 درجه می باشد.

رجیسترهای حاوی اطلاعات شتاب سنج و مغناطیس سنج، برای هر کدام 6 بایت در نظر گرفته شده که هر دو بایت آن مختص یکی از محورهای سه گانه تعبیه شده، که مجموعا 12 بایت را تشکیل می دهند.

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

برای ورود به هر یک از سه روش ارتباط با ماژول، آرایش سخت افزاری منحصر به فرد توسط CMPS10 پشتیبانی می شود.

در شکل زیر نحوه ارتباط با CMPS10 به هر سه روش مشاهده می شود:

در سیستم تعبیه شده از بخش ارتباط I2C استفاده شده است لذا به شرح آن می پردازیم. بهتر است خواننده با ارتباط به روش I2C آشنایی قبلی داشته باشد. البته ذکر چند نکته ضروریست:

* پایه های SDA و SCL حتما باید از طریق دو عدد مقاومت بالاکش pull-up شوند.

آرایش سخت افزاری پایه های CMP10 برای ارتباط I2C

مقاومت های 4.7K اهم مناسب می باشند. انتخاب مقاومت با توجه به فرکانس کاری باس I2C و با توجه به خازن باس محاسبه می شوند.

*ماژول CMPS10 دارای آدرسی منحصر به فرد بر روی باس I2C است.

*بلافاصله پس از برقراری تغذیه، LED روی ماژول نزدیک به یک ثانیه روشن می ماند و سپس چشمک خواهد زد.

 با توجه به تعداد دفعات چشمک زدن LED و با استفاده از جدول رو به رو که از برگه اطلاعاتی ماژول استخراج شده است؛ آدرس اولیه مربوط به ماژول مشخص شود.

 به عنوان مثال، پس از برقراری تغذیه ماژول و پس از یک ثانیه روشن شدن LED،

اگر LED هیچ چشمکی نزد، آدرس اولیه ماژول به فرمت هگزادسیمال C0 است. این آدرس از آن جهت حائز اهمیت است که برای هر بار خواندن اطلاعات از رجیستر های ماژول، ابتدا باید آدرس ماژول توسط مایکروکنترلر بر روی باس I2C قرار گیرد. بدین ترتیب برای دستگاه موجود بر روی باس(در اینجا ماژول CMPS10) مشخص می شود که مایکروکنترلر، درخواست خواندن و یا نوشتن اطلاعات بر روی کدام دستگاه را دارد.

آدرس های  CMPS10 بر روی باس I2C

لیست رجیستر های ماژول CMPS10 در ارتباط  به روش I2C در جدول زیر آمده است:

Register Function
0Software version
1  Compass Bearing as a byte, i.e. 0-255 for a full circle
2,3  Compass Bearing as a word, i.e. 0-3599 for a full circle, representing 0-359.9 degrees.
Pitch angle – signed byte giving angle in degrees from the horizontal plane
Roll angle – signed byte giving angle in degrees from the horizontal plane
6Unused
7Unused
8Unused
9Unused
10,11 Magnetometer X axis raw output, 16 bit signed integer with register 10 being the upper 8 bits
12,13Magnetometer Y axis raw output, 16 bit signed integer with register 12 being the upper 8 bits
14,15Magnetometer Z axis raw output, 16 bit signed integer with register 14 being the upper 8 bits
16,17Accelerometer  X axis raw output, 16 bit signed integer with register 16 being the upper 8 bits
18,19Accelerometer  Y axis raw output, 16 bit signed integer with register 18 being the upper 8 bits
20,21Accelerometer  Z axis raw output, 16 bit signed integer with register 20 being the upper 8 bits
22Command register

رجیسترهای داخلی  CMPS10 در ارتباط I2C

روش خواندن اطلاعات از رجیستر های CMPS10 در روش I2C به صورت زیر است:

  • تابع شروع ارتباط با I2C را فراخوانی میکنیم.
  • بایتی حاوی آدرس ماژول(0xC0)  را بر روی باس I2C می فرستیم.
  • بایتی حاوی شماره رجیستر مورد نظر را بر روی باس I2C می فرستیم.
  • پس از یک قرارداد در دریافت  Acknowledge، ارتباط را خاتمه می دهیم.     

برای خواندن Bearing در فرمت دو بایتی، طبق جدول بایستی از رجیستر های 2 و 3 آن استفاده کرد. (به طور کلی در رجیستر های دوبایتی مانند Bearing بایت اول، بایت پر ارزش MSB است.) فرم استفاده از تابع به صورت زیر خواهد بود:

در اینجا، نوع تعریف متغیر حتما باید از نوع integer باشدزیرا نیاز به دو بایت می باشد.

  • به منظور درج صحیح مقدار بایت پرارزش در متغیر Bearing، به جای ضرب کردن این بایت در عدد 256، از دستور شیفت استفاده شده است که حجم کد ماشین کمتری را ایجاد می کند.

مثال) فرض کنیم بخواهیم محتویات رجیستر مغناطیس سنج حول محور x را استخراج کنیم؛ طبق جدول 2 می دانیم که این رجیستر به فرمت دوبایتی موجود است، همچنین باید از رجیستر های شماره 10  و 11 استفاده کرد. فرم استفاده از تابع به صورت زیر خواهد بود:

نمونه کد مثال

نحوه کالیبراسیون CMPS10

رجیستر (22)  Command Register برای کالیبراسیون ماژول استفاده می شود.

البته خود ماژول با دقت بالایی کالیبره شده است ولی در صورتی که لزوما قرار باشد ماژول در شرایط میدان مغناطیسی قوی و ثابتی قرار گیرد، نیاز به حذف مقادیر offset ناشی از این میدان را خواهد داشت؛ در این صورت باید موارد زیر را انجام دهید:

  1. لازم است جهت شمال را بدانیم، سپس CMPS10 را با آن هم جهت می کنیم.
  2. برای ورود به مد کالیبراسیون بایتی حاوی 0xF0 را بر روی رجیستر 22 می نویسیم.
  3. برای کالیبره کردن اولین گوشه ماژول، این بار بایتی حاوی 0xF5 را برروی رجیستر فوق می نویسیم( بلافاصله LED روی ماژول روشن می شود).
  4. ماژول را 90 درجه چرخانده و بایت 0xF5 را ارسال می کنیم.
  5. مرحله 4 را دو دفعه دیگر انجام می دهیم. تا هر چهار گوشه ماژول کالیبره شود.

پس از انجام موارد پنج گانه بالا LED ماژول، به نشانه تایید عملیات به حالت خاموش بازمیگردد.

البته توصیه می شود هنگام کالیبراسیون، ترجیحا ماژول در برابر میدان های مغناطیسی قرار نگیرد.

زیرا خطای حاصله باعث ایجاد اشتباه در فرآیند کالیبراسیون ماژول می گردد و نباید انتظار کارکرد صحیح از آن را داشت.

باز گردانی CMPS10 به تنظیمات کارخانه و نحوه تغییر آدرس

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

  1. بایتی حاوی 0x20 را بر روی رجیستر 22  ارسال کرده و سپس 100ms صبر کنید.
  2. بایتی حاوی 0x2A را بر روی رجیستر 22  ارسال کرده و سپس 100ms صبر کنید.
  3. بایتی حاوی 0x60 را بر روی رجیستر 22  ارسال کرده و سپس 100ms صبر کنید.

در صورتی که نیاز به تغییر آدرس ماژول بر روی باس I2C را داشتید، ابتدا دقت کنید که تنها یک ماژول بر روی باس قرار داشته باشد. همچنین باید ترتیب ارسال بایت ها دقیقا رعایت شود.

همچنین برای نوشتن هر بایت بر روی رجیستر Command(22) حتما دقت شود که ابتدای ارتباط I2C بایستی به ترتیب آدرس ماژول روی باس I2C فرستاده شود سپس شماره رجیستر و نهایتا محتوای رجیستر فرستاده شود.

نتیجه گیری از استفاده CMPS10

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

از CMPS10 می توان در پیاده سازی پروژه هایی نظیر قطب نمای دیجیتال، کنترل موقعیت Quad copter ها و Quad rotor ها، کنترل  موقعیت ربات، سیستم های ناوبری، تراز دیجیتالی با دقت بالا، قبله نمای دیجیتال، لرزه نگار زلزله و … استفاده کرد. قیمت این ماژول با توجه به امکاناتی که در اختیار کاربر می گذارد، مقرون به صرفه است. همچنین توصیه می شود پس از مطالعه ارتباط به روش I2C، به خود برگه اطلاعاتی CMPS10 نیز مراجعه شود، زیرا اکنون پیش زمینه لازم را کسب کرده اید و می توانید از دو روش دیگر نیز برای ارتباط با ماژول بهره ببرید. همچنین سعی شود تنها به مطالعه منابع فارسی اکتفا نکرده و حتما به برگه های اطلاعاتی CMPS10 و ماژول های قطب نمای هم خانواده نیز مراجعه کنید و از آن ها در پروژه های خود استفاده کنید.

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

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

جستجو در سایت

دسته بندی ها

سبد خرید

درحال بارگذاری ...
مشتریان گرامی، سایت در حال بروزرسانی می باشد و امکان خرید تا چند روز آینده میسر نیست. از صبر و شکیبایی شما سپاسگزاریم.
ارسال تیکت
مقایسه محصولات
لیست مقایسه محصولات شما خالی می باشد!