Mục lục:

Trượt Máy Ảnh Theo Dõi Đối Tượng Với Trục Xoay. 3D được in & xây dựng trên bộ điều khiển động cơ DC RoboClaw & Arduino: 5 bước (có hình ảnh)
Trượt Máy Ảnh Theo Dõi Đối Tượng Với Trục Xoay. 3D được in & xây dựng trên bộ điều khiển động cơ DC RoboClaw & Arduino: 5 bước (có hình ảnh)

Video: Trượt Máy Ảnh Theo Dõi Đối Tượng Với Trục Xoay. 3D được in & xây dựng trên bộ điều khiển động cơ DC RoboClaw & Arduino: 5 bước (có hình ảnh)

Video: Trượt Máy Ảnh Theo Dõi Đối Tượng Với Trục Xoay. 3D được in & xây dựng trên bộ điều khiển động cơ DC RoboClaw & Arduino: 5 bước (có hình ảnh)
Video: DIY Object tracking camera slider tutorial. 3D printed + built around the Arduino & RoboClaw 2024, Tháng mười một
Anonim
Image
Image
Thiết kế phần cứng + Xây dựng + In 3D
Thiết kế phần cứng + Xây dựng + In 3D

Các dự án Fusion 360 »

Dự án này là một trong những dự án yêu thích của tôi kể từ khi tôi kết hợp sở thích làm video với DIY. Tôi đã luôn xem xét và muốn mô phỏng những cảnh quay điện ảnh đó trong những bộ phim mà máy ảnh di chuyển trên màn hình trong khi lia để theo dõi đối tượng. Điều này thêm một hiệu ứng chiều sâu rất thú vị cho một video 2d khác. Vì muốn tái tạo điều này mà không phải chi hàng nghìn đô la cho các thiết bị Hollywood, tôi đã quyết định tự mình chế tạo một thanh trượt máy ảnh như vậy.

Toàn bộ dự án được xây dựng trên các phần bạn có thể in 3D và mã chạy trên bảng Arduino phổ biến. Tất cả các tệp dự án như tệp CAD & mã đều có sẵn để tải xuống bên dưới.

Các tệp in CAD / 3D có sẵn tại đây

Tệp mã Arduino có sẵn tại đây

Dự án xoay quanh 2 động cơ DC có chổi than và bộ điều khiển Động cơ Roboclaw Micro cơ bản. Bộ điều khiển động cơ này có thể biến đổi động cơ DC có chổi than thành một loại servo ưu việt với độ chính xác vị trí đáng kinh ngạc, rất nhiều mô-men xoắn và khả năng quay 360 độ đầy đủ. Thêm về điều này sau.

Trước khi chúng ta tiếp tục, hãy xem video hướng dẫn được liên kết ở đây trước. Hướng dẫn đó sẽ cung cấp cho bạn cái nhìn tổng quan về cách xây dựng dự án này và hướng dẫn này sẽ đi sâu hơn về cách tôi xây dựng dự án này.

Vật liệu-

  • 2x thanh ren m10 dài 1 mét được sử dụng để kết nối tất cả các bộ phận
  • 8x M10 đai ốc để gắn các bộ phận vào thanh ren
  • 2x thanh thép trơn 8mm dài 95 cm để thanh trượt trượt trên
  • Vòng bi 4x lm8uu cho thanh trượt trượt trơn tru trên các thanh thép
  • 4x Đai ốc m3 dài 10mm để lắp động cơ
  • 2 x vòng bi ván trượt (đường kính ngoài 22mm, đường kính trong 8mm) cho trục quay
  • Vòng bi 1x 15mm cho phía không tải
  • Chốt m4 dài 1x 4cm với đai ốc khóa m4 để gắn ổ trục không tải vào bộ phận in 3d không tải.
  • Bánh răng 20 răng với đường kính trong 4mm dùng cho động cơ con trượt. Ròng rọc chính xác không quan trọng lắm vì động cơ DC của bạn phải được truyền lực để có đủ mô-men xoắn. Chỉ cần đảm bảo rằng nó có cùng độ cao với thắt lưng của bạn
  • Đai GT2 dài 2 mét. Một lần nữa, bạn có thể sử dụng bất kỳ dây đai nào miễn là nó phù hợp với độ cao của răng ròng rọc của bạn.

