Stax
Tools

PWM Servo Calculator

Calculate PWM pulse width, duty cycle, and servo angle.

Servo range
Angle
90.0°
Pulse width
1500.0 µs
Duty cycle
7.500%
16-bit timer count
4,915
Pulse = minPulse + (angle − minAngle) / (maxAngle − minAngle) × (maxPulse − minPulse)
Period = 20000 µs (1/50 Hz)

PWM Servo Calculatorの仕組み

PWM servo calculatorは、サーボ角度(0°〜180°)、パルス幅(1〜2 ms)、および標準50 Hzサーボ制御周波数のデューティサイクル間の変換を行います。また、STM32タイマーのタイマー比較レジスタ値(CCR)と、ArduinoおよびESP32用のanalogWriteまたはマイクロ秒値も計算します。RCロボット、ジンバル、CNCプロジェクト開発中の手動PWM計算を不要にします。

RCサーボは50 Hz PWM信号(周期20 ms)で制御されます。パルス幅が位置をエンコードします:1 ms(1,000 µs)は0°(完全左)、1.5 ms(1,500 µs)は90°(中央)、2 ms(2,000 µs)は180°(完全右)に対応します。一部のサーボでは拡張トラベル用に0.5〜2.5 msの広い範囲を受け付けます。このツールでは特定のサーボのデータシートの範囲に合わせて最小・最大パルス幅をカスタマイズできます。

50 Hzでは周期は20 msです。1 msのパルスはデューティサイクル1/20 = 5%、2 msのパルスは10%になります。Arduino ServoライブラリはwriteMicroseconds()を通じてこれらの変換を内部で処理しますが、生のPWM(490 Hzまたは980 HzチャンネルでのanalogWrite)を使用している場合は値が大きく異なり、このツールは8ビット(0〜255)および16ビット(0〜65535)タイマー解像度の両方に対する修正値を提供します。

STM32マイクロコントローラーでは、サーボPWMはPWMモードのタイマーチャンネルを使用して生成されます。ARR(オートリロードレジスタ)が周期を設定し、CCR(キャプチャ比較レジスタ)がパルス幅を設定します。72 MHzクロック、プリスケーラ71(1 MHzタイマークロック)、ARR = 19999(50 Hz)の場合、1 msのパルスにはCCR = 999、2 msのパルスにはCCR = 1999が必要です。このツールは任意のタイマークロック周波数と目標角度に対してCCR値を出力します。

ブラシレスモーター用のESC(電子スピードコントローラー)はサーボと同じ50 Hz PWMプロトコルを使用しますが、パルス範囲の解釈が異なります:1 msは最小スロットル(停止)、2 msは最大スロットル(全速)です。ESCキャリブレーションでは電源投入時に2 msのパルスを送信(アーミング)し、その後1 msのパルスでキャリブレーションを完了させる必要があります。このツールのESCモードでは、完全なキャリブレーション手順の正確なマイクロ秒値とArduinoコードスニペットを提供します。

よくある質問

What PWM frequency do servos use?
Standard RC servos use 50 Hz (20ms period) PWM. The pulse width from 500µs–2500µs maps to 0°–180°. Some digital servos support up to 333 Hz for faster response.
What is the standard servo pulse range?
Most hobby servos use 1000µs–2000µs (1ms–2ms) as the working range, with 1500µs as center (90°). Many servos actually accept 500µs–2500µs for extended range.
How do I calculate the 16-bit timer compare value?
For a 16-bit timer at 50 Hz: compare value = (pulse_µs / period_µs) × 65535. For example, 1500µs at 50 Hz = (1500/20000) × 65535 = 4915.

関連ツール