فهرست مطالب:

لغزنده دوربین ردیابی شی با محور چرخشی. چاپ سه بعدی و ساخته شده بر روی کنترلر موتور RoboClaw DC و آردوینو: 5 مرحله (همراه با تصاویر)
لغزنده دوربین ردیابی شی با محور چرخشی. چاپ سه بعدی و ساخته شده بر روی کنترلر موتور RoboClaw DC و آردوینو: 5 مرحله (همراه با تصاویر)

تصویری: لغزنده دوربین ردیابی شی با محور چرخشی. چاپ سه بعدی و ساخته شده بر روی کنترلر موتور RoboClaw DC و آردوینو: 5 مرحله (همراه با تصاویر)

تصویری: لغزنده دوربین ردیابی شی با محور چرخشی. چاپ سه بعدی و ساخته شده بر روی کنترلر موتور RoboClaw DC و آردوینو: 5 مرحله (همراه با تصاویر)
تصویری: سخنرانی جدید استاد رائفی پور، با روایتی جذاب از جنگ قدرت ها در آخرالزمان! 2024, ژوئن
Anonim
Image
Image
طراحی سخت افزار + ساخت + چاپ سه بعدی
طراحی سخت افزار + ساخت + چاپ سه بعدی

پروژه های Fusion 360 »

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

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

فایل های چاپ CAD/ 3D در اینجا موجود است

فایل Arduino Code در اینجا موجود است

این پروژه حول دو موتور DC براش دار و کنترل کننده Basic Micro Roboclaw Motor می چرخد. این کنترل کننده موتور می تواند موتورهای DC براش را به یک سروو برتر با دقت موقعیت فوق العاده ، تن گشتاور و 360 درجه چرخش کامل تبدیل کند. بعداً در این باره بیشتر.

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

مواد-

  • میله های رزوه دار 2x 1 متر m10 برای اتصال همه قطعات استفاده می شود
  • مهره 8x M10 برای اتصال قطعات به میله های رزوه دار
  • میله های فولادی صاف 8x2 میلی متری به طول 95 سانتی متر برای کشیدن لغزنده
  • 4 بار بلبرینگ lm8uu برای کشیدن لغزنده بر روی میله های فولادی
  • مهره های 4x 10 میلی متر m3 برای نصب موتور
  • 2 عدد بلبرینگ اسکیت برد (قطر خارجی 22 میلی متر ، قطر داخلی 8 میلی متر) برای محور چرخشی
  • بلبرینگ 1x 15 میلی متر برای قسمت بیکار
  • پیچ 1x 4 سانتیمتر m4 با مهره قفل m4 برای نصب بلبرینگ بیکار به قسمت چاپ سه بعدی بیکار.
  • دنده 20 دندانه با قطر داخلی 4 میلی متر برای موتور کشویی. قرقره دقیق چندان مهم نیست زیرا موتور DC شما باید برای گشتاور کافی تنظیم شود. فقط مطمئن شوید که همان ارتفاع کمربند شما باشد
  • کمربند GT2 به طول 2 متر. دوباره می توانید از هر کمربندی استفاده کنید به شرطی که با ارتفاع دندان های قرقره شما مطابقت داشته باشد.

الکترونیک

  • 2 * موتورهای DC گیربکس دار با رمزگذار (یکی حرکت جانبی را کنترل می کند ، در حالی که دیگری محور چرخش را کنترل می کند). در اینجا چیزی است که من استفاده کردم. در بخش الکترونیک راهنمای بیشتر در این باره توضیح دهید
  • کنترل موتور RoboClaw DC. (من از کنترلر دوگانه 15 آمپر استفاده کردم زیرا به من اجازه می داد هر دو موتور را با یک کنترلر کنترل کنم)
  • هر آردوینو من از Arduino UNO استفاده کردم
  • باتری/ منبع تغذیه (من از باتری 7.4 ولت 2 سلولی LiPo استفاده کردم)
  • صفحه نمایش (برای نمایش منو. هر صفحه سازگار با U8G کار می کند ، من از این صفحه نمایش 1.3 اینچی OLED استفاده کردم)
  • رمزگذار Rotatry (برای حرکت و پیکربندی گزینه ها در منو)
  • دکمه فیزیکی (برای ایجاد حرکت کشویی)

