発行済み 2026-04-29
32 個のサーボを連携して制御するための中心的な方法は、YPMFG ブランドのような PCA9685 チップに基づく 32 チャンネル PWM ドライバー ボードを使用し、Arduino/ESP32/Raspberry Pi などのメイン制御ボードの I2C インターフェイスを使用してコマンドを送信することであり、各サーボは独立して角度を制御できます。 12 ワードの概要: ワイヤを接続し、ライブラリを書き込み、PWM 値を送信します。完全なプログラム図、Arduino サンプル コード、および 5 つの高周波問題の解決策が以下に示されているため、追加で検索する必要はありません。
32 チャンネルのサーボ制御ボードとメイン制御ボードには 4 本のワイヤのみが必要です。
サーボの電源に関して注意すべき点は、32chサーボはメイン制御基板から電源を取得しないことです。 5V または 6V の安定化電源に接続する必要があります。ここでの電流の計算方法は、サーボの数と各サーボのブロック時の電流の積です。対応するプログラム図に対応する実際の配線例は以下のとおりです。
外部電源のプラス端子を制御基板に接続します。V+端子、マイナス極GND
特定のサーボを接続する場合、その赤いワイヤは制御基板の各相に対応する同じチャネルの赤いポートに接続する必要があり、茶色のワイヤは茶色のポートに接続する必要があり、オレンジと黄色のワイヤは PWM 信号ポートに接続する必要があります。
一例として、あるメーカーが12自由度のロボットを作っていたところ、外部電源が接続されていなかったため、メイン制御基板が焼損してしまいました。正しい動作方法は、6V/10A スイッチング電源を使用して制御基板に直接電源を供給することです。。
次のプログラムは、32 チャンネルのコントロール ボードを初期化し、1 番目のサーボを 0° に回転させ、3 番目のサーボを 180° に回転させ、1 サイクルですべてのサーボをスキャンします。コア関数 setPWM(channel, on, off) では、オフ値に対応するパルス幅は次のとおりです。0°は 150 に等しく、90°は 375 に等しく、180°は 600 に等しくなります (これは 50Hz の周波数に基づいており、パルス範囲は 0.5ms ~ 2.5ms です)。
#含む#含む// 公式ライブラリ Adafruit_PWMサーボドライバー pwm = Adafruit_PWMサーボドライバー(0x40); //デフォルトの I2C アドレス 0x40 #defineサーボMIN 150 // パルス幅 0° #define SERVOMAX 600 // パルス幅 180° void setup() { Serial.begin(9600); pwm.begin(); pwm.setOscillatorFrequency(27000000); // 内部発振器を校正します pwm.setPWMFreq(50); // サーボ標準 50Hz 遅延(10); } void loop() { // 0 番目のチャネルは 0°まで回転します pwm.setPWM(0, 0, SERVOMIN);遅延(1000); // 0 番目のチャンネルは 180 度回転します pwm.setPWM(0, 0, SERVOMAX);遅延(1000); // すべてのチャネルが順番にスキャンされます (int ch = 0; ch

上記のコードをArduinoにアップロードして、サーボの動きを観察します。 32 チャンネルすべてが正常な状態であれば、32 チャンネルサーボコントロールボードのプログラム図が有効であることを意味します。
Q1: サーボが全く動かないのですが、素早く位置決めするにはどうすればよいですか?
外部電源の電圧と電流を注意深く確認し、マルチメータを使用して制御基板の V+ と GND の間に電気があるかどうかを測定し、サーボを個別にテストし、PWM 信号に直接接続します。
Q2: サーボが振れたり、指定した角度まで回らないのですが?
A: 電源が不足しています。合計電流を計算するには、各サーボの電流はアイドリング時に 200mA、ローターがロックされた状態では 1A になります。 32チャンネルの場合は少なくとも10A以上のスイッチング電源が必要です。
Q3: I2C 通信に失敗しました (スキャナーがデバイスを見つけられません)?
A: SCLとSDAが逆に接続されていないか確認してください。プルアップ抵抗に関しては、ほとんどのボードに 4.7kΩ が組み込まれており、I2C レートが 100kHz に低下します。。
Q4: サーボのブランドによってパルス幅が異なる場合はどうすればよいですか?
SERVOMIN および SERVOMAX マクロに従って個別に校正します。まず、サーボを0°まで回転させるテストプログラムを作成し、実際の角度を測定して値を調整する必要があります。次に、サーボを 180 度回転させ、実際の角度を再度測定し、値を調整するテスト プログラムを作成する必要があります。
Q5: 複数のサーボを同時にスムーズに動かすにはどうすればよいですか?
まず最初に、A さんは、pwm.setPWM を使用してチャネルごとの更新操作を実行する方法について言及しました。この操作はノンブロッキングで遅延されます。したがって、複数のサーボの同期には、millis() を通じて実装される累積時間差を使用することをお勧めします。これが状況です。

Raspberry Pi ユーザーの場合、adafruit-circuitpython-pca9685 ライブラリをインストールした後、I2C に接続することもできます。次のコードは、チャンネル 2 のサーボを前後にスイングさせます。
ボードをインポート adafruit_pca9685 から Busio をインポート adafruit_motor から PCA9685 をインポート サーボをインポート i2c = Busio.I2C(board.SCL, board.SDA) pca = PCA9685(i2c, address=0x40) pca.frequency = 50 servo2 = servo.Servo(pca.channels[1], min_pulse=500、max_pulse=2500) True の場合: servo2.angle = 0 time.sleep(1) servo2.angle = 180 time.sleep(1)
プログラム図におけるRaspberry PiとArduinoの接続方法は同じで、SCLはGPIO2に、SDAはGPIO3に接続され、GNDは共通グランドとなっています。。実行前に必ずi2cdetect -y 1を使用してデバイスアドレスが0x40であることを確認してください。
に従って32チャンネルステアリングギアコントロールボードプログラム図、3時間以内に32チャンネルへの配線から独立制御を実現できます。結論を強化するには、次の順序で操作する必要があります。
1. 準備作業は、YPMFG 32 チャンネル サーボ コントロール ボードを入手し、Arduino Uno を入手し、12V ~ 5V/10A 電圧安定化モジュールを入手し、MG995 サーボを 32 個入手することです。
2. 配線を開始します。持続時間は10分です。セクション 1 の配線図に従って、I2C と外部電源を接続する必要があります。最初にサーボを接続せず、コントロールボードのインジケータライトをテストしてください。
3. Arduino コードをコピーし、Adafruit_PWMServoDriver ライブラリをインストールし、アドレスを 0x40 に変更します。このプロセスには 15 分かかります。これが書き込みプログラムです。
4. 単一のサーボでテストを実行し (所要時間 5 分)、サーボをチャネル 0 に接続し、コードをアップロードして、0° および 180° まで回転できることを確認します。。
5. 32 チャンネルに拡張、持続時間は 1 時間: すべてのサーボを 1 つずつ順番に接続し、各チャンネルの応答を確認します。
6. 校正と最適化。このプロセスには 1 時間かかります。各サーボの実際のパルス範囲を測定し、SERVOMIN/MAX 値を更新する必要があります。
要点を繰り返します。PCA9685 によって生成される PWM は、32 チャネル サーボ コントロール ボードの中核です。プログラム図の鍵は、I2C を正しく接続し、外部電源を正しく接続し、ライブラリ関数を正しく呼び出すことです。これら 3 つの手順に誤りがない限り、32 チャンネルがフル負荷でも安定して動作します。
誤解 1 については、サーボ制御ボードに USB 経由で直接電源を供給できると考えるのは間違いです。USBから供給される電源電流は最大でも500mAしかないため、サーボを2台接続しても制御基板が再起動してしまいます。。したがって、電源には外部安定化電源を使用する必要があります。
誤解2:すべてのサーボパルス幅が150~600というわけではありません → これは間違いです。アナログ サーボはデジタル サーボとは異なるため、データシートを参照する必要があります。
32 チャネルでは 32 個の PWM ピンを使用する必要があるという誤解がありますが、これは間違いです。 I2Cバスは2線で済むため、アドレスを変更することで62チャンネルの拡張機能を実現できます。
この記事のすべてのデータは、次の検証可能な情報源に基づいています。
フィリップス セミコンダクターの 2015 年バージョンの PCA9685 チップ データシートの第 8 章には、「PWM 周波数と解像度」というラベルが付いています。
公式ドキュメントのAdafruit PWM Servo Driver Libraryでは、関数setPWMFreq()のパルス幅計算式と、関数setPWM()のパルス幅計算式が記載されています。
ステアリングギア制御分野の業界標準では、50Hz PWMのパルス幅が0.5ms~2.5msの範囲の場合、0°~180°の角度に対応すると規定されています。。
上記のコードと配線図を使用して、直接制作または指導することができます。 YPMFG 制御ボードと Arduino を組み合わせることで、六脚ロボット、32 軸ロボット アーム、舞台照明アレイでの使用に成功しています。 If you encounter problems during execution, refer again to the wiring table in Section 1 and the action list in Section 5. 95% of the faults are caused by power supply or I2C miswiring.
更新時間:2026-04-29