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?
Jawaban:
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.
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.
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.
sumber
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:
Gambar dari SparkFun
sumber
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.
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.
sumber
Jangan, sebaliknya dapatkan sendiri beberapa motor yang layak dan mengendarainya melalui jembatan-h seperti yang akan Anda temukan di pelindung motor ini .
sumber