コンテンツにスキップ

Servoの制御

~/pwm/のディレクトリに移動し、プラスボタンをクリックします。

Python3のアイコンをクリックします。

Renameを選択し、ファイル名を変更します。

PWM用チップの認識

#519 Jetson OUT/INボードにあるPWM出力用のIC チップPCA9685が反応するか確認します。

I2Cアドレス0x40が表示されれば、動作OKです。(旧タイプは0x60 )

!i2cdetect -y -r 1

0x40がPCA9685のアドレス番号になっています。

PWMサーボの制御

付属のマイクロデジタルサーボSG-90を制御します。SG-90を #519 OUT/INボードのPWM0に接続します。

お使いになるサーボによって周波数が異なることがございます。

お使いになるjetsonの機種によってバス番号が異なる場合がございます。

設定にあたっては範囲を超えて波長が小さ過ぎたり、大き過ぎたりしないようにしましょう。

初期化

# coding: utf-8
import Fabo_PCA9685
import time
import pkg_resources
import smbus

# init
BUSNUM=1
SERVO_HZ=50
INITIAL_VALUE=302
bus = smbus.SMBus(BUSNUM)
PCA9685 = Fabo_PCA9685.PCA9685(bus,INITIAL_VALUE,address=0x40)
PCA9685.set_hz(SERVO_HZ)

値を設定

while True:
    # Move servo on channel O between extremes.
    PCA9685.set_channel_value(0,104)
    time.sleep(1)
    PCA9685.set_channel_value(0,500)
    time.sleep(1)

サーボホーンが約0度から約180度動くことが確認できましたら、次のページへ。

PCA9685の解説

Servo

50Mhzの周期は20m秒。PCA 9685は、12ビットであるから、サーボモータの1周期の4096ビットだとすると1ビットは20m秒➗4096=0.0048m秒0.5m秒が左いっぱいだとすると104ビット右いっぱいが2.4m秒なので500ビットとなる。中間は500 + 104 ➗ 2で302となる。

PCA9685は内部発振なので数値に若干のばらつきがあります。

※I2Cデバイスアドレスが衝突する場合は、裏面にあるスライドスイッチでアドレスが変更できます。