محاسبات كدنويسي جایروسکوپ در ربات ها {جلسه بیست و پنجم}

محاسبات كدنويسي جایروسکوپ

محاسبات كدنويسي جايروسكوپ يك بخش مهم براي كدنويسي كلي مربوط به فلايت كنترل است. در اين جلسه محاسبات كدنويسي جايروسكوپ را به صورت خط به خط مورد بحث قرار مي دهيم و جایگذاری این داده ها و ترکیب آنها با فیلترهای کالمن و … را در جلسات آینده مورد بحث قرار می دهیم.

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

فرض کنید یک جایروسکوپ دو محوره داریم و با استفاده از این جایروسکوپ نیروها را تحلیل می کنیم.

rotate

معادلات حركتي جايروسكوپ

Rxz: تصویر بردار R روی صفحه xz

Ryz: تصویر بردار R روی صفحه yz

همچنین با توجه به شکل دوتا زاويه نشان داده شده را به صورت زير نامگذاري مي كنيم:

Axz: زاویه بین Rxz و محور z

Ayz: زاویه بین Ryz و محور z

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

به عبارت دیگر مقدار خروجی جایروسکوپ به صورت خطی به نرخ تغییرات زاویه های فوق وابسته است.

برای توضیح شفاف تر فرض کنید که ما یک چرخش حول محور Z داریم. که طیق شکل بالا با چرخش حول محور Y زاویه Axz بوجود می آید. که این زاویه اولیه در زمان t0 است و اسم آن را Axz0 می گذاریم و در زمان بعدی یعنی t1 اسم آن را Axz1 می گذاریم. خب حالا تغییرات این دو زاویه به صورت زیر است:

RateAxz = (Axz1 – Axz0) / (t1 – t0)

زاویه صورت کسر فوق که به صورت درجه است و مخرج کسر هم که معرف زمان است و برحسب زمان سنجیده می شود پس این نرخ تغییرات بر حسب درجه بر ثانیه یا deg/s سنجیده می شود و این چیزی است که جایروسکوپ اندازه گیری می کند.

در عمل جایروسکوپ مقدار deg/s را به ما تحویل نمی دهد(بجز جایروسکوپ های دیجیتال) و باید با استفاده از یک واحد ADC مقادیر خروجی از آن را تبدیل کنیم. در اينجا ADC ما 10بيتي است. داده هاي خروجي از جايروسكوپ دومحوره را با AdcGyroXZ(چرخش حول محور Y) و  AdcGyroYZ(چرخش حول محور X) نشان مي دهيم. كه با تبديلاتي كه در جلسه شتاب سنج گفتيم داريم:

RateAxz = (AdcGyroXZ * Vref / 1023 – VzeroRate) / Sensitivity
RateAyz = (AdcGyroYZ * Vref / 1023 – VzeroRate) / Sensitivity

Vref: ولتاژ مرجع واحد ADC كه در اينجا براي ما 3.3 ولت است.

VzeroRate: نرخ ولتاژ صفر، ولتاژي است كه جايروسكوپ در حالت سكون و بدون هيچگونه چرخشي به ما نشان مي دهد. اين مقدار را در ديتاشيت مربوط به هر جايروسكوپ مي توانيد پيدا كنيد. براي جايروسكوپ مورد استفاده ما در اينجا 1.23 ولت است.

Sensitivity: حساسيت جايروسكوپ برحسب mV / (deg / s) بيان مي شود كه غالبا به صورت mV/deg/s  نوشته مي شود و بدين معني است كه در هر ثانيه ميزان ميلي ولت خروجي از جايروسكوپ چقدر است. جايروسكوپ مورد استفاده ما در اينجا داراي حساسيت 2mV/deg/s يا 0.002V/deg/s است.

حالا فرض كنيد جايروسكوپ ما مقادير زير را نشان مي دهد:

AdcGyroXZ = 571
AdcGyroXZ = 323

با جايگذاري مقادير فوق و استفاده از فرمول بالا دو مقدار زير بدست مي آيد.

RateAxz = (571 * 3.3V / 1023 – 1.23V) / ( 0.002V/deg/s) =~ 306 deg/s
RateAyz = (323 * 3.3V / 1023 – 1.23V) / ( 0.002V/deg/s) =~ -94 deg/s

 طبق محاسبات بالا چرخش حول محور Y مقدار 306 درجه است و چرخش حول محور X مقدار 94- است. علامت منفي بدين معني است كه چرخش در جهت عكس بوده است كه در شكل زير نشان داده ايم.

تشخيص جهت چرخش مثبت جايروسكوپ

gyro-rotation

 

معمولا يك جايروسكوپ خوب جهت مثبت را در ديتاشيت خود نشان داده است در غير اين صورت بايد به صورت تجربي افزايش ميزان ولتاژ خروجي از پين آن را هنگام چرخاندن جايروسكوپ اندازه گيري كنيم. براي راحتي كار مي توانيد در كدنويسي مربوط به جايروسكوپ ابتدا يك ثابت مربوط به تعداد بيت هاي واحد ADC تعريف كنيد تا در صورت تغيير تعداد بيت ها فقط ثابت مربوطه را تغيير دهيد. نكته ديگه هم اينكه فقط فرمول هايي نهايي را وارد مي كنيد كه در بالا بيان شده است.

gyro-rotate

استفاده از اسيلوسكوپ و ولت متر براي تشخيص جهت مثبت و منفي جايروسكوپ

بهترين راه تشخيص جهت مثبت و منفي چرخش استفاده از اسيلوسكوپ است زيرا هنگامي كه جايروسكوپ ساكن است نرخ ولتاژ صفر يا همان VzeroRate را به ما نشان مي دهد. براي استفاده از مولتي متر هم ابتدا جايروسكوپ را در يك جهت مي چرخانيم و سپس چند ثانيه صبر مي كنيم و در صورتي كه مقدار بدست آمده بزرگتر از VzeroRate باشد آن جهت مثبت است و جهت ديگر منفي است. دقت كنيد كه VzeroRate در ديتاشيت جايروسكوپ وجود دارد.

برای دریافت آخرین مطالب سایت  و همچنین مطالب منحصر به فرد دیگر که در سایت منتشر نمی شوند میتوانید در کانال تلگرام ما عضو شوید و یا در اینستاگرام ما را فالوو کنید:

 

4 نظر

  • حمیدرضا نوریان

    سلام
    خیلی خیلی ممنون بابت سایت عالیتون
    لطفا اگه امکان داره منبعتون رو هم معرفی کنید

    • قاسم قاسمی

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

  • احسان

    مرسی بابت مطالبتون….اگه میشه لطف کنید توضیح کامل و ساده ای در مورد فیلتر کالمن توسعه یافته (EKF) و فیلتر نمونه بردار(UKF) و همچنین فرمول های بدست آوردن آنها بدین …چون متاسفانه توی اینترنت مطالب جامع و کاملی در این مورد این موضوع اصلا پیدا نمیشه..

    • قاسم قاسمی

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

  • نوشتن نظر

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

    Optionally add an image (JPEG only)