Mục lục:

Bộ ổn định máy ảnh cầm tay: 13 bước (có hình ảnh)
Bộ ổn định máy ảnh cầm tay: 13 bước (có hình ảnh)

Video: Bộ ổn định máy ảnh cầm tay: 13 bước (có hình ảnh)

Video: Bộ ổn định máy ảnh cầm tay: 13 bước (có hình ảnh)
Video: HƯỚNG DẪN NHIẾP ẢNH: ISO, KHẨU ĐỘ, TỐC ĐỘ MÀN TRẬP 2024, Tháng mười một
Anonim
Bộ ổn định máy ảnh cầm tay
Bộ ổn định máy ảnh cầm tay

Giới thiệu

Đây là hướng dẫn tạo giàn ổn định máy ảnh cầm tay 3 trục cho GoPro bằng cách sử dụng Digilent Zybo Zynq-7000 Development Board. Dự án này được phát triển cho lớp Hệ điều hành thời gian thực CPE (CPE 439). Bộ ổn định sử dụng ba Servos và một IMU để điều chỉnh chuyển động của người dùng nhằm giữ mức camera.

Các bộ phận cần thiết cho dự án

  • Ban phát triển Digilent Zybo Zynq-7000
  • Sparkfun IMU Breakout - MPU 9250
  • 2 HiTec HS-5485HB Servos (mua chuyển động 180 độ hoặc chương trình từ 90 đến 180 độ)
  • 1 HiTec HS-5685MH Servo (mua chuyển động 180 độ hoặc chương trình từ 90 đến 180 độ)
  • 2 Chân đế Servo tiêu chuẩn
  • 1 bảng mạch
  • 15 dây nhảy nam - nam
  • 4 dây nhảy nam nữ
  • Keo nóng
  • Tay cầm hoặc tay cầm
  • Chốt gỗ đường kính 5 mm
  • GoPro hoặc máy ảnh và phần cứng gắn kết khác
  • Nguồn điện có khả năng xuất ra 5V.
  • Truy cập vào Máy in 3D

Bước 1: Thiết lập phần cứng Vivado

Thiết lập phần cứng Vivado
Thiết lập phần cứng Vivado

Hãy bắt đầu với việc tạo thiết kế khối cơ bản cho dự án.

  1. Mở Vivado 2016.2, nhấp vào biểu tượng "Tạo dự án mới" và nhấp vào "Tiếp theo>".
  2. Đặt tên cho dự án của bạn và nhấp vào "Tiếp theo>".
  3. Chọn dự án RTL và nhấn "Tiếp theo>".
  4. Nhập vào thanh tìm kiếm xc7z010clg400-1, sau đó chọn phần và nhấn "Tiếp theo>" và "Hoàn tất".

Bước 2: Thiết lập thiết kế khối