مرحله 1: طراحی سخت افزار + ساخت + چاپ سه بعدی

الکترونیک
الکترونیک

بعد به سراغ وسایل الکترونیکی برویم. وسایل الکترونیکی جایی است که این پروژه انعطاف پذیری زیادی دارد.

بیایید با هسته این پروژه شروع کنیم- 2 موتور DC برس دار.

به دلایل مختلفی موتورهای DC براش را انتخاب کردم.

  1. سیم کشی و کارکردن موتورهای برس دار در مقایسه با موتورهای پله ای بسیار ساده تر است
  2. موتورهای DC براش بسیار سبک تر از موتورهای DC هستند که مخصوص موتورهای چرخشی بسیار مهم است زیرا این موتور از نظر فیزیکی با دوربین به صورت جانبی حرکت می کند و تا حد امکان نور آن برای جلوگیری از فشار زیاد بر موتور کشویی دوربین اصلی مهم است.

من این موتور DC خاص را انتخاب کردم. این موتور گشتاور بسیار بالایی به من داد که برای جابجایی چنین بار سنگین دوربین ضروری بود. علاوه بر این ، چرخ دنده بالا به این معنی بود که حداکثر دور در دقیقه آهسته است ، به این معنی که می توانم از حرکات کندتر فیلم برداری کنم ، و چرخ دنده بالا نیز منجر به دقت موقعیت بیشتر می شود زیرا یک چرخش 360 درجه محور خروجی به معنی 341.2 شمارش رمزگذار موتور است.

این ما را به کنترل حرکت RoboClaw می رساند. کنترل کننده موتور DC DC Roboclaw دو دستورالعمل ساده از Arduino شما را از طریق دستورات کد ساده می گیرد و تمام پردازش های سنگین و تحویل قدرت را انجام می دهد تا عملکرد موتور شما مطابق برنامه مورد نظر انجام شود. آردوینو می تواند سیگنال هایی را از طریق PWM ، ولتاژ آنالوگ ، سریال ساده یا سریال بسته به Roboclaw ارسال کند. سریال بسته بهترین راه برای رفتن است زیرا به شما امکان می دهد اطلاعات Roboclaw را که برای ردیابی موقعیتی ضروری است ، بازگردانید. در مرحله بعد (برنامه نویسی) عمیق تر وارد قسمت نرم افزاری/برنامه نویسی Roboclaw می شوم.

در اصل ، Roboclaw می تواند یک موتور براش DC را با یک رمزگذار تبدیل کند تا به لطف توانایی RoboClaw در کنترل موقعیت ، شبیه سروو شود. اما برخلاف یک سروو سنتی ، اکنون موتور DC برس دار شما گشتاور بسیار بیشتری دارد و به دلیل دنده موتور بالا دقت موقعیت بیشتری دارد و مهمتر از همه ، موتور DC شما می تواند به طور مداوم در 360 درجه بچرخد که هیچ یک از سرووهای سنتی نمی تواند این کار را انجام دهد.

قسمت الکترونیکی بعدی صفحه است. برای صفحه نمایش من ، این پنل OLED را به دلیل اندازه و کنتراست بالا انتخاب کردم. این کنتراست بالا باورنکردنی است و استفاده از صفحه نمایش را در نور مستقیم خورشید بسیار آسان می کند در حالی که نور زیادی از خود خارج نمی کند که می تواند با یک عکس تاریک احتمالی تداخل داشته باشد. این صفحه را می توان به راحتی با یک صفحه نمایش سازگار با U8G جایگزین کرد. لیست کامل صفحه های سازگار در اینجا موجود است. در واقع این پروژه عمداً در اطراف کتابخانه U8G کدگذاری شده است ، بنابراین سازندگان DIY مانند شما انعطاف پذیری بیشتری در قسمت های آنها دارند.

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

مرحله 3: برنامه نویسی لغزنده دوربین

برنامه نویسی لغزنده دوربین
برنامه نویسی لغزنده دوربین
برنامه نویسی لغزنده دوربین
برنامه نویسی لغزنده دوربین

برنامه نویسی سخت ترین چالش این پروژه بود. می بینید ، از ابتدا می خواستم لغزنده از روی صفحه قابل کنترل باشد. برای سازگاری این پروژه با هرچه بیشتر صفحه نمایش ، باید از کتابخانه U8Glib برای آردوینو استفاده می کردم. این کتابخانه از بیش از 32 صفحه پشتیبانی می کند. با این حال ، کتابخانه U8Glib از یک حلقه تصویر برای ترسیم منو روی صفحه استفاده کرد و این با توانایی آردوینو در جمع آوری همزمان اطلاعات مربوط به موقعیت دوربین که برای عملکرد محاسبه زاویه دوربین مورد نیاز بود ، مغایرت داشت (این مورد در چند پاراگراف بعدی آورده شده است.) U8Glib2 با استفاده از چیزی به نام گزینه بافر تمام صفحه جایگزینی برای حلقه تصویر دارد ، اما کتابخانه حافظه زیادی را مصرف می کند و با توجه به محدودیت های حافظه Arduino Uno ، تطبیق بقیه کد را دشوار می کند. این بدان معناست که من با U8G گیر کرده ام و باید با جلوگیری از بروزرسانی صفحه در هر زمان که لغزنده در حال حرکت است و آردوینو نیاز به جمع آوری داده های موقعیتی از Roboclaw دارد ، این مشکل را حل کنم. همچنین مجبور شدم لغزنده را وادار به حرکت در خارج از حلقه منو کنم ، زیرا هنگامی که وارد زیر منوها می شوم ، در داخل حلقه تصویر قرار می گیرم ، و نوار لغزنده آنطور که باید کار نمی کند. من همچنین با داشتن یک دکمه فیزیکی جداگانه حرکت اسلایدر را از این مسئله دور کردم.

بعد بیایید در مورد عنصر ردیابی چرخشی صحبت کنیم. ادغام این بخش بسیار پیچیده به نظر می رسد ، اما در واقع بسیار ساده است. پیاده سازی برای این تحت تابع "motor ()" در داخل کد آردوینو من است. اولین قدم این است که یک شبکه 2 بعدی بسازید و تصمیم بگیرید که شیئی که می خواهید ردیابی شود در کجا قرار دارد. بر اساس آن می توانید مثلثی را به محل فعلی خود ترسیم کنید. می توانید مکان فعلی خود را از مقدار رمزگذار موتور دریافت کنید. اگر می خواهید موقعیت شی مورد نظر را در cm/mm پیکربندی کنید ، باید مقدار رمزگذار خود را به مقدار cm/mm ترجمه کنید. این را می توان به سادگی با حرکت دادن نوار لغزنده دوربین 1 سانتی متری و اندازه گیری افزایش ارزش رمزگذار انجام داد. می توانید این مقدار را در بالای کد در زیر متغیر encoder_mm وارد کنید.

