NOTICE توجه: این یک موضوع قدیمی است که آخرین پست ارسالی آن مربوط به 2818 روز قبل است . لطفا فقط پاسخ ها ، سوالات و درخواست های 100 درصد مرتبط را به آن ارسال کنید و برای درخواست ها و سوالات جدید موضوع جدیدی را ایجاد کنید
نمایش نتایج: از 1 به 12 از 12

موضوع: ساخت یک imu شش محوره با سنسور mpu6050

  1. #1
    کاربر دائمی
    تاریخ عضویت
    Jun 2009
    نام
    روح الله خرم بخت
    نوشته ها
    403
    تشکر
    456
    تشکر شده 591 بار در 214 پست

    New ساخت یک imu شش محوره با سنسور mpu6050

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

  2. کاربران : 11 تشکر کرده اند از شما roohlla برای ارسال این پست سودمند:


  3. # ADS
    Circuit advertisement
    تاریخ عضویت
    Always
    نام
    Advertising world
    نوشته ها
    Many
     

  4. #2
    کاربر دائمی
    تاریخ عضویت
    Jun 2009
    نام
    روح الله خرم بخت
    نوشته ها
    403
    تشکر
    456
    تشکر شده 591 بار در 214 پست

    پیش فرض

    IMU چیه و به چه دردی می خوره :

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

    سنسور های شتاب سنج :

    شتاب سنج ها سنسور هایی هستند که شتاب رو اندازه میگیرند . ولی صبر کنید . نکته همین جاست ، اونا هر نوع شتابی رو اندازه می گیرن و براشون شتاب جاذبه و شتاب های دینامیکی حاصل از ربات فرقی نمی کنه . این سنسور ها در واقع برایند این شتاب ها رو به شکل یک بردار بهمون میدند و این بدین معناست که زاویه ای که ما با محاسبات ریاضی به دست میاریم با حرکت های ربات میتونه مورد تغییر قرار بگیره .
    همچنین مشکل دیگه ی اکثر شتاب سنج ها اینه که خروجی های اونا تا حد زیادی نویزی هست که این خودش می تونه باعث شکست خوردن پروژه بشه .
    شتاب سنج ها ی موجود در بازار :
    در بازار شتاب سنج ها ی مختلف با مشخصات مختلف وجود داره که از معروف ترین ها ی اونا میشه به MPU6050 ، ADXL345 ، MPU9150 اشاره کرد . البته دو سنسور MPU فقط شتاب سنج نبوده وامکانات بسیار زیاد دیگه ای رو هم داخل خودشون دارند.

    سنسور های ژیروسکوپ :
    سنسور های ژیروسکوپ به ما امکان اندازه گیری سرعت زاویه ای حول محور های مختصاتی رو میدند . پس می شه با یک انتگرال گیری عددی از این داده ها به زوایا نسبت یه محور های مختصات پی برد . البته این سنسور ها هم مزایا و معایبی دارند :
    مزایا :
    مزیت این سنسور ها اینه که خروجی اونها به شتاب های دینامیکی حساس نیست و نویز اونها هم تا حدی کمتره (البته نه خیلی) .
    معایب :
    خروجی این سنسور ها یک آفست دارند که لزوما در شرایط مختلف ثابت نیست . حال در اینجا انتگرال گیری از این عدد ثابت منجر به این میشه که خروجی سنسور (زویای به دست آمده) در طول زمان دریفت پیدا کرده و خطا دار بشند. برای این که یه درک بهتر از این مساله به دست بیارید این جوری می گم : شما سنسور رو ثابت گذاشتید اما خروجی به جای این که زوایای ثابتی رو نشون بده زوایای متغیر با زمانی نشون میده که دارند زیاد و یا کم می شند.

    سنسور های قطب نما :

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

    راه حل ؟؟

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

    درجه ی آزادی IMU یعنی چی:

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

    IMU ای که قراره به عنوان مثال اینجا ساخته بشه چه مشخصاتی داره ؟

    IMU ای که در این تاپیک می خواد ساخته بشه از یک کتابخونه ی Arduino ، یک MEGA32 و سنسور MPU6050 تشکیل خواد شد . MPU6050 سنسوری هست که داخل خودش دوسنسور شتاب سنج و ژیروسکوپ رو یک پردازنده ی حرکتی داره و در پست بعد درباره ی اون توضیح خواهم داد . در ایجا ویدیوای از اتمام شده ی این کار رو دانلود کنید:
    http://www.4shared.com/video/6E6-8On...231250_3_.html

    در پست بعد به سنسور MPU6050 خواهم پرداخت . پس فعلا ...

  5. کاربران : 19 تشکر کرده اند از شما roohlla برای ارسال این پست سودمند:


  6. #3
    کاربر دائمی
    تاریخ عضویت
    Jun 2009
    نام
    روح الله خرم بخت
    نوشته ها
    403
    تشکر
    456
    تشکر شده 591 بار در 214 پست

    پیش فرض

    خوب ادامه ی مطلب ...

    سنسور MPU6050 :

    این سنسور یک پکیج هست که داخل خودش سه بخش اساسی داره !
    1- سنسور شتاب سنج 3 محوره ی دجیتال 16 بیتی با قابلیت اندازه گیری رنج ها ی 2g، ±4g، ±8g، ±16g±

    2- سنسور ژیروسکوپ دجیتال 3 محوره 16 بیتی با قابلیت اندازه گیری رنج های 250±، 500±، 1000± و 2000± درجه بر ثانیه

    3-واحد پردازند ی DMP که کار ترکیب و پردازش اطلاعات سنسور ها رو واسه ی کاربر انجام میده .

    خوب . راه اندازی دو قسمت اول که کاری نداره و برای اون هم دیتاشیت کامل وجود داره و هم مثال های مختلف . لینک زیر فیلم و کتابخونه ی راه اندازی این دو بخش و دریافت داد ها ی خام رو انجام داده (با کدویژن) (این لینک فقط جنبه ی آموزشی داره و امیدوارم تبلیغ تلقی نشه):
    http://blog.eca.ir/?p=299

    اما اصل ماجرا تازه از اینجا شروع میشه و اون هم ترکیب این داده هاست . برای این کار یه راه اینه که کار ترکیب داده ها رو داخل میکرو انجام بدیم. یعنی پیاده سازی الگوریتم های دیتا فیوژن و فیلتر های دجیتال . برای این کار یکی از کتاب خونه های مطرح FreeIMU هست که برای Arduino نوشته شده و از فیلتر Mahony استفاده میکنه که جزئیات تئوریش رو می تونید از لینک زیر بخونید :
    http://www.di.unito.it/~varesano/pub...palla_2011.pdf
    همچنین کتابخونه ی FeeIMU رو میتونید از لینک زیر دانلود کنید:
    http://www.varesano.net/projects/hardware/FreeIMU
    آلگوریتم ها و فیلتر های دیگه ای هم وجود داره مثل : kavlman filter , compelementry filter و ...که میشه با یه سرچ کوچیک کلی اطلاعات در مورد اونا به دست اورد.
    و اما راه دوم و راه انتخاب شده برای ساخت IMU در این پست : استفاده از DMP داخلی خود سنسور :

    همون طور که گفتم سنسور MPU6050 و خیلی دیگه از سنسور های شرکت Ivansense (سازنده ی سنسور مورد بررسی) داخل خودشون یک واحد پردازشگر برای انجام دیتافیوژن دارند . ولی یک مشکل وجود داره و اون اینه که جزئیات اون رو در اختیار عموم قرار ندادند و خیلی مبهم در این باره برخورد کردن (حد اقل برای من من مبهم بودن) . برای همین یه نفر توی یکی از سایت ها ی خارجی از طریق مهندسی معکوس firmware ی که روی سنسور ریخته میشه تا پردازنده ی DMP کانفیگ بشه در آورده و اون اون رو در دل یک کتابخونه ی کامل به اسم i2cdevlib-master جا داده (این کتاخونه شامل درایور برای سنسورها ی رایج مبتنی بر I2C هست) . این کتابخونه رو به همراه مثالش می تونید از یکی از دو لینک زیر دانلود کنید :
    https://github.com/jrowberg/i2cdevli...rduino/MPU6050
    i2cdevlib-master.zip

    این کتابخونه برای کامپایلر Arduino نوشته شده که می تونید این کامپایلر رو هم از لینک زیر دانلود کنید:
    http://arduino.ir/Software

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

  7. کاربران : 13 تشکر کرده اند از شما roohlla برای ارسال این پست سودمند:


  8. #4
    کاربر فعال hamidam آواتار ها
    تاریخ عضویت
    Apr 2012
    نام
    حمید مومنی
    نوشته ها
    130
    تشکر
    534
    تشکر شده 157 بار در 60 پست

    پیش فرض

    سلام
    سال نو مبارک
    مهندس منتظر ادامه اش هستیم
    برای راه اندازی به برد Arduino احتیاج هست ؟

  9. #5
    کاربر دائمی
    تاریخ عضویت
    Jun 2009
    نام
    روح الله خرم بخت
    نوشته ها
    403
    تشکر
    456
    تشکر شده 591 بار در 214 پست

    پیش فرض

    خوب ، اول بابت تاخیر زیادم عزرخواهی میکنم . دلیلش هم نصب ویندوز روی سیستم بوده .
    اول کتابخونه ی زیر رو دانلود کنید :
    http://www.uplooder.net/cgi-bin/dl.c...e059b5a2eb9ace
    داخل اون یک فولدر به نام MPU6050وجود داره . اون همون فولدر کتابخونه ی ماست . حالا از آدرس زیر کامپایلر arduino رو دانلود کنید :
    http://arduino.ir/Software
    حالا طبق آموزش های زیر کتابخونه رو به پروژه Add کنید(طبق روش نصب دستی) :
    http://arduino.ir/Guide/Libraries
    از فولدر Examples کتابخونه ای که دانلود کردید ، فایل MotionApp رو با استفاده از نرم افزار Arduino باز کنید. این مثال دمویی هست که در فیلمی که گذاشته بودم دیدید . قبل از هر چیزی برنامه رو تغییر میدیم و باودریت رو برابر با 57600 قرار میدیم. حالا برنامه رو کامپایل می کنیم (اموزش رو می تونید توی سایتی که گذاشتم ببینید)
    تا الان شاید از خودتون پرسیده باشید که برای تمام این کار ها به برد آردوینو نیاز داریم؟ جوابتون منفی هست . برای توضیحات به پست زیر مراجعه کنید :
    http://www.iranmicro.ir/forum/showth...ll=1#post86929
    حالا باید تونسته باشید برنامه رو وکامپایل کرده و روی میکرو ریخته باشید . اتصالات سخت افزاری ماژول و میکرو رو برقرار کرده و ترمینال رو روی باود ریت 57600تنظیم کنید . حالا مدار رو روشن کنید . باید کامنت هایی از طرف مدار دریافت کنید .
    در قسمت بعد نحوه ی راه اندازی اون دموی گرافیکی رو بهتون یاد خواهم داد .
    پس فعلا ...

  10. کاربران : 10 تشکر کرده اند از شما roohlla برای ارسال این پست سودمند:


  11. #6
    تازه وارد
    تاریخ عضویت
    Apr 2014
    نوشته ها
    1
    تشکر
    4
    تشکر شده 1 بار در 1 پست

    پیش فرض

    مهندس جون منتظریما...

  12. تشکرها از این نوشته :


  13. #7
    کاربر فعال
    تاریخ عضویت
    Jan 2013
    نام
    عربعامری
    نوشته ها
    148
    تشکر
    25
    تشکر شده 92 بار در 60 پست

    پیش فرض

    ما هم همچنین.ادامه بده مهندس کار ارزشمندی میشه

  14. #8
    تازه وارد
    تاریخ عضویت
    Jul 2014
    نوشته ها
    2
    تشکر
    0
    تشکر شده 2 بار در 1 پست

    پیش فرض

    نقل قول نوشته اصلی توسط roohlla نمایش پست ها
    خوب ادامه ی مطلب ...

    سنسور MPU6050 :

    این سنسور یک پکیج هست که داخل خودش سه بخش اساسی داره !
    1- سنسور شتاب سنج 3 محوره ی دجیتال 16 بیتی با قابلیت اندازه گیری رنج ها ی 2g، ±4g، ±8g، ±16g±

    2- سنسور ژیروسکوپ دجیتال 3 محوره 16 بیتی با قابلیت اندازه گیری رنج های 250±، 500±، 1000± و 2000± درجه بر ثانیه

    3-واحد پردازند ی DMP که کار ترکیب و پردازش اطلاعات سنسور ها رو واسه ی کاربر انجام میده .

    خوب . راه اندازی دو قسمت اول که کاری نداره و برای اون هم دیتاشیت کامل وجود داره و هم مثال های مختلف . لینک زیر فیلم و کتابخونه ی راه اندازی این دو بخش و دریافت داد ها ی خام رو انجام داده (با کدویژن) (این لینک فقط جنبه ی آموزشی داره و امیدوارم تبلیغ تلقی نشه):
    http://blog.eca.ir/?p=299

    اما اصل ماجرا تازه از اینجا شروع میشه و اون هم ترکیب این داده هاست . برای این کار یه راه اینه که کار ترکیب داده ها رو داخل میکرو انجام بدیم. یعنی پیاده سازی الگوریتم های دیتا فیوژن و فیلتر های دجیتال . برای این کار یکی از کتاب خونه های مطرح FreeIMU هست که برای Arduino نوشته شده و از فیلتر Mahony استفاده میکنه که جزئیات تئوریش رو می تونید از لینک زیر بخونید :
    http://www.di.unito.it/~varesano/pub...palla_2011.pdf
    همچنین کتابخونه ی FeeIMU رو میتونید از لینک زیر دانلود کنید:
    http://www.varesano.net/projects/hardware/FreeIMU
    آلگوریتم ها و فیلتر های دیگه ای هم وجود داره مثل : kavlman filter , compelementry filter و ...که میشه با یه سرچ کوچیک کلی اطلاعات در مورد اونا به دست اورد.
    و اما راه دوم و راه انتخاب شده برای ساخت IMU در این پست : استفاده از DMP داخلی خود سنسور :

    همون طور که گفتم سنسور MPU6050 و خیلی دیگه از سنسور های شرکت Ivansense (سازنده ی سنسور مورد بررسی) داخل خودشون یک واحد پردازشگر برای انجام دیتافیوژن دارند . ولی یک مشکل وجود داره و اون اینه که جزئیات اون رو در اختیار عموم قرار ندادند و خیلی مبهم در این باره برخورد کردن (حد اقل برای من من مبهم بودن) . برای همین یه نفر توی یکی از سایت ها ی خارجی از طریق مهندسی معکوس firmware ی که روی سنسور ریخته میشه تا پردازنده ی DMP کانفیگ بشه در آورده و اون اون رو در دل یک کتابخونه ی کامل به اسم i2cdevlib-master جا داده (این کتاخونه شامل درایور برای سنسورها ی رایج مبتنی بر I2C هست) . این کتابخونه رو به همراه مثالش می تونید از یکی از دو لینک زیر دانلود کنید :
    https://github.com/jrowberg/i2cdevli...rduino/MPU6050
    i2cdevlib-master.zip

    این کتابخونه برای کامپایلر Arduino نوشته شده که می تونید این کامپایلر رو هم از لینک زیر دانلود کنید:
    http://arduino.ir/Software

    استفاده از این متود برای راه اندازی IMU این مزیت رو داره که بار پردازشی سنگینی رو میکرو تحمیل نمیشه و پیچیدگی کد هم به مراتب کمتر میشه . همچنین ویژگی بارز دیگه ی پردازنده ی داخلی سنسور اینه که اتوماتیک کالیبره رو انجام میده.
    در پست بعد نحوه ی اجرای کتابخونه رو توضیح خواهم داد ...
    پس فعلا ...
    سلام خدمت دوستان
    من به طریقی فایلهای مربوط به DMP سنسور ژایرو MPU6050 رو تهیه کردم. در پست های بعدی لینک دانلودش رو قرار میدم.
    جناب روح الله پس چرا ادامه ندادی.
    من از همون کتابخانه ای که گفتید استفاده کردم ولی مشکل من اینه که دریفتش خیلی زیاده مثلاً وقتی حول محور Yaw برگردی و برگردی نقطه اول دوتا عددی که بهت میده خیلی اختلاف دارند و تازه شروع میکنه به تغییر درحالیکه سنسور ثابته و نمی چرخه. تغییراتش هم آنقدر زیاده که نمیشه به نویز و حساسیت و ... ربط بدی و چون بصورت منظم و بصورت شمارشی کاهش یا افزایش داره معلوم میشه که اشکال باید نرم افزاری باشه.

  15. #9
    تازه وارد
    تاریخ عضویت
    Jul 2014
    نوشته ها
    2
    تشکر
    0
    تشکر شده 2 بار در 1 پست

    پیش فرض

    اطلاعات و نمونه کد پردازشگر داخلی (DMP) سنسور MPU6050
    DMP

  16. کاربران : 2 تشکر کرده اند از شما irelectronic برای ارسال این پست سودمند:


  17. #10
    کاربر علاقه مند
    تاریخ عضویت
    Sep 2012
    نوشته ها
    30
    تشکر
    1
    تشکر شده 23 بار در 13 پست

    پیش فرض

    راهندازی سنسور MPU6050

    9 ساعت ago معرفی: سنسور InvenSense Mpu-6050 شامل شتاب سنج و جایرو MEMS در یک چیپ است،که دقت ...بیشتر بخوانید »
    تصاوير کوچک فايل پيوست تصاوير کوچک فايل پيوست برای دیدن سایز بزرگ روی عکس کلیک کنید

نام: invensense-mpu6050.jpg
مشاهده: 265
حجم: 4.0 کیلو بایت  
    ویرایش توسط ahravan : 29-12-2014 در ساعت 12:26

  18. تشکرها از این نوشته :


  19. #11
    تازه وارد
    تاریخ عضویت
    Apr 2016
    نوشته ها
    1
    تشکر
    4
    تشکر شده 0 بار در 0 پست

    پیش فرض

    سلام
    مهندس کارت حرف نداره
    توضیحاتت واقعا عالی هستش
    منتظر ادامشیم

  20. #12
    کاربر علاقه مند
    تاریخ عضویت
    Oct 2011
    نوشته ها
    26
    تشکر
    8
    تشکر شده 5 بار در 4 پست

    پیش فرض

    آموزش کامل کار با MPU6050 و اعمال فیلترهای کالمن و مکمل روی آن
    آموزش کامل کار با MPU6050 و راه اندازی آن توسط بردهای آردوینو

موضوعات مشابه

  1. اینم کد راه اندازی mpu6050
    توسط nita در انجمن سنسور و ماژول های اندازه گیری
    پاسخ: 2
    آخرين نوشته: 18-07-2017, 13:24
  2. کتاب خانه ی imu شش محوری با mpu6050
    توسط roohlla در انجمن سنسور و ماژول های اندازه گیری
    پاسخ: 9
    آخرين نوشته: 11-07-2016, 02:35
  3. [سوال] نظر خواهی درباره ی پیاده سازی چند ماژول mpu6050 ( حداقل 10 تا ) با هم
    توسط alimka در انجمن سنسور و ماژول های اندازه گیری
    پاسخ: 14
    آخرين نوشته: 19-01-2015, 12:17
  4. سنسور شتاب mpu6050
    توسط agape در انجمن سنسور و ماژول های اندازه گیری
    پاسخ: 3
    آخرين نوشته: 05-08-2014, 22:34
  5. سنسور mpu6050
    توسط mj3747 در انجمن AVR
    پاسخ: 7
    آخرين نوشته: 30-06-2014, 11:11

مجوز های ارسال و ویرایش

  • شما نمیتوانید موضوع جدیدی ارسال کنید
  • شما امکان ارسال پاسخ را ندارید
  • شما نمیتوانید فایل پیوست کنید.
  • شما نمیتوانید پست های خود را ویرایش کنید
  •