PR

Raspberry Pi 5でサーボモータを制御する方法(GPIO22・外部電源・gpiozero)

4. Raspberry Pi

Raspberry Piでサーボモータを動かしたいけれど、

・配線方法が分からない
・外部電源が必要と聞いて不安
・うまく動かない

と悩んでいませんか?

本記事では、GPIO22を使用して、
サーボモータを安全かつ安定して制御する方法を解説します。

スポンサーリンク

サーボモータとは?

サーボモータとは、指定した角度に回転するモータです。

PWM信号によって制御され、
0〜180度程度の範囲で位置を制御できます。

今回やること

GPIO22を使用してサーボモータを制御し、

・最小位置(左)
・中央
・最大位置(右)

の3つの角度に動かします。

準備するもの

・Raspberry Pi 5
・サーボモータ(SG90など)
・ジャンパーワイヤー
・外部電源(5V・1A以上推奨)

配線方法

サーボモータには3本の線があります。

・赤 → 外部電源(5V)
・茶(黒) → GND
・橙(黄) → GPIO22(信号)

今回は、Raspberry Pi 5でボタン2つでLEDの明るさを調整する方法の記事に使用した構成から、
上記の配線を追加します。

※GPIO22は汎用GPIOとして使用しやすいため、本記事ではこのピンを使用しています。

※外部電源を使用する場合でも、
Raspberry PiとサーボモータのGNDは必ず共通にしてください。
GNDが共通でないと、
GPIOの信号が正しく伝わらず動作しません。

※サーボモータは瞬間的に大きな電流を消費します。
1Aでも動作する場合がありますが、
安定させるためには2A以上の電源を推奨します。

※外部電源は必ず5Vに設定してください。
電圧が高すぎるとサーボモータが故障する可能性があります。

Pythonコード

ファイル名:servo_basic_gpio22.py

from gpiozero import Servo
from time import sleep

servo = Servo(22)

while True:
    servo.min()
    sleep(1)

    servo.mid()
    sleep(1)

    servo.max()
    sleep(1)

コード解説

Servoクラスを使用することで、
簡単にサーボモータの角度を制御できます。

・min() → 最小角度
・mid() → 中央
・max() → 最大角度

内部的にはPWM信号で制御されています。

動作確認

プログラムを実行すると、
サーボモータが左右に動けば成功です。

※外部電源はRaspberry Pi起動後にONにすることを推奨します。

電源投入直後はサーボが不安定に動く場合があるため、
安全のためこの順番で操作してください。

※サーボモータがわずかに震える(ジッター)のは、
ソフトウェアPWMの特性上、ある程度正常な動作です。

※実行時に以下のメッセージが表示される場合があります。

PWMSoftwareFallback: To reduce servo jitter, use the pigpio pin factory

これはエラーではなく警告であり、
ソフトウェアPWMを使用しているため、
サーボの動作が多少不安定になる可能性があるという意味です。
通常はそのままでも問題ありません。

※Raspberry Pi 5では、pigpioが環境によっては使用できない場合があります。
そのため、本記事では標準のgpiozeroによる制御を使用しています。

よくある失敗

・GNDを共通にしていない
・電源が弱い(ガタガタ動く)
・電圧が5V以上になっている
・GPIO番号の間違い(22以外)

・サーボが全く動かない場合は、
外部電源が正しく供給されているか確認してください。

応用

・ボタンで角度制御
・PWMで滑らかに動かす
・カメラの向きを制御する

まとめ

本記事では、GPIO22を使用してサーボモータを制御する方法を解説しました。

・PWMで角度制御
・外部電源の使用が重要
・GND共通が必須

こちらの記事で使用しているRaspberry Pi 5 はこちら
 ▶ Amazonで詳細を見る

本記事では、こちらの電子工作キットを使用しています。
 ▶ OSOYOO(オソヨー) Raspberry Pi 用 学ぶ電子工作キット(Amazonへのリンク)

関連記事

Raspberry Pi 5でPWM制御する方法
Raspberry Pi 5でボタン入力してLEDを制御する方法
Raspberry Pi 5でボタンのチャタリングを防止する方法

タイトルとURLをコピーしました