Съдържание:

Ръчен стабилизатор на камерата: 13 стъпки (със снимки)
Ръчен стабилизатор на камерата: 13 стъпки (със снимки)

Видео: Ръчен стабилизатор на камерата: 13 стъпки (със снимки)

Видео: Ръчен стабилизатор на камерата: 13 стъпки (със снимки)
Видео: Скрытая камера Xiaomi 2024, Юли
Anonim
Ръчен стабилизатор на камерата
Ръчен стабилизатор на камерата

Въведение

Това е ръководство за създаване на 3-осна ръчна камера за стабилизиране на камера за GoPro с помощта на Digilent Zybo Zynq-7000 Board за развитие. Този проект е разработен за клас операционни системи 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 или друг фотоапарат и монтажен хардуер
  • Захранване, способно да извежда 5V.
  • Достъп до 3D принтер

Стъпка 1: Настройка на хардуера на Vivado

Настройка на хардуера на Vivado
Настройка на хардуера на Vivado

Нека започнем със създаването на основния блоков дизайн за проекта.

  1. Отворете Vivado 2016.2, щракнете върху иконата „Създаване на нов проект“и кликнете върху „Напред>“.
  2. Дайте име на проекта си и кликнете върху „Напред>“.
  3. Изберете проекта RTL и натиснете "Напред>".
  4. Въведете в лентата за търсене xc7z010clg400-1 и след това изберете частта и натиснете "Напред>" и "Край".

Стъпка 2: Настройване на дизайн на блокове

Сега ще започнем да генерираме дизайна на блока, като добавим и настроим Zynq IP блок.

  1. В левия панел, под IP Integrator, щракнете върху „Създаване на дизайн на блок“и след това върху „OK“.
  2. Щракнете с десния бутон в раздела „Диаграма“и изберете „Добавяне на IP …“.
  3. Въведете „Обработваща система ZYNQ7“и щракнете върху избора.
  4. Щракнете двукратно върху появилия се блок Zynq.
  5. Щракнете върху „Импортиране на XPS настройки“и импортирайте предоставения файл „ZYBO_zynq_def.xml“.
  6. Отидете на „MIO Configuration“и изберете „Application Processor Unit“и активирайте Timer 0 и Watchdog timers.
  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. Сега отидете на „Конфигурация на часовника“. Изберете FCLK_CLK0 под PL Часовници от плат. След това щракнете върху „OK“.

Стъпка 3: Създайте персонализиран PWM IP блок

Този IP блок позволява на платката да изпраща PWM сигнал, за да контролира движението на сервомоторите. Работата е силно базирана на урока на Digitronix Nepal, намерен тук. Добавена е логика за забавяне на часовника, така че импулсът да се извежда с правилната скорост. Блокът приема число от 0 до 180 и го преобразува в импулс от 750-2150 usec.

  1. Сега, в раздела Инструменти близо до горния ляв ъгъл, щракнете върху „Създаване и пакетиране на IP …“и натиснете Напред.
  2. След това изберете „Създаване на ново периферно устройство AXI4“и натиснете Напред.
  3. Назовете вашия PWM IP блок (ние го нарекохме pwm_core) и щракнете върху Напред и след това щракнете върху Напред и на следващата страница.
  4. Сега кликнете върху „Редактиране на IP“и натиснете Край. Това ще отвори нов прозорец за редактиране на pwm блока.
  5. В раздела „Източници“и под „Източници на дизайн“разгънете „pwm_core_v1_0“(заменете pwm_core с вашето име) и отворете файла, който става видим.
  6. Копирайте и поставете кода, предоставен под „pwm_core_v1_0_S00_AXI.v“в zip файла в долната част на проекта. Ctrl + Shift + R и заменете „pwm_core“с вашето име за ip блока.
  7. След това отворете „name _v1_0“и копирайте предоставения код във файла „pwm_core_v1_0.v“. Ctrl + Shift + R и заменете 'pwm_core' с име.
  8. Сега отворете раздела „Име на пакета - име“и изберете „Параметри за персонализиране“.
  9. В този раздел в горната част ще има жълта лента, която има свързан текст. Изберете това и „Скрити параметри“ще се покаже в полето.
  10. Сега отидете на „Персонализиран графичен интерфейс“и щракнете с десния бутон върху Pwm Counter Max изберете „Редактиране на параметър…“.
  11. Поставете отметки в полетата „Видимо в потребителския интерфейс за персонализиране“и „Посочете диапазон“.
  12. Променете падащото меню „Тип:“на Обхват от цели числа и задайте минимум на 0 и максимум на 65535 и поставете отметка в квадратчето „Показване на обхвата“. Сега щракнете върху OK.
  13. Плъзнете Pwm Counter Max под дървото „Page 0“. Сега отидете на „Преглед и пакетиране“и щракнете върху бутона „Повторно пакетиране на IP“.

Стъпка 4: Добавете PWM IP блок към дизайна

Добавете PWM IP блок към Design
Добавете PWM IP блок към Design

Ще добавим IP блока към дизайна на блока, за да позволим на потребителя достъп до PWM IP блока през процесора.

  1. Щракнете с десния бутон в раздела диаграма и кликнете върху „IP настройки …“. Придвижете се до раздела „Мениджър на хранилища“.
  2. Щракнете върху зеления бутон плюс и го изберете. Сега намерете ip_repo във файловия мениджър и го добавете към проекта. След това натиснете Приложи и след това ОК.
  3. Щракнете с десния бутон върху раздела диаграма и кликнете върху „Добавяне на IP …“. Въведете името на вашия PWM IP блок и го изберете.
  4. Трябва да има зелена лента в горната част на екрана, първо изберете "Run Connection Automation" и щракнете върху OK. След това щракнете върху „Run Block Automation“и щракнете върху OK.
  5. Щракнете двукратно върху блока PWM и променете Pwm Counter Max на 1024 от 128.
  6. Задръжте курсора на мишката върху PWM0 на блока PWM. Трябва да има малък молив, който да се появи, когато го направите. Щракнете с десния бутон и изберете „Създаване на порт …“и щракнете върху OK, когато се отвори прозорец. Това създава външен порт, към който да се предава сигналът.
  7. Повторете стъпка 6 и за PWM1 и PWM2.
  8. Намерете малката кръгла икона с двойна стрелка в страничната лента и щракнете върху нея. Той ще регенерира оформлението и дизайнът на вашия блок трябва да изглежда като снимката по -горе.

Стъпка 5: Конфигурирайте HDL обвивка и настройте файл с ограничения

Конфигурирайте HDL обвивка и настройте файл с ограничения
Конфигурирайте HDL обвивка и настройте файл с ограничения

Сега ще генерираме дизайн на високо ниво за нашия блоков дизайн и след това ще картографираме PWM0, PWM1 и PWM2 към Pmod щифтове на дъската Zybo.

  1. Отидете в раздела „Източници“. Щракнете с десния бутон върху файла за проектиране на блокове под „Източници на дизайн“и кликнете върху „Създаване на HDL обвивка …“. Изберете „Копиране на генерирана обвивка, за да разрешите потребителски редакции“и щракнете върху OK. Това генерира дизайн на високо ниво за създадения от нас блок дизайн.
  2. Pmod, към който ще извеждаме, е JE.
  3. Под Файл изберете „Добавяне на източници …“и изберете „Добавяне или създаване на ограничения“и щракнете върху Напред.
  4. Щракнете върху добавяне на файлове и изберете включения файл „ZYBO_Master.xdc“. Ако погледнете в този файл, ще забележите, че всичко не е коментирано, с изключение на шест реда "set_property" под "## Pmod Header JE". Ще забележите, че PWM0, PWM1 и PWM2 са аргументите за тези редове. Те се съпоставят с Pin 1, Pin 2 и Pin 3 на JE Pmod.

Стъпка 6: Генериране на Bitstream

Трябва да генерираме битовия поток, за да може хардуерният дизайн да се експортира в SDK, преди да продължим.

  1. Под „Програма и отстраняване на грешки“в страничната лента изберете „Генериране на поток от битове“. Това ще стартира синтез, след това внедряване и след това ще генерира битовия поток за дизайна.
  2. Коригирайте всички грешки, които се появяват, но предупрежденията обикновено могат да бъдат игнорирани.
  3. Отидете на Файл-> Стартиране на SDK и щракнете върху OK. Това ще отвори SDK на Xilinx.

Стъпка 7: Настройване на проект в SDK

Тази част може да бъде малко разочароваща. Когато се съмнявате, направете нова BSP и сменете старата. Това ни спести куп време за отстраняване на грешки.

  1. Започнете, като изтеглите най -новата версия на FreeRTOS тук.
  2. Извлечете всичко от изтеглянето и импортирайте FreeRTOS в SDK, като щракнете върху Файл-> Импортиране и под „Общи“щракнете върху „Съществуващи проекти в работно пространство“, след което щракнете върху Напред.
  3. Отидете на „FreeRTOS/Demo/CORTEX_A9_Zynq_ZC702“в папката FreeRTOS. Импортирайте само „RTOSDemo“от това място.
  4. Сега генерирайте пакет за поддръжка на борда (BSP), като щракнете върху Файл-> Нов пакет за поддръжка на борда.
  5. Изберете „ps7_cortexa9_0“и проверете „lwip141“и щракнете върху OK.
  6. Щракнете с десния бутон върху синята папка RTOSDemo и изберете „Препратки към проекта“.
  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 е адаптиран от библиотеката на Крис Уинър, която можете да намерите тук. Ние основно преобразихме кода му, за да включим задачи и да го накараме да работи с борда на 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-> Библиотеки. Изберете малкия добавителен файл в горния десен ъгъл и въведете „m“. Това ще включва математическата библиотека в проекта.
  7. Изградете проект с Ctrl + B, за да потвърдите, че всичко работи. Проверете генерираните предупреждения, но може да ги игнорирате.
  8. Има няколко места, които ще се нуждаят от промяна, главно магнитното отклонение на текущото ви местоположение. Ще обясним как да промените това в калибриращата част на урока.

Стъпка 9: 3D печат за стабилизатор

3D печат за стабилизатор
3D печат за стабилизатор

Трябва да 3D отпечатате няколко части за този проект. Вероятно човек може да закупи части, които са с подобни размери/размери на нашите отпечатани части.

  1. Използвайте предоставените файлове, за да отпечатате рамото и скобата за GoPro.
  2. Трябва да добавите скеле към.stl файла.
  3. Подрежете/почистете части от излишното скеле след отпечатване.
  4. Можете да замените дървения дюбел с 3D отпечатана част, ако желаете.

Стъпка 10: Сглобяване на частите

Сглобяване на частите
Сглобяване на частите

Има няколко части за сглобяване на стабилизатора. Закупените скоби се доставят с 4 самонарезни винта и 4 болта с гайки. Тъй като има 3 сервомотора, един от серво клаксоните трябва да бъде предварително подслушван, за да позволи на 2 от болтовете да преминат.

  1. Запояйте 8 щифта към IMU пробива, 4 от всяка страна.
  2. IMU е прикрепен към 3D отпечатаната държаща скоба за GoPro в центъра на скобата.
  3. Насочете скобата така, че отворите за монтаж на серво са от лявата ви страна. Поставете IMU на най -близкия до вас ръб, като щифтовете висят от ръба. След това поставете GoPro стойката върху IMU, като залепите IMU и стойката на място върху скобата.
  4. Прикрепете HS-5485HB към серво скобата, която е интегрирана в 3D отпечатаното рамо.
  5. Завийте скобата GoPro в прикрепеното към рамото серво, като се уверите, че серво е настроено така, че да е в средата на своя диапазон на движение.
  6. След това прикрепете сервомотора HS-5685MH към серво скоба. След това почукайте серво клаксона с един от винтовете. Сега прикрепете серво към долната част на последната серво скоба.
  7. Сега прикрепете последното серво към скобата, в която е завинтен серво HS-5685MH. След това завийте рамото в това серво, като се уверите, че рамото е завинтено, така че да може да се движи на 90 градуса във всяка посока.
  8. За да завършите изграждането на кардана, добавете малко парче от дървения дюбел, за да се свържете между скобата GoPro и 3D отпечатаното рамо. Вече сте сглобили стабилизатора.
  9. И накрая, можете да добавите дръжка, свързана към долната серво скоба.

Стъпка 11: Свързване на Zybo към стабилизатор

Свързване на Zybo към стабилизатор
Свързване на Zybo към стабилизатор

Когато правите това, има няколко неща, на които трябва да внимавате. Искате да сте сигурни, че 5V от захранването никога не влиза в платката Zybo, тъй като това би довело до проблеми с платката. Уверете се, че сте проверили отново джъмперите си, за да се уверите, че проводниците не са сменени.

  1. За да прикрепите Zybo към стабилизатора, ще ви трябват 15 джъмпера от мъжки към мъжки и 4 джъмпери от мъжки към женски.
  2. Първо, свържете два джъмпера към вашето 5V захранване по релсите + и - на макета. Те ще доставят захранване на сервомоторите.
  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 се включват в GND и 3V3 на JF щифтовете. Включете щифта 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". Ако вашето отклонение е на изток, тогава извадете от стойността на изкривяване, ако на запад, тогава добавете към стойността на изкривяване.

*снимката е направена от ръководството за свързване на Sparkfun MPU 9250, намерено тук.

Стъпка 13: Стартиране на програмата

Стартиране на програмата
Стартиране на програмата

Моментът, който сте чакали! Най -хубавата част от проекта е да го видите работещ. Един проблем, който забелязахме, е, че има отклонение от стойностите, докладвани от IMU. Нискочестотният филтър може да помогне за коригиране на този отклонение, а играта с магнитометъра, ускорението и калибрирането на жироскопа също ще помогне да се коригира този отклонение.

  1. Първо, изградете всичко в SDK, това може да стане чрез натискане на Ctrl + B.
  2. Уверете се, че захранването е включено и зададено на 5V. Проверете два пъти дали всички проводници са на правилните си места.
  3. След това, за да стартирате програмата, натиснете зеления триъгълник в горния център на лентата на задачите.
  4. Когато програмата работи, всички сервоустройства ще се върнат в нулевите си позиции, така че бъдете готови платформата да се премести. След като програмата се инициализира, сервомоторите ще се върнат обратно в позициите си от 90 градуса.
  5. Ще се изпълни функция за калибриране на магнитометър и ще бъдат отпечатани указания към терминала UART, към който можете да се свържете чрез сериен монитор, например „kit“или серийния монитор, предоставен в SDK.
  6. Калибрирането ще ви накара да преместите устройството във фигура 8 за около 10 секунди. Можете да премахнете тази стъпка, като коментирате ред 273 от „iic_main_thread.c“. Ако го коментирате, трябва да декомментирате редове 323 - 325 "iic_main_thread.c". Тези стойности първоначално бяха събрани от калибрирането на магнитометъра по -горе и след това бяха включени като стойности.
  7. След калибрирането кодът за стабилизиране ще се инициализира и устройството ще поддържа камерата стабилна.

Препоръчано: