Arduino-dc-motor

提供:Dev Guides
移動先:案内検索

Arduino-DCモーター

この章では、さまざまなタイプのモーターをArduinoボード(UNO)に接続し、モーターを接続してボードから駆動する方法を示します。

モーターには3つの異なるタイプがあります-

  • DCモーター
  • サーボモーター
  • ステッピングモーター

DCモーター(直流モーター)は、最も一般的なタイプのモーターです。 DCモーターには通常、プラスとマイナスの2本のリードしかありません。 これら2本の導線をバッテリーに直接接続すると、モーターが回転します。 リード線を切り替えると、モーターは反対方向に回転します。

DC Motor

警告-Arduinoボードのピンから直接モーターを駆動しないでください。 これにより、ボードが損傷する可能性があります。 ドライバ回路またはICを使用してください。

この章を3つの部分に分けます-

  • モーターを回転させるだけ
  • モーター速度の制御
  • DCモーターのスピンの方向を制御する

必要なコンポーネント

次のコンポーネントが必要になります-

  • 1x Arduino UNOボード
  • PN2222トランジスターx 1
  • 1x小型6V DCモーター
  • 1N1400ダイオードx 1
  • 270Ω抵抗1個

手順

回路図に従って、以下の画像に示すように接続します。

DCモーター接続

注意事項

接続中は、次の予防措置を講じてください。

  • まず、トランジスタが正しい方法で接続されていることを確認してください。 配置のように、トランジスタの平らな面をArduinoボードに向ける必要があります。
  • 次に、ダイオードのストライプ状の端は、画像に示されている配置に従って、+ 5Vの電力線に向かっている必要があります。

スピン制御Arduinoコード

int motorPin = 3;

void setup() {

}

void loop() {
   digitalWrite(motorPin, HIGH);
}

注意すべきコード

トランジスタはスイッチのように機能し、モーターへの電力を制御します。 Arduinoピン3は、トランジスタのオンとオフを切り替えるために使用され、スケッチでは「motorPin」という名前が付けられています。

結果

Arduinoのピン番号3が高くなると、モーターはフルスピードで回転します。

モーター速度制御

以下は、Arduinoボードに接続されたDCモーターの概略図です。

モーター速度制御

Arduinoコード

int motorPin = 9;

void setup() {
   pinMode(motorPin, OUTPUT);
   Serial.begin(9600);
   while (! Serial);
   Serial.println("Speed 0 to 255");
}

void loop() {
   if (Serial.available()) {
      int speed = Serial.parseInt();
      if (speed >= 0 && speed <= 255) {
         analogWrite(motorPin, speed);
      }
   }
}

注意すべきコード

トランジスタはスイッチのように機能し、モーターの電力を制御します。 Arduinoピン3は、トランジスタのオンとオフを切り替えるために使用され、スケッチでは「motorPin」という名前が付けられています。

プログラムが起動すると、モーターの速度を制御する値を指定するように求められます。 シリアルモニターに0〜255の値を入力する必要があります。

コマンドウィンドウ

「ループ」機能では、コマンド「Serial.parseInt」を使用して、シリアルモニターにテキストとして入力された番号を読み取り、それを「int」に変換します。 ここに任意の番号を入力できます。 次の行の「if」ステートメントは、番号が0〜255の場合、この番号でアナログ書き込みを行います。

結果

DCモーターは、シリアルポート経由で受信した値(0〜250)に応じて異なる速度で回転します。

スピン方向制御

リード線を交換せずにDCモーターのスピンの方向を制御するには、* Hブリッジ*と呼ばれる回路を使用できます。 Hブリッジは、モーターを両方向に駆動できる電子回路です。 Hブリッジは多くの異なるアプリケーションで使用されます。 最も一般的なアプリケーションの1つは、ロボットのモーターを制御することです。 回路図が「H」に見えるように接続された4つのトランジスタを使用するため、Hブリッジと呼ばれます。

ここでは、L298 HブリッジICを使用します。 L298は、DCモーターとステッピングモーターの速度と方向を制御でき、2つのモーターを同時に制御できます。 その電流定格は、各モーターで2Aです。 ただし、これらの電流では、ヒートシンクを使用する必要があります。

スピン方向制御

必要なコンポーネント

次のコンポーネントが必要になります-

  • 1×L298ブリッジIC
  • 1×DCモーター
  • 1×Arduino UNO
  • 1×ブレッドボード
  • 10×ジャンパー線

手順

以下は、Arduino UnoボードへのDCモーターインターフェイスの概略図です。

スピン方向制御接続

上の図は、L298 ICを接続して2つのモーターを制御する方法を示しています。 各モーターには3つの入力ピンがあり、Motor1にはInput1(IN1)、Input2(IN2)、Enable1(EN1)、Motor2にはInput3、Input4、Enable2があります。

この例では1つのモーターのみを制御するため、ArduinoをL298 ICのIN1(ピン5)、IN2(ピン7)、およびEnable1(ピン6)に接続します。 ピン5と7はデジタルです。 ONまたはOFF入力。ピン6は、モーター速度を制御するためにパルス幅変調(PWM)信号を必要とします。

次の表は、IN1とIN2のデジタル値に基づいてモーターが回転する方向を示しています。

IN1 IN2 Motor Behavior
BRAKE
1 FORWARD
1 BACKWARD
1 1 BRAKE

IC L298のピンIN1はArduinoのピン8に接続され、IN2はピン9に接続されます。 Arduinoのこれら2つのデジタルピンは、モーターの方向を制御します。 ICのEN Aピンは、ArduinoのPWMピン2に接続されています。 これにより、モーターの速度が制御されます。

Arduinoピン8および9の値を設定するには、digitalWrite()関数を使用し、ピン2の値を設定するには、analogWrite()関数を使用する必要があります。

接続手順

  • 5VとICのグランドをそれぞれ5VとArduinoのグランドに接続します。
  • モーターをICのピン2および3に接続します。
  • ICのIN1をArduinoのピン8に接続します。
  • ICのIN2をArduinoのピン9に接続します。
  • ICのEN1をArduinoのピン2に接続します。
  • ICのSENS Aピンをグランドに接続します。
  • Arduino USBケーブルを使用してArduinoを接続し、Arduino IDEソフトウェアを使用してプログラムをArduinoにアップロードします。
  • 電源、バッテリー、またはUSBケーブルを使用してArduinoボードに電力を供給します。

Arduinoコード

const int pwm = 2 ;//initializing pin 2 as pwm
const int in_1 = 8 ;
const int in_2 = 9 ;
//For providing logic to L298 IC to choose the direction of the DC motor

void setup() {
   pinMode(pwm,OUTPUT) ;//we have to set PWM pin as output
   pinMode(in_1,OUTPUT) ;//Logic pins are also set as output
   pinMode(in_2,OUTPUT) ;
}

void loop() {
  //For Clock wise motion , in_1 = High , in_2 = Low
   digitalWrite(in_1,HIGH) ;
   digitalWrite(in_2,LOW) ;
   analogWrite(pwm,255) ;
  /*setting pwm of the motor to 255 we can change the speed of rotation
   by changing pwm input but we are only using arduino so we are using highest
   value to driver the motor*/
  //Clockwise for 3 secs
   delay(3000) ;
  //For brake
   digitalWrite(in_1,HIGH) ;
   digitalWrite(in_2,HIGH) ;
   delay(1000) ;
  //For Anti Clock-wise motion - IN_1 = LOW , IN_2 = HIGH
   digitalWrite(in_1,LOW) ;
   digitalWrite(in_2,HIGH) ;
   delay(3000) ;
  //For brake
   digitalWrite(in_1,HIGH) ;
   digitalWrite(in_2,HIGH) ;
   delay(1000) ;
}

結果

モーターは最初に3秒間時計回り(CW)方向に作動し、次に3秒間反時計回り(CCW)に作動します。