انجمن های گفتگوی روبوایکیو

لطفا به سیستم وارد یا ثبت‌نام کنید.

لطفا برای ورود نام کاربری و رمز عبورتان را وارد نمایید

لطفا برای استفاده بهتر از انجمن، ثبت نام کنید!

دیدن ارسال ها

این قسمت به شما امکان مشاهده تمامی پست‌های این کاربر را می‌دهد. توجه کنید که شما پست‌هایی که در قسمت‌های قابل دسترس شما، ارسال شده‌اند را می‌بینید.


نمایش موضوع ها - baran56

صفحه: [1]
1
مترجمان پروژه های آردوینو, رباتیک و مکاترونیک

در این آموزش، خواهیم آموخت که چگونه یک ساخت گیمبال (Gimbal) با آردوینو یا پلتفرم لرزشگیر با سرو موتورها درست کنیم.  گیمبال را با استفاده از یک نرم افزار مدل سازی 3 بعدی طراحی کرده ام. این طرح شامل 3 سرو موتور MG996R برای کنترل 3 محور است و دارای یک پایه است که سنسور MPU6050، آردوینو و باتری روی آن قرار داده می شود.

ساخت گیمبال با آردوینو
می توانید این مدل سه بعدی را همراه با فایل های STL که برای چاپ سه بعدی بکار می رود را در اینجا دانلود کنید:

مدل سه بعدی گیمبال با آردوینو:
فایل STEP مدل سه بعدی گیمبال


دانلود
فایلهای STL  گیمبال

دانلود
با استفاده چاپگر Creality CR-10 3D، همه بخش ها را به صورت 3 بعدی چاپ کردیم و همه بخش ها عالی از آب درآمد.

ساخت گیمبال با آردوینو
سرهم کرن قطعات گیمبال با آردوینو
نصب گیمبال بسیارآسان بود. من با نصب سرو محور قائم( Yaw ) شروع کردم. با استفاده از پیچ و مهره های M3، آن را به پایه محکم کردم.

گیمبال با آردوینو
سپس، با استفاده از همان روش سرو محور طولی(Roll) را محکم کردم. این قطعات مشخصاً به گونه ای طراحی شده اند که به راحتی با سروهای MG996R منطبق شوند.

گیمبال با آردوینو
برای اتصال بخش ها به یکدیگر، از بازوهای(horn) گرد استفاده کردم که به عنوان لوازم جانبی همراه سروها هستند.

گیمبال با آردوینو
ابتدا باید بازوی گرد را با استفاده از دو پیچ به پایه محکم کرده و سپس با یک پیچ دیگر به سرو موتور مذکور متصل کنیم.

ساخت گیمبال با آردوینو
این رویه را برای نصب بقیه اجزا، سرو محور عرضی(Pitch) و پلتفرم بالایی تکرار کردم.

ساخت گیمبال با آردوینو
سپس،برای مرتب کردن سیم های سرو، آنها را از سوراخ های نگه دارنده عبور دادم. سپس سنسور MPU6050 را قرار داده و با استفاده از پیچ و مهره به پایه محکم کردم.

مطلب پیشنهادی:  راه اندازی سنسور اثر هال با آردوینو
ساخت گیمبال با آردوینو
به عنوان منبع تغذیه پروژه، از دو باتری لیتیوم-یون(Li-ion) استفاده کرده و آنها را در نگه دارنده باتری قرار دادم. نگه دارنده باتری را با استفاده از دو پیچ و مهره به پایه محکم کردم.

ساخت گیمبال با آردوینو
باتری های لیتیوم-یون حدود 7.4 ولت را تولید می کنند، اما ما برای تغذیه آردوینو و سروها به  ولتاژ 5 ولت نیاز داریم.

ساخت گیمبال با آردوینو
به همین خاطر از یک مبدل کاهنده استفاده کردم که 7.4 ولت را به 5 ولت تبدیل می کند.

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

ساخت گیمبال با آردوینو
می توانیداجزای مورد نیاز برای آین مقاله آموزشی آردوینو را از لینک های زیر دریافت کنید:

ماژول MPU6050 IMU
موتور سرور مدل MG996R
ماژول منبع تغذیه کاهنده با خروجی 5ولت
برد آردوینو
بردبورد
سیم بردبوردی
در انتها اجزا را به هم چسبانده و سیم ها را دورن پایه قرار داده و با استفاده از درپوش پایین، سیم‌ها را می پوشانم.

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

مدار گیمبال با آردوینو
کد ساخت گیمبال با آردوینو
کد آردوینو برای این مثال، نسخه ویرایش داده شده مثال MPU6050_DMP  از مثال های کتابخانه i2cdevlib نوشته Jeff Rowberg است.

دانلود سورس کد
گیمبال آردوینو DIY | کد پلتفرم لرزشگیر

توضیحات کد: ما از خروجی قابل خواندن yaw، pitch و roll استفاده می کنیم.

// Get Yaw, Pitch and Roll values

#ifdef OUTPUT_READABLE_YAWPITCHROLL

dmpGetQuaternion(&q, fifoBuffer);

dmpGetGravity(&gravity, &q);

