اطلاعیه

Collapse
No announcement yet.

حذف دریفت در ژایروسکوپ

Collapse
X
 
  • فیلتر
  • زمان
  • Show
Clear All
new posts

    حذف دریفت در ژایروسکوپ

    سلام به همه دوستان :bye

    هدفم به دست آورده زاویه چرخش حول محور Z یا همون yaw بدون استفاده از کامپسه
    سوالم در مورد چگونگی حذف Drift در ژایروسکوپه
    ماژول Gy80 که جایرو l3g4200D رو داره راه اندازی کردم .
    داده های خام رو به حساسیت تقسیم کردم و Rate رو بر حسب dps به دست آوردم
    و برای به دست آوردن زاویه ، Rate را بر فرکانس داده خروجی (ODR) تقسیم کردم یا به عبارتی در دوره زمانی ضرب کردم (انتگرال گیری) و زاویه بر حسب درجه به دست اومد
    اما خروجی که نشون میده اصلا مناسب نیست :angry:
    با چرخش زاویه عوض نمیشه !!! و چند ثانیه یکبار یک درجه زیاد میشه....
    اساتیدی که کار کردن اگه تو توضیحات بالا اشکالی هست یا درباره تنظیمات فیلترهای داخلی l3g4200D اطلاعاتی دارن ممنون میشم راهنمایی کنین :applause:

    اینم بگم که یجا گفته بود که از ترکیب جایرو وشتاب سنج استفاده کن ولی به نظرم شتاب سنج کمکی در به دست آوردن زاویه yaw نمیکنه
    در واقع فک میکنم با توجه به ماهیتش که بر اساس جاذبه است نمی تونه حرکت حول محور Z رو تشخیص بده و کمکی به اصلاح جایرو در این محور نمیکنه....
    دوستانی که اطلاعاتی در این باره دارن اگه اشتباه فکر میکنم راهنمایی کنن ...
    مرسی از همه

    #2
    پاسخ : حذف دریفت در ژایروسکوپ

    بهتره از همون کامپس استفاده کنی
    فکر کنم برای تشخیص چرخش yaw باید از ترکیب جایرو و اکسلریشن استفاده کنی تا میزان چرخش را بگیری که کار نسبتا سختی میشه
    حذف همون دریف هم خودش داستانیه

    البته من فقط نظرم را گفتم . من برای یه کاری الان دارم روی magnetometer کار میکنم. فکر کنم راحت تر باشه .فقط ایرادش حساسیت به سازه فلزی هست :angry:

    موفق باشید
    امام علي (عليه السلام) : الزکات العلم نشرهُ/ زکات علم نشر آن است

    دیدگاه


      #3
      پاسخ : حذف دریفت در ژایروسکوپ

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

      دیدگاه


        #4
        پاسخ : حذف دریفت در ژایروسکوپ

        اگه فقط نمیخوای از قطب نما استفاده کنی خب بهترین راه اینه که از شتاب سنج هم در کنارش استفاده کنی (که خوشبختانه این ماژول همه رو داره) و با استفاده از از فیلترهای complementary یا kalman یا mahoney عمل data fusion رو انجام بدی!
        البته این فیلترها یه تفاوت هایی دارن که یه مقدارش رو اینجا میتونی ببینی: https://www.mit.bme.hu/system/files/..._filtering.pdf

        فقط یه خرده باید ریاضیت خوب باشه!!

        دیدگاه


          #5
          پاسخ : حذف دریفت در ژایروسکوپ

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

          در مورد کامپس هم نمیتونم استفادش کنم چون موتورهای DC که داخل ربات هستن مقناطیس زیادی دارن و عملا کامپسو نابود میکنن :smile:
          امتحان کردم.... دور کردن از موتورها هم جواب نمیده چون بازم نزدیکه یه آهنربا که بشه تنظیماتش به هم میریزه کلا کامپس واسه این کار نی...

          دیدگاه


            #6
            پاسخ : حذف دریفت در ژایروسکوپ

            راستش من درست متوجه نشدم دقیقا سیستم شما به چه صورت هست و جزئیاتش رو نمیدونم، فرکانس 800 هرتز یعنی هر 1.25 میلی ثانیه یک نمونه به شما میده، این زمان میتونه در زمان نه چندان زیادی بعد از چندین بار حرکات گردشی به طرقین خطای نه چندان کمی ایجاد کنه اما اگر فکر میکنید برای سیستم شما کافیه که بحثی نیست چون من ندیدم مدلتون رو.
            من داده های خامشو که دیدم خیلی زیاد پرش دارن
            و این در انتکرال گیری ، و به خصوص با گذشت زمان مشکل ایجاد میکنه
            برای صاف کردن این جهش ها شما نیاز به اولا فیلتر سخت افزاری و دوما نرم افزاری دارید که مقادیر استاتیک و داینامیک را جدا کنید، در سنسورهای آنالوگ در ساده ترین حالت از یک فیلتر RC استفاده میشه، فرکانس رو با ظرفیت خازن جوری تنظیم میکنند که نوسانات لحظه ای ولتاژ کمتر بشه ( مقادیر بالا و پایین ناخواسته که در حال حاضر شما دارید ) اما به قدری که سرعت تغییر هم خیلی کاسته نشه، منظورم این هست که اگر زمان شارژ خازن بیشتر بشه ممکنه خروجی شما صاف تر بشه اما حساسیتش رو هم به همون نسبت از دست میده و واکنشش به تغییرات تا حدودی کم میشه برای به دست آوردن مقدار صحیح فیلتر یا باید فرکانس ارتعاشات ناخواسته رو بدست بیارید و فیلترش کنید یا اینکه به صورت آزمون و خطا چند فیلتر طراحی کنید و نمونه گیری کنید از مقادیرتون تا به مقدار مناسب برسید، در ماژول های دیجیتال معملا خودشون همچین فیلتری رو با چندین مقدار مختلف قرار میدهند که شما از طریق تنظیمات ماژول میتونید یکی از آنها را انتخاب کنید و استفاده کنید اما به همون تعداد فیلتر محدود هستید.
            در روش روش نرم افزاری شما باید تعداد خاصی نمونه پشت سرهم بگیرید و با حذف مقادیری که یکدفعه خیلی تغییر کردند و بعد میانگین گیری از مقادیر باقی مانده مقدار اصلی رو به دست بیارید، مثلا اگر بیشتر اعداد شما حدود 30، 32، 33 تا 40 باشه مقادیری که این وسط حدود 190 یا 200 یا 1 هست و خیلی اختلاف داره رو اول باید از نمونه ها حذف کنید، بعد بین اون مقادیر نزدیک میانگین گیری کنید. این میشه یک نمونه فیلتر نرم افزاری برای حذف مقادیر داینامیک در سیستم دیجیتال. اما روش نرم افزار یک مشکل اساسی داره که شما عملا کلی نمونه میگیرید برای داشتن 1 نمونه صحیح که این خودش کلی زمان از دست رفته یعنی عملا از 800 هرتزی که هست هم مقداریش از دست میره، به همین خاطر هست که تا جایی که بشه برای حذف این مقادیر از فیلتر سخت افزاری استفاده میشه جوری که بعضی موافع دیگه اصلا به فیلتر نرم افزارث هم نیست.
            از آنجا که گاهی فرصت بازخوانی پست نیست، بابت غلط های املایی و نگارشی احتمالی معذرت میخوام.
            هیچیک از پاسخ هایی که میدم را کاملا تایید نمیکنم و ممکن هست اشتباه کرده باشم، اگر من به نوشته ام مطمئن هستم شما مشکوک باشید.
            اگر در حل مشکل من کمک کردید و دکمه تشکر رو نزدم حتما فراموش کردم کوچکترین کمک شما برایم ارزشمند است!
            اگر به هر طریقی از من ناراحت شدید حتما با یک پیام خصوصی تذکر بدهید تا مشکل رو حل کنیم و رابطه ی صمیمانه، پایدار بماند.
            شاد و موفق باشید

            دیدگاه


              #7
              پاسخ : حذف دریفت در ژایروسکوپ

              مرسی
              ممنون از توجه و وقتی که گذاشتین

              دیدگاه

              لطفا صبر کنید...
              X