Arduinoで1つまたは2つのサーボを使用するのは簡単ですが、複数のサーボモーターを使用したい場合はどうなりますか?
ここでは、Arduinoで複数のサーボモーターを制御する方法を紹介します。複数のサーボモーターをArduinoに接続するのは簡単なようですが、すべてのサーボをArduinoの電源ピンに接続すると、すべてのモーターを駆動するのに十分な電流がないため、正しく機能しません。そのため、一部のアダプター(5v 2A)または高品質の9vバッテリーのいずれかから、モーターに個別の電源を使用する必要があります。
必要な材料
- Arduino UNO
- サーボモーター
- 電源
- ブレッドボード
- 接続線
回路図
サーボモーターとは?
詳細に入る前に、まずサーボモーターについて知っておく必要があります。
サーボモーターは、さまざまな形状とサイズで入手できます。サーボモーターは主にワイヤーがあり、1つは正電圧用、もう1つはアース用、最後の1つは位置設定用です。赤の線は電源に接続され、黒の線はアースに接続され、黄色の線は信号に接続されています。
サーボモーターは、DCモーター、位置制御システム、ギアの組み合わせです。DCモーターのシャフトの位置は、PWM信号のデューティ比SIGNALピンに基づいて、サーボの制御電子機器によって調整されます。
簡単に言えば、制御電子機器はDCモーターを制御することによってシャフトの位置を調整します。シャフトの位置に関するこのデータは、SIGNALピンを介して送信されます。コントロールへの位置データは、サーボモーターの信号ピンを介してPWM信号の形式で送信する必要があります。
PWM(Pulse Width Modulated)信号の周波数は、サーボモーターのタイプによって異なります。ここで重要なのは、PWM信号のデューティ比です。この義務に基づいて、制御電子機器がシャフトを調整します。
下の図に示すように、シャフトを9時の位置に移動するには、ターンオン比が1/18である必要があります。18msの信号で1msのオン時間と17msのオフ時間。
シャフトを12oクロックに移動するには、信号のオン時間は1.5ミリ秒、オフ時間は16.5ミリ秒である必要があります。この比率はサーボの制御システムによってデコードされ、それに基づいて位置を調整します。ここでのこのPWMは、ARDUINOUNOを使用して生成されます。
サーボをArduinoに接続する前に 、このサーボモーターテスター回路を使用してサーボをテストできます。以下のサーボプロジェクトも確認してください。
- フレックスセンサーによるサーボモーター制御
Arduinoコードの説明
マルチサーボ制御用の完全なArduinoコードは最後に記載されています。
Arduinoにはサーボモーター用のライブラリがあり、サーボを回転させるためにすべてのPWM関連のものを処理します。回転させたい角度を入力するだけで、関数 servo1.write(angle)があります。 サーボを希望の角度に回転させます。
そこで、ここではサーボモーターのライブラリを定義することから始めます。
#include
以下のコードでは、4つのサーボすべてをServo1、Servo2、Servo3、およびServo4として初期化しています。
サーボサーボ1; サーボサーボ2; サーボサーボ3; サーボサーボ4;
次に、すべてのサーボの入力ピンをArduinoで設定します。以下のコードに示すように、Servo1はArduinoの3番目のピンに接続されています。ピンは自分に合わせて変更できますが、PWMピンである必要があることに注意してください。Arduinoのデジタルピンでサーボを使用することは信頼できません。
void setup(){ servo1.attach(3); Servo2.attach(5); Servo3.attach(6); Servo4.attach(9); }
ここで、 void loop() 関数では、すべてのサーボを0度から180度に回転させてから、180度から0度に回転させています。以下のコードで使用されている遅延は、変数「i」の速度の増減に影響を与えるため、サーボの速度を増減するために使用されます。
void loop(){ for(int i = 0; i <180; i ++){ servo1.write(i); Servo2.write(i); Servo3.write(i); Servo4.write(i); delay(10); } for(i = 180; i> 0; i-){ servo1.write(i); Servo2.write(i); Servo3.write(i); Servo4.write(i); delay(10); } }
Arduinoで複数のサーボを制御-動作中:
1つのArduinoで3つ以上のサーボを使用しているときに、私たち全員が現在の問題に直面しています。これに対する唯一の解決策は、適切な電流定格の外部電源を接続することです(このプロジェクトでは、9V電源で2Aを使用しました)。外部電源の場合は、アダプター、RPS(安定化電源装置)、または高品質の9Vボルト電池を使用できます。ただし、ラップトップのUSBポートを使用して小さなサーボに電力を供給することができます。外部電源を使用するには、Arduinoアースを外部電源アースに短絡する必要があります。
以下に示すArduinoコードを使用して、Arduinoをプログラムし、回路図に示すようにすべてのサーボモーターを適切な電源でモーターに接続します。したがって、すべてのサーボは中断することなく連携して動作します。