dmpGetYawPitchRoll(ypr, &q, &gravity);




// Yaw, Pitch, Roll values - Radians to degrees

ypr[0] = ypr[0] * 180 / M_PI;

ypr[1] = ypr[1] * 180 / M_PI;

ypr[2] = ypr[2] * 180 / M_PI;




// Skip 300 readings (self-calibration process)

if (j <= 300) {

correct = ypr[0]; // Yaw starts at random value, so we capture last value after 300 readings

j++;

}

// After 300 readings

else {

ypr[0] = ypr[0] - correct; // Set the Yaw to 0 deg - subtract the last random Yaw value from the currrent value to make the Yaw 0 degrees

// Map the values of the MPU6050 sensor from -90 to 90 to values suatable for the servo control from 0 to 180

int servo0Value = map(ypr[0], -90, 90, 0, 180);

int servo1Value = map(ypr[1], -90, 90, 0, 180);

int servo2Value = map(ypr[2], -90, 90, 180, 0);




// Control the servos according to the MPU6050 orientation

write(servo0Value);

write(servo1Value);

write(servo2Value);

}

#endif
هنگامی که مقادیر را دریافت می کنیم، ابتدا رادیان را به درجه تبدیل می کنیم.

// Yaw, Pitch, Roll values - Radians to degrees

ypr[0] = ypr[0] * 180 / M_PI;

ypr[1] = ypr[1] * 180 / M_PI;

ypr[2] = ypr[2] * 180 / M_PI;
سپس منتظر مانده یا 300 عمل خواندن را انجام می دهیم، زیرا در این لحطه سنسور هنوز در فرآیند خود-کالیبره سازی(self-calibration) می باشد. همچنین، مقدار Yaw را دریافت کرده که همانند مقادیر Pitch  و Roll ، در آغاز 0 نیست، بلکه همواره یک مقدار تصادفی است.

// Skip 300 readings (self-calibration process)

if (j <= 300) {

correct = ypr[0]; // Yaw starts at random value, so we capture last value after 300 readings

j++;

}
بعد از 300 بار خوانش، ابتدا مقدار Yaw را با تفریق مقدار تصادفی گرفته شده، برابر 0 می کنیم. سپس مقادیر Yaw، Picth و Roll را از -90 تا  +90 درجه، به 0 تا 180 درجه نگاشت می کنیم که برای راه اندازی سروها کاربرد دارد.

// After 300 readings

else {

ypr[0] = ypr[0] - correct; // Set the Yaw to 0 deg - subtract the last random Yaw value from the currrent value to make the Yaw 0 degrees

// Map the values of the MPU6050 sensor from -90 to 90 to values suatable for the servo control from 0 to 180

int servo0Value = map(ypr[0], -90, 90, 0, 180);

int servo1Value = map(ypr[1], -90, 90, 0, 180);

int servo2Value = map(ypr[2], -90, 90, 180, 0);




// Control the servos according to the MPU6050 orientation

write(servo0Value);

write(servo1Value);

write(servo2Value);

}
در نهایت با نوشتن یک تابع، این مقادیر را به عنوان سیگنال های کنترلی به سروها ارسال می کنیم. البته، درصورتی که تنها بخواهید محورهای X و Y را متعادل کرده و از این پلتفرم به عنوان گیمبال دوربین استفاده کنید، ، می توانید سرو محور قائم را غیرفعال سازید.

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

لکنت زبان در نوجوانان: بهترین درمانهای موجود و نکات مهم
36 روش موثر غلبه بر نا امیدی در زندگی (درمان قطعی)
ورزش در خانه کودکان (۴ راه تشویق آنها و ۱۲ فعالیت بسیار مفید)
روش انتخاب بهترین سهام برای خرید در بورس: 3 عامل موثر
آنچه درباره زایمان طبیعی باید بدانیم (۲۰ نکته مهم)




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

2
  ۰
ساخت یک ربات پرنده که شبیه حشرات باشد کار سختیست زیرا معمولا ربات های پرنده با چهار بال وزن زیادی دارند، در عین حال مدل های مجهز به دو بال هم پروازشان منظم نیست. اما محققان دانشگاه کالیفرنیای جنوبی به تحقق این رویا یک قدم نزدیک تر شده اند. آنها رباتی چهار باله به نام +Bee ساخته اند که با چابکی و وقار حشرات واقعی پرواز می کند و وزنش هم از 0.085 گرم فراتر نمی رود. بله درست خواندید، این ربات کمتر از 0.1 گرم وزن دارد.
70 روش برای اجتماعی تر بودن (و بیرون آمدن از انزوا)
اندازه بالش نوزاد چقدر باید باشد؟ چند نکته مهم
چطور از اشتباهاتمان درس بگیریم و این درسها را عملی کنیم؟
۱۰ تا از بهترین اپلیکیشن های بازی برای کودکان (آیفون و اندروید)
چطور سریع با دیگران دوست شویم؟ (31 روش داشتن دوستان زیاد)



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

ربات پرنده کوچک
مدل چهار باله جدید کنار مدل دو باله قدیمی که کنترلشان دشوار بود

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

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

صفحه: [1]