İçindekiler:

Dönme Eksenli Nesne İzleme Kamerası Slider. 3D Baskılı ve RoboClaw DC Motor Kontrol Cihazı ve Arduino Üzerine Yerleştirildi: 5 Adım (Resimlerle)
Dönme Eksenli Nesne İzleme Kamerası Slider. 3D Baskılı ve RoboClaw DC Motor Kontrol Cihazı ve Arduino Üzerine Yerleştirildi: 5 Adım (Resimlerle)

Video: Dönme Eksenli Nesne İzleme Kamerası Slider. 3D Baskılı ve RoboClaw DC Motor Kontrol Cihazı ve Arduino Üzerine Yerleştirildi: 5 Adım (Resimlerle)

Video: Dönme Eksenli Nesne İzleme Kamerası Slider. 3D Baskılı ve RoboClaw DC Motor Kontrol Cihazı ve Arduino Üzerine Yerleştirildi: 5 Adım (Resimlerle)
Video: After Effects Ders 4 : 3 Boyutlu Dönen Bozuk Para Efekti 2024, Kasım
Anonim
Image
Image
Donanım Tasarımı + İnşa + 3D Baskı
Donanım Tasarımı + İnşa + 3D Baskı

Fusion 360 Projeleri »

Bu proje, video yapımına olan ilgimi DIY ile birleştirdiğimden beri en sevdiğim projelerden biri oldu. Her zaman, bir kameranın nesneyi izlemek için kaydırırken ekranda hareket ettiği filmlerdeki sinematik çekimlere baktım ve taklit etmek istedim. Bu, aksi takdirde 2 boyutlu bir videoya çok ilginç bir derinlik efekti ekler. Bunu Hollywood ekipmanlarına binlerce dolar harcamadan kopyalamak istediğim için kendim böyle bir kamera kaydırıcısı yapmaya karar verdim.

Tüm proje, 3D yazdırabileceğiniz parçalar üzerine inşa edilmiştir ve kod, popüler Arduino kartında çalışır. CAD dosyaları ve kodu gibi tüm proje dosyaları aşağıdan indirilebilir.

CAD/ 3D baskı dosyaları burada mevcuttur

Arduino Kod dosyası burada mevcuttur

Proje, 2 dişli fırçalı DC motor ve Temel Mikro Roboclaw Motor kontrolörü etrafında dönüyor. Bu motor kontrolörü, fırçalanmış DC motorları inanılmaz konumsal doğruluk, tonlarca tork ve tam 360 derecelik dönüş ile üstün tipte bir servoya dönüştürebilir. Bu konuda daha sonra.

Devam etmeden önce, önce burada bağlantılı video eğitimini izleyin. Bu eğitim size bu projenin nasıl inşa edileceğine dair bir genel bakış sunacak ve bu Instructables kılavuzu bu projeyi nasıl inşa ettiğim konusunda daha derinlemesine gidecek.

Malzemeler-

  • Tüm parçaları bağlamak için kullanılan 2x 1 metre uzunluğunda m10 dişli çubuklar
  • Parçaları dişli çubuklara monte etmek için 8x M10 somun
  • Kaydırıcının kayması için 2x 95 cm uzunluğunda 8 mm düz çelik çubuklar
  • Kaydırıcının çelik çubuklar üzerinde sorunsuz bir şekilde kayması için 4x lm8uu rulmanlar
  • Motoru monte etmek için 4 adet 10mm uzunluğunda m3 somun
  • Dönme ekseni için 2 x kaykay yatağı (22 mm dış çap, 8 mm iç çap)
  • Avara tarafı için 1x 15mm yatak
  • Avara yatağını avara 3d baskılı parçaya monte etmek için m4 kilit somunlu 1x 4cm uzunluğunda m4 cıvata.
  • Sürgü motoru için 4 mm iç çaplı 20 diş dişlisi. DC motorunuzun yeterli tork için ayarlanması gerektiğinden tam kasnak çok önemli değildir. Kemerinizle aynı adım olduğundan emin olun.
  • 2 metre uzunluğunda GT2 Kemer. Yine, kasnağınızın diş aralığına uygun olduğu sürece herhangi bir kayışı kullanabilirsiniz.

Elektronik

  • 2 * Enkoderli redüktörlü DC motorlar (biri yanal hareketi, diğeri dönme eksenini kontrol eder). İşte kullandığım. Kılavuzun Elektronik bölümünde bununla ilgili daha fazla bilgi
  • RoboClaw DC motor kontrolörü. (Her iki motoru da tek bir kontrolör ile kontrol etmeme izin verdiği için çift 15Amp kontrol cihazını kullandım)
  • Herhangi bir Arduino. Arduino UNO'yu kullandım
  • Pil/ Güç kaynağı. (7.4V 2 hücreli LiPo pil kullandım)
  • Ekran (Menüyü görüntülemek için. Herhangi bir U8G uyumlu ekran çalışır, ben 1.3 inçlik bu OLED ekranı kullandım)
  • Rotatry kodlayıcı (Menüde gezinmek ve seçenekleri yapılandırmak için)
  • Fiziksel basma düğmesi (Kaydırıcının hareketini tetiklemek için)

Adım 1: Donanım Tasarımı + İnşa + 3D Baskı

Elektronik
Elektronik

Daha sonra elektroniğe geçelim. Elektronik, bu projenin çok fazla esnekliğe sahip olduğu yerdir.

Bu projenin özüyle başlayalım - 2 fırçalı DC motor.

Fırçalı DC motorları birkaç nedenden dolayı seçtim.

  1. Fırçalı motorların kablolanması ve çalıştırılması, step motorlara kıyasla çok daha kolaydır
  2. Fırçalı DC motorlar, DC motorlardan çok daha hafiftir ve bu motor fiziksel olarak kamera ile yanlamasına hareket ettiğinden dönme eksenli motor için özellikle önemlidir ve birincil kamera kaydırıcı motorunda aşırı gerilmeyi önlemek için bunu mümkün olduğunca hafif yapmak önemlidir.

Bu özel DC motoru seçtim. Bu motor bana böylesine ağır bir kamera yükünü taşımak için gerekli olan son derece yüksek miktarda tork verdi. Ayrıca, yüksek dişli, en yüksek RPM'nin yavaş olduğu anlamına geliyordu, bu da daha yavaş hareketleri filme alabilmem anlamına geliyordu ve yüksek dişli, çıkış milinin 360 derecelik bir dönüşü, motorun kodlayıcısının 341,2 sayısı anlamına geldiğinden, daha yüksek konum doğruluğuna da yol açtı.

Bu bizi RoboClaw hareket kontrol cihazına getiriyor. Roboclaw motorlu çift DC motor kontrolörü, basit kod komutları aracılığıyla Arduino'nuzdan basit talimatlar alır ve motorunuzun istendiği gibi çalışmasını sağlamak için tüm ağır işleme ve güç dağıtımını yapar. Arduino, PWM, Analog voltaj, basit seri veya paket seri yoluyla Roboclaw'a sinyal gönderebilir. Roboclaw'dan konumsal takip için gerekli olan bilgileri geri almanıza izin verdiği için paket seri en iyi yoldur. Bir sonraki adımda (programlama) Roboclaw'ın yazılım/programlama kısmına daha derinden dalacağım.

Özünde, Roboclaw, RoboClaw'ın konumsal kontrol yapma yeteneği sayesinde bir DC fırçalanmış motoru bir kodlayıcı ile daha çok bir servo gibi olacak şekilde dönüştürebilir. Bununla birlikte, geleneksel bir servodan farklı olarak, şimdi fırçalanmış DC motorunuz çok daha fazla torka, yüksek motor dişlisi nedeniyle çok daha fazla konum doğruluğuna sahiptir ve en önemlisi, DC motorunuz geleneksel bir servonun yapamayacağı şekilde 360 derece sürekli dönebilir.

Bir sonraki elektronik kısım ekrandır. Ekranım için boyutu ve yüksek kontrastı nedeniyle bu OLED paneli seçtim. Bu yüksek kontrast inanılmaz ve olası bir karanlık kamera çekimine müdahale edebilecek çok fazla ışık vermeyerek ekranın doğrudan güneş ışığında kullanımını çok kolaylaştırıyor. Bu ekran, başka bir U8G uyumlu ekranla kolayca değiştirilebilir. Uyumlu ekranların tam listesi burada mevcuttur. Aslında bu proje kasıtlı olarak U8G kütüphanesi etrafında kodlandı, bu yüzden sizin gibi kendin yap inşaatçıları kendi bölümlerinde daha fazla esnekliğe sahip oldular.

Bu projenin son elektronik parçaları, döner kodlayıcı ve kaydırıcı hareketini başlatmak için basma düğmesiydi. Kodlayıcı, ekran menüsünde gezinmenize ve tüm kaydırıcı menüsünü tek bir kadranla yapılandırmanıza olanak tanır. Döner kodlayıcının geleneksel bir potansiyometre gibi "son" konumu yoktur ve bu özellikle ekrandaki nesne takibinin x ve y koordinatlarını ayarlamak için kullanışlıdır. Basmalı düğme, döner kodlayıcıyla uğraşmak zorunda kalmadan yalnızca kaydırıcının hareketini başlatmak için kullanılır.

Adım 3: Kamera Kaydırıcısını Programlama

Kamera Kaydırıcısını Programlama
Kamera Kaydırıcısını Programlama
Kamera Kaydırıcısını Programlama
Kamera Kaydırıcısını Programlama

Kodlama, bu projenin açık ara en zor sorunuydu. Görüyorsunuz, en başından beri kaydırıcının bir ekrandan kontrol edilebilir olmasını istedim. Bu projeyi olabildiğince çok ekranla uyumlu hale getirmek için Arduino için U8Glib Kütüphanesini kullanmak zorunda kaldım. Bu kütüphane 32'den fazla ekranı destekler. Ancak, U8Glib kütüphanesi, menüyü ekranda çizmek için bir resim döngüsü kullandı ve bu, Arduino'nun kamera açısı hesaplama işlevi için gerekli olan kameranın konumu hakkında aynı anda bilgi toplama yeteneği ile çelişiyordu (Bu, sonraki birkaç paragrafta ele alınmıştır).). U8Glib2, tam sayfa arabellek seçeneği adı verilen bir şey kullanarak resim döngüsüne bir alternatife sahiptir, ancak kitaplık çok fazla bellek tüketir ve Arduino Uno'nun bellek kısıtlamaları nedeniyle kodun geri kalanına uymayı zorlaştırır. Bu, U8G'ye takılıp kaldığım ve kaydırıcı hareket halindeyken ekranın güncellenmesini engelleyerek sorunu çözmem gerektiği ve Arduino'nun Roboclaw'dan konumsal veri toplaması gerektiği anlamına geliyordu. Ayrıca alt menülere girdiğimde, resim döngüsünün içinde olacağım ve kaydırıcı istendiği gibi çalışmayacağı için menü döngüsünün dışına hareket etmeye başlamak için kaydırıcıyı tetiklemek zorunda kaldım. Ayrıca, kaydırıcının hareketini tetikleyen ayrı bir fiziksel düğmeye sahip olarak bu sorunu çözdüm.

Şimdi rotasyonel izleme öğesi hakkında konuşalım. Bu kısım entegre etmek için çok karmaşık görünüyor, ama aslında oldukça basit. Bunun uygulaması, Arduino kodumdaki 'motor()' işlevi altında. İlk adım, 2 boyutlu bir ızgara oluşturmak ve izlemek istediğiniz nesnenin nereye yerleştirileceğine karar vermektir. Buna dayanarak mevcut konumunuza bir üçgen çizebilirsiniz. Mevcut konumunuzu motorun enkoder değerinden öğrenebilirsiniz. Takip edilen nesnenin konumunu cm/mm cinsinden yapılandırmak istiyorsanız, kodlayıcı değerinizi cm/mm değerine çevirmeniz gerekecektir. Bu, kamera kaydırıcısını 1 cm hareket ettirerek ve kodlayıcı değerindeki artışı ölçerek yapılabilir. Bu değeri encoder_mm değişkeninin altındaki kodun en üstüne girebilirsiniz.

Devam edersek, şimdi ters tanjant fonksiyonunu kullanarak kameranın nesnenize bakacak şekilde bakması gereken açıyı elde edeceğiz. Ters teğet üçgenin zıt ve bitişik tarafını alır. Üçgenin karşı tarafı, kaydırıcınızdan nesneye olan y mesafesi olduğu için asla değişmez. Ancak kamera kaydırıcısının bitişik tarafı değişir. Bu bitişik taraf, nesnenin x konumunu alarak ve mevcut konumunuzu ondan çıkararak hesaplanabilir. Kaydırıcı hareket aralığında hareket ederken, Arduino'yu kodlayıcı değerinde güncellemeye devam edecektir. Arduino, bu kodlayıcı değerini tekrar tekrar bir cm/mm x konum değerine dönüştürecek ve ardından bitişik kenar uzunluğunu hesaplayacak ve son olarak, nesneyi işaret etmek için kameranın her zaman bakması gereken açıyı hesaplayacaktır.

