Düşük maliyetli bir hobi servoyu 'serbestçe' çalışacak şekilde nasıl değiştirebilirim?


15

Bazı hobi servolarım var ( Power HD 1501MG'ler ) ve onları (Arduino aracılığıyla) kontrol edebilmek istiyorum, böylece ayarladığım açıya gidecekler veya 'serbest çalışma' moduna getirecekler, yükün nereye giderse gitsin.

Bu mümkün mü, yoksa sadece dişlileri soymaya mı gideceğim?

İlk düşüncem, servo için gücü basitçe öldürmek, ancak onları bu durumda taşımak için gereken güç istediğimden daha fazla.

Mümkünse, bir donanım değişikliğine mi bakıyorum yoksa yazılımda yapabilir miyim?


3
Hobi servoları sağlam robotlar için gerçekten uygun değildir ve modifiye hobi servoları daha da kötüdür. Bunu yaparsanız ne elde edeceğinizi sevmezsiniz. Bunun yerine kullanmak için uygun fiyatlı bir redüktör DC motoru ve küçük bir H köprüsü satın alın, çok daha sağlam olacak ve çok daha mutlu olacaksınız. Çok düşük maliyetle bir L298 devresinden bir H köprüsü inşa edebilirsiniz.
Jon Watte

1
Sanırım burada bir sonraki sorum 'h-köprüsü nedir?' (Ama önce google'ı deneyeceğim!)
Khrob

Yanıtlar:


13

Sorduğunuz standart bir RC servo ile çok kolay olmayacak.

İstediğiniz şey geri çekilebilir bir servo. Harici bir tork uygulayarak serbestçe döndürebileceğiniz bir IE. Bunları oluşturmak kesinlikle mümkündür ve birçok robotta kullanılırlar, ancak çoğu RC servosu bunları geri sürmek için önemli miktarda tork gerektirir. Onlara yarı geri çekilebilir diyebilirim.

Onları geri sürmenizi ne engelliyor? İki şey:

Sürtünme: İlk olarak dişli zincirinde ve motorda sürtünme. RC servoları daima redüktördür; çıkış motordan daha yavaş döner. Tabii ki bu, onu geri sürmeye çalıştığınızda, motoru çok hızlı döndürmeniz gerektiği anlamına gelir. Motordaki herhangi bir sürtünme veya dişli, çıkışta düzinelerce zaman hissedilecektir.

backdrivability

Akım: elektrik motorları hakkında şaşırtıcı olan şey, terminalleri kısaltırsanız dönüşlerinin zorlaşmasıdır. Motorun dönüşü, dönüşünüze karşı çalışan bir elektrik akımı üretir. Servo içindeki elektronik devreler, kapalı olduğunda bile, geri çekilebilirliği belirgin şekilde önleyecek kadar akımın akmasına izin verebilir. Geçmişte, bazı büyük step motorların, ağzı açık olmasa bile, güçsüz ekipmana takıldığında geri çekilmesinin neredeyse imkansız olduğunu fark ettim. Fakat fişini çektiğiniz zaman serbestçe döndürülebilirler.

Dolayısıyla, geri sürüşü geliştirmenin bir yolu, akım akışını önlemektir. Bunu yapmanın bariz yolu, motoru elektronik parçalarından tamamen ayırmaktır. Ancak, FET'leri kullansa bile bunu yapmak zordur, çünkü FET'lerin içindeki diyotlar akımın akmasına izin verebilir. Ancak, motorun bağlantısını gerçekten kesecek bir röle kullanabilirsiniz. Bunu sadece motor terminallerinden birinde kullanmanız gerekir.

Maxon'un ESCON'u

'Uygun' servo kontrolörler ( Maxon ESCON gibi ) aslında motor terminallerine doğru voltajı uygulayarak akım akışını aktif olarak önleyebilen bir akım kontrolörü içerir. Servodaki elektronik aksamı, mevcut kontrol yeteneğine sahip bir şeyle değiştirmek gerçekten yardımcı olabilir.

Yapmanız gerekenler: Servoyu açın, motoru lehimleyin ve tekrar monte edin. Şimdi geri gitmek ne kadar kolay? Kolaysa, istediğinizi yapmak mümkün olabilir. Uygulamanız için hala çok zorsa, farklı bir servo seçmeniz veya kendinizinkini yapmanız gerekecektir. Vites sürtünmesinin mümkün olduğunca azaltılması için tek bir vites kademesiyle bir tane yapın ve sıfır akım akışını garanti etmek için akım kontrol döngüsüne sahip sürücü elektroniği kullanın.


SimpleCoder'ün yanıtı da mükemmel.
Khrob

7

İlginç soru.

Araştırdığım ilk seçenek, önerdiğiniz gibi gücü kesmek olacaktır (belki de gücü değiştirmek için yazılımdaki bir MOSFET'i kontrol etmek).

Daha karmaşık bir başka yaklaşım da, ağır yük altındayken tespit etmek için servo akım tüketimini izlemek olabilir. "Serbest çalışma" moduna geçmek istediğinizde, yazılımınızın servoyu sürekli olarak en az akım tüketen bir konuma getirmeye çalışmasını sağlayın. Yazılım "doğru" konumu bulmaya çalışırken servodan bazı gergin hareketler olacağından, bu tamamen "serbest çalışan" bir servo ile sonuçlanmaz, ancak uygulamanıza bağlı olarak işe yarayabilir.

Mevcut tüketimi izlemek için servolarınızı değiştirmeniz gerekmez. SparkFun'dan böyle bir kart , servo ile güç kaynağı arasında (servo başına bunlardan birine ihtiyacınız vardır) oturur ve akıma karşılık gelen bir analog voltaj (mikrodenetleyici ADC pininde okuyabilirsiniz) verir:

resim açıklamasını buraya girin

SparkFun'dan görüntü


@Khrob: Lütfen düzenlememi görün
Chris Laplante

Güzel - Şimdi bunlardan bir demet sipariş ettim!
Khrob

@Khrob: Güzel, nasıl çalıştıklarını bize bildirin! (Ve eğer işe yaramazsa lütfen beni suçlamayın;))
Chris Laplante

@Khrob: Ayrıca, ne kadar küçük akım ölçtüğünüze bağlı olarak, daha hassas bir karta ihtiyacınız olabileceğini unutmayın : sparkfun.com/products/8883
Chris Laplante

1
Ben ucuza başlayacağım ve yoluma devam edeceğim!
Khrob

5

Genellikle, bu tür hobi servoları sürekli dönüş için yapılmaz ve genellikle mekanik bir durdurma içerir. Dikkat edin, aşağıda özetlediğim şey, asla gerçek kapalı döngü çalışmasını elde etmenin kesin bir yoludur, ancak bunun yerine servoyu sadece sürekli hale getirecektir.

Çoğu zaman, "x servo için sürekli değişiklik" için çevrimiçi hızlı bir arama yapabilirsiniz, ancak burada genel süreci özetleyeceğim.

  • Servoda fiziksel bir durdurma olup olmadığını belirleyin. Varsa, servoyu açıp çıkarmanız gerekir (Dremel aracını öneririm).
  • Daha sonra geri bildirim mekanizmasının "merkezini" bulmak istersiniz.
    • Servoyu Arduino'nuza bağlayın ve bir "orta" komutu gönderin (genellikle PWM 127).
    • Geri bildirim mekanizmasını (tipik olarak bir potansiyometre) bulun ve servo hiç hareket etmeyene kadar düzeltin.
    • Potansiyometreyi yerine yapıştırın veya direnci ölçün ve potansiyometreyi ayarlı bir değer direnci ile değiştirin.
  • Servoyu yeniden monte edin.

Şimdi servoya bir "orta" komut göndermek, hareket etmesini durdurmalı, pozitif veya negatif bir komut göndermek ise bir yönde veya diğerinde sürekli dönmesine neden olmalıdır. Dönüş hızı, gönderilen komutun merkezinden "uzaklık" ile orantılı olmalıdır.

Servo işlemini yeni değiştirilmiş servo'nuza geri yüklemek istiyorsanız, döngüyü yeniden kapatmak için bir çeşit kodlayıcı ekleyebilirsiniz.

Alternatif olarak, hem sürekli hem de servo çalışmasına izin veren ve bazı Arduino desteği içeren Dynamixel serisi servoya bakmak isteyebilirsiniz .


Hareket için mekanik bir sınır olması konusunda iyiyim, ancak bu, ters sarkaç kurulumunda bir çatlak olması için daha da genişletmek için iyi bir yol olurdu! Ben Dynamixel şeyler baktım, ve çok güzel, ama bu harcamak için umuyoruz daha fazla $$.
Khrob

Benim izlenimim OP bir servo sürerek harekete bir şey başlatmak ve daha sonra doğal atalet duruncaya kadar güç olmadan "sahil" izin istedi. Bu etkinin gerçekleşmesine izin verecek herhangi bir servo tasarımı (sürekli ya da değil) bilmiyorum.
Crake

@ Fren, katılıyorum, yanlış soruya cevap verdiğime inanıyorum, ama işi zaten yaptığım için bırakacağım: s. IIRC, Dynamixel servolarının "sahil" ayarına sahip olması gerekir.
mjcarroll

@mjcarroll Evet, bence ucuz robot projeleri için ortak bir görev olduğu için sürekli rotasyon için bir servoyu nasıl değiştireceğinizden bahsetmek yararlıdır. Dynamixel servolarının SimpleCoder yanıtında açıklanan akım ölçüm algoritmasını kullanıp kullanmadığını, sürekli olarak PWM'yi ayarlayarak akımı en aza indirmeye çalışıp çalışmadığını veya servo motoru tahrik milinden ayırmak için fiziksel bir kavramaya sahip olup olmadığını merak ediyorum.
Crake

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.