発行済み 2026-04-07
このガイドは、標準マイクロの回転角度を正確に制御するために必要なすべてを提供します。サーボマイクロコントローラーを使用します。核となる原則はシンプルです。サーボの出力軸位置はパルス信号の幅によって決まります。最も一般的なマイクロの場合サーボs、1.5 ミリ秒 (ms) のパルス幅はシャフトを 90° の中心に置き、1.0 ms で 0° に移動し、2.0 ms で 180° に移動します。ただし、実際のサーボは異なります。この記事では、特定のブランドに依存せずに正確な度ごとの制御を実現するための検証済みの方法、コード例、およびキャリブレーション手順を説明します。
あマイクロサーボ小型 DC モーター、フィードバック ポテンショメータ、および制御回路が含まれています。回路は受信パルス幅をポテンショメータの位置と比較します。パルス幅が希望の位置と一致するとモーターが停止します。パルス幅と角度の関係は、サーボの機械的限界内で線形です。
標準信号仕様:
パルス繰り返し率:50Hz(周期=20ms)
使用可能なパルス幅範囲:通常 1.0 ミリ秒~2.0 ミリ秒
対応角度範囲:0°~180°
これは、サーボが 20 ミリ秒ごとのパルスを予期していることを意味します。パルス幅を 1.0 ms から 2.0 ms に変更することで、シャフトを 0° から 180° まで指令します。
2つ買うんですねマイクロサーボ同じバッチからのものです。 1.5 ms パルスを送信すると、1 つは完全に 90° の中心になります。もう 1 つは 85° で止まります。これは、フィードバック ポテンショメータと機械アセンブリの製造公差が原因で発生します。したがって、常に各サーボを個別に校正してください。
ほとんどのマイクロコントローラー プラットフォームには、安定した 50 Hz パルスを生成するサーボ ライブラリが組み込まれています。以下は、PWM 出力およびサーボ制御ライブラリをサポートするマイクロコントローラーで動作する一般的なコード例です。
サーボの電源線 (赤) を、少なくとも 500 mA を供給できる 5V 電源に接続します。
アース線 (茶色または黒色) をマイクロコントローラーの GND に接続します。
信号線 (オレンジ、黄色、または白) を PWM 対応ピン (ピン 9 など) に接続します。
#含むサーボmyServo; void setup() { myServo.attach(9); // サーボをピン 9 に接続します } void loop() { myServo.write(0); // コマンド 0 度の遅延(1000); myServo.write(90); // コマンド 90 度の遅延(1000); myServo.write(180); // コマンド 180 度の遅延(1000); }
の書き込み(角度)この機能は、デフォルトのマッピング (0°→1.0 ms、180°→2.0 ms) を使用して、角度を対応するパルス幅に自動的に変換します。ただし、このデフォルトは特定のサーボと一致しない可能性があります。
正確な角度を実現するには、サーボで 0° と 180° を生成する正確なパルス幅を決定する必要があります。
1. ポインタを取り付けるか、シャフトの中立位置に印を付けます。
![]()
2. 1.5 ms パルスを送信します。シャフトは90°近くになるはずです。オフセットがある場合は注意してください。
3. シャフトの動きが停止するまで、パルス幅を 10 µs ずつ減少させます。それが本当の 0° パルス幅です。
4. シャフトの動きが停止するまで、パルス幅を 1.5 ms から 10 µs ずつ増加させます。それが本当の 180 度のパルス幅です。
3 つの一般的なサーボからの典型的な測定結果:
これらの値は、1000 μs ~ 2000 μs を想定すると、最大 15° の誤差が生じる可能性があることを示しています。常に校正された値を使用してください。
ほとんどのサーボ ライブラリでは、アタッチ()オーバーロードまたは別の関数。例:
myServo.attach(9, 540, 2420); // ピン、最小パルス幅 (μs)、最大パルス幅 (μs)
校正されたリミットを使用して取り付けた後、myServo.write(90)は正確な中心パルス (この場合は 1480 μs) を送信し、真の 90° を与えます。
ステップ 1: 常に各サーボを個別に校正する– 工場出荷時の仕様を想定しないでください。 5 分間かけて、真の 0° および 180° のパルス幅を測定します。
ステップ 2: 専用の電源を使用する– マイクロコントローラーの 5V ピンからマイクロサーボに直接電力を供給しないでください。突然の電流の引き込みにより、コントローラーがリセットされる可能性があります。 5V 1A UBEC または安定化された外部電源を使用します。
ステップ 3: キャリブレーション値をコードに保存する– キャリブレーション後、最小および最大パルス幅をハードコードします。例:
#define SERVO_PIN 9 #define SERVO_0_PULSE 540 // 0° の測定 µs #define SERVO_180_PULSE 2420 // 180° サーボの µs の測定 myServo; myServo.attach(SERVO_PIN, SERVO_0_PULSE, SERVO_180_PULSE);
ステップ 4: 簡単なテストで検証する– コマンド0°、45°、90°、135°、180°。分度器を使用して精度を確認します。角度が 2° を超えてずれている場合は、キャリブレーションを繰り返します。
ステップ 5: 設定を文書化する– 各サーボの校正されたパルス幅を書き留めます。サーボを交換した場合は、すぐに再キャリブレーションを行ってください。
マイクロサーボ角度はパルス幅によって直接制御されます。標準マッピング (1.0 ms = 0°、1.5 ms = 90°、2.0 ms = 180°) が開始点です。実際のサーボでは、真の 0° ~ 180° の精度を実現するには、最小パルス幅と最大パルス幅を個別に校正する必要があります。キャリブレーションを行わないと、10° ~ 20° のオフセットが発生する可能性があります。
キャリブレーション手順に従い、コード内のパルス幅範囲をカスタマイズすることで、ロボット アームからカメラ ジンバルまで、あらゆるアプリケーションで再現性のある正確なサーボ位置決めを実現できます。常に各サーボの実際の限界をテストし、それに応じてコードを調整してください。これにより、推測に頼る必要がなくなり、プロジェクトが常に確実に動作するようになります。
更新時間:2026-04-07