Мазмуну:

Колдогу Камера Стабилизатору: 13 Кадам (Сүрөттөр менен)
Колдогу Камера Стабилизатору: 13 Кадам (Сүрөттөр менен)

Video: Колдогу Камера Стабилизатору: 13 Кадам (Сүрөттөр менен)

Video: Колдогу Камера Стабилизатору: 13 Кадам (Сүрөттөр менен)
Video: Столкновение двух внедорожников на Суюмбаева-Токтогула попало на видео 2024, Июль
Anonim
Колдогу Камера Стабилизатору
Колдогу Камера Стабилизатору

Киришүү

Бул Digilent Zybo Zynq-7000 өнүктүрүү тактасын колдонуу менен GoPro үчүн 3-октук портативдүү камера стабилдештирүүчү түзүлүштү түзүү үчүн колдонмо. Бул долбоор CPE реалдуу убакытта иштөө тутумдары классы үчүн иштелип чыккан (CPE 439). Стабилизатор камеранын деңгээлин сактоо үчүн колдонуучунун кыймылын оңдоо үчүн үч сервону жана IMU колдонот.

Долбоор үчүн керектүү бөлүктөр

  • Digilent Zybo Zynq-7000 өнүктүрүү кеңеши
  • Sparkfun IMU Breakout - MPU 9250
  • 2 HiTec HS-5485HB Servos (180 градустук кыймылды же программаны 90дон 180 градуска чейин сатып алыңыз)
  • 1 HiTec HS-5685MH Servo (180 градустук кыймылды же программаны 90дон 180 градуска чейин сатып алыңыз)
  • 2 Стандарттык Servo кронштейндери
  • 1 Breadboard
  • 15 эркектен эркекке секирүүчү зымдар
  • 4 эркек-ургаачы секирүүчү зымдар
  • Hot Glue
  • Кармоо же тутка
  • Диаметри 5 мм жыгач дубал
  • GoPro же башка камера жана орнотуучу жабдыктар
  • 5V чыгарууга жөндөмдүү электр менен жабдуу.
  • 3D принтерине жетүү

1 -кадам: Vivado аппараттык орнотуулары

Vivado жабдыктарын орнотуу
Vivado жабдыктарын орнотуу

Келгиле, долбоордун негизги блок дизайнын түзүүнү баштайлы.

  1. Vivado 2016.2ди ачыңыз, "Жаңы долбоор түзүү" сүрөтчөсүн чыкылдатыңыз жана "Кийинки>" дегенди басыңыз.
  2. Долбооруңузга ат коюп, "Кийинки>" баскычын басыңыз.
  3. RTL долбоорун тандап, "Кийинки>" баскычын басыңыз.
  4. Издөө тилкесине xc7z010clg400-1 терип, анан бөлүгүн тандап, "Next>" жана "Finish" баскычтарын басыңыз.

2 -кадам: Блоктун дизайнын орнотуу

Эми биз Zynq IP блогун кошуу жана орнотуу аркылуу блоктун дизайнын түзө баштайбыз.

  1. Сол жактагы панелде IP интеграторунун астынан "Блок дизайнын түзүү" баскычын чыкылдатыңыз жана "OK" баскычын чыкылдатыңыз.
  2. "Диаграмма" өтмөгүн оң баскыч менен чыкылдатып, "IP кошуу…" дегенди тандаңыз.
  3. "ZYNQ7 Processing System" деп терип, тандоону басыңыз.
  4. Пайда болгон Zynq блогун эки жолу чыкылдатыңыз.
  5. "XPS жөндөөлөрүн импорттоону" чыкылдатыңыз жана берилген "ZYBO_zynq_def.xml" файлын импорттоңуз.
  6. "MIO конфигурациясына" барып, "Application Processor Unit" тандап, Timer 0 жана Watchdog таймерлерин иштетиңиз.
  7. Ошол эле өтмөктө "I/O Perifherals" астында 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 -кадам: Custom 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. Долбоордун ылдыйындагы zip файлына '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. Эми "Топтом IP - аты" өтмөгүнө өтүңүз жана "Ыңгайлаштыруу Параметрлерин" тандаңыз.
  9. Бул өтмөктө тексттин шилтемеси бар жогорку жагында сары тилке болот. Муну тандаңыз, жана "Жашырылган Параметрлер" кутуда көрүнөт.
  10. Эми "Customization GUI" ге өтүңүз жана Pwm Counter Maxти оң баскыч менен чыкылдатыңыз "Параметрди түзөтүү …".
  11. "Өзгөчөлөштүрүү GUIде" жана "Диапазонду көрсөтүү" кутучаларын белгилеңиз.
  12. "Түрү:" ачылуучу менюсун бүтүн сандардын диапазонуна өзгөртүңүз жана минимумду 0 менен максимумду 65535ке коюп, "Диапазонду көрсөтүү" кутучасын белгилеңиз. Эми OK чыкылдатыңыз.
  13. Pwm Counter Maxты 'Барак 0' дарагынын астына сүйрөңүз. Эми "Карап чыгуу жана Топтомго" барып, "IP-ды кайра пакеттөө" баскычын чыкылдатыңыз.