Thiết bị điện tử

  • 2 * Động cơ DC giảm tốc có bộ mã hóa (một bộ điều khiển chuyển động bên, trong khi bộ kia điều khiển trục quay). Đây là một trong những tôi đã sử dụng. Tìm hiểu thêm về điều này trong phần Điện tử của hướng dẫn
  • Bộ điều khiển động cơ DC RoboClaw. (Tôi đã sử dụng bộ điều khiển 15Amp kép vì nó cho phép tôi điều khiển cả hai động cơ bằng một bộ điều khiển)
  • Bất kỳ Arduino nào. Tôi đã sử dụng Arduino UNO
  • Pin / Nguồn điện. (Tôi đã sử dụng pin LiPo 7,4V 2 cell)
  • Màn hình (Để hiển thị menu. Mọi màn hình tương thích U8G sẽ hoạt động, tôi đã sử dụng màn hình OLED 1,3 inch này)
  • Bộ mã hóa Rotatry (Để điều hướng và định cấu hình các tùy chọn trong menu)
  • Nút nhấn vật lý (Để kích hoạt chuyển động của thanh trượt)

Bước 1: Thiết kế phần cứng + Xây dựng + In 3D

Thiết bị điện tử
Thiết bị điện tử

Tiếp theo hãy chuyển sang phần điện tử. Các thiết bị điện tử là nơi mà dự án này có rất nhiều tính linh hoạt.

Hãy bắt đầu với cốt lõi của dự án này - 2 động cơ DC có chổi than.

Tôi đã chọn động cơ DC có chổi than vì một vài lý do.

  1. Động cơ chổi than dễ đấu dây và vận hành hơn nhiều so với động cơ bước
  2. Động cơ DC có chổi than nhẹ hơn nhiều so với động cơ DC, điều này đặc biệt quan trọng đối với động cơ trục quay vì động cơ đó chuyển động vật lý theo phương ngang với máy ảnh và làm cho động cơ càng nhẹ càng tốt là điều quan trọng để tránh căng quá mức cho động cơ trượt của máy ảnh chính.

Tôi đã chọn động cơ DC cụ thể này. Động cơ này đã mang lại cho tôi một lượng mô-men xoắn cực cao cần thiết để di chuyển một tải máy ảnh nặng như vậy. Hơn nữa, việc chuyển số cao có nghĩa là RPM cao điểm chậm, nghĩa là tôi có thể quay các chuyển động chậm hơn và việc chuyển số cao cũng dẫn đến độ chính xác vị trí cao hơn vì một vòng quay 360 độ của trục đầu ra có nghĩa là 341,2 số đếm của bộ mã hóa của động cơ.

Điều này đưa chúng ta đến bộ điều khiển chuyển động RoboClaw. Bộ điều khiển động cơ DC kép động cơ Roboclaw nhận các hướng dẫn đơn giản từ Arduino của bạn thông qua các lệnh mã đơn giản và thực hiện tất cả các xử lý nặng và phân phối điện để làm cho động cơ của bạn hoạt động như dự kiến. Arduino có thể gửi tín hiệu đến Roboclaw thông qua PWM, điện áp Analog, nối tiếp đơn giản hoặc nối tiếp gói. Chuỗi gói là cách tốt nhất để thực hiện vì nó cho phép bạn lấy lại thông tin từ Roboclaw, vốn cần thiết cho việc theo dõi vị trí. Tôi sẽ đi sâu hơn vào phần mềm / lập trình của Roboclaw trong bước tiếp theo (lập trình).

Về bản chất, Roboclaw có thể biến đổi động cơ chải DC với bộ mã hóa để giống một servo hơn nhờ khả năng điều khiển vị trí của RoboClaw. Tuy nhiên, không giống như một servo truyền thống, giờ đây động cơ DC có chổi than của bạn có nhiều mô-men xoắn hơn, độ chính xác về vị trí cao hơn nhiều do chuyển động cơ cao và quan trọng nhất, động cơ DC của bạn có thể quay 360 độ liên tục, điều mà một servo truyền thống không thể làm được.

Phần điện tử tiếp theo là màn hình. Đối với màn hình của tôi, tôi chọn tấm nền OLED này vì kích thước của nó và độ tương phản cao. Độ tương phản cao này đáng kinh ngạc và làm cho màn hình rất dễ sử dụng dưới ánh sáng mặt trời trực tiếp trong khi không phát ra quá nhiều ánh sáng có thể cản trở ảnh chụp từ máy ảnh trong bóng tối. Màn hình này có thể dễ dàng hoán đổi cho một màn hình tương thích U8G khác. Danh sách đầy đủ các màn hình tương thích có sẵn tại đây. Trên thực tế, dự án này đã được cố ý mã hóa xung quanh thư viện U8G để những người xây dựng DIY như bạn có thể linh hoạt hơn trong các bộ phận của họ

Các bộ phận điện tử cuối cùng cho dự án này là bộ mã hóa quay và nút ấn để bắt đầu chuyển động thanh trượt. Bộ mã hóa cho phép bạn điều hướng menu của màn hình và định cấu hình tất cả menu của thanh trượt chỉ bằng một lần quay. Bộ mã hóa quay không có vị trí 'kết thúc' như chiết áp truyền thống và điều này đặc biệt hữu ích để điều chỉnh tọa độ x và y của theo dõi đối tượng trên màn hình. Nút nhấn được sử dụng riêng để bắt đầu chuyển động của thanh trượt mà không cần phải thao tác với bộ mã hóa quay.

Bước 3: Lập trình Camera Slider

Lập trình Camera Slider
Lập trình Camera Slider
Lập trình Camera Slider
Lập trình Camera Slider

Mã hóa cho đến nay là thách thức khó khăn nhất của dự án này. Bạn thấy đấy, ngay từ đầu tôi đã muốn thanh trượt có thể điều khiển được từ màn hình. Để làm cho dự án này tương thích với nhiều màn hình nhất có thể, tôi phải sử dụng Thư viện U8Glib cho Arduino. Thư viện này có hỗ trợ cho hơn 32 màn hình. Tuy nhiên, thư viện U8Glib đã sử dụng một vòng lặp hình ảnh để vẽ menu trên màn hình và điều này mâu thuẫn với khả năng của Arduino trong việc thu thập đồng thời thông tin về vị trí của máy ảnh vốn được yêu cầu cho chức năng tính toán góc máy ảnh (Điều này được đề cập trong một vài đoạn tiếp theo). U8Glib2 có một giải pháp thay thế cho vòng lặp hình ảnh bằng cách sử dụng một thứ được gọi là tùy chọn bộ đệm trang đầy đủ nhưng thư viện tiêu thụ quá nhiều bộ nhớ và gây khó khăn cho phần còn lại của mã do các hạn chế về bộ nhớ của Arduino Uno. Điều này có nghĩa là tôi bị mắc kẹt với U8G và phải giải quyết vấn đề bằng cách ngăn màn hình cập nhật bất cứ lúc nào thanh trượt chuyển động và Arduino cần thu thập dữ liệu vị trí từ Roboclaw. Tôi cũng buộc phải kích hoạt thanh trượt để bắt đầu di chuyển ra bên ngoài vòng lặp trình đơn vì khi tôi vào các menu phụ, tôi sẽ ở bên trong vòng lặp hình ảnh và thanh trượt sẽ không hoạt động như dự kiến. Tôi cũng đã giải quyết vấn đề này bằng cách có một nút vật lý riêng biệt kích hoạt chuyển động của thanh trượt.

Tiếp theo, hãy nói về yếu tố theo dõi xoay vòng. Phần này có vẻ rất phức tạp để tích hợp, nhưng nó thực sự khá đơn giản. Việc triển khai điều này nằm trong hàm ‘motor ()’ bên trong mã Arduino của tôi. Bước đầu tiên là tạo lưới 2 chiều và quyết định vị trí đặt đối tượng bạn muốn theo dõi. Dựa vào đó bạn có thể vẽ một hình tam giác đến vị trí hiện tại của mình. Bạn có thể lấy vị trí hiện tại của mình từ giá trị bộ mã hóa của động cơ. Nếu bạn muốn định cấu hình vị trí của đối tượng đang được theo dõi bằng cm / mm, bạn sẽ cần phải dịch giá trị bộ mã hóa của mình sang giá trị cm / mm. Điều này có thể được thực hiện đơn giản bằng cách di chuyển thanh trượt máy ảnh 1 cm và đo sự gia tăng giá trị bộ mã hóa. Bạn có thể nhập giá trị này ở đầu mã trong biến encoder_mm.

Tiếp tục, bây giờ chúng ta sẽ sử dụng chức năng tiếp tuyến nghịch đảo để lấy góc mà máy ảnh phải hướng tới để hướng vào đối tượng của bạn. Tiếp tuyến nghịch đảo lấy cạnh đối diện và cạnh kề của tam giác. Cạnh đối diện của tam giác không bao giờ thay đổi vì nó là khoảng cách y từ thanh trượt của bạn đến đối tượng. Tuy nhiên, mặt liền kề của thanh trượt máy ảnh không thay đổi. Có thể tính toán cạnh liền kề này bằng cách lấy vị trí x của đối tượng và trừ vị trí hiện tại của bạn cho nó. Khi thanh trượt di chuyển qua phạm vi chuyển động của nó, nó sẽ tiếp tục cập nhật Arduino về giá trị bộ mã hóa. Arduino sẽ liên tục chuyển đổi giá trị bộ mã hóa này thành giá trị vị trí cm / mm x và sau đó tính toán chiều dài cạnh liền kề, và cuối cùng tính toán góc mà máy ảnh cần phải hướng vào mọi lúc để hướng vào đối tượng.

