نحوه استفاده از ماجیول شتاب‌سنج و ژیروسکوپ MPU-6050

نحوه استفاده از ماجیول شتاب‌سنج و ژیروسکوپ MPU-6050

MPU-6050 یک حساس(حس کننده) چندمنظوره است که یک شتاب‌سنج 3-محوره و یک ژیروسکوپ 3-محوره را در یک بسته ترکیب می‌کند. در این آموزش، نحوهٔ اتصال این ماجیول به آردوینو برای اندازه‌گیری شتاب و سرعت زاویه‌ای را بررسی خواهیم کرد. حاصل یک برنامهٔ ساده خواهد بود که داده‌های زمان واقعی حساس(حس کننده) را نمایش می‌دهد و به شما امکان می‌دهد هم شتاب و هم جهت‌گیری دستگاه‌تان را پایش کنید.

با پیروی از این راهنما، یاد خواهید گرفت چگونه سخت‌افزار را راه‌اندازی کنید، قطعات را به‌درستی سیم‌کشی کنید و شِفر (کود) لازم را بنویسید تا MPU-6050 را به کار بیندازید. این به شما پایه‌ای برای پروژه‌های بعدی مرتبط با حس حرکت و تشخیص جهت می‌دهد. برای روشن‌تر شدن مطلب، حتماً ویدیوی همراه این آموزش را (در ویدیو در 00:00) بررسی کنید.

توضیح سخت‌افزار

جزء اصلی این پروژه حساس(حس کننده) MPU-6050 است که هر دو دادهٔ شتاب‌سنج و ژیروسکوپ را فراهم می‌کند. شتاب‌سنج شتاب خطی را در امتداد محورهای X، Y و Z اندازه‌گیری می‌کند، در حالی که ژیروسکوپ نرخ‌های چرخشی حول همان محورها را اندازه‌گیری می‌کند. این ترکیب MPU-6050 را به انتخابی عالی برای کاربردهایی تبدیل می‌کند که نیاز به ردیابی حرکت دارند.

علاوه بر این، ماجیول از رابط I2C برای ارتباط استفاده می‌کند که اتصالات را ساده می‌سازد و اجازه می‌دهد چندین دستگاه روی همان باس متصل شوند. حساس(حس کننده) از طریق پایه VCC تغذیه می‌شود که معمولاً به ولتاژی بین 3.3V و 5V نیاز دارد. زمین به زمین مشترک آردوینو متصل است.

جزئیات دیتاشیت

تولیدکنندهاینون‌سنس
شماره قطعهMPU-6050
ولتاژ منطق/ورودی‌خروجی3.3 - 5 ولت
ولتاژ تغذیه3.3 تا 5 V
جریان خروجی (برای هر کانال)...
جریان پیک (در هر کانال)...
راهنمای فرکانس PWM...
آستانه‌های منطقی ورودی...
افت ولتاژ روی مقاومت RDS (در حالت روشن)/ اشباع...
محدودیت‌های حرارتی...
بستهبستهٔ تخت چهارگوش بدون پایه (QFN)
توضیحات / انواع...

  • پایه VCC را به 3.3V یا 5V وصل کنید.
  • پایه GND را به زمین وصل کنید.
  • برای ارتباط I2C از خطوط SDA (داده) و SCL (ساعت) استفاده کنید.
  • اطمینان حاصل کنید که مقاومت‌های پول‌آپ روی خطوط SDA و SCL وجود داشته باشند.
  • برای جلوگیری از آسیب دیدن حساس(حس کننده)، سطوح ولتاژ مناسب را بررسی کنید.

دستورالعمل‌های سیم‌کشی

arduino_wiring_MPU-6050

برای سیم‌کشی MPU-6050 به آردوینو، ابتدا پایه VCC ماجیول را به پایه 5V روی آردوینو متصل کنید. سپس پایه GND ماجیول را به یکی از پایه‌های GND آردوینو وصل کنید. برای ارتباط I2C، پایه SDA ماجیول را به پایه A4 آردوینو و پایه SCL را به پایه A5 متصل کنید. اطمینان حاصل کنید که آردوینو برای استفاده از ارتباط I2C تنظیم شده است و کتابخانه‌های مناسب را در شِفر (کود) خود وارد کرده‌اید.

قبل از روشن کردن سیستم، اتصالات خود را دوباره بررسی کنید. اگر از بردبورد استفاده می‌کنید، مطمئن شوید که اتصالات محکم هستند و اتصال کوتاه وجود ندارد. اگر ماجیول طبق انتظار پاسخ نداد، سیم‌کشی را بررسی کرده و آدرس I2C ماجیول MPU-6050 را در شِفر (کود) خود کنترل کنید.

مثال‌های شِفر (کود) و راهنمای گام‌به‌گام

قطعه‌شِفر (کود) زیر MPU-6050 را مقداردهی اولیه می‌کند و خواندن داده‌ها از آن را آغاز می‌کند. شناسه‌های کلیدی عبارتند ازmpu6050، که نمونه‌ای از کلاس MPU6050 است، وtimer، که برای کنترل زمان‌بندی خروجی داده‌ها استفاده می‌شود.

MPU6050 mpu6050(Wire);
long timer = 0;

void setup() {
  Serial.begin(9600);
  Wire.begin();
  mpu6050.begin();
  mpu6050.calcGyroOffsets(true);
}

در این تابع راه‌اندازی، ارتباط سریال و حساس(حس کننده) MPU-6050 را مقداردهی اولیه می‌کنیم. اینmpu6050.calcGyroOffsets(true)این فراخوانی حیاتی است، زیرا آفست‌های ژیروسکوپ را کالیبره کرده و خوانش‌های دقیق را تضمین می‌کند.

در تابع loop ما به‌طور مداوم داده‌های حساس(حس کننده) را به‌روزرسانی کرده و آن‌ها را در نمایشگر مسلسل چاپ می‌کنیم. قطعه شِفر (کود) زیر نشان می‌دهد چگونه داده‌های دما و شتاب را بخوانیم و چاپ کنیم:

if(millis() - timer > 1000){
  Serial.print("temp : ");Serial.println(mpu6050.getTemp());
  Serial.print("accX : ");Serial.print(mpu6050.getAccX());
  Serial.print("\taccY : ");Serial.print(mpu6050.getAccY());
  Serial.print("\taccZ : ");Serial.println(mpu6050.getAccZ());
}

این بلوک بررسی می‌کند که آیا یک ثانیه از آخرین خروجی گذشته است. سپس مقادیر دما و شتاب را از MPU-6050 می‌خواند و آنها را در نمایشگر مسلسل چاپ می‌کند. می‌توانید مشاهده کنید که این مقادیر به‌صورت بلادرنگ به‌روزرسانی می‌شوند.

نمایش / آنچه باید انتظار داشته باشید

وقتی همه چیز سیم‌کشی شد و شِفر (کود) آپلود شد، می‌توانید انتظار داشته باشید که داده‌های دما و شتاب هر ثانیه در نمایشگر مسلسل چاپ شوند. اگر MPU-6050 را کج کنید یا حرکت دهید، مقادیر شتاب باید به‌تناسب تغییر کنند. توجه داشته باشید که سیم‌کشی نادرست یا منبع تغذیه ناکافی می‌تواند به خوانش‌های ناپایدار یا عدم دریافت هیچ داده‌ای منجر شود (در ویدئو در 01:30).

تصاویر

arduino_wiring_MPU-6050
arduino_wiring_MPU-6050
MPU-6050-module-1
MPU-6050-module-1
MPU-6050-module-2
MPU-6050-module-2
MPU-6050-module-schematic
MPU-6050-module-schematic
MPU-6050-module-1
MPU-6050-module-1
116-Arduino code for the MPU-6050 accelerometer and gyroscope sensor (all data)
زبان: C++
117-Arduino code for an MPU-6050 accelerometer and gyroscope sensor (just angle)
زبان: C++
کپی شد!

مواردی که ممکن است به آن‌ها نیاز داشته باشید

منابع و مراجع

فایل‌ها📁

کتابخانه‌های آردوینو (zip)