発行済み 2026-04-11
速度を制御するサーボモーターは、多くのロボット工学や自動化プロジェクトで共通の要件です。電圧または PWM デューティ サイクルを直接調整して速度を変更する標準的な DC モーターとは異なり、標準の位置決めサーボ専用の速度制御入力はありません。代わりに、内部ギアとモーターが許す限り速く、指令された角度に移動します。ただし、実効速度を制御することはできます。サーボの動きは、ソフトウェアベースの技術を使用するか、速度調整機能が組み込まれたサーボを選択することによって制御されます。このガイドでは、実際のテストと一般的な DIY 実践に基づいて、サーボ速度を制御する実用的で実用的な方法を説明します。すべてのテクニックは特定のブランドを参照することなく説明されており、標準的なサーボ システムに適用できることが保証されています。
サーボ速度を制御するために最も広く使用されている方法は、各ステップ間にわずかな遅延を設けながら、サーボを現在の角度から目標角度まで段階的に移動させることです。この技術は標準的な位置サーボで動作し、特別なハードウェアを必要としません。
段階的な実装:
1. 現在の角度を読み取るサーボの角度を変更するか (コントローラーが位置フィードバックをサポートしている場合)、最後にコマンドされた角度を変数に保存します。
2. 差を計算する目標角度と現在の角度の間。
3. 動きを分割する小さく均等に増分します。たとえば、0° から 90° まで移動する必要がある場合は、1° または 2° の増分を使用できます。
4. 各増分をループします– 新しい中間角度をサーボに書き込み、短い遅延 (通常は 10 ミリ秒から 50 ミリ秒) を待ちます。
5. 目標角度に達するまで繰り返します。
疑似コードの例 (Arduino、ESP32、Raspberry Pi、およびほとんどのマイクロコントローラーで動作します):
current_angle = 0 target_angle = 90 step_size = 1 // ステップあたりの度 late_ms = 20 // current_angle の場合、ステップ間のミリ秒
速度への影響:
ステップ サイズが大きい → 全体的な動作が速くなります (ただし、ぎくしゃくして見える場合があります)
ステップ サイズが小さい → 動きがスムーズになります (ただし、ステップが多くなり、合計時間が長くなります)
遅延が長い → 見かけの速度が遅くなる
遅延の短縮 → 動作が速くなり、サーボの本来の最高速度に近づきます
現実世界の例:小さな物体を拾うロボット アームでは、15 ミリ秒の遅延で 2 度のステップを使用することで、滑らかで人間のような動きが生まれ、物品の落下を防ぎます。速度制御がないと、アームが急激に動いて近くの物体を倒してしまうこともあります。
一部のサーボは、速度コマンドを直接受け入れるように設計されています。一般的なタイプは 2 つあります。
A) 連続回転サーボ
これらのサーボには角度制限がありません。それらは継続的に回転します。速度はパルス幅によって制御されます。
1.5msパルス→停止
1.5 ms から 2.5 ms → 一方向、速度が増加
1.5 ms ~ 1.0 ms → 逆方向、速度が増加
![]()
B) スマート サーボ (シリアル通信、UART、I²C、RS485 など)
これらのサーボは、「速度 Y で角度 X に移動」などのコマンドを受け入れます。ターゲット角度、回転速度、場合によっては加速度を含む構造化データ パケットを送信します。コマンド形式については、必ず特定のサーボのデータシートを参照してください。ブランド名は必要ありません。原則は普遍的に適用されます。
この方法を使用する場合:
複雑なランピング コードを記述せずに、正確で再現可能な速度制御が必要です。
プロジェクトには多数のサーボがあり、マイクロコントローラーの処理負荷を軽減したいと考えています。
非常にスムーズな動きを実現するには、加速度制御 (イージングインとイージングアウト) が必要です。
標準的なアナログ サーボの場合、リフレッシュ レート (PWM 周波数) は通常 50 Hz (20 ms 周期) です。サーボは安定したリフレッシュ レートを期待するため、周波数の変更は信頼できる速度制御方法ではありません。ただし、一部のデジタル サーボは、より高いリフレッシュ レート (最大 300 Hz 以上) を受け入れます。リフレッシュ レートを上げるとサーボの応答が速くなりますが、速度を直接制御できるわけではありません。変更されるのはサーボが位置を更新する頻度だけです。
おすすめ:速度を制御するために PWM 周波数に依存しないでください。予測可能な結果を得るには、ソフトウェア ランピングまたはスマート サーボを使用してください。
ソフトウェアでのサーボの動きが速すぎる:ステップ サイズを 10°、遅延 1 ms に設定した場合、サーボは依然として最大機械速度で動作します。サーボは物理的に追いつくことができないため、中間コマンドは無視されます。サーボの最大応答速度を常にテストしてください。
ブロックコード:長く使う遅れ()関数は、プログラムが他のタスクを実行するのを停止します。ノンブロッキング タイミングを使用します (例:ミリス()Arduino で) マルチタスク用。
すべてのサーボの速度曲線が同じであると仮定します。同じモデルの 2 つのサーボであっても、製造公差によりわずかな速度差が生じる可能性があります。ステップ遅延を経験的に調整します。
標準位置サーボの速度を制御する唯一の普遍的な方法は、目的の角運動を多くの小さなステップに分割し、各ステップ間に時間遅延を挿入することです。ハードウェアの変更は必要ありません。この方法は、あらゆるマイクロコントローラー、あらゆるサーボ ブランド、あらゆるプロジェクト規模で機能します。専用の速度制御が必要なアプリケーションの場合は、速度をコマンド パラメータとして受け入れる連続回転サーボまたはスマート シリアル サーボを使用します。
1. サーボの種類を特定する– それは位置、継続的な回転、またはスマートですか?
2. 位置サーボの場合:関数を書くmoveServoSmooth(現在、ターゲット、ステップサイズ、遅延Ms)そして stepSize = 1° および遅延 Ms = 20 ミリ秒でテストします。動きが遅すぎる場合は stepSize を最大 5° に調整し、より速い動きが必要な場合は遅延を 10 ミリ秒に減らします。
3. 連続回転サーボの場合:希望の速度 (0 = 停止、100 = 一方向の全速度) を、1.5 ms を停止として、1.0 ms ~ 2.5 ms のパルス幅にマッピングします。
4. スマートサーボの場合:速度コマンドのバイト形式については、製品データシートを参照してください。通常、これはシリアル パケット内の別個のレジスタまたはパラメータです。
5. テストと校正– 常に特定の負荷 (サーボ ホーンの重量) で動作を確認してください。負荷が重くなると、ストールを避けるために、より小さなステップ サイズとより長い遅延が必要になる場合があります。
これらの方法に従うことで、ロボット工学またはオートメーション プロジェクトにおいてサーボ速度を完全かつ予測可能に制御できるようになります。特別なハードウェアやブランド固有のトリックはなく、世界中の何千ものメーカーやエンジニアが使用している実証済みのテクニックだけです。
更新時間:2026-04-11