surga Lab

読者です 読者をやめる 読者になる 読者になる

surga Lab

営業部でも開発したい!!

Arduinoでモータドライバを使ってみました

Arduino 自立走行車

大きく動くものが作りたいということで、自立走行車を作りました。
とりあえず今回はモータの制御だけです。

f:id:hisurga:20170202221657j:plain

必要なもの

シャーシ作成

Amazonのレビューが若干怪しいシャーシですが、値段の割にしっかりしてました。
シンプルなのでサクッと組み上げましょう。 f:id:hisurga:20161022193438j:plain f:id:hisurga:20170202230329j:plain

回路

DRV8835の仕様は以下販売サイトの説明がわかりやすいと思います。
Pololu - DRV8835 Dual Motor Driver Carrier

今回はシンプルに制御したかったので、MODEにHIGHを入力しました。

xPHASE xENABLE xOUT1 xOUT2 処理
0 PWM PWM L 前進PWM%/ブレーキ
1 PWM L PWM 後進PWM%/ブレーキ
x 0 L L ショートブレーキ

それを元に回路を組みます。
fritzingにモータドライバのパーツがなかったので、それっぽいもので代用しました。
電源をArduinoのVinに繋げることでモータとArduinoの電源をまとめることができます。(許容電圧には気をつけて下さい)

f:id:hisurga:20170206222827p:plain:w400

コード

ストップアンドゴー

#define MODE 7
#define APHASE 8
#define AENBL 9
#define BPHASE 10
#define BENBL 11

void setup()
{
  pinMode(MODE, OUTPUT);
  pinMode(APHASE, OUTPUT);
  pinMode(AENBL, OUTPUT);
  pinMode(BPHASE, OUTPUT);
  pinMode(BENBL, OUTPUT);
  digitalWrite(MODE, HIGH);
}

void loop()
{
  digitalWrite(APHASE, LOW);
  analogWrite(AENBL, 50);

  delay(2000);
  
  digitalWrite(APHASE, LOW);
  digitalWrite(AENBL, LOW);
  
  digitalWrite(BPHASE, LOW);
  analogWrite(BENBL, 255);

  delay(2000);
  
  digitalWrite(BPHASE, LOW);
  digitalWrite(BENBL, LOW);
}

基本的にPololu - DRV8835 Dual Motor Driver Carrierの仕様に従えば動きます。
速度は"analogWrite"で決定します。

実際に動かした動画がこちらです。
騒音注意です。

徐々に速度変化

#define MODE 7
#define APHASE 8
#define AENBL 9
#define BPHASE 10
#define BENBL 11

void setup()
{
  pinMode(MODE, OUTPUT);
  pinMode(APHASE, OUTPUT);
  pinMode(AENBL, OUTPUT);
  pinMode(BPHASE, OUTPUT);
  pinMode(BENBL, OUTPUT);
  digitalWrite(MODE, HIGH);
}

void loop()
{
  for(int i = 50; i < 255; i++)
    {
      digitalWrite(APHASE, LOW);
      analogWrite(AENBL, i);
      digitalWrite(BPHASE, LOW);
      analogWrite(BENBL, i);
      delay(100);
    }
  delay(2000);
    for(int i = 255; i > 50; i--)
    {
      digitalWrite(APHASE, LOW);
      analogWrite(AENBL, i);
      digitalWrite(BPHASE, LOW);
      analogWrite(BENBL, i);
      delay(100);
    }
    delay(2000);
}

すごい音です。
モータの許容電圧7Vに対して9V掛けているからかも。

完成

とりあえずタイヤの制御部を完成させることができました。
次回はこれらをシールド化してシャーシに載せます。

f:id:hisurga:20170206230345j:plain