発行済み 2026-04-17
このガイドでは、マイクロコントローラーが標準の回転角度を正確に制御する方法について明確で実践的な説明を提供します。サーボモーター。中心となる動作原理、必要な正確な電気信号、一般的なマイクロコントローラーを使用してその信号を生成するための完全なステップバイステップの方法を学びます。ブランド名や特定の企業製品は参照されていません。一般的で広く適用可能な原則と実際の例のみが使用されています。
標準サーボモーターはそうしますない通常のDCモーターと同様に連続回転します。代わりに、特定の角度位置 (0°、90°、または 180° など) に移動し、その位置を保持します。角度は、20 ミリ秒 (ms) ごとに送信される電気パルスの幅によって完全に制御されます。
直接的な関係は次のとおりです。
パルス幅 1.0 ms ~ 2.0 ms → 0°~180°の角度(ほとんどの一般的なサーボの場合)
1.0 ms パルス → 0° (反時計回りいっぱい)
1.5msパルス → 90°(中心位置)
2.0 ms パルス → 180° (完全時計回り)
> 現実世界の例:趣味のロボット アームでは、グリッパーを完全に閉じる (0°) ために、マイクロコントローラーが 1.0 ミリ秒のパルスを繰り返し送信します。グリッパーを完全に (180°) 開くには、2.0 ミリ秒のパルスを送信します。半開位置 (90°) の場合、1.5 ms パルスを送信します。
この信号は次のように呼ばれますパルス幅変調 (PWM)– マイクロコントローラーがオン (5V または 3.3V) とオフ (0V) の間で非常に素早く切り替わるデジタル信号を出力し、サーボがオン パルスの持続時間を読み取る方法。
マイクロコントローラーを使用して標準サーボを制御するには、次の手順を正確に実行してください。
ほとんどの標準的なサーボは次のもので動作します。
電圧:4.8V~6.0V(電源、ないマイクロコントローラーのピンから)
制御信号電圧:3.3V または 5V (マイクロコントローラーのロジックレベルと一致)
パルス繰り返し周期:20ms(周波数50Hz)
パルス幅範囲:1.0ms~2.0ms(0°~180°の場合)
重要:正確なパルス幅範囲についてはサーボのデータシートを確認してください。一部のサーボでは、0°~180°の場合は 0.5 ms ~ 2.5 ms、0°~90°の場合は 1.0 ms ~ 2.0 ms を使用します。原則は同じです。
標準的なサーボには 3 本のワイヤがあります。
重要な安全上の注意:マイクロコントローラーの 5V ピンから直接サーボに電力を供給しないでください。サーボは 200 ~ 1000 mA を消費する可能性があり、これはほとんどのマイクロコントローラーのピン定格を超えます。共通グラウンドを持つ別の 5V 電源を使用してください。
すべてのマイクロコントローラーには PWM タイマーが組み込まれています。構成には、次の 2 つのパラメータを設定する必要があります。
周波数 = 50 Hz(周期=20ms)
解決(通常は 8 ビットから 16 ビット、マイクロコントローラーによって異なります)
一般的な計算の例 (任意のマイクロコントローラーの場合):
PWM 分解能が 8 ビット (0 ~ 255) で、合計周期が 20 ms (20,000 μs) の場合:
1.0 ms パルス → デューティ サイクル = (1.0 ms / 20 ms) × 255 = 12.75 → 13 を使用
1.5 ms パルス → デューティ サイクル = (1.5 ms / 20 ms) × 255 = 19.125 → 19 を使用
2.0 ms パルス → デューティ サイクル = (2.0 ms / 20 ms) × 255 = 25.5 → 26 を使用
現実世界のケース:50 Hz PWM に設定された一般的な 8 ビット マイクロコントローラは、0°を達成するために PWM 比較レジスタに値 13 を書き込み、90°の場合は 19、180°の場合は 26 を書き込みます。
コード ロジックはすべてのマイクロコントローラーで常に同じです。
1. PWM ハードウェアを 50 Hz の周波数で初期化します。
2. 次の線形公式を使用して、ターゲット角度に必要なパルス幅をマイクロ秒単位で計算します。
パルス幅 (μs) = 1000 + (角度 / 180) × 1000(1.0 ~ 2.0 ms の範囲の場合)
角度0°→1000μs
角度 90° → 1500 μs
角度180° → 2000μs
3. パルス幅をマイクロコントローラーのデューティ サイクル レジスタ値に変換します。
4. その値を PWM 出力ピンに書き込みます。
一般的な疑似コード (あらゆるマイクロコントローラーに適応):
// PWM タイマーがすでに 50 Hz、8 ビット分解能に設定されていると仮定します。 int targetAngle = 90; // 度 intpulseWidth_us = 1000 + (targetAngle1000 / 180); int dueCycleValue = (pulseWidth_us255) / 20000; setPWMDutyCycle(PWM_PIN,dutyCycleValue);
コードをアップロードした後、オシロスコープまたはロジック アナライザーを使用して信号を確認します。
周波数は50Hzである必要があります(周期=20ms)
パルス幅は計算値と一致する必要があります(例: 90°の場合は 1.5 ms)
現実世界の一般的な問題:サーボがジッターしたり動かない場合は、パルス幅が正しくない可能性があります。信号ピンで直接測定します。 0.05 ミリ秒の誤差により、5° ~ 10° のずれが生じる可能性があります。
以下は、構文を少し調整した後、あらゆるマイクロコントローラーで動作する完全で一般的な例です。重要なのはロジックです。
シナリオ:シンプルなカメラパンプラットフォーム。サーボは 0° から 180° までスイープし、連続的に戻る必要があります。
段階的な実装ロジック:
1. PWM 周波数を 50 Hz に設定します。
2. 関数を定義するsetAngle(角度)それ:
クランプ角度は0°~180°
パルス幅 = 1000 + (角度 × 1000 / 180) マイクロ秒を計算します。
デューティサイクルレジスタ値に変換
PWMピンへの書き込み
3. メインループ内:
角度を 0° から 180° まで 1° ずつ増加
電話setAngle(角度)各ステップごとに
15 ミリ秒待ちます (サーボが物理的に移動できるようにします)
その後、角度を 0°に戻します。
期待される結果:サーボは端から端までスムーズに回転し、計算された各角度で正確に停止します。
計算せずに簡単に検証するには、次の表を使用します。
注記:サーボが正確に 0° または 180° に達しない場合は、最小パルス幅と最大パルス幅をわずかに調整します (たとえば、0° の場合は 950 μs、180° の場合は 2050 μs)。これは製造公差による正常な現象です。
パルス幅制御方式は、何十年にもわたって使用されている業界標準のアナログ サーボ インターフェイスです。メーカーに関係なく、すべての標準サーボは同じ 1.0 ~ 2.0 ms のパルス範囲に応答します。これはつまり:
50 Hz PWM を出力する任意のマイクロコントローラーを使用して、任意の標準サーボを制御できます。
同じコード ロジックが 8 ビットから 32 ビットまでのマイクロコントローラーで機能します。
独自のライブラリやブランド固有の関数は必要ありません。
覚えておくべき基本原則:
> サーボ角度は正比例1.0 ms ~ 2.0 ms のパルス幅で 20 ms ごとに繰り返します。パルス幅を変更すると、角度が変更されます。他には何も関係ありません。
今日実行すべき即時行動計画:
1. サーボのパルス範囲を確認してください– 最小/中心/最大パルス幅についてはデータシートを確認してください。ほとんどの場合、0/90/180°に 1.0/1.5/2.0 ミリ秒が使用されます。
2. マイクロコントローラーのPWMをセットアップする– 1 つの PWM ピンを 50 Hz の周波数に設定します。安定したパルスを得るには、ソフトウェア ビットバンギングではなくハードウェア PWM を使用します。
3. 角度からパルスへの変換式を書く- 使用:パルス値 = 1000 + (角度度 × 1000 / 180).
4. 3 つの既知の角度でテストする– コマンド 0°、90°、および 180°。実際のシャフト位置を測定します。必要に応じて、最小/最大パルス幅を調整します。
5. キャリブレーションルーチンを追加する– サーボの正確な最小および最大パルス幅をコードに保存します。これにより、製造上のばらつきにもかかわらず、完璧な 0° ~ 180° の範囲が保証されます。
最終検証:このガイドに従うと、0° ~ 180° の任意の角度を ±1° の精度で指令できるようになります。同じ方法は、連続回転サーボ (パルス幅によって速度と方向を制御する) と、異なる角度範囲 (0° ~ 90° または 0° ~ 270° など) のサーボにも機能します。それに応じてパルス幅範囲を調整するだけです。
核心となる真実を繰り返します。マイクロコントローラーは、オン時間 (パルス幅) が 1.0 ms (0°) から 2.0 ms (180°) まで変化する 50 Hz PWM 信号を出力することによってサーボの角度を制御します。このパルスと角度の関係をマスターすれば、どんなマイクロコントローラーでもどんなサーボでも制御できるようになります。
更新時間:2026-04-17