در ادامه ، اکنون ما از تابع مماس معکوس برای بدست آوردن زاویه ای که دوربین باید رو به آن باشد تا به سمت شیء شما استفاده کند ، استفاده می کنیم. مماس معکوس در ضلع مخالف و مجاور مثلث قرار می گیرد. طرف مقابل مثلث هرگز تغییر نمی کند زیرا فاصله y از نوار لغزنده شما تا شی است. با این حال ، قسمت مجاور اسلایدر دوربین تغییر می کند. این ضلع مجاور را می توان با گرفتن موقعیت x جسم و کم کردن موقعیت فعلی آن از آن محاسبه کرد. همانطور که نوار لغزنده در محدوده حرکت خود حرکت می کند ، Arduino را در مقدار رمزگذار به روز می کند. آردوینو به طور مکرر این مقدار رمزگذار را به مقدار موقعیت cm/mm x تبدیل می کند و سپس طول سمت مجاور را محاسبه می کند و در نهایت زاویه ای را که دوربین همیشه باید رو به آن باشد به سمت شیء محاسبه می کند.

اکنون که آردوینو ما به طور پویا زاویه دوربین را پردازش می کند ، می توانیم با تبدیل این زاویه به مقدار موقعیتی که موتور چرخشی به آن منتقل می شود ، مقابله کنیم. این ما را به بزرگترین ویژگی RoboClaw برای این پروژه می رساند. با دادن ارزش موقعیتی به Roboclaw ، در اصل می تواند باعث شود موتور براش DC مانند سروو رفتار کند. بر خلاف سروو ، موتور ما دارای گشتاور بیشتری است ، دقت بسیار بالاتری دارد و همچنین می تواند 360 درجه بچرخد.

کد آردوینو برای انتقال Roboclaw به موقعیت خاصی به شرح زیر است:

roboclaw. SpeedAccelDeccelPositionM1 (آدرس ، "سرعت" ، "شتاب" ، "کاهش سرعت" ، "موقعیتی که می خواهید به آن بروید" ، 1) ؛

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

RoboClaw همچنین به من توانایی تنظیم عوامل دیگر مانند شتاب ، کاهش سرعت و مقادیر PID را داد. این امر به من اجازه داد تا حرکت محور چرخشی را به ویژه هنگامی که تغییرات زاویه بسیار کوچک هستند و حرکت تند و تیز بدون مقدار P 'D' بالا اضافه می کنم ، هموار کنم. همچنین می توانید مقادیر PID خود را از طریق برنامه رومیزی Roboclaw تنظیم کنید.

مرحله 4: عملکرد لغزنده دوربین

عملکرد لغزنده دوربین
عملکرد لغزنده دوربین

اکنون به قسمت سرگرم کننده ، کار با لغزنده می رسیم. منو دارای 4 زبانه اصلی است. برگه بالا به کنترل سرعت اختصاص داده شده است. ردیف وسط منو شامل زبانه هایی برای پیکربندی موقعیت X & Y شی ردیابی شده در میلی متر است و همچنین اگر می خواهیم نوار لغزنده بچرخد و شیء ما را دنبال کند یا فقط یک حرکت کشویی ساده را بدون چرخش انجام دهد ، پیکربندی کنید. چرخاندن رمزگذار چرخشی به ما اجازه می دهد تا در گزینه های مختلف منوها حرکت کنیم. برای پیکربندی هر یک از گزینه ها ، به گزینه بروید و رمزگذار چرخشی را فشار دهید. پس از فشردن ، چرخاندن رمزگذار چرخشی ، مقدار زیر منوی برجسته را تغییر می دهد تا اینکه در منو مرور شود. هنگامی که به مقدار دلخواه خود رسیدید ، می توانید دوباره روی رمزگذار چرخشی کلیک کنید. اکنون شما به منوی اصلی بازگشته اید و می توانید بین برگه های مختلف حرکت کنید. پس از آماده شدن ، کافی است دکمه رفتن را در کنار صفحه فشار دهید و نوار لغزنده کارهای خود را انجام می دهد!

