شروع کار با آردوینو و ماژول MPU6050

شروع کار با آردوینو و ماژول MPU6050

شروع کار با آردوینو و ماژول MPU6050  :

شروع کار با آردوینو و ماژول MPU6050 (قسمت اول)
شروع کار با آردوینو و ماژول MPU6050

 

در این پروژه، به شما نشان می‌دهیم که سنسور MPU6050 چگونه کار می‌کند و هم‌چنین چگونه با آردوینو ادغام می‌شود. در این آموزش ماژول MPU6050 را به برد آردوینو UNO متصل کرده و مقادیر شتاب سنج و ژیروسکوپ را دریافت می‌کنیم.

قبل از اینکه به سراغ پروژه برویم، شما نیاز دارید اطلاعات‌پایه‌ای درباره سنسور MPU6050 را بدانید. MPU6050 یک سنسور IMU است که یک شتاب سنج MEMS و ژیروسکوپ MEMS روی تنها یک چیپ را شامل می‌شود.

در اینجا، سنسور IMU برای واحد اندازه‌گیری داخلی است، سنسور IMU یک وسیله‌ای است که با استفاده از شتاب سنج، نیروی خاصی را اندازه می‌گیرد، همچنین، با استفاده از ژیروسکوپ نرخ زاویه‌ای و با استفاده از مگنتومتر میدان مغناطیسی را اندازه‌گیری می‌کند.

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

دو نوع از رایج‌ترین IMU ها، شتاب سنج ADXL 335 و MPU6050 هستند. ADXL 335 شامل یک شتاب سنج سه محوری است.

MPU6050، یک دستگاه ردیابی حرکت شش محوری می‌باشد که ترکیبی از یک شتاب سنج سه محوری و یک ژیروسکوپ سه محوری بر روی یک چیپ است. در ادامه به جزئیات MPU6050 می‌پردازیم.

 

شروع کار با آردوینو و ماژول MPU6050 (قسمت اول)
شروع کار با آردوینو و ماژول MPU6050 / فرگل سی ان سی
مقدمه‌ای بر سنسور MPU6050

MPU6050 یک دستگاه ردیابی حرکت شش محوری است که توسط Inven Sense طراحی‌شده است. ویژگی‌های اصلی دستگاه MPU6050 در ادامه آورده شده است:

شتاب سنج سه محوری

ژیروسکوپ سه محوری

سنسور دمای دیجیتال

شش ADC 16 بیتی (سه تا برای شتاب سنج و سه تا برای ژیروسکوپ)

پردازشگر حرکتی دیجیتال ترکیبی (DMP)

بافر ۱۰۲۴B FIFO

سنسور MPU-6050 شش محوری گاهی به‌عنوان دستگاه ۶DoF (شش درجه آزادی) شناخته می‌شود چراکه که این دستگاه شش مقدار خروجی را فراهم می‌کند. (سه تا از طریق شتاب سنج و سه تا از طریق ژیروسکوپ). MPU-6050 می‌تواند با استفاده از پروتکل ۱۲C ارتباط برقرار کند. برای اطلاعات بیشتر درباره این نوع از ارتباط به آموزش ” آشنایی با پروتکل های ارتباطی:  (I2C) ” و ” ارتباط I2C بین بردهای آردوینو ” مراجعه کنید.

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

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

همان‌طور که قبلاً اشاره شد، MPU6050 تنها ارتباطات ۱۲C را پشتیبانی می‌کند، ازاین‌رو باید فقط به پین‌های ۱۲C آردوینو متصل شود. پین‌های ۱۲C آردوینو با پین‌های ورودی A4 و A5 شناخته می‌شوند یعنی، A4، SDA و A5، SCL است.

شروع کار با آردوینو و ماژول MPU6050 (قسمت اول)

به MPU6050 بازگردیم، ما در این آموزش از یک برد متداول معمولی که هشت پین را فراهم می‌کند (ماژول GY-521 MPU-6050)، استفاده می‌کنیم. شکل بالا شماتیکی از برد متداول MPU6050 را نمایش می‌دهد.

در این سنسور، ما از پین‌های SCL, SDA و INT برای اتصال به آردوینو استفاده می‌کنیم.

قطعات موردنیاز
سخت‌افزار
برد آردوینو و کابل رابط ۱ عدد
ماژول GY-521 MPU-6050 ۱ عدد
سیم اتصال به بردبورد ۱ عدد

 

نرم‌افزار

آردوینو IDE

پردازشگر IDE (برای نمایش سه‌بعدی)

دیاگرام مداری

تصویری که در ادامه آمده است دیاگرام مداری را برای اتصال MPU6050 به آردوینو UNO نشان می‌دهد. همان‌طور که قبلاً اشاره شد، اتصال بین MPU6050 و آردوینو باید با استفاده از پروتکل ۱۲C انجام شود.

بنابراین، پین SCL آردوینو (A5) به پین SCL مربوط به MPU6050 متصل می‌شود. به‌طور مشابه، پین SDA آردوینو (A4) به پین SDA روی برد MPU6050 وصل می‌شود.

علاوه بر این، ما از ویژگی‌های وقفه (Interrupt) MPU6050 برای آشکار کردن (و یا قطع کردن) آردوینو زمانی که بافر FIFO 1024 بیتی پر است، استفاده می‌کنیم. بنابراین، پین INT مربوط به MPU6050 را به پین وقفه خارجی ۰ آردوینو UNO یعنی پین ۲ متصل می‌کنیم.

توجه: در ارتباطات ۱۲C، MPU6050 همیشه به‌عنوان رهرو (slave) عمل می‌کند.

 

شروع کار با آردوینو و ماژول MPU6050 (قسمت اول)
خواندن مقادیر خام از MPU6050

قبل از آپلود برنامه واقعی، ما می‌خواهیم یک برنامه ساده برای خواندن مقادیر خام از شتاب سنج، ژیروسکوپ و سنسور دما را ببینیم. سیم‌های SCL و SDA مربوط به MPU6050 را به پین‌های ۱۲C مشابه در آردوینو به‌آسانی متصل کرده و کدی که در ادامه آمده است را آپلود می‌کنیم.

#include<Wire.h>

const int MPU6050_addr=0x68;

int16_t AccX,AccY,AccZ,Temp,GyroX,GyroY,GyroZ;

void setup(){

Wire.begin();

Wire.beginTransmission(MPU6050_addr);

Wire.write(0x6B);

Wire.write(0);

Wire.endTransmission(true);

Serial.begin(9600);

}

void loop(){

Wire.beginTransmission(MPU6050_addr);

Wire.write(0x3B);

Wire.endTransmission(false);

Wire.requestFrom(MPU6050_addr,14,true);

AccX=Wire.read()<<8|Wire.read();

AccY=Wire.read()<<8|Wire.read();

AccZ=Wire.read()<<8|Wire.read();

Temp=Wire.read()<<8|Wire.read();

GyroX=Wire.read()<<8|Wire.read();

GyroY=Wire.read()<<8|Wire.read();

GyroZ=Wire.read()<<8|Wire.read();

Serial.print(“AccX = “); Serial.print(AccX);

Serial.print(” || AccY = “); Serial.print(AccY);

Serial.print(” || AccZ = “); Serial.print(AccZ);

Serial.print(” || Temp = “); Serial.print(Temp/340.00+36.53);

Serial.print(” || GyroX = “); Serial.print(GyroX);

Serial.print(” || GyroY = “); Serial.print(GyroY);

Serial.print(” || GyroZ = “); Serial.println(GyroZ);

delay(100);

}

 

اگر شما ترمینال سریال آردوینو را بازکنید، مقادیر خام را از شتاب سنج، ژیروسکوپ و دمای کالیبره شده را از سنسور دما دریافت خواهید کرد. داده‌ها، چیزی شبیه به زیر هستند:

شروع کار با آردوینو و ماژول MPU6050 (قسمت اول)

 

همان‌طور که شما مشاهده می‌کنید، خواندن مقادیر خام از سنسور MPU6050 آسان است، اما ما نیاز داریم که محاسبات اضافی را روی این داده‌ها انجام دهیم تا YAW، Pitch و Roll را به دست آوریم.

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

بااین‌حال هیچ‌گونه داکیومنت و برگه مشخصات مشخصی درباره DMP از طرف Inven Sense وجود ندارد و درنتیجه، ما انجام محاسبات سریع و مستقیماً روی دادهای سنسورها و روی این چیپ را از دست می‌دهیم.

Jeff Rowberg و دیگران کارهای بسیار خوبی در مهندسی معکوس روی اطلاعات مربوط به DMP با استفاده از آنالیز سیگنال‌های ۱۲C انجام داده‌اند.

در قسمت دوم این آموزش و در آموزش ” شروع کار با آردوینو و ماژول MPU6050 (قسمت دوم) ” با نحوه برنامه‌نویسی برای به دست آوردن مقادیر یاو، پیچ و رول و همچنین مدل‌سازی سه‌بعدی در پردازش پایه‌ای روی مقادیر ناشی از اتصال آردوینو و MPU6050 آشنا می‌شویم.

 

شروع کار با آردوینو و ماژول MPU6050

شروع کار با آردوینو و ماژول MPU6050

شروع کار با آردوینو و ماژول MPU6050

 

ارسال دیدگاه

enemad-logo