Bây giờ chúng ta sẽ bắt đầu tạo thiết kế khối bằng cách thêm và thiết lập Khối IP Zynq.

  1. Trên bảng điều khiển bên trái, trong Trình tích hợp IP, Nhấp vào "Tạo thiết kế khối" và sau đó nhấp vào "OK".
  2. Nhấp chuột phải vào tab "Sơ đồ" và chọn "Thêm IP…".
  3. Gõ "Hệ thống xử lý ZYNQ7" và nhấp vào lựa chọn.
  4. Nhấp đúp vào khối Zynq xuất hiện.
  5. Nhấp vào "Nhập cài đặt XPS" và nhập tệp "ZYBO_zynq_def.xml" được cung cấp.
  6. Đi tới "Cấu hình MIO" và chọn "Bộ xử lý ứng dụng" và bật bộ định thời Timer 0 và Watchdog.
  7. Trong cùng một tab, bên dưới "I / O ngoại vi", chọn ENET 0 (và thay đổi menu thả xuống thành "MIO 16.. 27", USB 0, SD 0, UART 1, I2C 0.
  8. Trong "GPIO", chọn GPIO MIO, ENET Reset, USB Reset và I2C Reset.
  9. Bây giờ điều hướng đến "Cấu hình đồng hồ". Chọn FCLK_CLK0 trong Đồng hồ vải PL. Sau đó, nhấp vào "OK".

Bước 3: Tạo khối IP PWM tùy chỉnh

Khối IP này cho phép bo mạch gửi tín hiệu PWM ra ngoài để điều khiển chuyển động của các servo. Công việc dựa trên phần hướng dẫn của Digitronix Nepal, được tìm thấy tại đây. Logic đã được thêm vào để làm chậm đồng hồ để xung được phát ra ở tốc độ chính xác. Khối này nhận một số từ 0 đến 180 và chuyển nó thành xung từ 750-2150 usec.

  1. Bây giờ, trong tab Công cụ gần góc trên cùng bên trái, nhấp vào "Tạo và đóng gói IP…" và nhấn Tiếp theo.
  2. Sau đó chọn "Tạo thiết bị ngoại vi AXI4 mới" và nhấn Tiếp theo.
  3. Đặt tên cho khối IP PWM của bạn (chúng tôi đặt tên là pwm_core) và nhấp vào Tiếp theo và sau đó nhấp vào Tiếp theo trên trang tiếp theo.
  4. Bây giờ nhấp vào "Chỉnh sửa IP" và nhấn Hoàn tất. Thao tác này sẽ mở ra một cửa sổ mới để chỉnh sửa khối pwm.
  5. Trong tab "Nguồn" và trong "Nguồn thiết kế", hãy mở rộng 'pwm_core_v1_0' (thay pwm_core bằng tên của bạn) và mở tệp hiển thị.
  6. Sao chép và dán mã được cung cấp trong 'pwm_core_v1_0_S00_AXI.v' trong tệp zip ở cuối dự án. Ctrl + Shift + R và thay thế 'pwm_core' bằng tên của bạn cho khối ip.
  7. Tiếp theo, mở 'name _v1_0' và sao chép mã được cung cấp trong tệp 'pwm_core_v1_0.v'. Ctrl + Shift + R và thay thế 'pwm_core' bằng tên.
  8. Bây giờ điều hướng đến tab 'Tên gói IP' và chọn "Tham số tùy chỉnh".
  9. Trong tab này sẽ có một thanh màu vàng ở trên cùng có văn bản được liên kết. Chọn tùy chọn này và "Tham số ẩn" sẽ hiển thị trong hộp.
  10. Bây giờ vào "Customization GUI" và nhấp chuột phải vào Pwm Counter Max chọn "Edit Parameter…".
  11. Chọn hộp "Hiển thị trong GUI tùy chỉnh" và "Chỉ định phạm vi".
  12. Thay đổi trình đơn thả xuống "Loại:" thành Phạm vi số nguyên và đặt giá trị tối thiểu thành 0 và tối đa là 65535 và chọn hộp "Hiển thị phạm vi". Bây giờ hãy nhấp vào OK.
  13. Kéo Pwm Counter Max dưới Cây 'Trang 0'. Bây giờ đi tới "Xem lại và đóng gói" và nhấp vào nút "Gói lại IP".

Bước 4: Thêm Khối IP PWM vào Thiết kế

Thêm khối IP PWM vào thiết kế
Thêm khối IP PWM vào thiết kế

Chúng tôi sẽ thêm khối IP vào thiết kế khối để cho phép người dùng truy cập vào khối IP PWM thông qua bộ xử lý.

  1. Nhấp chuột phải vào tab sơ đồ và nhấp vào "Cài đặt IP…". Điều hướng đến tab "Trình quản lý kho lưu trữ".
  2. Nhấp vào nút dấu cộng màu xanh lá cây và chọn nó. Bây giờ tìm ip_repo trong Trình quản lý tệp và thêm nó vào dự án. Sau đó nhấn Apply và sau đó OK.
  3. Nhấp chuột phải vào tab sơ đồ và nhấp vào "Thêm IP…". Nhập tên khối IP PWM của bạn và chọn nó.
  4. Sẽ có một thanh màu xanh lá cây ở đầu màn hình, trước tiên hãy chọn "Chạy tự động hóa kết nối" và nhấp vào OK. Sau đó nhấp vào "Chạy tự động hóa khối" và nhấp vào OK.
  5. Nhấp đúp vào khối PWM và thay đổi Pwm Counter Max thành 1024 từ 128.
  6. Di con trỏ chuột qua PWM0 trên khối PWM. Nên có một cây bút chì nhỏ để hiển thị khi bạn làm. Nhấp chuột phải và chọn "Tạo cổng…" và nhấp vào OK khi một cửa sổ mở ra. Điều này tạo ra một cổng bên ngoài cho tín hiệu được chuyển đến.
  7. Lặp lại bước 6 cho PWM1 và PWM2.
  8. Tìm biểu tượng mũi tên đôi hình tròn nhỏ trên thanh bên và nhấp vào đó. Nó sẽ tạo lại bố cục và thiết kế khối của bạn sẽ giống như hình trên.

Bước 5: Định cấu hình HDL Wrapper và thiết lập tệp ràng buộc

Định cấu hình HDL Wrapper và thiết lập tệp ràng buộc
Định cấu hình HDL Wrapper và thiết lập tệp ràng buộc

Bây giờ chúng ta sẽ tạo Thiết kế cấp cao cho Thiết kế khối của chúng ta và sau đó ánh xạ PWM0, PWM1 và PWM2 thành các chân Pmod trên bảng Zybo.

  1. Chuyển đến tab "Nguồn". Nhấp chuột phải vào tệp thiết kế khối của bạn trong "Nguồn thiết kế" và nhấp vào "Tạo HDL Wrapper…". Chọn "Sao chép trình bao bọc được tạo để cho phép người dùng chỉnh sửa" và nhấp vào OK. Điều này tạo ra Thiết kế Cấp cao cho Thiết kế Khối mà chúng tôi đã tạo.
  2. Pmod mà chúng ta sẽ xuất ra là JE.
  3. Trong Tệp, chọn "Thêm nguồn…" và chọn "Thêm hoặc tạo ràng buộc" và nhấp vào Tiếp theo.
  4. Nhấp vào thêm tệp và chọn tệp "ZYBO_Master.xdc" được bao gồm. Nếu bạn nhìn vào tệp này, bạn sẽ thấy mọi thứ đều không có chú thích ngoại trừ sáu dòng "set_property" bên dưới "## Pmod Header JE". Bạn sẽ nhận thấy rằng PWM0, PWM1 và PWM2 là các đối số cho các dòng này. Chúng ánh xạ tới Pin 1, Pin 2 và Pin 3 của JE Pmod.

Bước 6: Tạo dòng bit

Chúng tôi cần tạo dòng bit cho thiết kế phần cứng để xuất sang SDK trước khi chúng tôi tiếp tục.

  1. Trong "Chương trình và gỡ lỗi" trên thanh bên, chọn "Tạo dòng bit". Điều này sẽ chạy tổng hợp, sau đó thực hiện, và sau đó tạo dòng bit cho thiết kế.
  2. Sửa bất kỳ lỗi nào bật lên, nhưng cảnh báo thường có thể bị bỏ qua.
  3. Đi tới Tệp-> Khởi chạy SDK và nhấp vào OK. Điều này sẽ mở ra Xilinx SDK.

Bước 7: Thiết lập dự án trong SDK

Phần này có thể hơi bực bội. Khi nghi ngờ, hãy tạo BSP mới và thay thế BSP cũ. Điều này đã tiết kiệm cho chúng tôi rất nhiều thời gian gỡ lỗi.

  1. Bắt đầu bằng cách tải xuống phiên bản FreeRTOS mới nhất tại đây.
  2. Trích xuất mọi thứ từ tải xuống và nhập FreeRTOS vào SDK bằng cách nhấp vào Tệp-> Nhập và trong phần "Chung", nhấp vào "Dự án hiện có vào không gian làm việc" rồi nhấp vào Tiếp theo.
  3. Đi tới "FreeRTOS / Demo / CORTEX_A9_Zynq_ZC702" trong thư mục FreeRTOS. Chỉ nhập "RTOSDemo" từ vị trí này.
  4. Bây giờ tạo Gói hỗ trợ bảng (BSP) bằng cách nhấp vào Tệp-> Gói hỗ trợ bảng mới.
  5. Chọn "ps7_cortexa9_0" và chọn "lwip141" và nhấp vào OK.
  6. Nhấp chuột phải vào thư mục màu xanh RTOSDemo và chọn "Project References".
  7. Bỏ chọn "RTOSDemo_bsp" và kiểm tra BSP mới mà chúng tôi vừa tạo.

Bước 8: Sửa đổi mã FreeRTOS

Mã chúng tôi cung cấp có thể được tách thành 7 tệp khác nhau. main.c, iic_main_thread.c, xil_printfloat.c, xil_printfloat.h, IIC_funcs.c, IIC_funcs.h và iic_imu.h. Mã trong iic_main_thread.c đã được điều chỉnh từ thư viện của Kris Winer, bạn có thể tìm thấy mã này tại đây. Chúng tôi chủ yếu chuyển đổi mã của anh ấy để kết hợp các nhiệm vụ và làm cho nó hoạt động với bảng Zybo. Chúng tôi cũng đã thêm các chức năng để tính toán hiệu chỉnh hướng của máy ảnh. Chúng tôi đã để lại một số câu lệnh in hữu ích cho việc gỡ lỗi. Hầu hết chúng đều được nhận xét nhưng nếu bạn cảm thấy cần thiết, bạn có thể bỏ ghi chú chúng.

  1. Cách dễ nhất để sửa đổi tệp main.c là thay thế mã bằng mã được sao chép từ tệp main.c đi kèm của chúng tôi.
  2. Để tạo một tệp mới, nhấp chuột phải vào thư mục src trong RTOSDemo và chọn C. Nguồn tệp. Đặt tên cho tệp này là "iic_main_thread.c".
  3. Sao chép mã từ "iic_main_thread.c" được bao gồm và dán nó vào tệp mới tạo của bạn.
  4. Lặp lại bước 2 và 3 với các tệp còn lại.
  5. yêu cầu một hướng dẫn liên kết trong gcc. Để thêm cái này vào đường dẫn xây dựng, bạn nhấp chuột phải vào RTOSDemo và chọn "C / C ++ Build Settings".
  6. Một cửa sổ mới sẽ mở ra. Điều hướng đến trình liên kết ARM v7 gcc-> Thư viện. Chọn tệp bổ sung nhỏ ở góc trên cùng bên phải và nhập "m". Điều này sẽ bao gồm thư viện toán học trong dự án.
  7. Xây dựng dự án bằng Ctrl + B để xác nhận mọi thứ hoạt động. Kiểm tra các cảnh báo được tạo nhưng bạn có thể bỏ qua chúng.
  8. Có một vài nơi sẽ cần sửa đổi, chủ yếu là độ lệch từ của vị trí hiện tại của bạn. Chúng tôi sẽ giải thích cách thay đổi điều này trong phần hiệu chỉnh của hướng dẫn.

Bước 9: In 3D cho Bộ ổn định

In 3D để ổn định
In 3D để ổn định

Bạn cần in 3D một vài phần cho dự án này. Người ta có thể mua các bộ phận có kích thước / kích thước tương tự với các bộ phận được in của chúng tôi.

  1. Sử dụng các tệp được cung cấp để in ra khung tay và giá đỡ cho GoPro.
  2. Bạn cần thêm giàn giáo vào tệp.stl.
  3. Cắt / làm sạch các bộ phận thừa của giàn giáo sau khi in.
  4. Bạn có thể thay chốt gỗ bằng một bộ phận in 3D nếu muốn.

Bước 10: Lắp ráp các bộ phận

Lắp ráp các bộ phận
Lắp ráp các bộ phận

Đây là một số bộ phận để lắp ráp bộ ổn định. Giá đỡ đã mua đi kèm với 4 vít tự khai thác và 4 bu lông có đai ốc. Vì có 3 servo, một trong các còi servo cần phải được khai thác trước để cho phép 2 trong số các bu lông lắp vào.

  1. Hàn 8 chân vào đầu ngắt IMU, 4 chân mỗi bên.
  2. IMU được gắn vào khung giữ được in 3D cho GoPro ở giữa khung.
  3. Định hướng giá đỡ sao cho các lỗ lắp servo nằm ở phía bên tay trái của bạn. Đặt IMU trên cạnh gần nhất với bạn, với các chốt treo ra khỏi cạnh. Sau đó, đặt ngàm GoPro lên trên IMU, dán IMU và ngàm vào đúng vị trí trên giá đỡ.
  4. Gắn HS-5485HB vào giá đỡ servo được tích hợp vào cánh tay in 3D.
  5. Vặn giá đỡ GoPro vào servo gắn trên cánh tay, đảm bảo rằng servo được đặt sao cho nó ở giữa phạm vi chuyển động của nó.
  6. Tiếp theo, gắn servo HS-5685MH vào giá đỡ servo. Sau đó, chạm vào còi servo bằng một trong các vít. Bây giờ gắn servo vào dưới cùng của khung servo cuối cùng.
  7. Bây giờ, hãy gắn servo cuối cùng vào giá đỡ mà servo HS-5685MH được vặn vào. Sau đó vặn cánh tay vào servo này, đảm bảo rằng cánh tay được vặn vào để nó có thể di chuyển 90 độ mỗi chiều.
  8. Để hoàn thành việc chế tạo gimbal, hãy thêm một miếng chốt nhỏ bằng gỗ để kết nối giữa giá đỡ GoPro và cánh tay in 3D. Bây giờ bạn đã lắp ráp bộ ổn định.
  9. Cuối cùng, bạn có thể thêm một tay cầm được kết nối với giá đỡ servo dưới cùng.

Bước 11: Kết nối Zybo với Ổn định

Kết nối Zybo với Bộ ổn định
Kết nối Zybo với Bộ ổn định

Có một số điều cần cẩn thận khi làm điều này. Bạn muốn đảm bảo rằng nguồn 5V từ nguồn điện không bao giờ đi vào bo mạch Zybo, vì điều này sẽ dẫn đến các vấn đề với bo mạch. Đảm bảo kiểm tra kỹ các jumper của bạn để xác nhận rằng không có dây nào đang được chuyển đổi.

  1. Để gắn Zybo vào bộ ổn định, bạn sẽ cần 15 vận động viên nhảy nam với nam và 4 vận động viên nhảy nam với nữ.
  2. Đầu tiên, kết nối hai jumper với nguồn điện 5V của bạn dọc theo đường ray + và - của bảng mạch. Chúng sẽ cung cấp năng lượng cho các Servos.
  3. Sau đó, kết nối 3 cặp jumper với đường ray + và - của breadboard. Đây sẽ là sức mạnh cho mỗi Servos.
  4. Cắm đầu kia của + và - jumper vào mỗi Servos.
  5. Kết nối một jumper giữa thanh ray của breadboard và một trong các chân GND trên Zybo JE Pmod (Xem hình ảnh Bước 5). Điều này sẽ tạo ra một mặt bằng chung giữa bo mạch Zybo và bộ nguồn.
  6. Tiếp theo, kết nối dây tín hiệu với chân 1, chân 2 và chân 3 của JE Pmod. Ghim bản đồ 1 vào servo dưới cùng, ghim bản đồ 2 vào servo ở cuối cánh tay và ghim 3 bản đồ vào servo giữa.
  7. Cắm 4 dây cái vào các chân GND, VDD, SDA và SCL của bộ ngắt IMU. GND và VDD cắm vào GND và 3V3 trên các chân JF. Cắm chân SDA vào chân 8 và SCL vào chân 7 trên JF (Xem hình Bước 5).
  8. Cuối cùng, kết nối máy tính với bo mạch bằng cáp micro usb. Điều này sẽ cho phép giao tiếp uart và cho phép bạn lập trình bảng Zybo.

Bước 12: Chỉnh sửa hướng Bắc đúng

Chính Bắc Đúng
Chính Bắc Đúng

Việc hiệu chuẩn từ kế trong IMU rất quan trọng đối với hoạt động chính xác của thiết bị. Độ lệch từ, điều chỉnh từ bắc thành bắc thực.

  1. Để hiệu chỉnh sự khác biệt giữa từ trường và hướng bắc thực, bạn cần sử dụng kết hợp hai dịch vụ, Google Maps và máy tính từ trường của NOAA.
  2. Sử dụng Google Maps để tìm vĩ độ và kinh độ của vị trí hiện tại của bạn.
  3. Lấy kinh độ và vĩ độ hiện tại của bạn và cắm nó vào máy tính từ trường.
  4. Những gì được trả lại là độ nghiêng từ tính. Cắm phép tính này vào mã trên dòng 378 của "iic_main_thread.c". Nếu độ nghiêng của bạn là hướng đông, sau đó trừ vào giá trị yaw, nếu hướng tây thì cộng vào giá trị yaw.

* ảnh được lấy từ hướng dẫn kết nối MPU 9250 của Sparkfun, được tìm thấy tại đây.

Bước 13: Chạy chương trình

Chạy chương trình
Chạy chương trình

Khoảnh khắc bạn đã chờ đợi! Phần tốt nhất của dự án là thấy nó hoạt động. Một vấn đề mà chúng tôi nhận thấy là có sự chênh lệch so với các giá trị được báo cáo từ IMU. Một bộ lọc thông thấp có thể giúp hiệu chỉnh độ lệch này, và loay hoay với từ kế, hiệu chỉnh gia tốc và con quay hồi chuyển cũng sẽ giúp hiệu chỉnh độ lệch này.

  1. Đầu tiên, xây dựng tất cả trong SDK, điều này có thể được thực hiện bằng cách nhấn Ctrl + B.
  2. Đảm bảo nguồn điện được bật và đặt thành 5V. Kiểm tra kỹ để đảm bảo rằng tất cả các dây đang đi đúng vị trí của chúng.
  3. Sau đó, để chạy chương trình, hãy nhấn vào hình tam giác màu xanh lá cây ở trung tâm phía trên của thanh tác vụ.
  4. Khi chương trình chạy, tất cả các Servos sẽ được đặt lại về vị trí 0 của chúng, vì vậy hãy sẵn sàng cho thiết bị di chuyển. Sau khi chương trình khởi chạy, các servos sau đó sẽ quay trở lại vị trí 90 độ của chúng.
  5. Chức năng hiệu chuẩn từ kế sẽ chạy và chỉ đường sẽ được in ra thiết bị đầu cuối UART, bạn có thể kết nối với thiết bị đầu cuối này qua màn hình nối tiếp như 'putty' hoặc màn hình nối tiếp được cung cấp trong SDK.
  6. Quá trình hiệu chỉnh sẽ yêu cầu bạn di chuyển thiết bị theo hình số 8 trong khoảng 10 giây. Bạn có thể xóa bước này bằng cách nhận xét dòng 273 của "iic_main_thread.c". Nếu bạn nhận xét nó ra, bạn cần bỏ ghi chú dòng 323 - 325 "iic_main_thread.c". Các giá trị này ban đầu được thu thập từ hiệu chuẩn từ kế ở trên và sau đó được cắm dưới dạng giá trị.
  7. Sau khi hiệu chuẩn, mã ổn định sẽ khởi tạo và thiết bị sẽ giữ cho máy ảnh ổn định.

Đề xuất: