فهرست مطالب:

تثبیت کننده دوربین دستی: 13 مرحله (همراه با تصاویر)
تثبیت کننده دوربین دستی: 13 مرحله (همراه با تصاویر)

تصویری: تثبیت کننده دوربین دستی: 13 مرحله (همراه با تصاویر)

تصویری: تثبیت کننده دوربین دستی: 13 مرحله (همراه با تصاویر)
تصویری: صفر تا صد تنظیمات دوربین آیفون 2024, نوامبر
Anonim
تثبیت کننده دوربین دستی
تثبیت کننده دوربین دستی

معرفی

این راهنمای ایجاد یک دستگاه تثبیت کننده دوربین دستی 3 محور برای GoPro با استفاده از هیئت توسعه Digilent Zybo Zynq-7000 است. این پروژه برای کلاس سیستم عامل های زمان واقعی CPE (CPE 439) توسعه یافته است. تثبیت کننده از سه سروو و یک IMU برای اصلاح حرکت کاربر برای حفظ سطح دوربین استفاده می کند.

قطعات مورد نیاز پروژه

  • هیئت توسعه Digilent Zybo Zynq-7000
  • Sparkfun IMU Breakout - MPU 9250
  • 2 سروت HiTec HS-5485HB (خرید حرکت یا برنامه 180 درجه از 90 تا 180 درجه)
  • 1 HiTec HS-5685MH Servo (خرید حرکت یا برنامه 180 درجه از 90 تا 180 درجه)
  • 2 براکت سروو استاندارد
  • 1 تخته نان
  • 15 سیم جهنده مرد به مرد
  • 4 سیم جهنده مرد به زن
  • چسب گرم
  • گرفتن یا دستگیره
  • رولپلاک چوبی با قطر 5 میلی متر
  • GoPro یا سایر سخت افزارهای نصب و راه اندازی
  • منبع تغذیه با توان خروجی 5 ولت
  • دسترسی به پرینتر سه بعدی

مرحله 1: راه اندازی سخت افزار Vivado

راه اندازی سخت افزار Vivado
راه اندازی سخت افزار Vivado

بیایید با ایجاد طرح بلوک زیربنایی برای پروژه شروع کنیم.

  1. Vivado 2016.2 را باز کنید ، روی نماد "ایجاد پروژه جدید" و روی "بعدی>" کلیک کنید.
  2. نام پروژه خود را گذاشته و روی "بعدی>" کلیک کنید.
  3. پروژه RTL را انتخاب کرده و "بعدی>" را فشار دهید.
  4. در نوار جستجو xc7z010clg400-1 تایپ کنید و سپس قسمت را انتخاب کنید و "بعدی>" و "پایان" را فشار دهید.

مرحله 2: راه اندازی طرح بلوک

اکنون ما با افزودن و راه اندازی Zynq IP Block شروع به ایجاد طرح بلوک می کنیم.

  1. در پنل سمت چپ ، تحت IP Integrator ، روی "ایجاد طرح بلوک" و سپس "OK" کلیک کنید.
  2. در برگه "Diagram" راست کلیک کرده و "Add IP …" را انتخاب کنید.
  3. "ZYNQ7 Processing System" را تایپ کرده و روی گزینه مورد نظر کلیک کنید.
  4. روی بلوک Zynq ظاهر شده دوبار کلیک کنید.
  5. روی "وارد کردن تنظیمات XPS" کلیک کرده و فایل ارائه شده "ZYBO_zynq_def.xml" را وارد کنید.
  6. به "MIO Configuration" بروید و "Application Processor Unit" و تایمرهای فعال Timer 0 و Watchdog را انتخاب کنید.
  7. در همان برگه ، در قسمت "I/O Peripherals" ، ENET 0 را انتخاب کنید (و منوی کشویی را به "MIO 16.. 27" ، USB 0 ، SD 0 ، UART 1 ، I2C 0 تغییر دهید.
  8. در بخش "GPIO" ، GPIO MIO ، ENET Reset ، USB Reset و I2C Reset را بررسی کنید.
  9. اکنون به "پیکربندی ساعت" بروید. در زیر ساعت های فابریک PL ، FCLK_CLK0 را انتخاب کنید. سپس ، روی "OK" کلیک کنید.

مرحله 3: ایجاد بلوک IP سفارشی PWM

این بلوک IP به هیئت مدیره اجازه می دهد تا سیگنال PWM را برای کنترل حرکت سروها ارسال کند. این کار به شدت مبتنی بر آموزش Digitronix نپال بود که در اینجا یافت شد. منطق به منظور کاهش سرعت ساعت اضافه شد تا پالس با سرعت صحیح در حال خروج باشد. بلوک یک عدد از 0 تا 180 می گیرد و آن را به یک پالس از 750-2150 usec تبدیل می کند.

  1. اکنون ، در زبانه Tools در گوشه سمت چپ بالا ، روی "ایجاد و بسته بندی IP …" کلیک کرده و Next را بزنید.
  2. سپس "Create a new AXI4 peripheral" را انتخاب کرده و Next را بزنید.
  3. نام بلوک IP PWM خود را (ما نام آن را pwm_core گذاشتیم) و روی Next و سپس در صفحه بعدی نیز روی Next کلیک کنید.
  4. اکنون روی "ویرایش IP" کلیک کرده و Finish را بزنید. با این کار پنجره جدیدی برای ویرایش بلوک pwm باز می شود.
  5. در برگه "منابع" و در بخش "منابع طراحی" ، "pwm_core_v1_0" را گسترش دهید (نام pwm_core را با نام خود جایگزین کنید) و فایلی را که قابل مشاهده است باز کنید.
  6. کد ارائه شده تحت 'pwm_core_v1_0_S00_AXI.v' را در فایل فشرده در پایین پروژه کپی و جایگذاری کنید. Ctrl + Shift + R و نام "pwm_core" را برای بلوک ip جایگزین کنید.
  7. سپس 'name _v1_0' را باز کرده و کد ارائه شده را در فایل 'pwm_core_v1_0.v' کپی کنید. Ctrl + Shift + R و نام "pwm_core" را جایگزین کنید.
  8. اکنون به برگه "Package IP - name" بروید و "Customization Parameters" را انتخاب کنید.
  9. در این برگه یک نوار زرد در بالا وجود دارد که متن را پیوند داده است. این را انتخاب کنید ، "پارامترهای مخفی" در کادر نشان داده می شود.
  10. حالا به "Customization GUI" بروید و روی Pwm Counter Max راست کلیک کنید و "Edit Parameter…" را انتخاب کنید.
  11. کادرهای "Visible in Customization GUI" و "Specify Range" را علامت بزنید.
  12. منوی کشویی "Type:" را به Range of integers تغییر دهید و حداقل را روی 0 و حداکثر را روی 65535 تنظیم کنید و کادر "Show Range" را علامت بزنید. حالا روی OK کلیک کنید.
  13. Pwm Counter Max را زیر درخت "Page 0" بکشید. اکنون به "بررسی و بسته بندی" بروید و روی دکمه "بسته مجدد IP" کلیک کنید.

مرحله 4: PWM IP Block را به طراحی اضافه کنید

بلوک IP PWM را به طراحی اضافه کنید
بلوک IP PWM را به طراحی اضافه کنید

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

  1. در برگه نمودار راست کلیک کرده و روی "IP Settings…" کلیک کنید. به برگه "مدیریت مخزن" بروید.
  2. روی دکمه سبز بعلاوه کلیک کرده و آن را انتخاب کنید. حالا ip_repo را در File Manager پیدا کرده و آن را به پروژه اضافه کنید. سپس Apply را بزنید و سپس OK کنید.
  3. در برگه نمودار راست کلیک کرده و روی "افزودن IP …" کلیک کنید. نام بلوک IP PWM خود را وارد کرده و آن را انتخاب کنید.
  4. باید یک نوار سبز رنگ در بالای صفحه وجود داشته باشد ، ابتدا "Run Connection Automation" را انتخاب کرده و روی OK کلیک کنید. سپس روی "Run Block Automation" کلیک کرده و روی OK کلیک کنید.
  5. روی بلوک PWM دوبار کلیک کرده و Pwm Counter Max را از 128 به 1024 تغییر دهید.
  6. نشانگر ماوس خود را روی بلوک PWM روی PWM0 ببرید. باید مداد کوچکی وجود داشته باشد که هنگام انجام این کار ظاهر شود. راست کلیک کرده و "Create Port…" را انتخاب کنید و وقتی پنجره ای باز می شود روی OK کلیک کنید. این یک پورت خارجی برای انتقال سیگنال به آن ایجاد می کند.
  7. مرحله 6 را برای PWM1 و PWM2 نیز تکرار کنید.
  8. نماد پیکان دو حلقه ای کوچک در نوار کناری را پیدا کرده و روی آن کلیک کنید. این طرح را بازسازی می کند و طرح بلوک شما باید مانند تصویر بالا باشد.

مرحله 5: HDL Wrapper را پیکربندی کرده و فایل محدودیت ها را تنظیم کنید

HDL Wrapper را پیکربندی کرده و فایل محدودیت ها را تنظیم کنید
HDL Wrapper را پیکربندی کرده و فایل محدودیت ها را تنظیم کنید

ما در حال حاضر قصد داریم طرح سطح بالا را برای Block Design خود ایجاد کنیم و سپس PWM0 ، PWM1 و PWM2 را به پین Pmod در برد Zybo ترسیم کنیم.

  1. به برگه "منابع" بروید. روی فایل طراحی بلوک خود در بخش "منابع طراحی" راست کلیک کرده و روی "ایجاد HDL Wrapper …" کلیک کنید. "Copy generated wrapper to allow user edits" را انتخاب کرده و روی تأیید کلیک کنید. این طرح سطح بالایی را برای طرح بلوک ایجاد شده ایجاد می کند.
  2. Pmod ای که به آن خروجی می دهیم JE است.
  3. در قسمت File ، "افزودن منابع …" و "افزودن یا ایجاد محدودیت" را انتخاب کرده و روی Next کلیک کنید.
  4. روی افزودن فایل ها کلیک کنید و فایل "ZYBO_Master.xdc" موجود را انتخاب کنید. اگر به این پرونده نگاه کنید ، متوجه خواهید شد که همه چیز به جز شش خط "set_property" تحت "## Pmod Header JE" کامنت گذاری نشده است. متوجه خواهید شد که PWM0 ، PWM1 و PWM2 آرگومان این خطوط هستند. آنها به پین 1 ، پین 2 و پین 3 JE Pmod نقشه می دهند.

مرحله 6: ایجاد Bitstream

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

  1. در بخش "Program and Debug" در نوار کناری ، "Generate Bitstream" را انتخاب کنید. این کار باعث ترکیب ، سپس پیاده سازی و سپس ایجاد جریان جریان برای طراحی می شود.
  2. هر گونه خطایی را که ظاهر می شود تصحیح کنید ، اما به طور کلی هشدارها را نمی توان نادیده گرفت.
  3. به File-> Launch SDK بروید و روی OK کلیک کنید. با این کار SDK Xilinx باز می شود.

مرحله 7: راه اندازی پروژه در SDK

این قسمت می تواند کمی ناامید کننده باشد. در صورت شک ، BSP جدیدی بسازید و قدیمی را جایگزین کنید. این باعث صرفه جویی زیادی در زمان اشکال زدایی ما شد.

  1. با بارگیری آخرین نسخه FreeRTOS در اینجا شروع کنید.
  2. با کلیک روی فایل-> وارد کردن ، همه چیز را از بارگیری خارج کرده و FreeRTOS را به SDK وارد کنید و در بخش "عمومی" روی "پروژه های موجود در فضای کار" و سپس روی بعدی کلیک کنید.
  3. در پوشه FreeRTOS به "FreeRTOS/Demo/CORTEX_A9_Zynq_ZC702" بروید. فقط "RTOSDemo" را از این مکان وارد کنید.
  4. اکنون با کلیک روی پرونده-> بسته پشتیبانی جدید برد (Board- Package Support Package) یک بسته پشتیبانی Board (BSP) ایجاد کنید.
  5. "ps7_cortexa9_0" را انتخاب کرده و "lwip141" را علامت زده و روی OK کلیک کنید.
  6. روی پوشه آبی RTOSDemo راست کلیک کرده و "Project References" را انتخاب کنید.
  7. علامت "RTOSDemo_bsp" را بردارید و BSP جدیدی را که ایجاد کردیم بررسی کنید.

مرحله 8: اصلاح کد FreeRTOS

کدی که ارائه می دهیم می تواند به 7 فایل مختلف تفکیک شود. main.c ، iic_main_thread.c ، xil_printfloat.c ، xil_printfloat.h ، IIC_funcs.c ، IIC_funcs.h و iic_imu.h. کد موجود در iic_main_thread.c از کتابخانه Kris Winer اقتباس شده است ، که می توانید آن را در اینجا پیدا کنید. ما عمدتا کد او را برای ترکیب وظایف و کار با برد Zybo تغییر دادیم. ما همچنین عملکردهایی را برای محاسبه تصحیح جهت دوربین اضافه کردیم. ما در چندین عبارت چاپ شده که برای اشکال زدایی مفید هستند ، گذاشتیم. اکثر آنها نظر داده می شوند اما اگر احساس می کنید به آنها نیاز دارید می توانید آنها را کامنت نکنید.

  1. ساده ترین راه برای اصلاح فایل main.c این است که کد را با کد کپی شده از فایل main.c موجود ما جایگزین کنید.
  2. برای ایجاد یک فایل جدید ، روی پوشه src در RTOSDemo راست کلیک کرده و C Source File را انتخاب کنید. نام این فایل را "iic_main_thread.c" بگذارید.
  3. کد را از "iic_main_thread.c" موجود کپی کرده و در فایل تازه ایجاد شده خود جایگذاری کنید.
  4. مراحل 2 و 3 را با فایلهای باقی مانده تکرار کنید.
  5. به آموزش پیوند دادن در gcc نیاز دارد. برای افزودن این مورد به مسیر ساخت ، روی RTOSDemo راست کلیک کرده و "C/C ++ Build Settings" را انتخاب کنید.
  6. یک پنجره جدید باز خواهد شد. به ARM v7 gcc linker-> Libraries بروید. فایل افزودنی کوچک را در گوشه بالا سمت راست انتخاب کرده و عبارت "m" را تایپ کنید. این شامل کتابخانه ریاضی در پروژه خواهد بود.
  7. پروژه را با Ctrl + B بسازید تا همه چیز کار کند. هشدارهای ایجاد شده را بررسی کنید اما ممکن است بتوانید آنها را نادیده بگیرید.
  8. چند مکان وجود دارد که نیاز به اصلاح دارند ، عمدتا انحراف مغناطیسی مکان فعلی شما. نحوه تغییر این مورد را در قسمت کالیبراسیون آموزش توضیح خواهیم داد.

مرحله 9: چاپ سه بعدی برای تثبیت کننده

چاپ سه بعدی برای تثبیت کننده
چاپ سه بعدی برای تثبیت کننده

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

  1. از فایل های ارائه شده برای چاپ بازو و براکت نگهدارنده برای GoPro استفاده کنید.
  2. شما باید داربست را به فایل.stl اضافه کنید.
  3. پس از چاپ ، قسمتهای داربست اضافی را کوتاه یا تمیز کنید.
  4. در صورت تمایل می توانید رولپلاک چوبی را با یک قطعه چاپ سه بعدی جایگزین کنید.

مرحله 10: مونتاژ قطعات

مونتاژ قطعات
مونتاژ قطعات

این چندین قسمت برای مونتاژ تثبیت کننده است. براکت های خریداری شده دارای 4 پیچ خودکار و 4 پیچ با مهره هستند. از آنجا که 3 سروو وجود دارد ، یکی از شاخ های سرو باید از قبل ضربه زده شود تا 2 پیچ به هم متصل شوند.

  1. 8 پین را روی شکست IMU ، 4 عدد در هر طرف ، لحیم کنید.
  2. IMU به براکت نگهدارنده چاپ سه بعدی برای GoPro در مرکز براکت متصل شده است.
  3. براکت را طوری جهت دهید که سوراخ های نصب سروو در سمت چپ شما باشد. IMU را در نزدیکترین لبه به شما قرار دهید ، در حالی که پین ها از لبه آویزان شده اند. سپس ، Mount GoPro را در بالای IMU قرار دهید ، IMU و Mount را در محل براکت بچسبانید.
  4. یک HS-5485HB را به براکت سروو متصل کنید که در بازوی چاپ سه بعدی یکپارچه شده است.
  5. براکت GoPro را به سروو متصل به بازو وصل کنید ، مطمئن شوید که سروو طوری تنظیم شده است که در وسط دامنه حرکت خود قرار دارد.
  6. در مرحله بعد ، سروو HS-5685MH را به یک براکت سروو وصل کنید. سپس با یکی از پیچ ها روی شاخ سروو ضربه بزنید. حالا سروو را به پایین آخرین براکت سروو وصل کنید.
  7. حالا آخرین سروو را به براکتی که سروو HS-5685MH در آن پیچ خورده است وصل کنید. سپس بازو را در این سروو پیچ کنید ، مطمئن شوید که بازو پیچ خورده است تا بتواند 90 درجه در هر جهت حرکت کند.
  8. برای اتمام ساخت گیمبال ، یک قطعه کوچک از رولپلاک چوبی را اضافه کنید تا بین براکت GoPro و بازوی چاپ سه بعدی متصل شود. شما اکنون تثبیت کننده را مونتاژ کرده اید.
  9. در نهایت ، می توانید یک دسته متصل به براکت سروو پایین را اضافه کنید.

مرحله 11: اتصال Zybo به Stabilizer

اتصال Zybo به Stabilizer
اتصال Zybo به Stabilizer

هنگام انجام این کار باید به چند نکته توجه کرد. شما می خواهید مطمئن شوید که 5 ولت منبع تغذیه هرگز وارد برد Zybo نشود ، زیرا این امر باعث ایجاد مشکل در برد می شود. اطمینان حاصل کنید که جهنده های خود را دوبار بررسی کنید تا مطمئن شوید سیم ها روشن نمی شوند.

  1. برای اتصال Zybo به استابلایزر به 15 جهنده نر به نر و 4 پرش مرد به ماده نیاز دارید.
  2. ابتدا ، دو پرش به منبع تغذیه 5 ولت خود در امتداد ریل های + و - تخته نان متصل کنید. اینها نیرو را برای سروها تأمین می کنند.
  3. سپس ، 3 جفت بلوز را به ریل های + و - تخته نان متصل کنید. اینها قدرت هر یک از سروها خواهد بود.
  4. انتهای دیگر جامپرهای + و - را به هر یک از سروها وصل کنید.
  5. یک بلوز بین راه آهن ورق ورق و یکی از پایه های GND در Zybo JE Pmod را وصل کنید (به مرحله 5 مراجعه کنید). این امر زمینه مشترکی بین برد Zybo و منبع تغذیه ایجاد می کند.
  6. سپس یک سیم سیگنال را به پین 1 ، پین 2 و پین 3 JE Pmod وصل کنید. پین 1 نقشه را به سروو پایین ، پین 2 را به سروو در انتهای بازو و پین 3 نقشه را به سروو میانی وصل کنید.
  7. 4 سیم زن را به پین های GND ، VDD ، SDA و SCL در شکست IMU وصل کنید. GND و VDD در پین های JF به GND و 3V3 متصل می شوند. پین SDA را به پین 8 و SCL را به پین 7 در JF وصل کنید (تصویر مرحله 5 را ببینید).
  8. در نهایت ، کامپیوتر را با استفاده از کابل micro usb به برد وصل کنید. این امر به شما امکان می دهد ارتباط uart داشته باشید و به شما امکان برنامه ریزی برد Zybo را می دهد.

مرحله 12: تصحیح شمال واقعی

تصحیح شمال واقعی
تصحیح شمال واقعی

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

  1. برای اصلاح تفاوت از شمال مغناطیسی و واقعی ، باید از ترکیب دو سرویس Google Maps و ماشین حساب میدان مغناطیسی NOAA استفاده کنید.
  2. از Google Maps برای پیدا کردن عرض و طول جغرافیایی مکان فعلی خود استفاده کنید.
  3. طول و عرض جغرافیایی فعلی خود را گرفته و آن را به ماشین حساب میدان مغناطیسی وصل کنید.
  4. آنچه برگشت داده می شود ، میل مغناطیسی است. این محاسبه را به کد خط 378 "iic_main_thread.c" وصل کنید. اگر میل شما شرقی است ، از مقدار yaw کم کنید ، اگر غرب باشد ، به مقدار yaw اضافه کنید.

*عکس از راهنمای اتصال MPark 9250 Sparkfun گرفته شده است ، که در اینجا یافت می شود.

مرحله 13: اجرای برنامه

اجرای برنامه
اجرای برنامه

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

  1. ابتدا ، همه را در SDK بسازید ، این را می توان با فشار دادن Ctrl + B انجام داد.
  2. مطمئن شوید منبع تغذیه روشن است و روی 5 ولت تنظیم کنید. مجدداً بررسی کنید که همه سیمها به محل مناسب خود می روند.
  3. سپس ، برای اجرای برنامه ، مثلث سبز رنگ را در مرکز بالای نوار وظیفه فشار دهید.
  4. هنگامی که برنامه اجرا می شود ، سرویس ها همه به 0 موقعیت خود باز می گردند ، بنابراین آماده حرکت دکل باشید. پس از شروع برنامه ، سرووها به موقعیت 90 درجه خود باز می گردند.
  5. یک عملکرد کالیبراسیون مغناطیس سنج اجرا می شود و مسیرها به پایانه UART چاپ می شوند ، که می توانید از طریق یک مانیتور سریال مانند "putty" یا مانیتور سریال ارائه شده در SDK به آن متصل شوید.
  6. کالیبراسیون باعث می شود که دستگاه را در شکل 8 به مدت 10 ثانیه حرکت دهید. می توانید این مرحله را با اظهار نظر در خط 273 "iic_main_thread.c" حذف کنید. اگر نظر می دهید باید خطوط 323 - 325 "iic_main_thread.c" را کامنت نکنید. این مقادیر در ابتدا از کالیبراسیون مغناطیس سنج بالا جمع آوری شده و سپس به عنوان مقادیر متصل می شوند.
  7. پس از کالیبراسیون ، کد تثبیت اولیه می شود و دستگاه دوربین را ثابت نگه می دارد.

توصیه شده: