MG996Rサーボモータ

作成日:2018-11-09
工作Python

ハイトルクで安いサーボモータがほしかったので Amazon で買いました。 たまにニセモノを掴まされることがあるらしいので注意しましょう。 僕が買ったのはたぶん正規品なので一安心です。

MG996R の仕様

広大なネットの中から漁ってきたので正確かどうかはわかりません。ご注意を。

単位仕様
トルク(4.8 V)9.4 [kgf]
トルク(6.0 V)11 [kgf]
動作速度(4.8 V)0.19 [sec] / 60 [deg]
動作速度(6.0 V)0.15 [sec] / 60 [deg]
重量55 [g]
周期20 [msec]
パルス幅0.5 ~ 2.5 [msec]

ラズパイから Python で動かしてみる

構成

今回はサーボモータをつなぐために、PCA9685 を使用しました。eneloop は PCA9685 に追加で電源供給するために使用しました。

デューティ比の計算

GitHub から adafruit-pca9685 を clone します。

もしくは 、sudo pip install adafruit-pca9685としてライブラリをインストールします。

adafruit-pca9685 は 12bit(=0 ~ 4095) の分解能をもっているので、デューティ比にそれに当てはめます。

デューティ比は周期とパルス幅から求めることができ、

$$ { デューティ比 = \frac{パルス幅}{周期} \times 100 } $$

から、2.5 ~ 12.5% であることがわかります。

つまり、PCA9685 に 102 ~ 511 ぐらいのパルスの間で MGR996R が無理なく動く範囲となります。

テストプログラム

import Adafruit_PCA9685
import time

pwm = Adafruit_PCA9685.PCA9685()
pwm.set_pwm_freq(50)
while True:
    pwm.set_pwm(1, 0, 500)
    time.sleep(1)
    pwm.set_pwm(1, 0, 100)
    time.sleep(1)
    pwm.set_pwm(1, 0, 300)
    time.sleep(1)

最大角、最小角、ニュートラルに変化する無限ループのプログラムです。