همانطور که در MotoGP Race دیده می شود، موتورسوار در حالی که دوچرخه خود را به سمت چپ و راست کنار گذاشته است، در گوشه ها سوار می شود. اما یک لحظه جالب وجود دارد که موتور به نظر می رسد که به طرفین فرو می ریزد، نماهای جلو به صورت افقی باقی می مانند. چگونه می تواند باشد؟
چنین دوربینی از سیستم GYRO استفاده می کند، جایی که دوربین عمود بر گرانش زمین ثابت می شود.
مرحله 1: دوربین ژیروسکوپی خود را بسازید
ما می توانیم دوربین ژیروسکوپی خود را با استفاده از ماژول های GYRO و ACCELEROMETER بسازیم.
آنها دو ماژول مجزا هستند، از این رو باید از دو ماژول به طور همزمان استفاده کنیم. سپس تراشه ژیروسکوپ و تراشه شتاب سنج را در یک ماژول می سازیم (در یک ماژول دو تراشه وجود دارد). در آخرین نسخه آنها فقط در یک تراشه ساخته می شوند، بنابراین اعوجاج محاسبه حرکت به حداقل می رسد
در این مقاله، ماژول شتابسنج سه محوره و ژیروسکوپ برکآوت – MPU-6050 است که دارای ژیروسکوپ 3 محوره و شتابسنج 3 محوره در یک تراشه، با برق 3.3 ولت تامین میشود.
علاوه بر ماژول MPU6050، ماژول های مشابه زیر نیز قابل استفاده هستند:
• IMU Fusion Board – ADXL345 & IMU3000
• IMU Digital Combo Board – 6 درجه آزادی ITG3200/ADXL345
ماژول MPU6050 با اندازه کوچک 20 میلی متر در 15 میلی متر و ارتفاع 1.6 میلی متر.
اگر از برد متفاوتی نسبت به Arduino Uno R3 استفاده می کنید، پین های SCL و SDA MPU نیز متفاوت هستند:
VDD: +3.3V
VIO: +3.3V
GND: GND
SDA: پین A4 (Arduino Uno، اترنت) / پین 20 (Mega2560، موعد) / پین 2 (Leonardo)
SCL: پین A5 (Arduino Uno، اترنت) / پین 21 (Mega2560, Due) / پین 3 (لئوناردو)
مرحله 2: برنامه نویسی
پس از مونتاژ کامل، اکنون زمان آپلود برنامه در آردوینو است.
این مدار فقط برای راندن سروو در محور X است. با این حال، داده های محور Y و Z هنوز برای ژیروسکوپ و شتاب سنج مربوطه مورد نیاز است. من سعی کردم آنها را با استفاده از محاسبه فیلتر کالمن ترکیب کنم تا خروجی "نویز" از ژیروسکوپ + شتاب سنج را کاهش دهم تا حرکت سروو صاف و بدون حرکت ناخواسته باشد.
کد:
/* GYRO CAMERA - saft7.com Demonstrates auto-leveling Camera Video by using Gyro & Accelerometer with Arduino The circuit: Servo controlled by Arduino, using Gyro and Accelerometer as reference of movement. Created March 12, 2013 by Firmansyah Saftari www.saft7.com This code and complete article can be found at: http://www.saft7.com/ Programming Language: C++ */ #include <Servo.h> Servo xservo; #include <Wire.h> #include "Kalman.h" Kalman kalmanX; Kalman kalmanY; uint8_t IMUAddress = 0x68; // MPU6050 Address
• شتاب سنج سه محوره و شکست ژیروسکوپ – MPU-6050
• آردوینو UNO R3
• سروو دیجیتال (استفاده از سرووی خوب و قدرتمند)
• مینی برد برد
• باتری 9 ولت + سوئیچ
• جعبه و لوازم جانبی دیگر.