Artık Arduino'muz kamera açısını dinamik olarak işlediğine göre, bu açıyı döner motorun hareket etmesi için konumsal bir değere dönüştürmenin üstesinden gelebiliriz. Bu, bizi bu proje için RoboClaw'ın en büyük özelliğine getiriyor. Roboclaw'a bir konum değeri vererek, aslında DC fırçalanmış bir motorun bir servo gibi davranmasını sağlayabilir. Bir servodan farklı olarak, motorumuz tonlarca daha fazla torka, çok daha yüksek hassasiyete sahiptir ve ayrıca 360 Derece dönebilir.

Roboclaw'ı belirli bir konuma taşımak için Arduino kodu aşağıdaki gibidir:

roboclaw. SpeedAccelDeccelPositionM1(adres, 'hız', 'hızlanma', 'yavaşlama', 'gitmek istediğiniz konum', 1);

Motorun konum değerini kamera açınıza göre ayarlamak için kamera plakasını manuel olarak 180 derece hareket ettirmeniz gerekecektir. Ardından, kamera plakasını 0 dereceden 180 dereceye hareket ettirmekten enkoder değerinin ne kadar değiştiğini görün. Bu size kodlayıcı aralığınızı verir. Bu aralığı, Arduino'nun kamera açısını konumsal bir değere eşleyen motor işlevine girebilirsiniz. Bu ayrıca kodda yorumlanmıştır, bu nedenle *****'yi bulmak kolay olmalıdır.

RoboClaw ayrıca hızlanma, yavaşlama ve PID değerleri gibi diğer faktörleri ayarlama yeteneği de verdi. Bu, özellikle açı değişiklikleri küçük olduğunda ve yüksek 'D' PID değeri olmayan sarsıntıların eklendiği durumlarda, dönme ekseni hareketini daha da yumuşatmamı sağladı. Ayrıca, Roboclaw'ın masaüstü uygulaması aracılığıyla PID değerlerinizi otomatik olarak ayarlayabilirsiniz.

Adım 4: Kamera Kaydırıcısını Çalıştırma

Kamera Kaydırıcısını Çalıştırma
Kamera Kaydırıcısını Çalıştırma

Şimdi eğlenceli kısma geldik, kaydırıcıyı çalıştırıyoruz Menüde 4 ana sekme var. Üst sekme hız kontrolüne ayrılmıştır. Menünün orta satırı, izlenen nesnenin X & Y konumunu mm cinsinden yapılandırmak için sekmeler içerir ve ayrıca kaydırıcının nesnemizi döndürmesini ve izlemesini mi yoksa döndürmeden basit bir kaydırma hareketi yapmasını mı istediğimizi yapılandırır. Döner kodlayıcıyı çevirmek, menülerin farklı seçenekleri arasında gezinmemizi sağlar. Seçeneklerden herhangi birini yapılandırmak için seçeneğe gidin ve döner kodlayıcıya basın. Bir kez basıldığında, döner kodlayıcıyı döndürmek, menüde gezinmek yerine vurgulanan alt menünün değerini değiştirecektir. İstediğiniz değere ulaştıktan sonra döner kodlayıcıya tekrar tıklayabilirsiniz. Artık ana menüye döndünüz ve farklı sekmeler arasında gezinebilirsiniz. Hazır olduğunuzda, ekranın yanındaki git düğmesine basmanız yeterlidir; kaydırıcı işini yapar!

Kamera kaydırıcısını kullanmayı bitirdikten sonra kameranın "ev" konumunda olduğundan emin olun: kaydırıcının başladığı tarafta. Bunun nedeni, motor kodlayıcının mutlak bir kodlayıcı olmaması, yani Roboclaw/Arduino'nun kodlayıcının nerede olduğunu söyleyememesidir. Yalnızca kodlayıcının en son açıldığından beri ne kadar değiştiğini söyleyebilirler. Bu, kamera kaydırıcınızı kapattığınızda kaydırıcının kaydırıcı konumunu 'unutacağı' ve kodlayıcıyı 0'a sıfırlayacağı anlamına gelir. Bu nedenle, kaydırıcınızı diğer taraftan kapatırsanız, açtığınızda kaydırıcı kenardan daha ileri gitmeye çalışın ve kaydırıcı duvara çarpın. Bu kodlayıcı davranışı, kameranın her kamera kaydırma hareketinden sonra dönüş açısını sıfırlamasının da nedenidir. Dönme ekseni de kendisini hareket aralığının sonuna çarpmaktan koruyor.

Başlatırken son duraklar ve bir hedef arama prosedürü ekleyerek bunu düzeltebilirsiniz. 3d yazıcıların kullandığı şey budur.

Adım 5: Son Düşünceler + Gelecekteki İyileştirmeler

Her oluşturucunun, aynı kaydırıcıyı oluşturmak yerine, bu kaydırıcının kendi sürümlerini oluşturmasını şiddetle tavsiye ederim. Tasarımımda ince ayar yapmak, elektronik ve kodun nasıl çalıştığını daha iyi anlamanın yanı sıra, kaydırıcınızı tam özelliklerinize göre oluşturmanıza olanak tanır.

Kaydırıcı özellikleriniz için farklı kod değişkenlerini ayarlayabilmeniz/kalibre edebilmeniz için kodu olabildiğince okunabilir ve yapılandırılabilir hale getirdim. Kod ayrıca tamamen işlevler etrafında oluşturulmuştur; bu nedenle, kaydırıcının belirli davranışlarını kopyalamak/düzeltmek/yeniden yazmak istiyorsanız, tersine mühendislik ve tüm kodu yeniden işlemeniz gerekmez, bunun yerine yalnızca düzenlemek istediğiniz kısımlar üzerinde çalışmanız gerekir.

Son olarak, bir sürüm 2.0 yapsaydım, yapacağım bazı iyileştirmeler

  1. Döner eksenli motor için daha yüksek dişli oranı. Daha yüksek dişli oranı, daha hassas küçük hareketler yapabileceğim anlamına geliyor. Bu, özellikle kamera nesnenizden uzaktayken ve kamera açınız çok yavaş değişiyorsa kritiktir. Şu anda motorum çok yüksekte değil ve kamera kaydırıcısı çok yavaş çalıştığında veya çok az dönüş açısı değişikliği olduğunda hafif sarsıntılı hareketlere neden olabilir. Yüksek bir 'D' PID değeri eklemek, bundan kurtulmama yardımcı oldu, ancak biraz daha düşük nesne izleme doğruluğu pahasına geldi.
  2. Modüler uzunluk. Bu çok zor bir hedef, ancak kamera kaydırıcısının modüler olmasını çok isterim, bu da kameranın kayması için daha uzun uzunlukları kolayca ekleyebileceğiniz anlamına gelir. Bu oldukça zordur, çünkü her iki paleti de mükemmel bir şekilde hizalamak ve kayış sisteminin nasıl çalışacağını bulmak gerekir. Yine de, harika bir yükseltme olurdu!
  3. Özel hareket Keyframe. Bu kamera kaydırıcısına anahtar kareli hareketler kavramını tanıtmayı çok isterim. Anahtar kare oluşturma, video ve ses üretiminde çok yaygın olarak kullanılan bir tekniktir. Kameranın bir konuma gittiği, beklediği, ardından farklı bir hızda başka bir konuma geçtiği, beklediği, sonra üçüncü bir konuma geçtiği vb. doğrusal olmayan kamera hareketlerini mümkün kılacaktır.
  4. Bluetooth/ kablosuz telefon kontrolü. Kamera kaydırıcısının parametrelerini kablosuz olarak yapılandırabilmek ve kamera kaydırıcısını erişilmesi zor yerlere yerleştirebilmek gerçekten harika olurdu. Telefon uygulaması, son paragrafta belirtildiği gibi ana kareyi entegre etme fırsatlarını da açabilir.

Bu eğitim için bu kadar. Herhangi bir sorunuzu aşağıdaki yorumlar bölümüne bırakmaktan çekinmeyin.

Daha fazla içerik ve elektronik eğitimi için YouTube kanalıma buradan da göz atabilirsiniz.

Önerilen: