通常、サーボ モーターには Arduino を使用して制御できるアームがあります。サーボ モーターは、以下を提供する制御システムで構成されています。 フィードバック モーター シャフトの現在位置については、このフィードバックにより非常に正確に移動できます。
サーボモーターのピン配列
通常、ほとんどのサーボ モーターには 3 つのピンがあります。
- Vcc ピン (通常は赤 5V)
- GND ピン (通常黒 0V)
- 入力信号ピン (Arduino から PWM 信号を受信)
サーボモーターの働き
Vccピンを5Vに、GNDピンを0Vに接続することで、サーボモータを制御できます。黄色の端末では、 PWM サーボモータの回転角度を制御する信号です。 PWM 信号の幅は、モーターがアームを回転させる角度を示します。
サーボモーターのデータシートを調べると、次のパラメーターが得られます。
- PWM 信号時間
- PWM の最小幅
- PWM の最大幅
これらのパラメータはすべて、Arduino サーボ ライブラリで事前定義されています。
Arduinoを使ったサーボモーター
サーボ モーターは、Arduino で非常に簡単に制御できます。 サーボライブラリ これにより、必要に応じてコードをカスタマイズし、サーボアームを希望の角度で回転させることができます。
上記の 3 つのパラメーターはすべて、サーボ ライブラリーで固定されています。これらのパラメータを使用して、次の方法でサーボ モーターの角度を制御できます。
- PWM 信号幅 = WIDTH_MAX の場合、サーボは 180 度回転します。
- PWM 信号幅 = WIDTH_MIIN の場合、サーボは 0o に回転します。
- PWM 信号幅が中間にある場合 WIDTH_MAX と WIDTH_MIN 、サーボモーターは0°から180°の間で回転します
Arduino ピンのいくつかで、必要な PWM 信号を生成できます。サーボモータの入力信号端子にPWM信号を与えます。サーボの残り2ピンをArduinoの5vとGNDに接続。
Arduinoを使ってサーボモーターを制御する方法
ここでは、Arduino を使用してサーボ モーターを接続し、プログラムする方法を説明します。あなたに必要なのは:
- Arduino UNO
- USB B ケーブル
- サーボモーター
- ジャンパー線
Arduinoでサーボをプログラムする方法
以下にいくつかの簡単な手順を示します。
ステップ1: 定義済みのサーボ ライブラリを含める:
# 含む < Servo.h >ステップ2: サーボ オブジェクトを作成します。
サーボマイサーボ;ヒント: 複数のサーボ モーターを制御している場合は、さらにサーボ オブジェクトを作成する必要があります。
サーボ myservo1;サーボ myservo2;
ステップ 3: PWM 信号をサーボの入力信号ポートに送信する Arduino Uno の制御ピン (9) を設定します。
myservo.attach ( 9 ) ;ステップ 4: サーボ モーターの角度を目的の値 (例: 90°) に回転します。
myservo.write ( 位置 ) ;Arduinoコード
からサーボモーターのサンプルプログラムを開く ファイル>サンプル>サーボ>スイープ 、新しいウィンドウが開き、サーボ スケッチが表示されます。
#includeサーボマイサーボ; /// サーボオブジェクトが作成されました 為に サーボモーターの制御
int 位置 = 0 ; /// サーボ位置を保存するために、新しい変数が作成されます
ボイド設定 ( ) {
myservo.attach ( 9 ) ; /// この意志 設定 Arduinoピン 9 為に PWM出力
}
ボイドループ ( ) {
為に ( 位置 = 0 ;位置 = 0 ;位置 -= 1 ) { /// から行く 180 に 0 度
myservo.write ( 位置 ) ; /// サーボに「pos」位置に移動するよう指示する
遅れ ( 5 ) ; /// 待つ 為に 5 サーボが位置に到達できるようにミリ秒
}
}
プログラムをコンパイルしてアップロードすると、サーボモーターは開始位置 0 度から 180 度まで、ステップのように 1 度ずつゆっくりと回転し始めます。モーターが 180 度の回転を完了すると、開始点、つまり 0 度に向かって反対方向に回転を開始します。
回路図
ポテンショメータを使用してサーボモータを制御する方法
サーボモーターの位置を手動で制御することもできます。これを行うには、 ポテンショメータ .ポテンショメータには 3 つのピンがあります。外側の 2 つのピンを Arduino の 5V Vcc と GND に接続し、真ん中のピンを Arduino ボードの A0 ピンに接続します。
ポテンショメータでサーボをプログラムする方法
ポテンショメータのスケッチのほとんどは、前の例と同じです。唯一の違いは新しい変数です 値 と サブピン コードのセットアップおよびループ セクションの前に定義されます。
int ポットピン = A0;int 値;
ループ セクションでは、アナログ ピン A0 を使用して、機能付きポテンショメータの値を読み取ります。 analogRead() . Arduino ボードには 10 ビット ADC (アナログ - デジタル コンバーター) が含まれており、ポテンショメーターの位置に応じて 0 ~ 1023 の値を提供します。
val = アナログ読み取り ( サブピン ) ;最後に、使用した 地図() サーボモーターは00から1800の間でしか回転できないことがわかっているため、サーボの角度に応じて0から1023の数値を再マッピングする機能。
val = マップ ( ヴァル、 0 、 1023 、 0 、 180 ) ;Arduinoコード
Arduino IDE で利用可能なノブ スケッチを開きます。 ファイル>サンプル>サーボ>ノブ .新しいウィンドウが開き、サーボのノブ スケッチが表示されます。
#includeサーボマイサーボ; /// サーボ オブジェクト名 myservo の作成
int ポットピン = A0; /// アナログ ピンの定義 為に ポテンショメータ
int 値; /// 変数 どれの 意思 読んだ アナログピン値 為に ポテンショメータ
ボイド設定 ( ) {
myservo.attach ( 9 ) ; /// 定義されたピン 9 為に ArduinoのサーボのPWM入力信号
}
ボイドループ ( ) {
val = アナログ読み取り ( サブピン ) ; /// ポテンショメータから値を読み取る ( 間の値 0 と 1023 )
val = マップ ( ヴァル、 0 、 1023 、 0 、 180 ) ; /// サーボで使用する値をスケーリングします ( 間の値 0 と 180 )
myservo.write ( 値 ) ; /// スケーリングされた値でサーボ位置を設定します
遅れ ( 15 ) ; /// 待つ 為に 位置に到達するためのサーボ
}
上記のコードは、ポテンショメータを使用してサーボ モーター シャフトを制御するのに役立ちます。シャフトは 0 ~ 180 度の間で回転します。それを使用して、サーボの方向に沿って速度を維持することもできます。
回路図
Arduinoに接続できるサーボモーターの数は?
Arduino UNOが扱えるサーボモーターの最大数は、サーボ用のArduinoライブラリで最大12個、最大で 48個のサーボ Mega などのボードと接続できます。
ヒント: Arduino の電流を使用してサーボを直接実行できますが、サーボ モーターが 500mA その後、Arduino ボードは自動的にリセットされ、電源が失われます。サーボモータ専用の電源を常に使用することをお勧めします。
結論
このチュートリアルでは、Arduino を使用したサーボ モーターの制御メカニズムについて説明しました。ポテンショメータを使用してサーボの位置と速度を制御する基本について説明しました。これで、サーボについてのアイデアが得られました。ロボット工学、RC プロジェクト、およびサーボを使用した自動化の可能性は無限大です。