発行済み 2026-04-13
パルス幅変調 (PWM) は、標準的なホビーの角度位置を正確に制御するために使用される標準的な方法です。サーボモーター。送信される電気パルスの幅を変えることによって、サーボ20 ミリ秒ごとに、サーボ特定の角度 (通常は 0 ~ 180 度) に移動します。このガイドでは、正確な信号仕様、段階的な制御ロジック、実践例、トラブルシューティングのヒントを提供するため、すぐに PWM サーボ制御を実装できます。
標準的なサーボ モーターには、入力 PWM 信号を読み取る小さな制御回路が含まれています。サーボの出力軸の位置は、パルス幅(高信号の継続時間) 固定 20 ミリ秒 (50 Hz) フレーム内。関係は線形であり、特定のパルス幅は特定のターゲット角度に等しい。
標準のパルス対角度マッピング (0 ~ 180° サーボの場合):
0度:0.5msパルス(500マイクロ秒)
90度(中立):1.5msパルス(1500マイクロ秒)
180度:2.5msパルス(2500マイクロ秒)
これらの値は業界標準です。サーボのデータシートを常に確認してください。ただし、標準サーボの 95% 以上がこの正確なマッピングに従っています。
サーボ角度を制御するには、次の 2 つの主要なパラメータを使用して繰り返し信号を生成する必要があります。
サーボは 20 ミリ秒ごとに新しいパルスを期待します。これは、PWM 周波数が 1 / 0.02 s = 50 Hz であることを意味します。この周波数は変更しないでください。そうしないと、サーボがジッターしたり、応答しなくなったりします。
次の線形補間式を使用します。
パルス幅 (ms) = 0.5 + (角度 / 180) 2.0
例えば:
角度 = 45° → パルス = 0.5 + (45/180)2.0 = 0.5 + 0.5 =1.0ミリ秒
角度 = 135° → パルス = 0.5 + (135/180)2.0 = 0.5 + 1.5 = 2.0ミリ秒
実際には、タイマーを設定します。パルス幅 (たとえば、1.5 ms) の間 HIGH を出力し、残りの時間 (20 ms – 1.5 ms = 18.5 ms) で LOW を出力します。継続的に繰り返します。
ロボット アームにサーボが接続されていると想像してください。完全に左 (0°) から完全に右 (180°) まで段階的に移動させたいとします。
信号シーケンス (各ラインは 20 ミリ秒の 1 サイクル):
サイクル 1: 0.5 ms の間 HIGH → サーボは 0°に移動します
サイクル 2: 1.0 ms の間 HIGH → サーボは 45° に移動します
サイクル 3: 1.5 ms の間 HIGH → サーボは 90° に移動します
サイクル 4: 2.0 ms の間 HIGH → サーボは 135° に移動します
サイクル 5: 2.5 ms の間 HIGH → サーボは 180° に移動します
観察された動作:サーボは各角度にステップし、その位置を保持します。制御回路は常に目標のパルス幅を受け取るため、ドリフトしません。
以下を使用して、必要な PWM 信号を生成できます。
マイクロコントローラータイマー/カウンターモジュール– 可変デューティ サイクルで 50 Hz PWM をセットアップします。デューティ サイクル = (パルス幅 / 20 ミリ秒) 100%。 1.5 ms パルスの場合、デューティ サイクル = 7.5%。
ソフトウェアビットバンギング– 遅延を使用して GPIO ピンを直接制御します。精度は劣りますが、学習には役立ちます。
専用サーボドライバーモジュール– これらのオフロード タイミング精度は、依然として同じ 0.5 ~ 2.5 ms のパルス範囲を必要とします。
重要な精度要件:パルス幅精度は±10 µs (マイクロ秒) 以内でなければなりません。タイミングが 20 µs 以上ずれると、ジッターや誤った角度が発生します。
実際のケース:よくある間違いは、一部のマイクロコントローラー ライブラリがデフォルトで 1.0 ~ 2.0 ミリ秒の範囲を使用していることです。あるユーザーは、サーボが合計 90 度しか回転しないと報告しました。パルス範囲を 0.5 ~ 2.5 ms に変更すると、完全な 180° 回転が復元されました。
PWM は、デューティ サイクルだけではなく、パルス幅によってサーボ角度を制御します。20 ミリ秒の固定期間では、絶対 High 時間 (0.5 ~ 2.5 ミリ秒) によって位置が決まります。
関係は線形です。パルス幅 = 0.5 ms + (角度/180)*2.0 ms。
常に 50 Hz (20 ms 周期) を使用してください。それ以外の周波数を使用すると、不安定な動作が発生したり、動かなくなったりします。
最小および最大パルス幅を確認してください。ほとんどの問題は、ハードウェアの故障ではなく、パルス範囲が正しくないことが原因で発生します。
一貫した結果を得るには、次の手順をすぐに実行してください。
1. サーボの実際の応答を測定します。0.5 ms、1.5 ms、2.5 ms のパルスを送信します。物理的な角度をマークします。それらが 0°、90°、180° ではない場合は、実際のパルスと角度のマッピングを記録します。
2. 100 ~ 200 μs の安全マージンを追加機械的な結合を防ぐため、両端で (最小パルス = 0.6 ミリ秒、最大 = 2.4 ミリ秒)。
3. 専用のタイマーハードウェアを使用する可能な場合はソフトウェア遅延の代わりに。タイマーベースの PWM は、メインコードがビジー状態の場合でも精度を維持します。
4. ロジックアナライザーまたはオシロスコープを使用したテストパルス幅を確認します。多くのソフトウェア シミュレーションはタイミング エラーを隠します。
5. マルチサーボプロジェクトの場合、電源をロジック電源とは別にしてください。サーボが停止すると 1 ~ 2A が消費され、電圧降下が発生して PWM 信号が破損する可能性があります。
20 ms 周期内で 0.5 ~ 2.5 ms のパルス幅範囲を厳密に遵守することで、標準的なサーボ モーターで正確で再現可能な角度制御を実現できます。最初に測定ステップを実装し、次にコードを微調整すると、サーボは指令した場所に正確に移動します。
更新時間:2026-04-13