Raspberry Pi でマイクロ サーボ モーターを制御する方法: 完全ガイド_カスタム ドライブ_業界の洞察_Kpower
> 業界の洞察 >カスタムドライブ
テクニカルサポート

製品サポート

Raspberry Pi でマイクロ サーボ モーターを制御する方法: 完全ガイド

発行済み 2026-04-20

このガイドでは、マイクロコンピュータを接続して制御するための段階的な手順を説明します。サーボRaspberry Piを使用したモーター。正しい配線、Python コード例、一般的な問題に対する実践的な解決策を学びます。すべての情報は標準的な電子慣行に基づいており、実際のテストで検証されています。

01始める前に必要なもの

Raspberry Pi (3B+、4、または 5 などの GPIO ピンを備えた任意のモデル)

マイクロサーボモーター(共通タイプ:9g)サーボ、3線式)

ジャンパー線 (メス-メス)

外部 5V 電源 (オプションですが、安定した動作のために推奨)

小型ポテンショメータ (オプション、手動制御の例)

重要な安全上の注意:電源を入れないでください。マイクロサーボサーボに負荷がかかっている場合、または長時間にわたってサーボを実行している場合は、Raspberry Pi の 5V ピンから直接接続してください。 Pi の 5V 出力は約 500mA しか供給できません。マイクロサーボ移動中に200〜400mAを消費する可能性があります。別の 5V 電源 (単三電池 4 本または 5V USB パワーバンクなど) を使用し、その電源のグランドを Pi のグランドに接続します。

02配線図 (ステップバイステップ)

これら 3 つの接続を正確に従ってください。のマイクロサーボ3 本のワイヤーがあります:

ブラウンまたはブラック→ グランド(GND)

→ 5V 電源 (外部電源またはテスト専用の Pi の 5V ピン)

オレンジまたはイエロー→ GPIO ピン (例: GPIO18)

サーボワイヤー に接続します
ブラウン/ブラック Raspberry Pi GND (ピン 6) および外部電源 GND
外部 5V プラス (または光テスト用の Pi ピン 2)
オレンジ/イエロー GPIO18 (ピン12)

よくあるケースの例:愛好家は、Pi の 5V ピンから 2 つのマイクロ サーボに直接電力を供給しようとしました。サーボが不規則に動き、Pi が再起動しました。別の 5V バッテリー パック (単三電池 4 本) を追加し、すべてのアースを接続すると、両方のサーボが数時間スムーズに動作しました。

03マイクロサーボの仕組み

マイクロサーボモーターには、DC モーター、ポテンショメータ (位置センサー)、および制御回路が含まれています。使用しますパルス幅変調 (PWM)シャフトの角度を設定します。サーボは 50Hz 信号 (20ms 周期) を想定しています。パルスの長さによって角度が決まります。

0.5msパルス→0度

1.5msパルス→90度(中心)

2.5msパルス→180度

ほとんどのマイクロ サーボの物理的範囲は約 180 度ですが、90 度または 270 度のものもいくつかあります。必ず最初に負荷をかけずに限界をテストしてください。

04ソフトウェアのセットアップ (Raspberry Pi OS)

1. Raspberry Pi で PWM ハードウェアを有効にします。ターミナルを開いて次を実行します。

sudo raspi-config

[インターフェイス オプション] → [リモート GPIO] → [はい] → [完了] に移動します。

2. RPi.GPIO ライブラリをインストールします (ほとんどの Raspberry Pi OS バージョンにプレインストールされています)。完全な PWM 制御を行うには、pigpio をインストールします。

sudo apt 更新 sudo apt インストール pigpio python3-pigpio sudo systemctl 有効 pigpiod sudo systemctl start pigpiod

05サーボをスイープするための基本的な Python コード

という名前のファイルを作成しますサーボスイープ.py:

import pigpio import time # pigpio デーモンに接続します pi = pigpio.pi() if not pi.connected: print("Pigpio daemon not running. Start with: sudo pigpiod") exit() # GPIO ピンを設定します (GPIO18 を使用) SERVO_PIN = 18 # パルス幅をマイクロ秒単位で定義します (500 = 0.5 ミリ秒、2500 = 2.5 ミリ秒) def set_angle(angle): # 角度 (0-180) をパルス幅 (500-2500) に変換します パルス = 500 + (角度 / 180.0)2000 pi.set_servo_pulsewidth(SERVO_PIN,pulse) try: while True: 範囲(0, 181, 10)の角度の場合: set_angle(angle) time.sleep(0.1) 範囲(180, -1,-10)の角度の場合: set_angle(angle) time.sleep(0.1) KeyboardInterruptを除く: print("Stopping...") pi.set_servo_pulsewidth(SERVO_PIN, 0) # PWM信号を停止 pi.stop()

コードを実行します。

sudo pigpiod # まだ実行していない場合 python3 servo_掃引.py

期待される結果:サーボ アームは 0 度から 180 度までスイープして戻り、10 度ステップごとに 0.1 秒停止します。

06ポテンショメータでサーボを制御する(リアルタイムマニュアル制御)

この例では、ポテンショメータを回してサーボの位置を調整します。 10kΩ ポテンショメータを配線します。左のピンを 3.3V、右のピンを GND、中央のピンを GPIO17 (ADC 入力) に接続します。 Raspberry Pi にはアナログ入力がないため、MCP3008 ADC チップまたは単純な RC タイミング方法を使用します。以下は RC タイミング方法です (追加のチップは必要ありません)。

GPIO23 と GND の間に 1μF コンデンサを接続し、GPIO23 とポテンショメータ ワイパーの間に 10kΩ 抵抗を接続します。これは先進的です。簡単にするために、SPI を備えた MCP3008 を使用します。ただし、よくあるケースとして、多くの初心者はアナログを直接読み取ろうとするために失敗します。おすすめ:MCP3008 などの安価な ADC を使用するか、サーボ ドライバー ボードを購入してください。

MCP3008 を使用した信頼性の高いコードは次のとおりです。

import pigpio import time import spidev spi = spidev.SpiDev() spi.open(0, 0) spi.max_speed_hz = 1350000 def read_adc(channel): チャンネル 7 の場合: return -1 adc = spi.xfer2([1, (8+channel) 2000 pi.set_servo_pulsewidth(SERVO_PIN,pulse) try: while True: value = read_adc(0) # チャネル 0 のポテンショメータ angle = (value / 1023.0) * 180 set_angle(angle) time.sleep(0.02) KeyboardInterrupt を除く: pi.set_servo_pulsewidth(SERVO_PIN, 0) pi.stop() spi.close()

07よくある問題と解決策

問題 最も考えられる原因 解決
サーボがけいれんする、または動かない 電力不足 外部 5V 電源を使用します (複数のサーボの場合は最大 2A)。アースを接続します。
サーボは片端にしか動かない 間違ったパルス範囲 一部のサーボには 600 ~ 2400μs が必要です。コードでテストします。500 を 600 に、2500 を 2400 に変更します。
静止時の震え PWM周波数またはタイミングジッター RPi.GPIO のソフトウェア PWM の代わりに pigpio (ハードウェア タイミング PWM) を使用します。
サーボが熱くなる 現在の信号または間違った信号の停止 負荷を切断します。移動後にパルスが停止することを確認します(0に設定)。
Python エラー「pigpio という名前のモジュールがありません」 ライブラリがありません 走る:sudo pip3 ピグピオをインストールしますそれからsudo apt install pigpio

08複数のマイクロサーボの最適化

最大 16 個のマイクロ サーボを制御するには、専用の PWM ドライバー ボードを使用します (ブランド名を指定せずに、「16 チャンネル PWM サーボ ドライバー I2C」で検索してください)。 I2C経由で接続します。ドライバーに必要なのは、2 つの GPIO ピン (SDA/SCL) と外部 5V 電源だけです。各サーボは独自の信号ピンを取得します。これにより、ジッターと CPU 負荷が排除されます。

09実用的な推奨事項

1. 常に 1 つのサーボと外部 5V 電源で開始します。独自のロジックを追加する前に、スイープ コードをテストします。

2. すべてのサーボ プロジェクトには pigpio を使用してください。スムーズな動作に不可欠な、マイクロ秒精度のハードウェアタイミング PWM を提供します。

3. 停止時はサーボパルスを0(オフ)にしてください。これにより消費電力が削減され、過熱が防止されます。

4. 電源端子間に1000μFのコンデンサを追加します。(プラスとグランド) をサーボの近くに接続して、電圧スパイクを滑らかにします。

5. バッテリー駆動のプロジェクトの場合は、ニッケル水素充電式単三電池 4 本を使用してください(4.8V) または安定化された 5V UBEC。サーボの定格が満たされていない限り、6V を使用しないでください (ほとんどのマイクロサーボは 4.8 ~ 6.0V を受け入れます)。

10結論

Raspberry Pi でマイクロ サーボ モーターを制御するには、正しい配線、信頼性の高い動作のための外部電源、正確な PWM 信号のための pigpio ライブラリが必要です。主な手順は次のとおりです。グランドと電源を適切に接続し、PWM に GPIO18 を使用し、角度を 500 ~ 2500 マイクロ秒のパルス幅にマッピングする Python コードを作成し、常に最初に負荷を与えずにテストします。

最終的なアクションステップ:

別の 5V バッテリー パックを使用して回路を組み立てます。

pigpio をインストールし、スイープ コードを実行します。

コードを変更して、サーボ制御を独自のプロジェクト (ロボット アーム、カメラのパンチルト、または自動フィーダー) に統合します。

ジッターが発生した場合は、RPi.GPIO から pigpio に切り替えてください。

複数のサーボを使用する場合は、PWM ドライバー ボードを追加します。

このガイドに従うことで、Raspberry Pi を使用して標準的なマイクロ サーボ モーターを安定して正確に制御できるようになります。

更新時間:2026-04-20

未来に力を与える

お客様の製品に適したモーターまたはギアボックスを推奨するには、Kpower の製品スペシャリストにお問い合わせください。

Kpowerにメールする
お問い合わせを送信
WhatsApp メッセージ
+86 0769 8399 3238
 
kpowerMap