発行済み 2026-04-17
このガイドでは、PCA9685 ベースの PWM ドライバ モジュールを使用して制御するときに発生する最も頻繁な問題に対処します。サーボs.実際のユーザー エクスペリエンスに基づいて、電源の不安定性や信号ノイズから競合や構成エラーへの対処まで、根本原因と実用的な修正に重点を置いています。各問題は典型的なシナリオで説明され、その後に段階的な解決策が続きます。最終的には、信頼性の高い診断ワークフローと予防策を確立できるようになります。サーボ手術。
典型的なケース:ユーザーは標準の 5V サーボを PCA9685 出力チャンネル 0 に接続します。マイクロコントローラーは PWM 信号を送信しますが、サーボは静止したままか、回転せずに不安定に振動します。
根本原因:
サーボへの電力供給が不十分または不安定です。
PCA9685、サーボ電源、マイクロコントローラー間の共通接地が欠落しています。
PWM 周波数またはパルス幅範囲が正しくありません。
解決策:
サーボには専用の外部電源を使用してください (たとえば、最大 2 ~ 3 個のマイクロ サーボには 5V / 2A、より大きなサーボにはより高い電流が必要です)。マイクロコントローラーの 5V ピンから PCA9685 の V+ ピンを介してサーボに電力を供給しないでください。
すべてのアースを接続します。マイクロコントローラーの GND、PCA9685 の GND、およびサーボ電源の GND は一緒に接続する必要があります。
標準のアナログ/デジタル サーボの場合、PWM 周波数を 50 Hz (周期 20 ms) に設定します。パルス幅を確認します: 通常、1.0 ms (0°)、1.5 ms (90°)、2.0 ms (180°)。ライブラリを使用するsetPWMFreq(50)最小/最大パルス値を調整します。
典型的なケース:サーボは広範囲のテストを実行しますが、時々間違った角度にジャンプしたり、コマンドなしにけいれんしたりすることがあります。複数のサーボが一緒に動作する場合、問題はさらに悪化します。
根本原因:
PWM 信号ライン上の電気ノイズ。
サーボを同時に動かすと電圧が低下します。
マイクロコントローラーと PCA9685 間の I²C 通信エラー。
解決策:
PWM信号線(SDA、SCL)は短くしてください(
PCA9685 モジュールの近くのサーボ電源レール間に大きな電解コンデンサ (470 ~ 1000 µF、6.3 V 以上) を追加します。
段階的な角度変化を送信してサーボ速度を下げます (例: 20 ms の遅延で 10° ステップ)。
I²C プルアップ抵抗を確認します。ほとんどの PCA9685 モジュールには 4.7kΩ プルアップが含まれています。複数の I²C デバイスが同じバス上にある場合、合計プルアップ抵抗が低くなりすぎる可能性があります。余分なプルアップを削除するか、10kΩ 抵抗を使用します。
典型的なケース:I²C スキャナ スケッチは、予期されたアドレス (デフォルト 0x40) にデバイスを返しません。ユーザーは VCC、GND、SDA、SCL を正しく接続しました。
根本原因:
別の I²C デバイスとのアドレス競合。
はんだブリッジまたは不適切なアドレス ピン (A0 ~ A5) 構成。
配線が緩んでいるか、間違った電圧レベル (3.3V 対 5V)。
解決策:
I²C スキャナを実行してアクティブなアドレスを確認します。 0x40 が欠落している場合は、A0 ~ A5 ジャンパを確認してください (すべてオープン = 0x40)。 A0 を閉じると 1 (0x41) が追加され、A2 を閉じると 4 が追加されます。
PCA9685 モジュールが 5V ロジックをサポートしていることを確認します (ほとんどのモジュールがサポートしています)。マイクロコントローラーが 3.3V で動作する場合は、SDA/SCL を直接接続します。PCA9685 は 5V 耐性ですが、モジュールの仕様を確認してください。
アドレス ピンと電源ピンのはんだ接合をリフローします。マルチメータを使用して、SDA/SCL ピンからマイクロコントローラ ピンまでの導通を測定します。
典型的なケース:6 つのサーボがチャンネル 0 ~ 5 に接続されています。チャンネル 0 ~ 3 は正常に動作しますが、チャンネル 4 と 5 には動きがありません。配線は同じように見えます。
根本原因:
PCA9685 出力チャンネルの損傷 (まれではありますが、可能性があります)。
これらのチャネルの PWM デューティ サイクル計算が正しくありません (オーバーフローまたは切り捨てられた値など)。
特定の出力ピンヘッダーのはんだ接合部が緩んでいるか、または冷えている。
解決策:
動作していないサーボを動作しているチャネル (チャネル 0 など) に交換します。機能する場合は、元のチャネルに障害があります。代わりに別のチャンネルを使用してください。
コードを確認してください。正しいチャネル番号に書き込み、12 ビット解像度 (0 ~ 4095) を使用していることを確認してください。値が 0 の場合は 0% デューティ (サーボが保持されない可能性があります)、4095 の場合は 100% (フルオン、サーボには適していません) になります。 50 Hz の場合、アクティブなパルス幅はデューティ サイクル = (パルス幅 / 20 ms) に対応します。 4095.
ヘッダー ピンを検査します。動作していないチャンネルの信号ピンとグランド ピンを再はんだ付けします。
典型的なケース:サーボは0°、180°までは正しく回転しますが、終点ではブーンという大きな音が発生し、熱くなります。これはコマンドを停止した後でも発生します。
根本原因:
![]()
エンドポイントのパルス幅がサーボの機械的限界を超えています。
パルス幅が長すぎるため、サーボがエンドストップに押し付けられます。
解決策:
サーボがブザー音を立てずに受け入れる実際のパルス幅範囲を測定します。安全な範囲 (0.6 ミリ秒から 2.4 ミリ秒など) から開始して、徐々に狭めていきます。多くの標準サーボは、0.9 ms ~ 2.1 ms で適切に動作します。
コードで、カスタムの最小パルス幅と最大パルス幅を定義します。 PCA9685 の場合、パルス幅をレジスタ値に変換します。パルス = (パルス幅_us / 20000_us) 4095。 0.9msの例:(900/20000)4095 ≈ 184。2.1 ミリ秒の場合: (2100/20000)4095 ≈ 430。0.5 ミリ秒未満または 2.5 ミリ秒を超える値を強制しないでください。
ブザー音が続く場合は、サーボを物理的に停止するまで完全に駆動せず、サーボの最大トルクを減らします。
典型的なケース:ユーザーは 3 つの PCA9685 モジュールをスタックし、A0 ~ A5 ジャンパ (0x40、0x41、0x42 など) を介してアドレスを設定します。電源を入れ直すと、すべてのボードが 0x40 に戻ります。
根本原因:
アドレスジャンパーパッドの冷はんだ接合。
ライブラリは、明示的に指定されない限り、すべてのボードをデフォルトのアドレスで初期化します。
解決策:
A0 ~ A5 のはんだブリッジを物理的にチェックします。 0x41 の場合、A0 をはんだ付けして閉じます。 0x42 の場合、A1 をはんだ付けして閉じます。 0x43 の場合は、A0 と A1 などをはんだ付けします。確認するには、導通モードでマルチメーターを使用します。
ソフトウェアで、各 PCA9685 を固有のアドレスでインスタンス化します。PCA9685 pwm1(0x40); PCA9685 pwm2(0x41);など。自動検出に依存しないでください。
アドレスの永続性をテストする前に、10 秒間完全に電源を切ります。
典型的なケース:パンチルト機構には2つのサーボを使用します。急速な角度変更 (50 ミリ秒ごと) を送信すると、サーボの動作が遅くなり、目標位置に到達しません。
根本原因:
PWM信号の更新速度はサーボの能力よりも遅いです。 PCA9685 はすべてのチャネルを同時に更新しますが、I²C バス速度が遅すぎる可能性があります。
サーボ自体には制限された速度があります (例: 0.2 秒/60°)。それより速くコマンドを送信するとバックログが発生します。
解決策:
I²C クロック速度を 400 kHz に増加します (ほとんどのマイクロコントローラーと PCA9685 がこれをサポートします)。使用Wire.setClock(400000)PCA9685を初期化する前に。
サーボの通過時間に合わせた間隔で角度変化を送信します。 0.2 秒/60° サーボの場合、60° ステップごとに少なくとも 200 ミリ秒待ちます。
PCA9685 の内蔵発振器 (内部 25 MHz) を使用します。外部水晶振動子は必要ありません。ソフトウェア PWM ループを避けてください。
典型的なケース:サーボを90°に設定した後、サーボがゆっくりと離れたり、軽い外力に抵抗できなくなったりします。
根本原因:
PCA9685 の出力周波数は正確に 50 Hz ではありません (内部発振器の許容誤差による変動)。
サーボのデッドバンドは広いですが、PWM 信号にはジッターがあります。
解決策:
PCA9685 の内部発振器を校正します。ほとんどのライブラリでは、周波数オフセットを調整できます。pwm.setOscillatorFrequency(25000000)– オシロスコープで実際の周波数を測定し、調整します。
デッドバンドが狭い高品質のサーボ (デジタル サーボなど) を使用してください。
同じ位置を 20 ミリ秒ごとに繰り返し送信して、小さな保持トルクを追加します (PCA9685 はこれを自動的に実行します。セットPWMは 1 回だけ呼び出されます。継続的に再送信すると、I²C トラフィック ジッターが発生する可能性があります)。代わりに、PWM を一度設定し、ハードウェアにそれを維持させます。
PCA9685 サーボの問題の大部分を回避するには、次のチェックリストに従ってください。
電源:サーボ用の個別の 5V 電源、2 ~ 3 個のマイクロ サーボあたり少なくとも 1A の定格。電源レール間に 470 ~ 1000 µF のコンデンサを追加します。
接地:すべてのコンポーネントの単一の共通接地点。
配線:短い I²C ワイヤ (ツイストペアが役立ちます)。サーボ電源線は信号線から離してください。
頻度:標準サーボの場合は常に 50 Hz に設定してください。可能であればオシロスコープで確認してください。
パルス幅制限:控えめに開始し (0.9 ms ~ 2.1 ms)、サーボ データシートに基づいて調整します。
アドレッシング:マルチメーターを使用してはんだブリッジを再確認します。コード内でアドレスを明示的に割り当てます。
テスト:複数のサーボを追加する前に、I²C スキャナと単一のサーボ スイープを実行します。
> PCA9685 サーボの問題のほとんどは、不適切な電力、共通アースの欠落、または不適切な PWM タイミングに起因します。ハードウェアの欠陥を疑う前に、まずこれら 3 つを解決してください。
最終的なアクションの推奨事項:1 つのサーボ、専用の 5V/2A 電源、1000 µF コンデンサを備えたシンプルなテスト セットアップを構築し、50 Hz で 0.9 ms ~ 2.1 ms のスイープを実行します。安定した動作を確認します。次に、電力と温度を監視しながら、一度に 1 つのサーボを追加しながら、徐々にスケールアップします。この系統的なアプローチにより、一般的な問題の 90% が排除されます。
更新時間:2026-04-17