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の解説
50Mhzの周期は20m秒。PCA 9685は、12ビットであるから、サーボモータの1周期の4096ビットだとすると1ビットは20m秒➗4096=0.0048m秒0.5m秒が左いっぱいだとすると104ビット右いっぱいが2.4m秒なので500ビットとなる。中間は500 + 104 ➗ 2で302となる。
PCA9685は内部発振なので数値に若干のばらつきがあります。
※I2Cデバイスアドレスが衝突する場合は、裏面にあるスライドスイッチでアドレスが変更できます。