発行済み 2026-04-03
を制御するサーボArduino ボードでモーターを使用することは、エレクトロニクス プロジェクトで最も一般的で役立つタスクの 1 つです。このガイドでは、接続してプログラムするための、明確で実用的で検証済みの方法を提供します。サーボ標準のArduinoを使用するサーボ図書館。すべて実際のシナリオと公式ドキュメントに基づいて、正確な配線、動作するコード、および典型的な問題のトラブルシューティング方法を学びます。
ほとんどの趣味用サーボ モーター (例: 9g マイクロ サーボ、または SG90、MG90S、または MG995 などの標準サイズのサーボ) は、任意の Arduino ボード (Uno、Nano、Mega など) で動作します。このガイドでは、次のことを前提としています。
Arduino ボード (Uno が最も一般的な例)
標準5Vサーボ×1(共通トルク範囲:1.8kg/cm~13kg/cm)
ジャンパー線(直接接続の場合はオス-メス)
独立した 5V ~ 6V 電源 (オプションですが、大型のサーボに推奨 - セクション 4 で説明)
特定のブランド名は必要ありません– この手順は、50Hz PWM 信号 (パルス幅 500μs ~ 2500μs) で動作するすべての標準アナログ サーボに適用されます。
損傷や異常な動作を避けるために、この配線に従ってください。
重要なルール:動作中にサーボが 200mA 以上を消費する場合は、決して Arduino の 5V ピンからサーボに直接電力を供給しないでください。ほとんどの 9g サーボでは、Arduino 5V を直接使用してテストしても安全です。大型のサーボ (MG995 など) の場合は、外部 5V ~ 6V 電源を使用し、サーボのグランドを Arduino のグランド (共通グランド) に接続します。
Arduino Servo ライブラリは公式 IDE にプリインストールされています。このコードは、サーボを 0° から 180° まで繰り返し動かします。
#含むサーボmyServo; // サーボオブジェクトを作成 int servoPin = 9; // サーボに接続された信号ピン void setup() { myServo.attach(servoPin); // サーボをピン 9 に接続します } void loop() { myServo.write(0); // 0度に移動する遅延(1000); // 1 秒待ちます myServo.write(90); // 90 度 (中心) に移動します late(1000); myServo.write(180); // 180 度に移動する遅延(1000); }
サーボを特定の角度に制御するには(例: 45°)、単に使用しますmyServo.write(45);。有効な範囲は 0 ~ 180 です。
原因:電力が不十分です。標準の 9g サーボは、移動時に 200 ~ 300mA を消費します。大型サーボは最大 1A を消費します。 Arduino のオンボード 5V レギュレータ (最大 ~500mA) では処理できません。
修理:外部 5V 電源 (単三電池 4 本または 5V 2A アダプターなど) を使用します。電源のプラスをサーボの赤いワイヤに接続し、電源のグランドをArduino GNDに、サーボのグランドを同じGNDに接続します。
原因:信号ピンが正しく取り付けられていないか、ピン番号が間違っています。
![]()
修理:それを確認してくださいmyServo.attach(ピン)PWM 対応ピンを使用します。 Arduino Uno では、ピン 3、5、6、9、10、11 が PWM をサポートします。ピン 9 と 10 を推奨します。
原因:サーボが機械的に停止しているか、そのサーボ モデルのパルス幅範囲が正しくありません。
修理:を使用して最小/最大パルス幅を調整します。myServo.attach(ピン、最小、最大)ここで、最小値のデフォルトは 544µs (0°)、最大値は 2400µs (180°) です。一部のサーボには 500 ~ 2500µs が必要です。サーボのデータシートを確認してください。
正確な速度制御のために、PWM 信号を手動で生成できます。サーボは 50Hz 信号 (20ms 周期) を想定しています。 1ms パルス = 0°、1.5ms = 90°、2ms = 180°。このコードはスムーズにスイープします。
int サーボピン = 9; int パルス幅 = 1500; // マイクロ秒、90°から開始 void setup() { pinMode(servoPin, OUTPUT); } void loop() { // 1000μs ~ 2000μs (0° ~ 180°) でスイープ for(pulseWidth = 1000;pulseWidth = 1000;pulseWidth -= 10) {digitalWrite(servoPin, HIGH);遅延マイクロ秒(パルス幅);デジタル書き込み(サーボピン、LOW);遅延(20 - パルス幅/1000);遅延(1000); }
1. 電源チェック:サーボのみが接続されている (コードがアップロードされていない) 場合、サーボは動かず、熱くならないはずです。
2. 信号テスト:セクション 3 の標準コードをアップロードします。サーボが 0°→90°→180°→繰り返し回転するかどうかを観察します。
3. 負荷テスト:サーボホーンが動くときは、サーボホーンをそっと持ってください。顕著なトルクが発生しますが、失速することはありません。ストールする場合は、電源電流を増やしてください。
正しい配線交渉の余地はありません: PWM ピンへの信号、適切な電源への電力、共通グランド。
常にサーボライブラリを使用してくださいシンプルさと信頼性を実現します。速度上昇が必要な場合にのみ、手動パルス制御に切り替えてください。
サーボの定格電圧を決して超えないようにしてください(通常は 5V ~ 6V)。電圧が高くなると内部制御回路が破壊されます。
Arduinoを保護するサーボの 5V ピンから 200mA を超える電流を決して消費しないようにしてください。
1. 基本的な回路を構築する9gサーボとArduino Unoを使用してブレッドボード上で。セクション 3 のコードを使用して動きを確認します。
2. ポテンショメータを追加する角度を制御するには: ポット (ピン A0) からアナログ値を読み取り、それを 0 ~ 180 にマッピングしてから、myServo.write(mappedValue).
3. プロジェクトに組み込む– 一般的な用途には、ロボット アーム、カメラ ジンバル、ステアリング機構、自動ドア オープナーなどがあります。
このガイドに従うことで、Arduino を使用して標準サーボを制御する検証済みの再現可能な方法が得られます。同じ原則がすべての Arduino 互換ボードに適用されます。正確なパルス幅制限と電流要件については、必ずサーボのデータシートを参照してください。
更新時間:2026-04-03