Bây giờ Arduino của chúng tôi đang xử lý động góc máy ảnh, chúng tôi có thể giải quyết việc chuyển đổi góc này thành giá trị vị trí để động cơ quay di chuyển đến. Điều này đưa chúng ta đến tính năng lớn nhất của RoboClaw cho dự án này. Bằng cách cung cấp cho Roboclaw một giá trị vị trí, về cơ bản, nó có thể làm cho động cơ chải DC hoạt động giống như một servo. Ngoại trừ không giống như một servo, động cơ của chúng tôi có nhiều mô-men xoắn hơn, độ chính xác cao hơn nhiều và cũng có thể quay 360 độ.

Mã Arduino để di chuyển Roboclaw đến một vị trí nhất định như sau:

roboclaw. SpeedAccelDeccelPositionM1 (địa chỉ, ‘tốc độ’, ‘tăng tốc’, ‘giảm tốc’, ‘vị trí bạn muốn đến’, 1);

Để điều chỉnh giá trị vị trí của động cơ tương ứng với góc máy ảnh của bạn, bạn sẽ cần di chuyển tấm máy ảnh 180 độ theo cách thủ công. Tiếp theo, hãy xem giá trị bộ mã hóa đã thay đổi bao nhiêu khi di chuyển tấm camera từ 0 độ sang 180 độ. Điều này cung cấp cho bạn phạm vi bộ mã hóa của bạn. Bạn có thể nhập phạm vi này vào chức năng động cơ ánh xạ góc máy ảnh của Arduino thành giá trị vị trí. Điều này cũng được chú thích trong mã nên rất dễ tìm thấy *****

RoboClaw cũng cho tôi khả năng điều chỉnh các yếu tố khác như gia tốc, giảm tốc và giá trị PID. Điều này còn cho phép tôi làm mượt chuyển động của trục quay, đặc biệt khi các thay đổi góc rất nhỏ và thêm các hiện tượng giật mà không có giá trị PID ‘D’ cao. Bạn cũng có thể tự động điều chỉnh các giá trị PID của mình thông qua ứng dụng dành cho máy tính để bàn của Roboclaw.

Bước 4: Vận hành Camera Slider

Vận hành Camera Slider
Vận hành Camera Slider

Bây giờ chúng ta đến với phần thú vị, vận hành thanh trượt Menu có 4 tab chính. Tab trên cùng dành riêng để kiểm soát tốc độ. Hàng giữa của menu chứa các tab để định cấu hình vị trí X & Y của đối tượng được theo dõi tính bằng mm và cũng định cấu hình nếu chúng ta muốn thanh trượt xoay và theo dõi đối tượng của mình hay chỉ thực hiện một chuyển động trượt đơn giản mà không cần xoay. Xoay bộ mã hóa quay cho phép chúng tôi điều hướng các tùy chọn khác nhau của các menu. Để định cấu hình bất kỳ tùy chọn nào, hãy điều hướng đến tùy chọn và nhấn bộ mã hóa quay. Sau khi được nhấn, xoay bộ mã hóa quay sẽ thay đổi giá trị của menu phụ được đánh dấu thay vì quét qua menu. Khi bạn đã đạt đến giá trị mong muốn, bạn có thể nhấp lại vào bộ mã hóa quay. Bây giờ bạn quay lại menu chính và có thể điều hướng giữa các tab khác nhau. Khi bạn đã sẵn sàng, chỉ cần nhấn vào nút bắt đầu bên cạnh màn hình và thanh trượt sẽ thực hiện các công việc của nó!

