前に説明したように、Arduino Dueは、電子エンジニアや愛好家向けに設計されたARMコントローラーベースのボードです。このDUEボードは、CNCマシン、3Dプリンター、ロボットアームなどの製造に使用できます。これらすべてのプロジェクトには、位置制御という共通の機能があります。これらのプロジェクトはいずれも、その位置に向けて正確である必要があります。これらの機械の正確な位置は、サーボモーターによって実現できます。このセッションでは、ArduinoDueを使用してサーボモーターの位置を制御します。ArduinoUnoとのサーボモーターインターフェースと8051マイクロコントローラーとのサーボモーターインターフェースについてはすでに説明しました。
サーボモーター:
サーボモーターは、シャフトの正確な動きまたは位置で知られています。これらは高速アプリケーションには提案されていません。これらは、低速、中トルク、および正確な位置のアプリケーション向けに提案されています。これらのモーターは、ロボットアームマシン、飛行制御、および制御システムで使用されます。サーボモーターは、一部のプリンターやファックス機でも使用されています。
サーボモーターは、さまざまな形状とサイズで入手できます。このチュートリアルでは、SG90サーボモーターを使用します。SG90は180度のサーボモーターです。したがって、このサーボを使用すると、軸を0度から180度の範囲で配置できます。
サーボモーターは主に3本のワイヤーがあり、1本は正電圧用、もう1本はアース用、最後の1本は位置設定用です。赤の線は電源に接続され、茶色の線はアースに接続され、黄色の線(または白)は信号に接続されます。
サーボモーターは、DCモーター、位置制御システム、およびギアの組み合わせです。サーボには、信号ピンからPWM信号を受け取る制御システムがあります。信号をデコードし、そこからデューティ比を取得します。その後、比率を事前定義された位置の値と比較します。値に差がある場合は、それに応じてサーボの位置を調整します。したがって、サーボモーターの軸位置は、PWM信号とSIGNALピンのデューティ比に基づいています。
PWM(Pulse Width Modulated)信号の周波数は、サーボモーターのタイプによって異なります。ここで重要なのは、PWM信号のデューティ比です。ArduinoDueを使用したPWMについてこれを確認してください。ただし、この場合、デューティ比の選択について心配する必要はありません。Arduinoには特別な機能があります。それを呼び出すと、角度を指定するだけでサーボの位置を調整できます。これについては、以下の作業セクションで説明します。
サーボモーターをArduinoDueに接続する前に、このサーボモーターテスター回路を使用してサーボをテストできます。また、これらのプロジェクトをチェックして、フレックスセンサーまたはフォースセンサーによってサーボを制御します。
コンポーネント:
ハードウェア: Arduino Due、電源(5v)、サーボモーター。
ソフトウェア: Arduino毎晩、以下のリンクからダウンロードしてください(https://www.arduino.cc/en/Main/Software)
このソフトウェアをダウンロードしてインストールする方法の詳細については、最初のチュートリアル「ArduinoDue入門」をご覧ください。
回路図と動作説明:
ARDUINOで前述したように、事前定義されたライブラリがあり、ヘッダーファイルが呼び出されるかインクルードされると、それに応じて周波数とデューティ比が設定されます。ARDUINOでは、必要なサーボの位置を指定するだけで、DUEがサーボに適切なPWM信号を生成します。サーボの正確な位置を取得するために必要なことは、
#include
サーボmyservo;
myservo.attach(servo_signal_pin_attached_to);
myservo.write(needed_position_angle);
ヘッダーファイル 「#include
次に、 「Servo myservo」 を使用してサーボの名前を選択します。ここでは、 myservo が選択された名前です。したがって、位置を書き込むときにこの名前を使用します。この機能は、制御するサーボが多数ある場合に便利です。これにより最大12個のサーボを制御できます。
Arduinoのための12個のPWMチャネルを有する、我々はサーボの信号ピンが接続されているか、PWM信号を生成する必要がある場合DUEを伝える必要があります。これを行うには、 「myservo.attach(2)」があります。 、ここでは、サーボの信号ピンをPIN2に接続したことをDUEに伝えています。
すべての左の位置を設定することで、我々は使用してサーボの位置を設定しようとしている 「 myservo.write(45);」 、このコマンドにより、サーボハンドは45度移動します。「45」を「175」に変更すると、サーボ軸の角度は175度になり、そこにとどまります。その後、サーボの位置を変更する必要があるときはいつでも、コマンド 「 myservo.write(needed_position_angle);」 を呼び出す必要があり ます。 。
プログラムでは、ループを使用して角度をインクリメントおよびデクリメントします。したがって、サーボは0から180にスイープし、次に180から0にスイープします。アルドゥイーノ起因によるサーボモータ制御は、最良の処理をステップで説明されたCコードを以下ダウン。