PCA9685を使ったサーボモーターの制御

English page

PWM出力を行うことができるPCA9685を使うことで、サーボモーターを制御することができます。

PCA9685

PCA9685関連のブロックは、「モーター」→「PCA9685」のグループにあります。

「モーター」→「PCA9685」グループのブロック

配線

PCA9685はI2Cでマイコンに接続します。
I2C接続に使うピン番号は、マイコンによって異なります。
詳しくは、「I2C接続」のページを参照してください。

例えば、無印のESP32の場合、SDAを21番ピン、SCLを22番ピンに接続します。
また、VCCとGNDを、マイコンの3V3(または5V)とGNDのピンに接続します。

0~15のPWM/V+/GNDの3ピンの端子には、サーボモーターを接続します。
また、V+とGNDのターミナルブロックには、外部電源(5~6V)を接続します。

マイコンとしてESP32を使い、サーボモーターをPCA9685の0番のピンに接続する場合の配線は、以下の図のようになります。

ESP32とPCA9685の配線

初期化

無印ESP32など、I2Cのピン番号が固定のマイコンの場合は、「PCA9685の初期化」のブロックを使います。

PCA9685の初期化

また、ESP32-S3など、I2Cのピン番号が可変のマイコンの場合は、初期化の際にピン番号を指定するブロックを使います。

I2Cのピン番号を指定してPCA9685を初期化のサムネイル画像

サーボモーターを回転させる

回転のブロックを使って、サーボモーターを0度から180度の範囲で回転させることができます。
0~15番のピン番号と、回転させる角度を指定します。

サーボモーターの回転

パルス幅の指定

サーボモーターによっては、0度から180度まで十分に回転しない場合があります。
その時は、パルス幅を指定するブロックで、0度と180度に対応するパルス幅を調節してみます。
デフォルトでは、0度と180度に対応するパルス幅は、それぞれ500と2550になっています。

パルス幅の設定

事例

PCA9685に接続した2つのサーボモーターを、0度~180度の範囲で回転させる例です。
I2Cが可変のマイコンで、SDA/SCLをそれぞれ4番/5番ピンに接続するものとしています。
このプログラムは、こちらからダウンロードすることができます。

PCA9685を動作させる事例