ماژول MPU6050

راه اندازی ماژول MPU6050 با آردوینو- بخش اول

مقدمه

در این جلسه قصد داریم در مورد راه اندازی MPU6050 با برد آردوینو صحبت کنیم. پیشنهاد می شود برای فهم بهتر این مطلب، ابتدا دو جلسه ی زیر را که در مورد سنسورهای ژیروسکوپ و شتاب سنج،صحبت شده است، مطالعه کنید. چون در این جلسه از اصطلاحاتی استفاده می شود که ما قبلا آن را در جلسات زیر معرفی کرده ایم:

مشخصات سنسورهای MPU6050

مشخصات سنسور ژیروسکوپ:

  • یک ژیروسکوپ سه محوره با قابلیت تنظیم رنج اندازه گیری 250 یا 500 یا 1000 یا 2000 درجه بر ثانیه.
  • جریان مصرفی در حالت کاری: 3.6 میلی آمپر
  • جریان مصرفی در حالت StandBy برابر 5 میکروآمپر است.
  • دارای سه ADC داخلی که داده های آنالوگ ژیروسکوپ را به دیجیتال تبدیل میکند. 

 

 مشخصات سنسور شتاب سنج:

  • شتاب سنج سه محوره با قابلیت رنج اندازه گیری 2g یا 4g یا 8g یا 16g 
  • جریان در حالت کاری: 500 میکروآمپر
  • قابلیت تشخیص تک ضربه ( Tap detection )
  • دارای سه ADC داخلی که داده های آنالوگ شتاب سنج را به دیجیتال تبدیل میکند. 

تذکر: این سنسور برای شتاب سنج و ژیروسکوپ خود در مجموع 6 عدد ADC دارد. دقت این ADC ها ، 16 بیتی می باشد. البته علاوه بر این 6 عدد ADC ، این سنسور یک ADC دیگر نیز برای سنسور دمای خود دارد. بنابراین در مجموع میتوان گفت که این سنسور دارای 7 عدد ADC می باشد. نمایی از این ADC ها در شکل زیر آورده شده است:

ADC های موجود در سنسور MPU6050

 کاربردهای این سنسور:

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

 مشخصات کل سنسور: 

  • رنج ولتاژ اعمالی از 2.375 تا 3.46 ولت
  • دارای سنسور دمای داخلی با قابلیت خروجی دیجیتال که از 40- تا 85+ درجه را میتواند اندازه گیری کند. 
  • وجود یک پردازنده داخلی ( DMP ) که از بار پردازنده میزبان ( مثل آردوینو ) کم میکند. 
  • قابلیت ارتباط با میکروکنترلر از طریق پروتکل I2C
  • جریان مصرفی 3.9 میلی آمپر، وقتی که سه محور شتاب سنج و سه محور ژیروسکوپ و پردازنده DMP فعال هستند. 
  • استفاده از وقفه خارجی برای مواردی مانند تشخیص حرکت، تشخیص ضربه و …
  • دارای یک باس I2C کمکی برای ارتباط با سنسورهای خارجی ( مثل قطب نما )

نگاهی دقیق تر بر MPU6050

تذکر: خود MPU6050 صرفا یک سنسور است که از بخش هایی مانند DMP ، ژیروسکوپ ، شتاب سنج و … تشکیل شده است. گاهی اوقات این سنسور بر روی بردهایی مشاهده می شود که کار با آن را راحتتر می کنند. برد GY-521 ( که گاهی ماژول GY-521 ) هم شناخته می شود نمونه ای از این گونه بردها است. در شکل زیر این ماژول و سنسور MPU6050 موجود بر روی آن را مشاهده میکنید:

سنسور MPU6050 و ماژول GY-521

به طور کلی می توان گفت این سنسور (سنسور MPU605 ) از 4 بخش اساسی تشکیل شده است. ابتدا شکل زیر را ببینید تا در مورد هر کدام از این بخش ها توضیحات لازم را ارایه دهیم:

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

بخش DMP : در سنسور MPU605 یک پردازنده داخلی وجود دارد که با نام DMP شناخته می شود. مهمترین علت حضور این پردازنده، انجام پردازش های مربوط به ترکیب اطلاعات سنسورها (  Sensor Fusion ) می باشد.  منظور از Sensor Fusion این است که به عنوان مثال، داده های ژیروسکوپ و شتاب سنج با یکدیگر ترکیب شوند و یک خروجی پایدار و خوب را به ما تحویل میدهند. مهمترین علت حضور سنسور، این موضوع می باشد. همانطور که قابل حدس است، حضور این پردازشگر، از بار پردازشی، پردازنده اصلی (مثلا پردازنده موجود بر روی برد آردوینو ) می کاهد. ضمن این که استفاده از این پردازنده، میتوان کارها را موازی پیش برد. 

بخش Gyro : این بخش، همان سنسور ژیروسکوپ است که در درون MPU605 قرار گرفته است.

بخش Accel : این قسمت نیز همان شتاب سنج داخلی سنسور MPU6050 است. 

بخش FIFO : سنسور MPU6050 دارای یک بافر به اندازه 1024 بایت است که این بافر از طریق پروتکل I2C در دسترس می باشد. در این بافر میتوان اطلاعات مربوط به ژیروسکوپ، شتاب سنج، سنسور کمکی و … را قرار داد. 

توضیحاتی در مورد ماژول GY-521

بر روی این ماژول دو مقاومت Pull-up با مقدار 2.2 کیلو اهم  تعبیه شده است. به همین دلیل، هنگام برقراری ارتباط با آن از طریق پروتکل I2C نیازی به قرار دادن مقاومت نیست. علاوه بر آن، بر روی این برد یک رگولاتور نیز تعبیه شده است که با حضور این رگولاتور میتوان، ولتاژ 5 ولت را به ماژول اعمال کرد. مقاومت های Pull-up و رگولاتور را در تصویر زیر مشاهده می کنید:

مقاومت پول آپ و رگولاتور موجود بر روی GY-521

 پایه های ماژول: 

در جدول زیر، نام و وظیفه ی هر کدام از پایه های ماژول آورده شده است:

 

پایه های ماژول GY-521

شاید لازم باشد که در مورد پایه های XDA و XCL کمی بیشتر توضیح دهیم. 

این پایه برای اتصال سنسورهای دیگر می باشد. مثلا میتوان یک سنسور قطب نما با استفاده از پروتکل I2C به این ماژول متصل کرد و داده های آن را با استفاده از DMP پردازش کرد. البته میتوان هر سنسوری که از پروتکل I2C پشتیبانی می کند را به این ماژول وصل کند و مثال قطب نما صرفا یک مثال ساده است. شکل زیر گویای همه چیز است:

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

در مورد پایه AD0 هم این نکته را اضافه میکنیم که این پایه، بیت شماره هفتم آدرس ماژول است. اگر این پایه به زمین متصل شود، مقدار آدرس برابر با 1101000 یعنی 0x68 می شود و اگر این پایه به 1 منطقی وصل شود، مقدار آدرس ماژول برابر 1101001 یا 0x69 می شود. 

اتصال به آردوینو:

قطعات مورد نیاز:

  • برد آردوینو
  • ماژول MPU6050
  • تعدادی سیم جامپر

 

 اتصال ماژول MPU650 به برد آردوینو:

در شکل  زیر اتصال این ماژول به برد آردوینو آورده شده است:

اتصال MPU6050 به آردوینو

در صورتی هم که از بردی، به جز برد آردوینو استفاده میکنید، شماره پایه های مربوط به پروتکل I2C در آن آورده شده است:

پایه های I2C دربردهای آردوینو

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