Đảm bảo rằng sau khi bạn hoàn tất việc sử dụng thanh trượt máy ảnh, máy ảnh sẽ ở vị trí 'chính': phía bên của thanh trượt mà máy ảnh đã khởi động. Lý do cho điều này là bộ mã hóa động cơ không phải là bộ mã hóa tuyệt đối, nghĩa là Roboclaw / Arduino không thể biết bộ mã hóa ở đâu. Họ chỉ có thể cho biết bộ mã hóa đã thay đổi bao nhiêu kể từ lần được bật nguồn gần đây nhất. Điều này có nghĩa là khi bạn tắt thanh trượt máy ảnh, thanh trượt sẽ 'quên' vị trí thanh trượt và đặt lại bộ mã hóa về 0. Do đó, nếu bạn tắt thanh trượt ở phía bên kia, khi bạn bật nguồn, thanh trượt sẽ cố gắng di chuyển xa hơn mép và đâm vào tường trượt. Hành vi của bộ mã hóa này cũng là lý do tại sao máy ảnh đặt lại góc quay sau mỗi chuyển động trượt của máy ảnh. Trục quay cũng đang bảo vệ chính nó khỏi va chạm vào phần cuối của phạm vi chuyển động của nó.

Bạn có thể khắc phục điều này bằng cách thêm các điểm dừng cuối và quy trình di chuyển khi khởi động. Đây là những gì máy in 3d sử dụng.

Bước 5: Suy nghĩ cuối cùng + Cải tiến trong tương lai

Tôi thực sự khuyên mọi người xây dựng nên tạo phiên bản thanh trượt này của riêng họ thay vì xây dựng cùng một thanh trượt. Điều chỉnh thiết kế của tôi sẽ cho phép bạn xây dựng thanh trượt theo thông số kỹ thuật chính xác của mình đồng thời hiểu rõ hơn cách thức hoạt động của thiết bị điện tử và mã.

Tôi đã làm cho mã dễ đọc và dễ cấu hình nhất có thể để bạn có thể tinh chỉnh / hiệu chỉnh các biến mã khác nhau cho thông số kỹ thuật thanh trượt của mình. Mã cũng được xây dựng đầy đủ xung quanh các chức năng, vì vậy nếu bạn muốn sao chép / tinh chỉnh / viết lại một số hành vi nhất định của thanh trượt, bạn không cần thiết kế ngược và làm lại toàn bộ mã mà chỉ cần chỉnh sửa các phần bạn muốn.

Cuối cùng, nếu tôi tạo phiên bản 2.0, đây là một số cải tiến tôi sẽ thực hiện

  1. Tỷ số truyền cao hơn cho động cơ trục quay. Tỷ số truyền cao hơn có nghĩa là tôi có thể thực hiện các bước di chuyển nhỏ chính xác hơn. Điều này đặc biệt quan trọng khi máy ảnh ở xa đối tượng của bạn và góc máy ảnh của bạn thay đổi rất chậm. Hiện tại, động cơ của tôi không được sang số quá cao và nó có thể dẫn đến chuyển động hơi giật khi thanh trượt máy ảnh chạy quá chậm hoặc khi có rất ít thay đổi góc quay. Việc thêm giá trị PID ‘D’ cao đã giúp tôi loại bỏ điều này nhưng phải trả giá là độ chính xác theo dõi đối tượng thấp hơn một chút.
  2. Chiều dài mô đun. Đây là một mục tiêu xa vời, nhưng tôi muốn thanh trượt máy ảnh có chiều dài theo mô-đun, nghĩa là bạn có thể dễ dàng gắn các đoạn đường dài hơn để máy ảnh trượt. Điều này khá khó khăn vì người ta sẽ phải căn chỉnh hoàn hảo cả hai đường ray và tìm ra cách để hệ thống dây đai hoạt động. Tuy nhiên, nó sẽ là một bản nâng cấp thú vị!
  3. Khung hình chính chuyển động tùy chỉnh. Tôi rất muốn giới thiệu khái niệm về các chuyển động trong khung hình chính vào thanh trượt máy ảnh này. Keyframing là một kỹ thuật được sử dụng rất phổ biến trong sản xuất video và âm thanh. Nó sẽ cho phép các chuyển động máy ảnh phi tuyến tính trong đó máy ảnh đi đến một vị trí, đợi, sau đó di chuyển đến vị trí khác với tốc độ khác, chờ, sau đó đi đến vị trí thứ ba, v.v.
  4. Bluetooth / điều khiển điện thoại không dây. Sẽ thực sự tuyệt vời nếu có thể định cấu hình không dây các thông số của thanh trượt camera và có thể triển khai thanh trượt camera ở những vị trí khó tiếp cận. Ứng dụng điện thoại cũng có thể mở ra cơ hội tích hợp keyframing như đã đề cập trong đoạn trước.

Đó là nó cho hướng dẫn này. Vui lòng bỏ bất kỳ câu hỏi nào xuống trong phần bình luận bên dưới.

Để biết thêm nội dung và hướng dẫn về điện tử, bạn cũng có thể xem kênh YouTube của tôi tại đây.

Đề xuất: