発行済み 2026-04-06
サーボパルス制御は、繰り返し電気信号を送信する方法です。パルス幅変調 (PWM) 信号—標準に向けてサーボモーターの出力シャフトを正確な角度に設定します。電圧レベルや周波数だけではなく、パルス幅 (High 信号の持続時間) が位置を決定します。
ホビーおよび産業用サーボの大部分では、パルス幅 1.5 ミリ秒 (ms)に命令しますニュートラル (90 度) 位置、1.0msパルスコマンド0度(左いっぱい)、および2.0msパルスコマンド180度(右端)。これは、信頼性の高い動作のために従う必要がある世界標準です。
標準サーボに送信されるすべての制御信号は、次の 2 つの部分で構成されます。
高いパルス幅(アクティブ部分): 通常、次の間0.5ミリ秒と2.5ミリ秒ただし、ほとんどのサーボは1.0ミリ秒~2.0ミリ秒0 ~ 180° の範囲。
フレーム周期(合計サイクル時間):20ミリ秒(50 Hz) 標準アナログサーボ用。デジタル サーボはより高い周波数 (最大 333 Hz) を受け入れる場合がありますが、50 Hz が一般的に機能します。
重要なルール:サーボは、パルス幅各サイクルの。サイクルの残りの部分 (低信号) は単にタイマーをリセットします。同じパルス幅を維持したままフレーム周期を変更するしません角度を変更します。影響するのはトルクと更新レートのみです。
> 検証可能な出典:これらの値は、ラジオコントロール製造者協会 (RCMA) によって定義された標準に一致しており、すべての主要なサーボ データシート (Futaba、Hitec、Savox など) で使用されています。より広い範囲 (270°など) を要求するサーボの場合、パルス範囲はそれに応じて 0.5 ms ~ 2.5 ms に拡張されます。
標準の 5V サーボが汎用マイクロコントローラー (Arduino、ESP32、または STM32 など) に接続されていると仮定します。サーボを 0° から 180° までスイープさせ、またその逆にスイープさせたいとします。
サーボ信号線 → 任意のデジタル出力ピン (例: ピン 9)
サーボ電源 (赤) → 5V 外部電源 (消費電流が 500mA を超える場合は、マイクロコントローラーの 5V ピンから電力を供給しないでください)
サーボグランド(茶/黒)→マイコンとの共通グランド
ほとんどのマイクロコントローラー ライブラリはパルス生成を抽象化します。低レベルのコードを作成する場合に実装する正確なロジックは次のとおりです。
# 50 Hz (20 ms 周期) サーボ制御の疑似コード ピンを HIGH に設定します。pulse_width_ms を待ちます (例: 1.5 ms)。ピンを LOW に設定します。(20 -pulse_width_ms) ms を待ちます。20 ms ごとに繰り返します。
よくある間違い:使用する遅れ()他のタスクをブロックします。代わりに、millis() またはハードウェア タイマーによるノンブロッキング タイミングを使用してください。
愛好家は GoPro 用のジンバルを作成しましたが、標準の 180° サーボで 0.5 ~ 2.5 ミリ秒のパルスを使用しました。結果: サーボは機械的限界 (約 270°) を超えて移動しようとしたため、常にジッターが発生し、過熱しました。に修正した後、1.0~2.0ミリ秒、ジンバルはスムーズに動作しました。実際のパルス制限については、必ずサーボのデータシートを確認してください。
原因 1:パルス幅が不安定です (ソフトウェアのタイミング エラーにより±0.01 ms 変動します)。
修理:ビットバンギングの代わりにハードウェア PWM ペリフェラルを使用します。
原因 2:フレーム周期が一貫していません (例: 18 ミリ秒から 22 ミリ秒)。
![]()
修理:正確に 20 ミリ秒の期間を確保してください。デジタルサーボは感度が低いですが、アナログサーボはジッターが発生します。
原因:パルス範囲が狭すぎます。多くのライブラリはデフォルトで 0.5 ~ 2.5 ms に設定されていますが、サーボには 0.9 ~ 2.1 ms が必要です。
修理:サーボの動きが停止するまで徐々に大きなパルスを送信して実際のエンドポイントを測定し、それに応じて最小/最大を設定します。
原因:電流が不十分です。サーボがストールすると、1A を超える電流が流れる可能性があります。
修理:サーボごとに少なくとも 2A 定格の別の 5V 電源を使用してください。 USB 電源に依存しないでください。
原因:信号ラインに電気的ノイズが発生します。
修理:信号線と直列に 100 ~ 220 Ω の抵抗を追加し、サーボ近くの電源とグランドの間に 10 µF のコンデンサを追加します。
プロジェクトを確実に成功させるには、次の手順に従ってください。
1. サーボのパルス仕様を特定する– データシートを確認してください。利用できない場合は、0 ~ 180° に対して 1.0 ~ 2.0 ms を想定します。
2. 専用のPWMピンを使用する– ハードウェアタイマーは安定したパルスを生成します。ソフトウェアビットバンギングはテストのみを目的としています。
3. サーボに個別に電源を供給する– サーボの VCC を安定化された 5V 電源 (または仕様に応じて 4.8V ~ 6V) に接続します。ロジック電源 (Raspberry Pi の 5V ピンなど) から電力を決して引かないでください。
4. ニュートラルパルス(1.5ms)で開始– これによりサーボが中心に配置され、突然のジャンプが防止されます。
5. パルス幅を徐々に掃引する– 1.0 ミリ秒から 2.0 ミリ秒まで、0.01 ミリ秒単位。実際の機械的範囲を観察してください。
6. サーボの実際の最小/最大パルスを記録します– エンドストップに対する強制を避けるために、最終コードでこれらの制限を使用してください。
7. 不感帯補償を追加する– 正確な位置決めを行うには、同じパルスを 2 回送信します。ほとんどのサーボには 3 ~ 10 µs のデッドバンドがあります。
繰り返しますが、角度はパルス幅だけで制御されます。電圧でも周波数でもありません(当然のことですが)。フレーム周期が 20 ms であるか 10 ms であるかに関係なく、1.5 ms パルスは標準サーボで常に 90° を指令します。期間を変更すると、サーボが位置を更新する頻度にのみ影響します。アナログ サーボの場合は、50 Hz (20 ms) を維持してください。デジタル サーボの場合、最大 333 Hz (3 ms 周期) まで上げることができますが、パルス幅の範囲は同じままです。
サーボパルス制御をすぐに正しく適用するには:
する:ハードウェア PWM ペリフェラルを使用して、20 ms 周期の安定した 1.0 ~ 2.0 ms パルスを生成します。
しないでください:マイクロコントローラーのレギュレーターからサーボに電力を供給します。別のバッテリーまたは電源を使用してください。
する:他の角度に移動する前に、必ず 1.5 ミリ秒のニュートラル パルスから開始してください。
しないでください:すべてのサーボが 0.5 ~ 2.5 ミリ秒を使用すると仮定します。特定のモデルのデータシートを確認してください。
このガイドに従うことで、ロボット アームから RC 車両やカメラ ジンバルに至るまで、あらゆるサーボ ベースのプロジェクトでジッターを排除し、機械的損傷を防ぎ、正確な角度制御を実現できます。さらにトラブルシューティングを行うには、サーボの公式データシートを参照するか、オシロスコープでテストしてパルスのタイミングを確認してください。
更新時間:2026-04-06