Bagaimana saya bisa memodifikasi servo hobi biaya rendah untuk menjalankan 'bebas'?

15

Saya punya beberapa hobby servos ( Power HD 1501MGs ) dan saya ingin bisa mengendalikan mereka (melalui Arduino) sehingga mereka akan pergi ke sudut yang saya atur, atau menempatkannya dalam mode 'berlari bebas', ke mana beban akan membawa mereka ke mana pun ia pergi.

Apakah ini bahkan mungkin, atau apakah saya hanya akan melepas roda gigi?

Pikiran pertama saya adalah membunuh kekuatan pada servo, tetapi kekuatan yang dibutuhkan untuk memindahkan mereka dalam keadaan itu lebih dari yang saya inginkan.

Jika mungkin, apakah saya melihat perubahan perangkat keras, atau bisakah saya melakukannya dalam perangkat lunak?

Khrob
sumber
3
Serial hobi tidak benar-benar cocok untuk robot yang tangguh, dan servos hobi modifikasi bahkan lebih buruk. Anda tidak akan menyukai apa yang Anda dapatkan jika Anda melakukan ini. Beli motor DC gearhead yang terjangkau dan H-bridge kecil untuk mengendarainya, itu akan jauh lebih kuat, dan Anda akan jauh lebih bahagia. Anda dapat membangun jembatan H dari sirkuit L298 dengan biaya yang sangat rendah.
Jon Watte
1
Saya kira pertanyaan saya berikutnya di sini adalah 'apa jembatan-h?' (Tapi saya akan coba google dulu!)
Khrob

Jawaban:

13

Apa yang Anda minta tidak akan mudah dengan servo RC standar.

Apa yang Anda minta adalah servo back-drivable. Yaitu yang dapat Anda putar dengan bebas dengan menerapkan torsi eksternal. Memang mungkin untuk membuat ini, dan mereka digunakan pada banyak robot, tetapi sebagian besar servo RC memerlukan torsi yang cukup besar untuk menggerakkan mereka. Saya akan menyebutnya semi-backdrivable.

Apa yang mencegah Anda kembali mengemudi mereka? Dua hal:

Gesekan: Pertama, gesekan dalam rantai gigi dan motor. Servo RC selalu diarahkan; output berputar lebih lambat dari motor. Tentu saja ini berarti bahwa ketika Anda mencoba mengendarainya kembali, Anda harus memutar motor dengan sangat cepat. Setiap gesekan atau cogging di motor akan terasa puluhan kali di output.

kemunduran

Saat ini: sesuatu yang mengejutkan tentang motor listrik adalah, jika Anda membuat terminal pendek, mereka menjadi lebih sulit untuk berputar. Rotasi motor menghasilkan arus listrik yang bekerja melawan rotasi Anda. Elektronik di dalam servo mungkin memungkinkan arus yang cukup mengalir, bahkan ketika mati, yang secara nyata mencegah backdrivability. Di masa lalu saya perhatikan bahwa beberapa motor stepper besar, bahkan ketika tidak dinyalakan, hampir tidak mungkin untuk dikendarai kembali ketika dicolokkan ke peralatan yang tidak bermesin. Tetapi ketika Anda mencabutnya, mereka dapat berputar bebas.

Jadi, salah satu cara Anda dapat meningkatkan back-drivability adalah untuk mencegah arus yang mengalir. Cara yang jelas untuk melakukan ini adalah untuk melepaskan motor sepenuhnya dari elektroniknya. Tapi ini sulit dilakukan, bahkan menggunakan FET, karena dioda di dalam FET memungkinkan arus mengalir. Namun, Anda dapat menggunakan relay, yang benar-benar akan memutuskan sambungan motor. Anda hanya perlu menggunakannya di salah satu terminal motor.

Maxon ESCON

Pengontrol servo yang 'tepat' (seperti ESCON dari Maxon) sebenarnya mengandung pengontrol arus yang dapat secara aktif mencegah aliran arus dengan menerapkan tegangan yang benar di terminal motor. Mengganti elektronik dalam servo dengan sesuatu yang mampu mengendalikan saat ini mungkin sangat membantu.

Apa yang harus Anda lakukan: Buka servo, buka solder motor, dan pasang kembali. Seberapa mudah untuk melakukan back-drive sekarang? Jika mudah, maka dimungkinkan untuk melakukan apa yang Anda inginkan. Jika masih terlalu sulit untuk aplikasi Anda, maka Anda harus memilih servo yang berbeda, atau membuat sendiri. Buat satu dengan tahap roda gigi tunggal sehingga gesekan gigi berkurang sebanyak mungkin, dan gunakan drive elektronik dengan loop kontrol saat ini untuk menjamin aliran arus nol.

Roket
sumber
Jawaban SimpleCoder juga sangat baik.
Khrob
7

Pertanyaan menarik.

Opsi pertama yang akan saya selidiki adalah memotong daya seperti yang Anda sarankan (mungkin mengontrol MOSFET dalam perangkat lunak untuk mengganti daya).

Pendekatan lain yang lebih rumit mungkin untuk memantau konsumsi servo saat ini untuk mendeteksi ketika sedang di bawah beban berat. Ketika Anda ingin masuk ke mode "berlari bebas", minta perangkat lunak Anda mencoba untuk terus memindahkan servo ke posisi yang menghasilkan konsumsi paling tidak saat ini. Ini tidak akan sepenuhnya menghasilkan servo "berjalan bebas", karena akan ada beberapa gerakan gelisah dari servo ketika perangkat lunak berusaha untuk menemukan posisi "tepat", tetapi mungkin bekerja tergantung pada aplikasi Anda.

Anda tidak perlu memodifikasi servos Anda untuk memantau konsumsi saat ini. Papan seperti ini dari SparkFun akan berada di antara servo dan sumber dayanya (Anda memerlukan salah satu dari ini per servo) dan akan menampilkan tegangan analog (yang dapat Anda baca pada pin ADC mikrokontroler) yang sesuai dengan arus:

masukkan deskripsi gambar di sini

Gambar dari SparkFun

Chris Laplante
sumber
@Khrob: Silakan lihat edit saya
Chris Laplante
Bagus - Sekarang saya sudah memesan banyak!
Khrob
@ Khrob: Bagus, beri tahu kami cara kerjanya! (Dan tolong jangan salahkan saya jika itu tidak berhasil;))
Chris Laplante
@ Khrob: Juga, perhatikan bahwa tergantung pada seberapa kecil arus yang Anda ukur, Anda mungkin memerlukan papan yang lebih sensitif: sparkfun.com/products/8883
Chris Laplante
1
Saya akan mulai murah & bekerja dengan cara saya!
Khrob
5

Biasanya, jenis hobi servos ini tidak dibuat untuk rotasi terus menerus, dan akan sering termasuk berhenti mekanis. Hati-hati, apa yang saya uraikan di bawah ini adalah cara yang pasti untuk tidak pernah mendapatkan operasi loop tertutup yang sebenarnya, tetapi sebaliknya akan membuat servo hanya terus menerus.

Sebagian besar waktu, Anda dapat melakukan pencarian cepat online untuk "Modifikasi berkelanjutan untuk x servo", tetapi saya akan menguraikan proses umum di sini.

  • Tentukan apakah servo berhenti secara fisik. Jika ya, Anda harus membuka servo dan menghapusnya (saya sarankan alat Dremel).
  • Anda kemudian ingin menemukan "pusat" dari mekanisme umpan balik.
    • Hubungkan servo ke Arduino Anda dan kirim perintah "center" (biasanya PWM 127).
    • Temukan mekanisme umpan balik (biasanya potensiometer), dan potong hingga servo tidak bergerak sama sekali.
    • Lekatkan potensiometer pada tempatnya, atau ukur resistansi dan ganti potensiometer dengan resistor nilai yang ditetapkan.
  • Pasang kembali servo.

Sekarang mengirim perintah "pusat" ke servo harus menghentikannya bergerak, sementara mengirimkannya perintah positif atau negatif harus membuatnya berputar terus menerus dalam satu arah atau yang lain. Kecepatan rotasi harus sebanding dengan "jarak" dari pusat perintah yang dikirim.

Jika Anda ingin mengembalikan operasi servo ke servo Anda yang baru dimodifikasi, Anda dapat menambahkan semacam encoder untuk menutup kembali loop.

Atau, Anda mungkin ingin melihat servo seri Dynamixel , yang memungkinkan untuk operasi berkelanjutan dan servo, dan termasuk beberapa dukungan Arduino.

mjcarroll
sumber
Saya baik-baik saja karena ada batas mekanis pada gerakan, tetapi ini akan menjadi cara yang baik untuk memperpanjangnya lebih jauh untuk memiliki celah pada pengaturan pendulum terbalik! Saya telah melihat hal-hal Dynamixel, dan itu sangat keren, tetapi lebih banyak $$ daripada yang saya harapkan untuk ini.
Khrob
Kesan saya adalah bahwa OP ingin memulai sesuatu dengan menggerakkan servo dan kemudian membiarkannya "meluncur" tanpa daya sampai secara alami berhenti dari inersia. Saya tidak tahu ada desain servo (berkelanjutan atau tidak) yang akan memungkinkan efek ini terjadi.
Crake
@Cake, saya setuju, saya percaya bahwa saya menjawab pertanyaan yang salah, tapi saya akan meninggalkan ini, karena saya sudah melakukan pekerjaan: hal. IIRC, Dynamixel servos harus memiliki pengaturan "coast".
mjcarroll
@ mjcarroll Yap, saya pikir sangat berguna untuk menyebutkan cara memodifikasi servo untuk rotasi terus menerus karena itu adalah tugas umum untuk proyek robot murah. Saya ingin tahu apakah servami Dynamixel menggunakan algoritma pengukuran saat ini yang dijelaskan dalam jawaban SimpleCoder, terus-menerus berusaha meminimalkan arus dengan menyesuaikan PWM, atau jika mereka memiliki kopling fisik untuk melepaskan motor servo dari poros penggerak.
Crake
2

Jangan, sebaliknya dapatkan sendiri beberapa motor yang layak dan mengendarainya melalui jembatan-h seperti yang akan Anda temukan di pelindung motor ini .


Motor Pololu

Arduino Motor Shield

Jay Beavers
sumber