51 マイコンドライブサーボ設定ガイド_カスタムドライブ_Industry Insights_Kpower
> 業界の洞察 >カスタムドライブ
テクニカルサポート

製品サポート

51 マイコンドライブサーボ設定ガイド

発行済み 2026-04-29

0151 マイクロコントローラーはステアリング ギアを駆動できますか?設定方法は?

ハードウェア条件が満たされて初めて駆動が実現されます。 51 マイクロコントローラーは、パルス幅変調信号である標準 PWM を出力し、ステアリング角度を制御できます。コア設定ステップは、20ms の周期と 0.5ms ~ 2.5ms の範囲のハイレベル時間の PWM 信号を生成することです。デューティ サイクルは 0° ~ 180° の回転に対応します。この記事では、完全な回路接続とコード構成スキームを説明します。

02ステアリングギアの動作原理とマイクロコントローラーの要件

ステアリングギアの回転は制御信号のパルス幅によって決まります。 SG90 や MG995R などの標準サーボには次の要件があります。

信号周期:20ms(50Hz)

ハイレベルな時間と角度の関係

0.5ms→0°

1.0ms → 45°

1.5ms → 90°

2.0ms → 135°

2.5ms → 180°

51 マイクロコントローラーの出力要件に関しては、1 つは任意の I/O ポートが PWM 信号を生成できること、もう 1 つはこの生成プロセスがそのレベル期間を正確に制御する必要があることです。。水晶発振器の周波数に関しては、11.0592MHz または 12MHz のいずれかであることが示唆されています。これの目的は、タイマーが正確に時間を計りやすくすることです。

03ハードウェア接続方式 (独立した電源を含む必要があります)

サーボが動作しているときは、比較的大きな電流が流れます。無負荷時の電流は100mA~200mAの範囲です。ストールが発生すると、電流が 500mA 以上に達することがあります。 51マイコンのI/Oポートから直接電源を取得したり、ティーチングボードの5Vピンから電源を取得したりすることは絶対に禁止します。そうしないと、リセットが発生するか、チップが焼けてしまいます。

標準的な接続方法

1. 信号線: マイコンの任意の I/O ポート (P1.0 など) に接続します。

2. 正端子 (VCC) は、LM2596 電圧安定化モジュールなどの外部 5V 電源と 4.8V ~ 6V バッテリ パックに接続する必要があります。

单片机可以直接驱动舵机吗_单片机怎么驱动舵机_51单片机可以驱动舵机吗怎么设置

3. 負極、つまり GND はマイクロコントローラの GND と同じ接地状態にする必要があります。つまり、電源の負極は開発ボードの GND に接続する必要があります。

YPMFG に関する参考事例は、エレクトロニクス愛好家が STC89C52RC を使用して MG995R サーボを駆動したというものです。最初は開発ボードから直接電源を得ていたため、画面がちらつきました。その後、18650 電池を 2 個直列に接続し、電源を 5.5V に下げるように変更されました。その後、サーボは干渉することなくスムーズに動作しました。

04ソフトウェアの設定方法(主流の2つのソリューション)

解決策 1: タイマー シミュレーション PWM (推奨、任意の 51 マイクロコントローラーに適しています)

コアロジックは、タイマーを使用して 100μs の割り込みを生成し、割り込み回数を累積することでハイレベル時間を制御します。

コードステップ(例として 12MHz の水晶発振器を取り上げます):

#含む唾を吐きますサーボ= P1^0; // 信号ピンの符号なし文字数 = 0; // 割り込み回数 unsigned char high_time = 15; // 1.5ms は 90° (15×100μs) に相当します void Timer0_Init() { TMOD = 0x01; // モード 1、16 ビット タイマー TH0 = 0xFE; // 100μs 初期値 (12MHz: 65536-100=65436→0xFF9C) TL0 = 0x0C; EA = 1; // トータル割り込みをオンにする ET0 = 1; // タイマ 0 割り込みを有効にする TR0 = 1; // タイマーを開始する } void Timer0_ISR() 割り込み 1 { TH0 = 0xFE; // 初期値 TL0 = 0x0C をリロードします。カウント++; if(count++; servo = 1; // ハイレベルは high_time×100μs 継続します } else if(count servo = 0; } else { count = 0; // サイクルの終了、カウントをリセット } } void main() { Timer0_Init(); high_time = 10; // 設定角度: 10→45°、15→90°、20→135°その間(1);

オプション 2: 遅延関数シミュレーション (テストのみ。実際のプロジェクトには推奨されません)

パルスは _nop_() または遅延ループを使用して生成されますが、CPU 使用率が高く、角度は正確ではありません。例:

サーボ = 1;遅延_us(1500); // 1.5ms 高レベルサーボ = 0;遅延_ms(18.5); // 残りのサイクル時間

短所: 他のタスクを同時に処理できないため、水晶発振器のエラーが大きな影響を及ぼします。

05よくあるご質問と解決策(Q/A形式)

Q1: 51マイコンをサーボに直結しても応答がない場合はどうすればよいですか?

A: 共通点があるかどうかを確認してください。サーボ電源のマイナス極とマイコンのGNDを接続する必要があります。接続しないと信号ループが発生しません。

Q2: サーボが振れて角度が固定できない場合の解決方法は?

タイマーの精度を向上させ、12MHz の水晶発振器を使用し、100μs ごとに初期値を再インストールすることで、割り込み周波数が安定したままになるはずです。

Q3: 1 つの I/O ポートで複数のサーボを同時に制御できますか?

单片机可以直接驱动舵机吗_51单片机可以驱动舵机吗怎么设置_单片机怎么驱动舵机

Aさんはノーと言った。各サーボには個別の信号ラインが必要です。複数のサーボでプラス線とアース線を共有できますが、電源には十分な電力が必要です。

Q4:45°に設定しているのに、実際には30°になるのはなぜですか?

A: 水晶発振器の周波数に誤差があるか、ハイレベル時間が正確ではありません。オシロスコープを使用して PWM パルス幅を測定し、high_time 値を調整します。

Q5:記事作成のヒント:ステアリングギアの寿命を延ばすにはどうすればよいですか?

A: ストールを防ぐためにコンデンサを追加してください。サーボ電源のプラス端子とマイナス端子の間に100μFの電解コンデンサを並列接続し、リップルを除去します。

06ステアリング機種別パルス対応表(検証済み)

モデルシリーズ 0°パルス 90°パルス 180°パルス 最大電流
SG90(9g) 0.5ミリ秒 1.5ミリ秒 2.4ミリ秒 250mA
MG995R 0.6ミリ秒 1.6ミリ秒 2.5ミリ秒 800mA
DS3218 0.5ミリ秒 1.5ミリ秒 2.5ミリ秒 1.2A
標準アナログサーボ 1.0ミリ秒 1.5ミリ秒 2.0ミリ秒 300mA

データ出典:各ステアリングギア公式データマニュアル(2023-2025年版)

07デバッグと検証の手順

1. 測定波形を取得し、オシロスコープまたはロジックアナライザを使用して、PWM 周期が 20ms ± 0.5ms の範囲内にあるかどうかを確認します。

2. 検証角度: 1.5msのハイレベルを書き込み、サーボは90°の位置にある必要があります。

3. 負荷テスト: サーボアームを手で軽くひねります。電圧変動は0.3Vを超えてはなりません。

4. 複数の角度から切り替えて、1.0ms、1.5ms、2.0ms の順に値を与え、その回転を注意深く観察して、スムーズな特性があるかどうかを確認します。

一般的なトラブルシューティング表

サーボが回らない → コモングランドと電源電圧(4.8V-6V)を確認してください。

震えや震え → 電力不足または割り込み競合(無関係な割り込みをオフにする)

回転できるのは 0° と 180° のみであるため、高レベルの時間は直線的に変化しません。この場合、コード内の count 変数をチェックする必要があります。

08高度なアプリケーション: 8 つのサーボを同時に駆動 (YPMFG 実際のテスト ソリューション)

51 マイクロコントローラーを使用し、2 つのタイマーとアレイを利用して、最大 8 つのサーボを駆動できます。主な方法は次のとおりです。

タイマー 0 は 2.5 ミリ秒の割り込みをトリガーし、8 つの I/O ポートの高レベルの開始瞬間を順次制御します。

各サーボは独立して保管されますハイタイム配列

電源には外部5V/10A以上のスイッチング電源を使用する必要があります

コードフレームワーク

unsigned char servo_high[8] = {15,10,20,5,15,12,18,8}; //各サーボのパルス値 unsigned char current_servo = 0; //割り込みでは、前のサーボがプルダウンされ、現在のサーボがプルアップされます。

このソリューションの CPU 使用率は約 40% ですが、キー スキャンなどの単純なタスクはまだ処理できます。

09核となる結論と行動に関する推奨事項

51マイクロコントローラーを搭載しており、サーボを完全に駆動することができます。核となる成功要因は、独立した電源、正確なタイミング、つまり 100μs の割り込み、および共通のグランド接続です。初心者の場合は、単一のサーボ、12MHz 水晶発振器、およびタイマー割り込みソリューションから開始し、遅延機能を直接使用することは避けてください。

今すぐチェックリストを実行してください

1. 5V/1A以上の安定化電源または4.8Vのバッテリーパックを用意します。

2. タイマ初期化コードの書き込み(100μs割り込み)

3. マルチメーターを使用して、サーボの正と負の電圧を測定します (負荷が 4.5 V 未満であってはなりません)。

4. 最初に 90° 位置 (1.5ms パルス) をテストし、次に他の角度に拡張します。

記事作成のヒント: サーボの動作中にマイコンがリセットされた場合は、直ちにサーボの電源端に 470μF のコンデンサを並列に接続し、電源コードの長さを短く (20cm 未満) してください。このガイドに従えば、30 分以内に正確な角度制御を達成できるようになります。

更新時間:2026-04-29

未来に力を与える

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

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