ساختار الکترونیکی کوادروتور
ساختار الکترونیکی کوادکوپتر
بُرد کنترل کننده
يکی از بخشهای اصلی اين پروژه طراحی بُرد کنترل کننده پرنده است. اين قسمت است که اطلاعات حسگرها را خوانده، الگوريتم کنترل را اجرا کرده و پرنده را کنترل مینماید. برای اين منظور بُردهای توسعه ای تجاری بسياری وجود دارند که حتی برخی از آنها به حسگرهای مطلوب و پردازنده های بسيار کارايی نيز مجهز شده اند. قطعا استفاده از این بُرد های آماده سرعت توسعه محصول را بالاتر خواهد برد. اما با توجه به ماهیت تحقیقاتی این پروژه، طراحی و ساخت بُرد کنترلی در دستور کار قرار گرفت.
در طول پروژه جدا از بردهای طراحی شده جانبی (بعنوان مثال طراحی مبدل برای ماژولهای بيسيم XBee) 3 برد کنترلی – بسته به شرايط پروژه و استفاده از اجزاء الکترونيکی متفاوت – طراحی شد. ساختار اصلی اين بُردها را ميتوان بصورت زير نمايش داد.
ويرايش صفر اين برد يک برد دست ساز و ابتدايي بود. ويرايشهاي 1 و 1.1 اين بُرد، از نوع PCB است. شماتيک و نقشه PCB برد ويرايش 1.1 در تصاوير بعدي قابل مشاهده است.
نقشه مدارات بُرد کنترل کننده
بُرد کنترلی ویرایش 1.1
نقشه PCB بُرد کنترلی ویرایش 1.1
در ادامه به بررسی اجزاء بُرد کنترل کننده پرداخته ميشود.
میکروکنترلر
در ابتدا برای راه اندازی اوليه موتورها، ايجاد ارتباط سريال بين پرنده و کامپيوتر و خواندن اطلاعات از حسگرها، ميکروکنترلر ATMega 32 از خانواده AVR به خدمت گرفته شد. ميکروکنترلر مذکور همه نيازهای پروژه را برآورده نميکرد. يکی از مهمترين محدوديتهای اين ميکروکنترلر عدم توانايي توليد چهار موج PWM 16 بيتی است. اين محدوديت باعث شد تا ميکروکنترلر ATMega128A بعنوان پردازنده مورد استفاده قرار گيرد. اين ميکروکنترلر توانايي توليد 6 موج PWM 16 بيتی را دارد.
ميکروکنترلرهای AVR دارای امکانات سودمندی هستند که در اين پروژه بنابر نياز برخی از آنها به خدمت گرفته شده اند. اين موارد عبارتند از:
تایمر/کانتر
در اين پروژه هدف استفاده از اين واحد، ايجاد موج PWM است. همانگونه که در قسمت مربوط به کنترل کننده سرعت توضيح داده شده، ESC ها نياز دارند که يک موج PWM به آنها اعمال شود تا بتوانند موتورها را به حرکت در آورند. هر چه میزان دقت تایمر بیشتر باشد، کنترل بیشتری روی موتور خواهیم داشت. این دقت را تعداد بیت های تایمر مشخص می کند. بنابراین برای کنترل بیشتر روی موتور از تایمر/ کانتر های 1 و 3 میکروکنترلر AVR که 16 بیتی هستند استفاده شد. البته باید به این نکته توجه داشت که دقت خواندن موج ورودی توسط ESC باید با دقت موج تولید شده توسط میکروکنترلر تناسب داشته باشد. اکثر ESC های موجود در بازار کشور دارای دقت 8 بیت هستند اما می توان ESC با دقت های 9 و 10 بیت نیز تهیه کرد.
فرکانس موج PWM
همانگونه که در بخش مربوط به الگوریتم کنترل توضیح داده خواهد شد، حلقه های کنترلی می توانند فرکانسی بین 200 تا 400 هرتز داشته باشند. بنابراین فرکانس موج PWM تولید شده توسط میکروکنترلر باید بیش از 400 هرتز باشد. در این پروژه فرکانس موج PWM برابر با 417.39 هرتز است.
مبدل آنالوگ به دیجیتال (ADC)
وظيفه اين واحد تبديل سيگنال آنالوگ به ديجيتال است. همانگونه که در قسمت مربوط به حسگرها بحث شده، برخی حسگرها دارای خروجی آنالوگ هستند. بنابراين لازم است اين اطلاعات بصورت ديجيتال بيان شوند تا بتوان از آنها استفاده کرد. اغلب ميکروکنترلرهای AVR داراي 8 کانال ورودی 10 بيتی آنالوگ به ديجيتال هستند.
ارتباط سریال USART
با توجه به اينکه در اين پروژه ميکروکنترلر بايد فرامينی را از کامپيوتر دريافت کند و اطلاعاتی را به آن گزارش دهد، نيازمند يک پروتکل ارتباطی بین اين دو هستيم. واحد ارتباط سريال امکان برقراری ارتباط بين ميکروکنترلر و کامپيوتر را فراهم ميکند.
رابط I2C
برخی از حسگرهای استفاده شده در اين پروژه برای ارتباط با ميکروکنترلر از رابط سريال دو سيمه استفاده ميکنند. بنابراين براي ارتباط با سنسورهای ديجيتال از اين واحد ميکروکنترلر استفاده ميشود.
ارتباط I2C یک پروتکل ارتباطی سریال است که توسط شرکت Philips ارائه شده است. ویژگی های I2C عبارت است از:
- تنها به دو خط باس نیاز دارد.
- می تواند بصورت Master یا Slave کار کند.
- وسیله می تواند بعنوان فرستنده یا دریافت کننده عمل کند.
- می تواند حداکثر 128 وسیله Slave مختلف را آدرس دهی کند.
- از وجود چند Master حمایت می کند.
- حداکثر سرعت آن می تواند به 400KHz برسد.
- به مدار حذف کننده نویز داخلی مجهز است.
- امکان تنظیم کامل آدرس Slave و حمایت از فراخوانیهای عمومی را دارد.
- در صورتی که آدرس مربوط به خود را تشخیص دهد می تواند AVR را از مد Sleep، بیدار کند.
در این پروژه از فرکانس 400KHz برای ارتباط I2C استفاده شده است. در ادامه نحوه نوشتن و خواندن داده از طریق رابط I2C توضیح داده شده است.
همانطور که در شکل زیر قابل مشاهده است، ابتدا Master حالت شروع (S) را ارسال میکند. سپس آدرس Slave مورد نظر به همراه بیت نوشتن (0) را ارسال کرده و منتظر پیغام ACK از جانب Slave مورد نظر می ماند. سپس آدرس رجیستر مورد نظر فرستاده شده و بعد از پاسخ Slave نهایتا داده فرستاده می شود. در پایان Master وضعیت توقف (P) را ارسال میکند.
روند خواندن داده از Slave مشابه نوشتن است با این تفاوت که پس از ارسال آدرس رجیستر مورد نظر، شرایط شروع مجددا فرستاده شده و آدر Slave به همراه بیت خوانده (1) نیز فرستاده می شود. سپس داده به Master منتقل شده و Slave را از دریافت داده مطلع میسازد.
ارتباط بیسیم
يکی از تفاوتهای عمده اين پروژه با پروژه های مشابه، تفاوت در نحوه ارسال دستور به پرنده است. در پروژه های ديگر معمولا از راديو کنترل برای ارتباط با پرنده استفاده شده است. در این نوع ارتباط تنها ميتوان به پرنده دستوراتی محدود از طريق کانالهای راديويی آنالوگ فرستاد. همچنين امکان دريافت داده از پرنده بمنظور اطلاع از وضعيت ربات وجود ندارد. اما در اين پروژه براي ارتباط از ماژولهای ارتباط سريال بيسيم استفاده شده است. مزيت استفاده از ماژولهای سريال اين است که ميتوان دستورات پيچيده تری را به پرنده داد. مانند ارسال مشخصات مکان مورد نظر براي انجام ماموريت. همچنين بوسيله اين ارتباط ميتوان از وضعيت پرنده اطلاع پيدا کرد.
در اين پروژه 3 نوع ماژول ارتباط بيسيم آزمايش و بررسی شده است. در ادامه برخي ويژگيهای اصلی اين ماژولها مطرح ميشود.
- ماژول بيسيم HMTR: يک ماژول بيسيم ساده و پر استفاده است و در فرکانسهاي مختلف عرضه ميشود. محدوديتهاي بسيار اين ماژول امکان استفاده از آن در ارتباطات سنگين را از بين ميبرد.
- ماژول بيسيم nRF24L01P: اين ماژول در فرکانس 4 GHz عمل مينمايد و نرخ انتقال اطلاعات در اين ماژول به 2Mbit/s ميرسد.
- ماژول بيسيم :XBee Pro اين ماژول قدرتمند در فرکانس 4 GHz عمل مينمايد. امکان ارسال و دريافت تضمين شده ديتا، طول عمر بالا و … اين ماژول را به يکي از فراگير ترين ابزار ارسال بيسيم داده بدل کرده است.
تصویر زیر ماژول بیسیم XBee Pro را نمایش می دهد.
حسگر ها
براي کنترل وضعيت کوادروتور استفاده از واحد اندازه گيری اينرسی یا Inertia Measurement Unit (IMU) ضروري است. IMU ها انواع مختلفی دارند که هرکدام امکانات مخصوص به خود را دارد. انواع پيشرفته آنها مواردی همچون حذف نويز از ديتای ورودی و محاسبه زاويه را انجام ميدهند. IMU حداقل از حسگرهاي شتاب سنج و ژيروسکوپ تشکيل ميشود. استفاده از IMU آماده دارای هزينه قابل توجهي است. با توجه به اينکه در اين پروژه سعي بر حداقل سازي هزينه ساخت است، استفاده از IMU آماده در دستور کار قرار نگرفته است. بلکه استفاده از حسگرها ترجيح داده شده است. بنابراين در اين پروژه از حسگرهای شتاب سنج و ژيروسکوپ استفاده شده است که در ادامه به بررسی ويژگيهای آنها پرداخته ميشود.
ابتدا از حسگرهاي آنالوگ استفاده شد. مشکلی که با آنها وجود داشت، اين بود که با روشن شدن موتورها – علیرغم اينکه زمين مدار کنترلي با زمين اسپيد کنترلرها هيچ اتصالی ندارد (با استفاده از اپتوکوپلر مدارها ايزوله بودند) – نويز بسيار زيادی روي داده های شتاب سنج ايجاد ميشد که استفاده از اين داده ها را عملا غير ممکن کرده بود.
بنابراين با توجه به اختلاف اندک در قيمتها استفاده از حسگرهای ديجيتال در دستور کار قرار گرفت. در ادامه بصورت دقيقتر اين حسگرها را بررسي خواهيم کرد.
شتاب سنج
حسگر شتاب سنج، شتاب حرکت ربات را اندازه مي گيرد. همچنين با توجه به اينکه شتاب گرانش نيز همواره بروي شتاب سنج اعمال ميشود، شتاب سنج ميتواند زاويه خود با شتاب گرانش را نيز مشخص کند. بنابراين از شتاب سنج ميتوان براي اندازه گيري شيب ربات يا به عبارت بهتر زاويه آن نسبت به خط افق استفاده کرد.
شتاب سنجهای تک محوره تنها در يک جهت ميتوانند شتاب را اندازه گيری کنند. اگر هدف اندازه گيري شيب باشد، با توجه به اينکه ممکن است روي شتاب سنج علاوه بر شتاب گرانش، شتاب خطی نيز اثر بگذارد، مقدار اندازه گيری شده توسط شتاب سنج نميتواند دقيق باشد. بنابراين استفاده از شتاب سنجهاي 3 محوره يک انتخاب منطقي است.
در شتاب سنج تک محوره براي اندازه گيري زاويه نسبت به افق داريم:
که در آن A مقدار اندازه گيری شده شتاب و g شتاب جاذبه زمين است.
اما در شتاب سنج 3 محوره داريم:
ويژگي شتاب سنجهاي مورد استفاده در طول اين پروژه را ميتوان در جدول زير مشاهده کرد:
رديف | شتاب سنج | نوع | حداکثر شتاب قابل اندازه گيري |
1 | ADXL 330 | آنالوگ | 3g |
2 | ADXL 335 | آنالوگ | 3g |
3 | ADXL 345 | ديجيتال | 16g |
4 | MMA7260QT | آنالوگ | 6g |
ژیروسکوپ
ژيروسکوپ از اجزا اصلي سامانه های هدايت اينرسي است و براي اندازهگيری سرعت دورانی استفاده ميشود. لزوم بکارگيری اين وسيله از شتاب سنج بسيار بيشتر است. تا جايی که برخي برای کنترل وضعيت کوادروتور فقط از ژيروسکوپ استفاده کرده اند.
طي اين پروژه از دو حسگر ژيروسکوپ استفاده شده که ويژگي آنها در جدول زير آمده است.
رديف | شتاب سنج | نوع | حداکثر سرعت دوراني قابل اندازه گيري |
1 | ITG 3200 | ديجتال | 2000 deg/s |
2 | Py 503 | آنالوگ | 600 deg/s |
فیلتر کردن خروجی حسگر ها
داده حسگرها – حتی حسگرهای ديجيتال – معمولا با نويز همراه است. بدون حذف نويز از داده ها استفاده از آنها بسيار مشکل است. بنابراين بايد با توجه به روشهاي موجود اقدام به فيلتر کردن اين داده ها نمود. بدين منظور ابتدا فيلتر هايي همچون فيلتر ميانگين و ميانه مورد بررسی قرار گرفت. عمده مشکل اين روش ها اين است که نياز به چندين نمونه داده دارند تا عمليات خود را انجام دهند. بنابراين در سيستمهای Real Time کاربرد زيادي ندارند. البته روشهاي بهبود يافته اي همچون الگوريتم ميانگين متحرک (Moving Average Algorithm) عملکرد بهتری دارند اما اين روشها هم نياز به چندين نمونه از داده های ورودی دارند.
يکی از روشهایی که نياز به دنباله ای از داده ها جهت پيشبينی وضعيت کنونی ندارد، فيلتر کالمن است. در این روش حالت کنونی سامانه باتوجه به حالت قبلی و ورودی جدید تخمین زده می شود. بنابراین فیلتر کالمن را میتوان یک الگوریتم بازگشتی دانست.
رابطه زیر چگونگی تخمین حالت جدید سامانه را مشخص می کند.
که در آن X حالت سامانه است که توسط فیلتر کالمن تخمین زده شده. اندیس i نشانگر مرحله اعمال فیلتر است. x ورودی سامانه است که در اینجا داده خوانده شده توسط حسگر ها است.K بهره کالمن (Kalman Gain) است و از رابطه زیر محاسبه می شود.
که در آن R و Q مربوط به مقادیر نویز در سامانه است.P کواریانس خطای تخمین است و از رابطه زیر محاسبه می شود.
روش کالمن بعنوان فيلتر انتخاب شد. در ادامه نتايج حاصل از اعمال فيلتر کالمن بررسی شده است.
با روشن شدن موتورها، لرزش ايجاد شده توسط موتورها باعث ايجاد نوسان در داده حسگرها ميکند. عليرغم اينکه اين نوسانات طبيعي ميباشد، اما براي سيستم کنترل عاملی مزاحم است. با توجه به آزمايشهای انجام شده در اين پروژه، مشخص شد که با اعمال دوباره فيلتر کالمن باعث از بين رفتن اين نوسانات نيز ميشود.
لینک های مفید:
دیدگاهتان را بنویسید