پروژه آردوینو, آردوینو, پروژه, توصیه شده

پروژه راه اندازی سنسور ژیروسکوپ MPU6050 با آردوینو

پروژه راه اندازی سنسور ژیروسکوپ MPU6050 با آردوینو

سنسور MPU6050 عملکردهای زیادی روی یک تراشه دارد و شامل شتاب‌سنج ممز، ژیروسکوپ ممز و سنسور دماست. این ماژول هنگام تبدیل مقادیر آنالوگ به دیجیتال بسیار دقیق است؛ زیرا برای هر کانال یک سخت‌افزار مبدل آنالوگ به دیجیتال ۱۶بیتی دارد. این ماژول قادر است کانال x و y و z را به‌طور هم‌زمان ضبط کند و دارای یک رابط I2C برای برقراری ارتباط با کنترلر میزبان است. ماژول MPU6050 یک تراشه فشرده است که هم شتاب‌سنج و هم ژیروسکوپ دارد و یک دستگاه بسیار مفید برای پهپادها، ربات‌ها و سنسورهای حرکتی محسوب می‌شود. به این ماژول، ژیروسکوپ یا شتاب‌سنج سه‌محوره نیز می‌گویند. در ادامه، با اتصال ژیروسکوپ MPU6050 به آردوینو، مقادیر را روی ال‌سی‌دی 16×2 نشان خواهیم داد.

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

  1. آردوینو اونو (Arduino Uno)
  2. MPU-6050
  3. پتانسیومتر 10K
  4. سیم جامپر
  5. بِرِد بورد
  6. کابل USB
  7. منبع تغذیه

سنسور ژیروسکوپ MPU6050

MPU-6050 یک شتاب‌سنج و ژیروسکوپ شش‌محوره ۸ پین در یک تراشه است. این ماژول به‌صورت پیش‌فرض روی ارتباط سریال I2C کار می‌کند اما می‌توان با پیکربندی، آن را برای رابط SPI تنظیم کرد. برای ارتباط I2C، ماژول دارای خطوط SDA و SCL است. تقریباً همه پین‌ها چندمنظوره هستند، اما در اینجا فقط با پین‌های مد I2C پیش می‌رویم.

سنسور ژیروسکوپ MPU6050

پیکربندی پین‌ها

VCC: این پین برای تغذیه ماژول MPU6050 نسبت به زمین استفاده می‌شود.

GND: این پین، پین زمین است.

SDA: پین SDA برای داده‌های بین کنترلر و ماژول MPU6050 مورد استفاده قرار می‌گیرد.

SCL: این پین برای ورودی ساعت به‌کار می‌رود.

XDA: خط داده‌های I2C SDA سنسور برای پیکربندی و خواندن از طریق سنسورهای خارجی است (اختیاری؛ در اینجا استفاده نمی‌شود).

XCL: خط ساعت I2C SCL سنسور برای پیکربندی و خواندن از طریق سنسورهای خارجی است (اختیاری؛ در اینجا استفاده نمی‌شود).

ADO: شامل I2C Slave Address LSB (در اینجا قابل اجرا نیست).

INT: پین وقفه برای اعلام آماده بودن داده‌ها.

در اینجا با استفاده از MPU6050 متصل به آردوینو، دما،داده های سنسور ژیروسکوپ و شتاب‌سنج را روی LCD نشان می‌دهیم. این ماژول، مقادیر سطری و مقادیر نرمال‌شده را در خروجی به ما می‌دهد، اما مقادیر سطری پایدار نیستند؛ بنابراین در اینجا مقادیر نرمال‌شده را روی LCD نشان می‌دهیم. اگر فقط مقدار شتاب‌سنج را می‌خواهید، می‌توانید از شتاب‌سنج ADXL335 با آردوینو نیز استفاده کنید.

همان‌طور که در تصاویر زیر نشان داده شده است، در این پروژه، نخست مقدار دما، پس از ۱۰ ثانیه مقادیر ژیروسکوپ و ۱۰ ثانیه بعد نیز داده های سنسور شتاب‌سنج را نمایش می‌دهیم.

مانیتورینگ سنسور MPU6050 روی LCD

نمایش داده های سنسور شتاب‌سنج در تصویر زیر نشان داده شده است.

نمایش داده های سنسور شتاب سنج MPU6050 زوی LCD

مدار سنسور ژیروسکوپ MPU6050

نمودار مدار اتصال MPU6050 به آردوینو بسیار ساده است. ما در اینجا از یک LCD و MPU6050 و منبع تغذیه USB لپ‌تاپ استفاده کرده‌ایم. یک پتانسیومتر 10k نیز برای کنترل روشنایی LCD استفاده می‌شود. در ماژول MPU6050، پنج اتصال صورت گرفته است: منبع تغذیه 3.3v و پین زمین MPU6050 به پین 3.3v و پین زمین آردوینو، پین‌های SCL و SDA ماژول MPU6050 به پین A4 و A5 آردوینو و پین INT ماژول به پین وقفه 0 آردوینو (D2) متصل شده است. پین RS، RW و EN ال‌سی‌دی مستقیماً به پین 8، gnd و 9 آردوینو و پین داده‌ها نیز مستقیماً به پین دیجیتال شماره 10، 11، 12 و 13 متصل هستند.

مدار سنسور ژیروسکوپ MPU6050

کدنویسی سنسور ژیروسکوپ MPU6050 در آردوینو

برنامه‌نویسی برای این پروژه آسان است. در اینجا برای ارتباط با آردوینو، از کتابخانه MPU6050 استفاده می‌کنیم. بنابراین، ابتدا باید کتابخانه MPU6050 را از لینک زیر دانلود کرده و آن را در IDE Arduino نصب کنیم.

https://www.arduino.cc/reference/en/libraries/mpu6050/

پس از آن، می‌توان کدهای نمونه را در این مثال پیدا کرد. ممکن است کاربر آن کد را با آپلود مستقیم در آردوینو تست کند و بتواند مقادیر را روی نمایشگر سریال ببیند یا از کدی که در انتهای مطلب آورده شده است، برای نمایش مقادیر روی LCD و نمایشگر سریال استفاده کند.

در برنامه‌نویسی، برخی از کتابخانه‌های موردنیاز مانند MPU6050 و LCD را قرار داده‌ایم.

در تابع setup، به هر دو دستگاه مقدار اولیه می‌دهیم و پیام خوشامدگویی را روی LCD می‌نویسیم.

در تابع loop، هر ۱۰ ثانیه سه تابع را برای نمایش دما، ژیروسکوپ و قرائت شتاب‌سنج روی LCD فرامی‌خوانیم.

سه تابع مذکور، tempShow ،gyroShow و accelShow هستند که می‌توانید در کد کامل آردوینو زیر، آن‌ها را بررسی کنید.

شتاب‌سنج و ژیروسکوپ MPU6050 هر دو برای تشخیص موقعیت و جهت هر دستگاهی به‌کار می‌روند. ژیروسکوپ از گرانش زمین برای تعیین موقعیت‌های محور x، y و z استفاده می‌کند و شتاب‌سنج نیز براساس نرخ تغییر حرکت، موقعیت را تشخیص می‌دهد.

انتشار مطالب با ذکر نام و آدرس وب سایت سیسوگ، بلامانع است.

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

3 دیدگاه در “پروژه راه اندازی سنسور ژیروسکوپ MPU6050 با آردوینو

  1. Avatar for فرزاد فرزاد گفت:

    با عرض سلام و ارادت
    سنسور های IMU بیشتر در محاسبه زوایای اویلر کاربرد دارن که از طریق اون میشه یه سیستم ناوبری رو راه اندازی کرد. گرفتن اطلاعات خام سنسور یا حتی محاسبه زوایای اویلر با این سنسور ها به راحتی قابل انجامه ولی چیزی که مهمه و به راحتی هم قابل انجام نیست کاهش نویز و رانش دیتای خروجیه که لازمش ترکیب اطلاعات سنسور توسط فیلتر های مختلف مثل فیلتر کالمن، فیلتر مکمل یا فیلتر ماهونی هست. بدون ترکیب داده ها عملا استفاده چندانی از این سنسور ها نمیشه کرد علی الخصوص در مورد پروژه های ساخت پهپاد چون سیگنال سنسور به شدت نویز پذیره.
    اگر امکانش هست لطفا یه مقاله تخصصی تر در این مورد (Data fusion) معرفی بفرمایید.
    متشکرم

    1. Avatar for دایدالوس دایدالوس گفت:

      درود بر شما .
      در پاسخ باید عرض کنم در سیستم های ناوبری هوایی عموما از سینکرو وامثالهم به عنوان حسگر و نمایشگر استفاده میشود. اگر عمری باقی بماند، توضیحاتی در خصوص این سیستم ها خواهیم داد.
      IMU ها برای هدایت اینرسیایی یا ناوبری کور کاربرد دارد و برای محاسبه موقعیت مکانی و هندسی با توجه به زوایا و نیرو هاست .
      از این سخت افزار ها الزاما در ناوبری پرنده ها و خزنده های کوچولو موچولو استفاده نمی‌شود…. در بازو های روباتیک هم برای بهبود کنترل حرکت و مسایل دیگر کاربرد دارند.

      1. Avatar for فرزاد فرزاد گفت:

        سلام
        ممنون از پاسخ شما.
        در مورد ناوبری کوادکاپتر اگر اطلاعاتی دارید یا منابعی رو میشناسید ممنون میشم راهنمایی بفرمایید. من درگیر یه پروژه فلایت کنترل برای کواد های کمتر از 100 گرم هستم و تو بحث تعادل پرواز مشکل جدی دارم. اول از همین MPU6050 استفاده میکردم که دیدم زیاد جالب نیست رفتم سراغ BMI270 ولی بازم اون چیزی که میخوام درنمیاد و کواد به سرعت از تعادل خارج میشه. تا جایی که میدونم نمونه های تجاری فلایت کنترل هم از همین BMI270 دارن استفاده میکنن منتهی احتمالا از فیلترینگ خیلی بهتری استفاده میکنن. به هر حال اگر دیتایی در این زمینه دارید بسیار لطف میکنید اگر به اشتراک بذارید.
        با سپاس

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

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