4 -кадам: Дизайнга PWM IP блогун кошуу

Дизайнга PWM IP блогун кошуу
Дизайнга PWM IP блогун кошуу

Биз колдонуучуга PWM IP блогуна процессор аркылуу кирүүгө уруксат берүү үчүн IP блогун блоктун дизайнына кошобуз.

  1. Диаграмма өтмөгүн оң баскыч менен чыкылдатыңыз жана "IP Орнотуулары …" чыкылдатыңыз. "Репозиторийлерди башкаруучу" өтмөгүнө өтүңүз.
  2. Жашыл плюс баскычын чыкылдатып, аны тандаңыз. Эми файл менеджеринен ip_repo таап, аны долбоорго кошуңуз. Андан кийин "Колдонуу" баскычын басыңыз, анан "OK".
  3. Диаграмма өтмөгүн оң баскыч менен чыкылдатып, "IP кошуу…" баскычын чыкылдатыңыз. Сиздин PWM IP блогунун атын териңиз жана аны тандаңыз.
  4. Экрандын жогору жагында жашыл тилке болушу керек, адегенде "Connection Automationти иштетүү" тандап, OK баскычын чыкылдатыңыз. Андан кийин "Блокту автоматташтырууну иштетүү" баскычын чыкылдатыңыз жана ОК басыңыз.
  5. PWM блогун эки жолу чыкылдатыңыз жана Pwm Counter Maxти 1024төн 128ге өзгөртүңүз.
  6. Чычкан көрсөткүчүңүздү PWM блогундагы PWM0 үстүнө жылдырыңыз. Сиз кылганда көрсөтүлүүчү кичинекей карандаш болушу керек. Оң баскыч менен чыкылдатып, "Порт түзүү …" дегенди тандап, терезе ачылганда ОК басыңыз. Бул сигналды берүү үчүн тышкы портту түзөт.
  7. PWM1 жана PWM2 үчүн 6 -кадамды кайталаңыз.
  8. Капталдагы кичинекей тегерек эки жебе сөлөкөтүн таап, аны басыңыз. Бул жайгашууну калыбына келтирет жана сиздин блоктун дизайны жогорудагы сүрөттө окшош болушу керек.

5 -кадам: HDL орогучту конфигурациялоо жана чектөөлөр файлын орнотуу

HDL Wrapperди конфигурациялаңыз жана чектөөлөр файлын орнотуңуз
HDL Wrapperди конфигурациялаңыз жана чектөөлөр файлын орнотуңуз

Биз азыр Блок Дизайн үчүн Жогорку Деңгээлдеги Дизайнды түзөбүз, анан PWM0, PWM1 жана PWM2ди Zybo тактасындагы Pmod казыктарына карта кылабыз.

  1. "Булактар" өтмөгүнө өтүңүз. "Дизайн булактары" астындагы блогуңуздун дизайн файлын оң баскыч менен чыкылдатыңыз жана "HDL орогучун түзүү …" чыкылдатыңыз. "Колдонуучунун түзөтүүлөрүнө уруксат берүү үчүн түзүлгөн ороону көчүрүү" дегенди тандап, ОК басыңыз. Бул биз жараткан Блок Дизайнынын Жогорку деңгээлдеги Дизайнын жаратат.
  2. Биз чыгара турган Pmod бул JE.
  3. Файлдын астынан "Булактарды кошуу…" жана "Чектөөлөрдү кошуу же түзүү" дегенди тандап, Кийинкини басыңыз.
  4. Файлдарды кошууну чыкылдатыңыз жана камтылган "ZYBO_Master.xdc" файлын тандаңыз. Бул файлды карасаңыз, "## Pmod Header JE" астындагы алты "set_property" сызыгынан башкасынын баары комментарийсиз экенин байкайсыз. Сиз PWM0, PWM1 жана PWM2 бул линиялардын аргументтери экенин байкайсыз. Алар JE Pmodдун 1 -пинге, 2 -пинге жана 3 -пинге карта салышат.

6 -кадам: Bitstream түзүү

Биз өтүүдөн мурун SDKка экспорттоо үчүн аппараттык дизайн үчүн биттик агымды түзүшүбүз керек.

  1. Капталдагы "Программа жана мүчүлүштүктөрдү оңдоо" бөлүмүнүн астынан "Bitstream түзүү" дегенди тандаңыз. Бул синтезди иштетет, андан кийин ишке ашырат, андан кийин дизайн үчүн бит агымын түзөт.
  2. Калкып чыккан бардык каталарды оңдоңуз, бирок эскертүүлөрдү этибарга албай коюуга болот.
  3. Файлга өтүү-> SDKди иштетүү жана ОК басыңыз. Бул Xilinx SDK ачат.

7 -кадам: Долбоорду SDKге орнотуу

Бул бөлүгү бир аз капа болушу мүмкүн. Күмөн санаганда жаңы BSP жасап, эскисин алмаштырыңыз. Бул бизге мүчүлүштүктөрдү оңдоо убактысын үнөмдөдү.

  1. FreeRTOSтун акыркы версиясын бул жерден жүктөп алуу менен баштаңыз.
  2. Файл-> Импортту чыкылдатуу менен FreeRTOSту SDKге жүктөөдөн жана импорттоодон баарын бөлүп алыңыз жана "Жалпы" астынан "Иш мейкиндигине болгон долбоорлорду" чыкылдатыңыз жана Кийинкини басыңыз.
  3. FreeRTOS папкасындагы "FreeRTOS/Demo/CORTEX_A9_Zynq_ZC702" ге өтүңүз. Бул жерден "RTOSDemo" импорттоо гана.
  4. Эми File-> New Board Support Package баскычын басып, Board Support Package (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. Жаңы файл түзүү үчүн RTOSDemo астындагы src папкасын оң баскыч менен чыкылдатып, 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сине туура келиши үчүн, servo мүйүздөрүнүн бирин алдын ала таптоо керек.

  1. ӨИКтин үзүлүшүнө 8 казык, 4 тараптан.
  2. IMU кронштейндин ортосунда GoPro үчүн 3D басып чыгарылган кронштейнге тиркелет.
  3. Кронштейнди серво орнотуу тешиктери сол колуңузда тургандай кылып багыттаңыз. ИИМди сизге эң жакын четине коюңуз, төөнөгүчтөр четинен илинип турат. Андан кийин, IMPдын үстүнө GoPro орнотуусун орнотуп, IMUду жана кронштейнди ордуна коюңуз.
  4. HS-5485HBди 3D басып чыгарылган колго бириктирилген servo кронштейнге тиркеңиз.
  5. GoPro кронштейнин колго бекитилген сервого бурап, сервонун кыймыл диапазонунун ортосунда тургандай кылып орнотулганын текшериңиз.
  6. Андан кийин, HS-5685MH сервосун серво кронштейнге тиркеңиз. Андан кийин бурамалардын бири менен servo мүйүзүн таптаңыз. Эми сервону акыркы серво кронштейндин түбүнө бекиңиз.
  7. Эми HS-5685MH сервосу буралып жаткан кронштейнге акыркы сервону тиркеңиз. Андан кийин колуңузду ушул servoго бурап, колуңуздун буралганын текшерип, ал ар тарапка 90 градуска жыла алат.
  8. Гимбалдын курулушун бүтүрүү үчүн, GoPro кронштейни менен 3D басып чыгарылган колдун ортосунда туташуу үчүн жыгач дубелдин кичинекей бөлүгүн кошуңуз. Сиз азыр стабилизаторду чогулттуңуз.
  9. Акыр -аягы, сиз төмөнкү серво кронштейнге туташтырылган тутканы кошо аласыз.

11 -кадам: Zybo стабилизаторуна туташуу

Zybo стабилизаторго туташууда
Zybo стабилизаторго туташууда

Муну жасоодо этият болуу керек болгон бир -эки нерсе бар. Сиз 5В электр булагынан эч качан Zybo тактасына түшпөсүн текшергиңиз келет, анткени бул такта менен көйгөйлөргө алып келет. Эч кандай зымдар өчүрүлбөгөнүн ырастоо үчүн секиргичтериңизди эки жолу текшериңиз.

  1. Зибону стабилизаторго тиркөө үчүн эркек секирүүчүгө 15 эркек жана секирүүчү 4 эркек керек болот.
  2. Биринчиден, эки секиргичти 5V электр булагыңызга + жана - рельсин бойлото туташтырыңыз. Булар серволорго энергия берет.
  3. Андан кийин, 3 жуп секиргичти нан тактасынын + жана - рельсине туташтырыңыз. Бул ар бир серво үчүн күч болот.
  4. + Жана - секиргичтердин экинчи учун ар бир сервого туташтырыңыз.
  5. Zabo JE Pmodдогу GND пиндеринин бири менен нан тактасынын ортосундагы секиргичти туташтырыңыз (5 -сүрөттү караңыз). Бул Zybo платасы менен электр менен камсыздоонун ортосунда жалпы негизди түзөт.
  6. Андан кийин JE Pmodдун 1, 2 жана 3 -пинге сигнал зымын туташтырыңыз. 1 картаны астыңкы сервого, 2 картаны колунун аягына, 3 картаны ортоңку сервого кадаңыз.
  7. 4 аял зымдарын IMU үзүлүшүнүн GND, VDD, SDA жана SCL казыктарына сайыңыз. GND жана VDD JF казыктарына GND жана 3V3 туташтырылат. SDA пинин 8 -пинге жана SCLди JFдеги 7 -пинге салыңыз (5 -сүрөттү караңыз).
  8. Акырында, микро USB кабели аркылуу компьютерди тактага туташтырыңыз. Бул uart байланышын камсыз кылат жана Zybo тактасын программалоого мүмкүндүк берет.

12 -кадам: Чыныгы Түндүк Оңдоо

Чыныгы Түндүк Коррекция
Чыныгы Түндүк Коррекция

IMUдагы магнитометрдин калибрлөөсү магниттик түндүктү чыныгы түндүккө тууралоочу түзмөктүн туура иштеши үчүн маанилүү.

  1. Магниттик жана чыныгы түндүктөн айырманы оңдоо үчүн эки кызматтын, Google Карталардын жана NOAAнын магнит талаасы эсептегичинин айкалышын колдонуу керек.
  2. Учурдагы жайгашкан жериңиздин кеңдигин жана узундугун табуу үчүн Google Карталарды колдонуңуз.
  3. Учурдагы узундук менен кеңдикти алып, аны магнит талаасынын эсептегичине туташтырыңыз.
  4. Кайтарылган нерсе - магниттик ийилүү. Бул эсептөөнү "iic_main_thread.c" 378 -саптагы кодго киргизиңиз. Эгерде сиздин каалооңуз чыгыш болсо, анда yaw маанисинен алып салыңыз, эгер батыш болсо yaw маанисине кошуңуз.

*Сүрөт Sparkfun MPU 9250 туташуусунан алынган, бул жерден табылган.

13 -кадам: Программаны иштетүү

Программаны иштетүү
Программаны иштетүү

Сиз күткөн учур! Долбоордун эң жакшы жери анын иштеп жатканын көрүү. Биз байкаган бир көйгөй - ӨИКтен билдирилген баалуулуктардан алыстоо бар. Төмөн өтүү чыпкасы бул дрейфти оңдоого жардам берет, ал эми магнитометр, ылдамдануу жана гиро калибрлөө менен алектенүү бул дрейфти оңдоого жардам берет.

  1. Биринчиден, баарын SDKге куруңуз, муну Ctrl + B басуу менен жасаса болот.
  2. Электр менен камсыздоо күйгүзүлгөнүн текшериңиз жана 5Vга орнотуңуз. Бардык зымдар өз жерлерине баратканын эки жолу текшериңиз.
  3. Андан кийин, программаны иштетүү үчүн, тапшырмалар тилкесинин жогорку борборундагы жашыл үч бурчтукту басыңыз.
  4. Программа иштеп баштаганда, серволордун бардыгы 0 позициясына кайтарылат, андыктан бургулоочу аппараттын жылышына даяр болуңуз. Программа башталгандан кийин, серволор 90 даражадагы позицияларына кайтып келишет.
  5. Магнитометрдин калибрлөө функциясы иштейт жана багыттар UART терминалына чыгарылат, аны сиз "шпаклевка" же SDKде берилген сериялык монитор сыяктуу сериялык монитор аркылуу туташа аласыз.
  6. Калибрлөө сизди 8 -фигурада 10 секунддун ичинде түзмөктү жылдырууга мажбур кылат. Бул кадамды "iic_main_thread.c" 273 -сапка комментарий берүү менен алып салсаңыз болот. Эгер сиз аны комментарийлесеңиз, 323 - 325 "iic_main_thread.c" линияларын комментарийлешиңиз керек. Бул баалуулуктар алгач жогорудагы магнитометрдин калибрлөөсүнөн чогултулуп, андан кийин баалуулуктар катары туташтырылган.
  7. Калибрлөөдөн кийин стабилдештирүү коду инициализацияланат жана аппарат камераны туруктуу кармайт.

Сунушталууда: