発行済み 2026-04-16
この記事は、複数の制御を制御するための実践的でフィールドテスト済みのガイドを提供します。サーボArduinoボードを使ったモーター。複数のネットワークを移動するために必要な正確なハードウェアのセットアップ、配線、コーディング、電源管理テクニックを学びます。サーボ同時に、ジッター、失速、またはボードのリセットを発生させません。すべての推奨事項は、多関節ロボット アーム、六脚歩行器、カメラ ジンバルなどの現実世界のプロジェクトに基づいています。
複数台同時制御サーボはないさらに追加することについて書く()コード内の行。まず、次の 2 つの物理的制限に対処する必要があります。
1. 電源– 各標準マイクロサーボは、移動時に 200 ~ 500 mA、停止時に最大 1 A を消費する可能性があります。 3 つのサーボが一緒に動作すると、USB ポート (500 mA) または Arduino の 5V ピン (最大約 800 mA) が供給できる電流を超える電流が必要になる場合があります。その結果、ボードが突然リセットされたり、不安定な動作が発生したり、サーボが回転しなくなったりします。
2. PWMピンとタイマー– 内蔵サーボライブラリはタイマー割り込みを使用します。典型的な Arduino Uno では、次のことを制御できます。最大12個のサーボ(ピン 2 ~ 13) ライブラリを使用しますが、他のタイマー依存関数 (例:トーン())。タイマーの数が少ないボード (Arduino Nano など) では、実際の制限は 8 ~ 10 サーボになる可能性があります。タイマー制限を超えると、予期しない動作が発生します。
> 現実世界の例: 趣味で 6-DOF ロボット アーム (サーボ 6 個) を構築している人は、すべてのサーボを Arduino の 5V ピンに接続しました。腕がピクピクと動き、USBポートが何度もシャットダウンした。解決策は外部 5V 5A 電源でした。
プロジェクトに必要な場合サーボ12個以下別の電源があり、サーボライブラリは確実に動作します。
を接続します。信号線各サーボの (通常はオレンジ、黄色、または白) を別の Arduino PWM 対応デジタル ピン (Uno では 3、5、6、9、10、11、ピン 2 ~ 13 も機能しますが、一部はソフトウェア PWM を使用します) に接続します。
すべてを接続するアース線(茶色または黒) を共通のアースレールに接続 –これもArduinoのGNDに接続する必要があります.
すべてを接続する電力線(赤)へ外部5V電源のプラス端子(2 つ以上の小型サーボの場合は決して Arduino の 5V ピンに接続しないでください)。 Arduino 自体には個別に電力が供給されます (USB または独自の電源ジャック経由)。
#含むサーボ servo1;サーボサーボ2;サーボサーボ3; void setup() { servo1.attach(9); servo2.attach(10); servo3.attach(11); } void loop() { // 3 つのサーボすべてを同時に 0° から 180° に移動します for (int pos = 0; pos = 0; pos--) { servo1.write(pos); servo2.write(pos); servo3.write(pos);遅延(10);遅延(1000); }
注記: の遅延(10)は不可欠です。それがなければ、のためにループはサーボの応答よりも速く新しい角度を書き込み、ぎくしゃくした動きを引き起こします。
12個以上のサーボ– ライブラリがコンパイルされないか、タイマーの競合が発生します。
高トルクまたは連続回転サーボ– 外部電源があっても、電流スパイクが Arduino の内部レギュレーターにとって大きすぎますか? (いいえ、外部電源で問題は解決しますが、長い配線では信号の完全性が損なわれる可能性があります。)
独立した速度制御または正確な同期の必要性–サーボライブラリはターゲット角度を設定するだけです。各サーボの速度を個別に制御することはできません。
のために12個以上のサーボまたは、スムーズで独立した動作を必要とするプロジェクト (アニマトロニクス、16 サーボの人型ロボットなど) では、16チャンネルPWMドライバーモジュールI²C経由で通信します。これがプロフェッショナルな解決策です。
このドライバーは、Arduino タイマーを使用せずに、最大 16 個の個別の PWM 信号を生成します。
16 個のサーボすべてを制御するには、2 つのアナログ ピン (SDA、SCL) のみが必要です。
ほとんどのドライバには、5 ~ 10 A を供給できる外部 5 ~ 6 V 電源用の端子台が内蔵されています。
1. ドライバーの接続VCCArduino 5Vに接続します(ロジック側に電力を供給するため)。
2. ドライバーの接続GNDArduinoのGNDに接続します。
3. ドライバーの接続SDAArduino A4 (または専用の SDA ピン) に接続します。
4. ドライバーの接続SCLArduino A5 (または専用の SCL ピン) に接続します。
5.接続する外部5V 5A+電源運転席の電源端子に接続します。
6. 最大 16 個のサーボをドライバー ボードに接続します (信号、電源、アース)。
#含む#含む// 汎用ドライバー ライブラリ – ブランドの承認なし // アドレス 0x40 は、ほとんどの 16 チャネル ドライバーのデフォルトです Adafruit_PWMServoDriver pwm = Adafruit_PWMServoDriver(0x40); // サーボ パルス幅制限 (通常、0° ~ 180° の場合は 150 ~ 600) #define SERVOMIN 150 #define SERVOMAX 600 void setup() { pwm.begin(); pwm.setOscillatorFrequency(27000000); pwm.setPWMFreq(50); // 標準アナログサーボ周波数 } // 特定のサーボ (0 ~ 15) を角度 (0 ~ 180°) に移動する関数 void setServoAngle(uint8_t channel, int angle) { intpulse = map(angle, 0, 180, SERVOMIN, SERVOMAX); pwm.setPWM(チャンネル, 0, パルス); } void loop() { // 16 個のサーボすべてを 0° から 180° までスムーズに動かし、また元に戻します for (int angle = 0; angle = 0; angle--) { for (int ch = 0; ch
主な利点: いいえ遅れ()サーボごとのループ内でしょうか?実際、上記のコードはすべてのサーボを 8 ミリ秒ごとに 1 ステップ動かし、完全に同期した動作を生成します。
標準ライブラリを使用する 12 サーボの六脚ロボットは、歩行中にランダムな脚のけいれんを経験しました。 16 チャンネル PWM ドライバーに切り替えることで、タイミングの競合がすべて解消され、外部電源が安定した 5V 8A を供給したため、ロボットは 1 kg のペイロードを運ぶことができました。
1. 力から始める– 3 個以上の標準サーボの場合は、常に外部 5V 電源を使用してください (3 個のサーボでは最小 2A、8 ~ 10 個のサーボでは 5A)。電源グランドをArduinoグランドに接続します。
2. サーボを数える– ≤10 サーボ → 標準サーボ図書館は大丈夫です。サーボが 12 個以上またはジッターがある場合は、16 チャンネル PWM ドライバー モジュールを購入してください (サーボ 2 個未満のコスト)。
3. Arduinoの5Vピンからサーボに電力を供給しないでください– そのピンはセンサーと低電流デバイス専用です。
4. 共通の基盤を使用する– すべてのサーボ、Arduino、および外部電源はアース接続を共有する必要があります。これがなければ、PWM 信号は意味がありません。
5. ノンブロッキングコードを書く– Arduino がセンサーの読み取りや通信も行う必要があるプロジェクトの場合は、遅れ()サーボ位置を 10 ~ 20 ミリ秒ごとに更新する millis() ベースのタイマーを使用します。
6. 段階的にテストする– 外部電源上の 1 つのサーボから始めます。電圧降下を監視しながら (マルチメーターを使用して) サーボを 1 つずつ追加します。移動中に電圧が 4.8V を下回った場合は、電源をアップグレードしてください。
同時マルチサーボ制御は、80% が電源管理、20% がコードです。標準で使用できますサーボ最大 12 個のサーボに対応するライブラリですが、Arduino ボードから決して引き込まれない専用の電源を使用する必要があります。大規模なプロジェクトやグリッチのないパフォーマンスの場合、I²C 経由の PWM ドライバー モジュールがプロフェッショナルで実績のあるソリューションです。常にすべてを一緒に接地し、常にピークストール電流に合わせて電源のサイズを調整し、グループ動作の前に必ず各サーボを個別にテストしてください。
あなたの今すぐの行動: プロジェクト内のサーボの数を数えます。 10 を超える場合は、16 チャンネル PWM ドライバーと 5V 5A 電源を今すぐ注文してください。次に、上記の 2 番目のコード例を使用します。これは最初のアップロードで機能します。
更新時間:2026-04-16