> 業界の洞察 >ギアモーター
テクニカルサポート

製品サポート

マイクロコントローラーでサーボモーターの角度を制御する方法: 完全なステップバイステップガイド

発行済み 2026-04-17

01制御方法サーボマイクロコントローラーを使用したモーター角度: 完全なステップバイステップ ガイド

このガイドでは、マイクロコントローラーが標準の回転角度を正確に制御する方法について明確で実践的な説明を提供します。サーボモーター。中心となる動作原理、必要な正確な電気信号、一般的なマイクロコントローラーを使用してその信号を生成するための完全なステップバイステップの方法を学びます。ブランド名や特定の企業製品は参照されていません。一般的で広く適用可能な原則と実際の例のみが使用されています。

1. 基本原理: パルス幅変調 (PWM) が角度を直接決定する

標準サーボモーターはそうしますない通常のDCモーターと同様に連続回転します。代わりに、特定の角度位置 (0°、90°、または 180° など) に移動し、その位置を保持します。角度は、20 ミリ秒 (ms) ごとに送信される電気パルスの幅によって完全に制御されます。

直接的な関係は次のとおりです。

パルス幅 1.0 ms ~ 2.0 ms0°~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) の間で非常に素早く切り替わるデジタル信号を出力し、サーボがオン パルスの持続時間を読み取る方法。

2. ステップバイステップ: マイクロコントローラーが正しいパルスを生成する方法

マイクロコントローラーを使用して標準サーボを制御するには、次の手順を正確に実行してください。

ステップ 1: サーボの信号要件を特定する

ほとんどの標準的なサーボは次のもので動作します。

電圧: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 を使用します。原則は同じです。

ステップ 2: サーボをマイクロコントローラーに正しく接続する

標準的なサーボには 3 本のワイヤがあります。

ワイヤーの色 (標準) 関数 繋がり
ブラウンまたはブラック グランド(GND) マイコンのGND
電源(VCC、5V) 外部 5V 電源 (複数の小型サーボにマイクロコントローラーの 5V ピンを使用しないでください)
オレンジまたはイエロー 信号(PWM) マイクロコントローラーのPWM対応デジタルピン

重要な安全上の注意:マイクロコントローラーの 5V ピンから直接サーボに電力を供給しないでください。サーボは 200 ~ 1000 mA を消費する可能性があり、これはほとんどのマイクロコントローラーのピン定格を超えます。共通グラウンドを持つ別の 5V 電源を使用してください。

ステップ 3: マイクロコントローラーの PWM ハードウェアを構成する

すべてのマイクロコントローラーには 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 を書き込みます。

ステップ 4: 希望の角度を設定するためのマイクロコントローラー コードを作成する

コード ロジックはすべてのマイクロコントローラーで常に同じです。

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);

ステップ 5: 現実世界の測定による検証

コードをアップロードした後、オシロスコープまたはロジック アナライザーを使用して信号を確認します。

周波数は50Hzである必要があります(周期=20ms)

パルス幅は計算値と一致する必要があります(例: 90°の場合は 1.5 ms)

現実世界の一般的な問題:サーボがジッターしたり動かない場合は、パルス幅が正しくない可能性があります。信号ピンで直接測定します。 0.05 ミリ秒の誤差により、5° ~ 10° のずれが生じる可能性があります。

3. 完全な例: サーボを 0° から 180° まで制御し、またその逆に制御する

以下は、構文を少し調整した後、あらゆるマイクロコントローラーで動作する完全で一般的な例です。重要なのはロジックです。

シナリオ:シンプルなカメラパンプラットフォーム。サーボは 0° から 180° までスイープし、連続的に戻る必要があります。

段階的な実装ロジック:

1. PWM 周波数を 50 Hz に設定します。

2. 関数を定義するsetAngle(角度)それ:

クランプ角度は0°~180°

パルス幅 = 1000 + (角度 × 1000 / 180) マイクロ秒を計算します。

デューティサイクルレジスタ値に変換

PWMピンへの書き込み

3. メインループ内:

角度を 0° から 180° まで 1° ずつ増加

電話setAngle(角度)各ステップごとに

15 ミリ秒待ちます (サーボが物理的に移動できるようにします)

その後、角度を 0°に戻します。

期待される結果:サーボは端から端までスムーズに回転し、計算された各角度で正確に停止します。

4. 重要な検証表: パルス幅と角度の関係

計算せずに簡単に検証するには、次の表を使用します。

希望の角度 必要なパルス幅 (μs) デューティ サイクル @ 50 Hz、8 ビット (0 ~ 255)
1000 13
45° 1250 16
90° 1500 19
135° 1750 22
180° 2000 26

注記:サーボが正確に 0° または 180° に達しない場合は、最小パルス幅と最大パルス幅をわずかに調整します (たとえば、0° の場合は 950 μs、180° の場合は 2050 μs)。これは製造公差による正常な現象です。

5. この方法が普遍的で信頼できる理由

パルス幅制御方式は、何十年にもわたって使用されている業界標準のアナログ サーボ インターフェイスです。メーカーに関係なく、すべての標準サーボは同じ 1.0 ~ 2.0 ms のパルス範囲に応答します。これはつまり:

50 Hz PWM を出力する任意のマイクロコントローラーを使用して、任意の標準サーボを制御できます。

同じコード ロジックが 8 ビットから 32 ビットまでのマイクロコントローラーで機能します。

独自のライブラリやブランド固有の関数は必要ありません。

6. 現実世界の一般的な問題とその解決策

問題 最も考えられる原因 解決
サーボが全く動かない サーボに電力が供給されていないか、アース接続が正しくありません サーボ電源を外部5V電源とマイクロコントローラとの共通グランドに接続します。
サーボが振動したりジッターしたりする パルス幅が不安定であるか、周波数が正確に 50 Hz ではありません PWM 設定を確認してください。ソフトウェア遅延ループの代わりにハードウェア PWM を使用する
サーボは 0° と 180° までのみ移動し、中間角度は移動しません コードは最小および最大パルス幅のみを送信しています 計算式を確認してください。オシロスコープでパルス幅を測定する
サーボが非常に熱くなります パルス周波数が高すぎる (例: 50 Hz ではなく 300 Hz) PWM を正確に 50 Hz (20 ms 周期) に再構成します。
時間の経過とともにサーボ位置がドリフトする 電源電圧が不安定です サーボ電源ライン間に大きなコンデンサ (1000 µF) を追加します。

7. 実用的な結論: 正確な次のステップ

覚えておくべき基本原則:

> サーボ角度は正比例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

未来に力を与える

お客様の製品に適したモーターまたはギアボックスを推奨するには、Kpower の製品スペシャリストにお問い合わせください。

Kpowerにメールする
お問い合わせを送信
+86 0769 8399 3238
 
kpowerMap