発行済み 2026-04-29
Raspberry Pi でサーボを制御しているときにサーボが不規則に振動し、指定した角度位置に安定して留まらない場合、通常はサーボ自体の破損ではなく、制御信号や電源に問題があることが原因です。この記事では、ソフトウェアからハードウェアまでのトラブルシューティング ソリューションの完全なセットを説明します。順番に操作すると、ジッターの問題の 90% 以上が 15 分以内に解決されます。
1. 電源供給能力を確認します。サーボが振動する場合、最も一般的な原因は瞬間的な電流不足です。標準的なサーボが開始されるとき、電流は 1 ~ 2A に達する可能性があり、Raspberry Pi の 5V ピンの最大出力はわずか約 500mA です。サーボへの電源供給には独立した 5V 電源、つまり 2A 以上の電源を使用し、Raspberry Pi の GND とサーボ電源の GND を一緒に接地する必要があります。
2. PWM 信号の安定性を確認します。Raspberry Pi ハードウェア PWM ピン (つまり、GPIO12、GPIO13、GPIO18、GPIO19) によって生成される波形精度は、ソフトウェアでシミュレートされた PWM よりもはるかに正確です。。 RPi.GPIOのソフトウェアPWMを使用すると、干渉によりジッターが発生します。ハードウェア PWM への移行、または pigpio ライブラリ (マイクロ秒精度のパルスを提供する) の使用を優先する必要があります。
3. 制御周波数と負荷を下げます。ステアリング ギアの場合、一般的な PWM 周期は 20ms、つまり 50Hz です。パルス幅が500~2500μsの範囲の場合、0~180度に対応します。コード内でデューティ サイクルが頻繁に更新される場合 (1ms に 1 回など)、サーボの内部回路に過負荷とジッターが発生します。更新間隔は20ms以上に制御し、ループ内で同じ角度が連続して書き込まれないようにする必要があります。
ケース 1: ユーザーは Raspberry Pi 3B+ を使用し、MG996R サーボを接続します。コードの実行中、サーボは揺れ続けます。
確認したところ、Raspberry Pi 5Vピンからサーボに電力が供給されています。外部5V/3A電源に変更したところジッター現象はなくなりました。結論は、Raspberry Pi は高出力サーボを直接駆動できないということです。
ケース 2: 異なる角度コマンドの間にサーボが「ジュージュー」という音を立てて震えました。
ロジック アナライザによって、PWM 波形の周期が 18 ~ 22 ミリ秒の範囲で変動していることが検出されました。そこでpigpioライブラリのハードウェアPWMに切り替えたところ波形が安定し問題は解決しました。導き出された結論は、ソフトウェア PWM は精度に欠けており、ジッターを引き起こすというものです。

必要な関連アイテムは次のとおりです: Raspberry Pi、特定の機能を担当するサーボ、特定の位置エネルギーを提供する 5V/2A DC 電源、およびさまざまな電子コンポーネントを接続するためのブレッドボードまたは接続ケーブル。
配線手順:
1. サーボ赤線(プラス極)→外部電源プラス極
2. サーボの茶色または黒色のワイヤ (マイナス極) を外部電源のマイナス極に接続する必要があります。同時に、Raspberry Pi の任意の GND ピンにも接続する必要があります。
3. 信号線であるサーボの黄オレンジ線は、Raspberry Pi ハードウェアの PWM GPIO (GPIO18 など) に接続する必要があります。。
4. 外部電源のマイナス極を Raspberry Pi GND に接続する必要があります。そうしないと、信号に基準レベルが欠けていると、必然的にジッターが発生し、信号にジッターが発生します。。
# インストール: sudo apt install pigpio および sudo systemctl Enable pigpiod import pigpio pi = pigpio.pi() pi.set_mode(18, pigpio.OUTPUT) # 50Hz PWM、パルス幅範囲 500-2500μs を設定します pi.set_サーボ_pulsewidth(18, 1500) # 中位90度 time.sleep(0.5) pi.set_サーボ_pulsewidth(18, 1000) # 0 度 # 停止信号: pi.set_サーボ_パルス幅(18, 0)
重要なパラメータは、信号の競合を避けるために、各角度コマンドの後、次のコマンドを送信するまで少なくとも 20 ミリ秒待つ必要があるということです。

Q1: 単独電源を投入してもサーボが振動する場合はどうすればよいですか?
A: 共通アース接続を確認してください。外部電源のマイナス端が Raspberry Pi の GND に接続されていない場合、信号はフローティングのままになり、ジッターが発生します。
Q2: ハードウェア PWM を使用した後もサーボがわずかに震えますか?
PWM 周波数を 40 ~ 60Hz の範囲の中間に下げます。同時に、コード内に頻繁に動作して干渉を引き起こす他の GPIO がないことを確認してください。
Q3: ジッターは特定の角度範囲でのみ発生しますか?
A の状況の場合は、サーボ ポテンショメータが摩耗している可能性があります。サーボを交換してテストする必要があります。テストによって除外された場合は、パルス幅の計算にオーバーフローがあるかどうかを確認する必要があります。
Q4: 複数のサーボが同時に振動する問題を解決するにはどうすればよいですか?
A の場合、合計電流要件を計算するには、各サーボに 1 ~ 2 アンペアの範囲が必要です。 5 ボルトの電源と IO アンプ以上の電流を使用する必要があります。フィルタリングのために、静電容量 1000 マイクロファラッドの追加の電解コンデンサを取り付ける必要があります。
Q5: ソフトウェアPWMを使用すると揺れやすいのはなぜですか?
A: Raspberry Pi Linux は非リアルタイム システムです。ソフトウェア PWM はシステム スケジューリングの影響を受けます。パルス幅誤差は±200μsに達します。ハードウェア PWM にエラーがあります。。
[ ] サーボ電源は Raspberry Pi から独立しており、電流は 2A 以上ですか?
[ ] 外部電源のマイナス極とRaspberry PiのGNDは接続されていますか?
[ ] 信号線は GPIO12/13/18/19 のいずれかに接続されていますか?
[ ] コードは pigpio を使用していますか、それとも WireringPi ハードウェア PWM を使用していますか?
[ ] 角度更新間隔 ≥ 20ms?
[ ] 2 つ以上の中型サーボを同時に駆動していませんか?
Raspberry Pi 制御サーボのジッター現象の本質は、電源不足、PWM 精度の欠如、または共通アース リンクの欠落です。この問題を解決するための鉄則は、独立電源、ハードウェアPWM方式、共通グランド接続の3原則です。次の措置を直ちに実施することをお勧めします。
1. サーボを取り外し、外部5V/2A電源を別電源として使用します。
2. コードを次の場所に移行します。ピッピオライブラリのハードウェア PWM 出力。
3. マルチメーターを使用して、サーボ電源と Raspberry Pi GND の間の抵抗を測定します。 0Ωになるはずです。
これら 3 つの手順を実行すると、ジッターの問題の 90% は 10 分以内に解消されます。まだ存在する場合は、上記の質問と回答で特別な状況を 1 つずつ確認してください。覚えておいてください: ソフトウェアを使用してパルス幅変調をシミュレートしてサーボを駆動しようとしないでください。これは信頼性が最も低いソリューションです。
更新時間:2026-04-29