اطمینان حاصل کنید که پس از اتمام کار با لغزنده دوربین ، دوربین در موقعیت "خانه" قرار گرفته است: سمت لغزنده ای که شروع به کار کرد. دلیل این امر این است که رمزگذار موتور یک رمزگذار مطلق نیست ، به این معنی که Roboclaw/Arduino نمی تواند تشخیص دهد کجا رمزگذار است. آنها فقط می توانند بگویند که رمزگذار از آخرین بار روشن شده چقدر تغییر کرده است. این بدان معناست که وقتی نوار لغزنده دوربین را خاموش می کنید ، لغزنده موقعیت لغزنده را "فراموش" می کند و رمزگذار را روی 0 تنظیم می کند. بنابراین ، اگر نوار لغزنده خود را در طرف دیگر خاموش کنید ، هنگام روشن کردن آن ، لغزنده سعی کنید بیشتر از لبه حرکت کرده و به دیوار کشویی برخورد کنید. این رفتار رمزگذار نیز به همین دلیل است که دوربین پس از هر حرکت اسلاید دوربین ، زاویه چرخش خود را بازنشانی می کند. محور چرخشی همچنین از خود در برابر برخورد با انتهای دامنه حرکتی خود محافظت می کند.

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

مرحله 5: افکار نهایی + پیشرفتهای آینده

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

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

سرانجام ، اگر نسخه 2.0 را تهیه می کردم ، در اینجا برخی از پیشرفت هایی که می توانم انجام دهم وجود دارد

  1. نسبت دنده بالاتر برای موتور محور چرخشی. نسبت دنده بالاتر به این معنی است که می توانم حرکتهای کوچک دقیق تری انجام دهم. این امر به ویژه زمانی اهمیت دارد که دوربین از جسم شما دور باشد و زاویه دوربین شما بسیار کند تغییر کند. در حال حاضر ، موتور من زیاد بالا نمی رود و هنگامی که لغزنده دوربین خیلی آهسته کار می کند یا وقتی که زاویه چرخش بسیار کمی تغییر می کند ، حرکت تند و تندی ایجاد می کند. افزودن مقدار DID بالا به من کمک کرد تا از شر این مشکل خلاص شوم ، اما به قیمت دقت کمی در ردیابی اشیاء کاهش یافته است.
  2. طول مدولار این یک هدف دور از ذهن است ، اما من دوست دارم نوار لغزنده دوربین ماژولار باشد به این معنی که شما به راحتی می توانید طول مسیرهای طولانی تری را برای کشیدن دوربین به آن وصل کنید. این بسیار دشوار است زیرا فرد باید کاملاً هر دو مسیر را تراز کرده و نحوه عملکرد سیستم کمربند را مشخص کند. با این وجود ، این یک ارتقاء عالی خواهد بود!
  3. سفارشی سازی Keyframing من دوست دارم مفهوم حرکات صفحه کلید را به این اسلایدر دوربین معرفی کنم. Keyframing تکنیکی است که معمولاً در تولید ویدئو و صدا استفاده می شود. این می تواند حرکات غیر خطی دوربین را در جایی فعال کند که دوربین به موقعیتی می رسد ، منتظر می ماند ، سپس با سرعت متفاوت به موقعیت دیگری حرکت می کند ، منتظر می ماند ، سپس به موقعیت سوم می رود و غیره.
  4. بلوتوث/ کنترل تلفن بی سیم واقعاً جالب است که بتوانید پارامترهای لغزنده دوربین را به صورت بی سیم پیکربندی کنید و بتوانید نوار لغزنده دوربین را در مکان های سخت دسترسی پیدا کنید. برنامه تلفن همچنین می تواند فرصت هایی را برای یکپارچه سازی فریم های کلیدی ایجاد کند ، همانطور که در پاراگراف گذشته ذکر شد.

برای این آموزش تمام شد. در صورت تمایل می توانید هر گونه س questionsال را در قسمت نظرات زیر قرار دهید.

برای مطالب بیشتر و آموزش های الکترونیکی ، همچنین می توانید کانال YouTube من را در اینجا ببینید.

توصیه شده: