Мазмұны:

Қол камера тұрақтандырғышы: 13 қадам (суреттермен)
Қол камера тұрақтандырғышы: 13 қадам (суреттермен)

Бейне: Қол камера тұрақтандырғышы: 13 қадам (суреттермен)

Бейне: Қол камера тұрақтандырғышы: 13 қадам (суреттермен)
Бейне: Мальвы цветут_Рассказ_Слушать 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 сервосы (180 градустық қозғалысты немесе 90-нан 180 градусқа дейінгі бағдарламаны сатып алыңыз)
  • 1 HiTec HS-5685MH Servo (180 градустық қозғалысты немесе 90-нан 180 градусқа дейінгі бағдарламаны сатып алыңыз)
  • 2 стандартты серво жақшалары
  • 1 Нан тақтасы
  • Еркек пен еркекке арналған 15 сым
  • Еркек пен әйел арасындағы 4 өтпелі сым
  • Ыстық желім
  • Тұтқа немесе ұстау
  • Диаметрі 5 мм ағаш дюбель
  • GoPro немесе басқа камера мен монтаждық жабдық
  • 5В шығуға қабілетті қуат көзі.
  • 3D принтеріне қол жеткізу

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

Vivado аппараттық құралын орнату
Vivado аппараттық құралын орнату

Жобаның негізгі блок дизайнын құруды бастайық.

  1. Vivado 2016.2 ашыңыз, «Жаңа жоба құру» белгішесін нұқыңыз және «Келесі>» түймесін басыңыз.
  2. Жобаңызға ат қойып, «Келесі>» түймесін басыңыз.
  3. RTL жобасын таңдап, «Келесі>» түймесін басыңыз.
  4. Xc7z010clg400-1 іздеу жолағына теріңіз, содан кейін бөлікті таңдаңыз және «Келесі>» және «Аяқтау» түймесін басыңыз.

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

Енді біз Zynq IP блогын қосу және орнату арқылы блоктың дизайнын жасай бастаймыз.

  1. Сол жақ панельде IP интеграторының астында «Блок дизайнын жасау» түймесін басыңыз, содан кейін «ОК» түймесін басыңыз.
  2. «Диаграмма» қойындысын тінтуірдің оң жақ түймесімен нұқыңыз және «IP қосу …» таңдаңыз.
  3. «ZYNQ7 Processing System» деп теріп, таңдауды басыңыз.
  4. Пайда болған Zynq блогын екі рет шертіңіз.
  5. «XPS параметрлерін импорттау» түймесін басып, берілген «ZYBO_zynq_def.xml» файлын импорттаңыз.
  6. «MIO конфигурациясы» бөліміне өтіп, «Қолданбалы процессор бірлігі» тармағын таңдап, Timer 0 мен Watchdog таймерін қосыңыз.
  7. Сол қойындыда «Енгізу -шығару перифериялық құрылғылары» астында 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 Fabric Clocks астында FCLK_CLK0 таңдаңыз. Содан кейін «OK» түймесін басыңыз.

3 -қадам: Жеке PWM IP блогын жасаңыз

Бұл IP -блок тақтаға серво қозғалысын бақылау үшін PWM сигналын жіберуге мүмкіндік береді. Жұмыс мұнда табылған Digitronix Nepal оқулығына негізделген. Логика сағатты бәсеңдету үшін қосылды, сондықтан импульс дұрыс жылдамдықта шықты. Блок 0-ден 180-ге дейінгі санды қабылдайды және оны импульске 750-2150 усек түрлендіреді.

  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 және ip блогы үшін 'pwm_core' деген атауды қойыңыз.
  7. Содан кейін 'name _v1_0' ашыңыз және берілген кодты 'pwm_core_v1_0.v' файлына көшіріңіз. Ctrl + Shift + R және 'pwm_core' деген атауды ауыстырыңыз.
  8. Енді «IP -атау пакеті» қойындысына өтіңіз және «Теңшеу параметрлерін» таңдаңыз.
  9. Бұл қойындыда мәтінмен байланыстырылған жоғарғы жағында сары жолақ болады. Мұны таңдаңыз, содан кейін терезеде «Жасырын параметрлер» пайда болады.
  10. Енді «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. Экранның жоғарғы жағында жасыл жолақ болуы керек, алдымен «Қосылымды автоматтандыруды іске қосу» тармағын таңдап, ОК түймесін басыңыз. Содан кейін «Блокты автоматтандыруды іске қосу» түймесін басып, ОК түймесін басыңыз.
  5. PWM блогын екі рет нұқыңыз және Pwm Counter Max -ді 128 -ден 1024 -ке өзгертіңіз.
  6. Тышқан көрсеткішін PWM блогындағы PWM0 үстіне апарыңыз. Сіз жасаған кезде пайда болатын кішкентай қарындаш болуы керек. Тінтуірдің оң жақ түймешігімен нұқыңыз және «Порт жасау …» тармағын таңдаңыз және терезе ашылғанда OK түймесін басыңыз. Бұл сигналды беру үшін сыртқы порт жасайды.
  7. PWM1 мен PWM2 үшін 6 -қадамды қайталаңыз.
  8. Бүйірлік тақтадағы кішкентай дөңгелек қос көрсеткі белгішесін тауып, оны басыңыз. Бұл макетті жаңартады және сіздің блок дизайны жоғарыдағы суретке ұқсас болуы керек.

5 -қадам: HDL орауышын конфигурациялаңыз және шектеулер файлын орнатыңыз

HDL орауышын конфигурациялаңыз және шектеулер файлын орнатыңыз
HDL орауышын конфигурациялаңыз және шектеулер файлын орнатыңыз

Енді біз блоктық дизайн үшін жоғары деңгейлі дизайнды құрамыз, содан кейін PWM0, PWM1 және PWM2 Zybo тақтасындағы Pmod түйреуіштерімен салыстырамыз.

  1. «Дереккөздер» қойындысына өтіңіз. «Дизайн көздері» бөлімінде блоктың дизайн файлын тінтуірдің оң жақ түймесімен нұқыңыз және «HDL орауышын жасау …» түймесін басыңыз. «Пайдаланушы өңдеуге рұқсат беру үшін жасалған қаптаманы көшіруді» таңдап, OK түймесін басыңыз. Бұл біз жасаған блок дизайны үшін жоғары деңгейлі дизайн жасайды.
  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. Бүйірлік тақтадағы «Бағдарлама мен жөндеу» бөлімінде «Ағынды генерациялау» таңдаңыз. Бұл синтезді іске қосады, содан кейін іске асырады, содан кейін дизайн үшін ағынды шығарады.
  2. Пайда болған қателерді түзетіңіз, бірақ ескертулерді елемеуге болады.
  3. Файл-> SDK іске қосу тармағына өтіп, OK түймесін басыңыз. Бұл 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 түймесін басу арқылы тақтаны қолдау пакетін (BSP) жасаңыз.
  5. «Ps7_cortexa9_0» таңдаңыз және «lwip141» құсбелгісін қойыңыз және ОК түймесін басыңыз.
  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 ішіндегі код Kris Winer кітапханасынан бейімделген, оны мына жерден табуға болады. Біз негізінен оның кодын тапсырмаларды біріктіру және оны Zybo тақтасымен жұмыс істеу үшін өзгерттік. Біз сонымен қатар камераның бағытын түзетуді есептеу функцияларын қостық. Біз отладка үшін пайдалы бірнеше баспа мәлімдемелерін қалдырдық. Олардың көпшілігіне түсініктеме беріледі, бірақ егер сізге қажет деп ойласаңыз, оларды қалдыра аласыз.

  1. Main.c файлын өзгертудің ең оңай жолы - кодты біздің main.c файлынан көшірілген кодпен ауыстыру.
  2. Жаңа файл жасау үшін RTOSDemo астындағы src қалтасын тінтуірдің оң жақ түймешігімен нұқыңыз және C бастапқы файлын таңдаңыз. Бұл файлды «iic_main_thread.c» деп атаңыз.
  3. Қосылған «iic_main_thread.c» ішінен кодты көшіріп, оны жаңадан құрылған файлға қойыңыз.
  4. Қалған файлдармен 2 және 3 -қадамдарды қайталаңыз.
  5. gcc ішіндегі сілтеме нұсқаулығын қажет етеді. Мұны құрастыру жолына қосу үшін RTOSDemo тінтуірдің оң жақ түймешігімен шертіңіз және «C/C ++ құрастыру параметрлері» таңдаңыз.
  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 түйреуіш, әр жағынан 4.
  2. IMU кронштейннің ортасында GoPro үшін 3D басып шығарылған ұстау кронштейніне бекітілген.
  3. Кронштейнді серво бекіту тесіктері сол жақта болатындай етіп бағыттаңыз. Істерді өзіңізге жақын шетіне қойыңыз, штифтер шетінен ілулі. Содан кейін, GoPro қондырмасын IMU үстіне орнатыңыз, ИМ мен бекіткішті кронштейнге бекітіңіз.
  4. HS-5485HB 3D басып шығарылған білікке қосылған сервопроекторға бекітіңіз.
  5. GoPro кронштейнін қолмен бекітілген сервоға бұрап салыңыз, серво қозғалыс диапазонының ортасында болатындай етіп орнатылғанына көз жеткізіңіз.
  6. Әрі қарай, HS-5685MH сервосын сервопростоға бекітіңіз. Содан кейін бұрандалардың бірімен серво мүйізін түртіңіз. Енді сервоприводты соңғы серво кронштейнінің төменгі жағына бекітіңіз.
  7. Енді HS-5685MH серво бекітілген кронштейнге соңғы сервоны бекітіңіз. Содан кейін қолды осы сервоға бұрап салыңыз, осылайша оның бұралғанына көз жеткізіңіз, ол әр бағытта 90 градусқа жылжи алады.
  8. Гимбалдың құрылысын аяқтау үшін GoPro кронштейні мен 3D басып шығарылған біліктің арасына қосылатын ағаш дюбельдің кішкене бөлігін қосыңыз. Сіз қазір тұрақтандырғышты жинадыңыз.
  9. Соңында, төменгі серво кронштейніне қосылған тұтқаны қосуға болады.

11 -қадам: Zybo -ны тұрақтандырғышқа қосу

Zybo -ны тұрақтандырғышқа қосу
Zybo -ны тұрақтандырғышқа қосу

Бұл әрекетті орындау кезінде бірнеше нәрсеге назар аудару керек. Қуат көзінен 5В ешқашан Zybo тақтасына түспейтініне көз жеткізгіңіз келеді, себебі бұл тақтадағы ақауларға әкеледі. Сымдардың ауыспайтынын растау үшін секіргіштерді екі рет тексеріңіз.

  1. Zybo -ны тұрақтандырғышқа бекіту үшін сізге еркекке секіру үшін 15 еркек пен әйелге 4 еркек керек.
  2. Алдымен 5 вольтты қуат көзіне екі секіргішті тақтаның + және - рельстері бойымен қосыңыз. Бұл сервоға қуат береді.
  3. Содан кейін 3 жұп секіргішті тақтаның + және - рельстеріне қосыңыз. Бұл әр серво үшін қуат болады.
  4. Әр сервоға + және - секіргіштердің екінші ұшын қосыңыз.
  5. Нан тақтасының рельсі мен Zybo 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 Maps және NOAA магнит өрісінің калькуляторы.
  2. Қазіргі картаның ені мен бойлығын табу үшін Google картасын пайдаланыңыз.
  3. Ағымдағы бойлық пен ендікті алыңыз және оны магнит өрісінің калькуляторына қосыңыз.
  4. Қайтарылатын нәрсе - магниттік құлдырау. Бұл есепті «iic_main_thread.c» 378 жолындағы кодқа қосыңыз. Егер сіздің бейімділігіңіз шығысқа қарай болса, онда иіру мәнінен алып тастаңыз, егер батыс болса, иіру мәніне қосыңыз.

*фото осы жерден табылған Sparkfun MPU 9250 қосылу нұсқаулығынан алынды.

13 -қадам: Бағдарламаны іске қосу

Бағдарламаны іске қосу
Бағдарламаны іске қосу

Сіз күткен сәт! Жобаның ең жақсы бөлігі - оның жұмыс істеуін көру. Біз байқаған бір мәселе - ИДҰ мәлімдеген мәндерден ауытқу бар. Төмен өту сүзгісі бұл дрейфті түзетуге көмектеседі, ал магнитометрмен, үдеу мен гиро калибрлеумен айналысу да бұл дрейфті түзетуге көмектеседі.

  1. Біріншіден, бәрін SDK -те құрыңыз, мұны Ctrl + B пернелерін басу арқылы жасауға болады.
  2. Қуат көзінің қосулы екеніне және 5 В кернеуіне орнатылғанына көз жеткізіңіз. Барлық сымдар өз орындарына кеткенін екі рет тексеріңіз.
  3. Содан кейін бағдарламаны іске қосу үшін тапсырмалар тақтасының жоғарғы ортасындағы жасыл үшбұрышты басыңыз.
  4. Бағдарлама іске қосылған кезде, сервоприводтар 0 күйіне қайтарылады, сондықтан қондырғы қозғалуға дайын болыңыз. Бағдарлама инициализацияланғаннан кейін сервоприводтар 90 градусқа қайта оралады.
  5. Магнитометрді калибрлеу функциясы іске қосылады және бағыттар UART терминалына басып шығарылады, оған сіз «замазка» немесе SDK -те берілген сериялық монитор сияқты сериялық монитор арқылы қосыла аласыз.
  6. Калибрлеу сізге құрылғыны 8 -суретте шамамен 10 секунд жылжытуға мүмкіндік береді. Бұл қадамды «iic_main_thread.c» 273 жолына түсініктеме беру арқылы жоюға болады. Егер сіз түсініктеме берсеңіз, 323 - 325 «iic_main_thread.c» жолдарына түсініктеме беру қажет. Бұл мәндер бастапқыда жоғарыдағы магнитометр калибрлеуінен жиналды, содан кейін мән ретінде қосылды.
  7. Калибрлегеннен кейін тұрақтандыру коды инициализацияланады және құрылғы камераның тұрақтылығын сақтайды.

Ұсынылған: