PCA9685 16チャンネル 12ビット PWM サーボモータードライバ I2C モジュール
PCA9685 は、NXP セミコンダクターズの I2C 接続の PWM コントローラである.これを搭載したモジュールを使うことで、Raspberry Pi や micro:bit などから、16 チャンネルのサーボモーターや LED を制御できる.
主な仕様
- 出力チャンネル数: 16
- PWM の分解能: 12ビット(4096 段階)
- PWM 周波数: 全チャンネル共通で、約 24Hz から 1526Hz の範囲で設定可能(一般的なアナログサーボモーターでは 50Hz を使用する)
- インタフェース: I2C.基板上のジャンパ(A0〜A5)でアドレスを変更でき、複数枚を接続できる.既定の I2C アドレスは 0x40 であることが多い
- 電源: ロジック用の電源とは別に、サーボモーター用の電源(V+ 端子)を接続する
サーボモーターは、動作時に大きな電流を消費する.Raspberry Pi の電源からサーボモーターに給電すると、電圧降下により Raspberry Pi が再起動することがある.サーボモーター用には、モーターの定格に合った外部電源を V+ 端子に接続する.
Raspberry Pi での準備
- I2C の有効化
端末で,次のコマンドを実行.
表示されるメニューで「Interface Options」、「I2C」の順に選び、有効にする.
sudo raspi-config - I2C ツールのインストールと接続確認
端末で,次のコマンドを実行.
モジュールが認識されていれば、アドレス(既定では 40)が表示される.
sudo apt update sudo apt -y install i2c-tools i2cdetect -y 1 - Python ライブラリのインストール
Raspberry Pi OS のシステム Python は外部管理環境(PEP 668)として保護されているため、Python の仮想環境を作成してインストールする.
python3 -m venv --system-site-packages ~/servo source ~/servo/bin/activate pip install -U adafruit-circuitpython-pca9685 adafruit-circuitpython-servokit - 動作確認
0 番のチャンネルに接続したサーボモーターを、0 度、90 度、180 度の順に動かすプログラムである.
from adafruit_servokit import ServoKit import time kit = ServoKit(channels=16) for angle in [0, 90, 180]: kit.servo[0].angle = angle time.sleep(1)
【関連する外部ページ】
- PCA9685 のデータシート(NXP): https://www.nxp.com/docs/en/data-sheet/PCA9685.pdf
- Waveshare Servo Driver(micro:bit 用): https://www.waveshare.com/wiki/Servo_Driver_for_micro:bit
- Adafruit の CircuitPython ライブラリ: https://github.com/adafruit/Adafruit_CircuitPython_PCA9685
サーボモーター