Raspberry Piでサーボモータを動かそうとしたとき、
・全く動かない
・たまにしか動かない
・ボタンを押しても反応しない
といった問題に悩んでいませんか?
実はこれらの原因は1つではなく、
いくつかの典型的な原因があります。
本記事では、実際にハマった経験をもとに、
原因と対処法を分かりやすく解説します。
結論:原因は主にこの3つ
Raspberry Piでサーボモータが動かない原因は、
主に以下の3つです。
① パルス幅(PWM設定)が合っていない
② 電源が不安定(電流不足)
③ 配線ミス(GND未接続など)
まずはこの3点を確認してください。
すぐ確認するポイント(1分チェック)
① パルス幅を調整しているか
② 外部電源を使用しているか
③ GNDが共通になっているか
→ この3つでほとんど解決します
動作確認環境
・Raspberry Pi 5
・サーボモータ(SG90)
・外部電源(5V)
原因① パルス幅(PWM設定)が合っていない
サーボモータはPWM信号のパルス幅によって角度を制御します。
しかし、サーボモータは製品ごとに適切なパルス幅が異なるため、
デフォルト設定では正しく動作しない場合があります。
解決法
servo = Servo(22, min_pulse_width=0.0005, max_pulse_width=0.0025)
パルス幅を調整することで、
正常に動作する場合があります。
原因② 電源が不安定
サーボモータは動作時に大きな電流を消費します。
そのため、電源が不安定だと電圧が低下し、
正常に動作しないことがあります。
※安定して動かしたい場合は、外部電源の使用を推奨します。
対策
・外部電源を使用する
・電流容量は2A以上を推奨
・GNDを共通にする
原因③ 配線ミス
特に多いのがGNDの接続ミスです。
正しい接続:
電源GND ↔ Raspberry Pi GND ↔ サーボGND
症状別の対処法
全く動かない
→ 配線 or PWM
たまに動く
→ 電源 or ノイズ
勝手に動く
→ ソフトPWMのジッター
実際に解決した原因
筆者の環境では、
パルス幅(PWM設定)が原因でした。
min_pulse_width、max_pulse_widthを調整することで、
正常に動作するようになりました。
やってはいけないこと
・Raspberry Piの5Vピンから直接サーボを駆動する
・GNDを接続しない
・デフォルト設定のまま動かそうとする
※サーボモータはRaspberry Piの5Vピンから直接駆動できる場合もありますが、
電流不足により不安定になることがあります。
本記事では安定動作のため、外部電源の使用を推奨しています。
症状と原因の対応
| 症状 | 主な原因 |
|---|---|
| 全く動かない | 配線ミス / PWM設定 |
| たまに動く | 電源不足 |
| 勝手に動く | ソフトPWM |
関連記事
→ サーボモータの動かし方
→ ボタンでサーボ制御
→ サーボ比較記事
まとめ
・PWM設定を見直す
・電源を安定させる
・配線を確認する
この3つでほとんどの問題は解決できます。
