Arduino プログラム モータ制御 回路 電子工作 高専3年生

【モータ制御④】モータドライバIC L293D【Arduino】

モータを制御したい場合、モータドライバICを使うと小型で簡単に実装可能です。

今回はL293Dを例に挙げてモータドライバICの使い方を学んでみます。

前回はこちら

モータドライバICの概要

DCモータの駆動電流

DCモータを駆動するためには、LED点灯(約20 mA)とは桁違いの電流が必要です。例えば、FA-130RAモータの場合、適正負荷時には500 mAの電流が必要となります。また、回転数が低い状態(始動、ロック、高負荷)では、非常に大きな電流が流れます。FA-130RAモータでは、始動時やロック状態、高負荷時には最大で2200 mAの電流が流れます。

ロジックICやマイコンによる駆動の限界

ロジックICやマイコンの出力は、このような大きな電流を直接駆動するには不十分です。通常、ロジックICやマイコンは数十mA程度の電流しか供給できません。そのため、モータを駆動させるためには、トランジスタやFETを使用した回路が必要となります。

Hブリッジ回路

モータの回転を制御するためには、Hブリッジ回路が一般的に使われます。Hブリッジ回路は、トランジスタやFETを使用して、モータの両端にかかる電圧を制御し、モータの回転方向や速度を調整します。

詳しくは以下の記事で解説しています。

モータドライバIC

Hブリッジ回路を簡単に利用するために、FETを複数内蔵したHブリッジ回路を1個のIC内に組み込んだ「モータドライバIC」が使用されます。モータドライバICは、以下のような特徴があります:

  1. 簡単な制御:マイコンからの制御信号でモータの回転方向や速度を簡単に制御できます。
  2. 高電流対応:マイコンと比べて大きな駆動電流を供給する能力があります。
  3. 保護機能:過電流保護や過熱保護などの機能を持つものが多く、モータや回路の保護に役立ちます。

利点としては構成部品が少なくなり、簡単にモータ駆動回路を構成することが出来ます。

一方で大きな電流を扱えるものは少なく、大型のモータを駆動する事は難しいです。

L293D

今回の実験ではL293DというモータドライバICを使ってみます。

クワッド ハーフ H ドライバ L283D https://www.ti.com/jp/lit/gpn/l293d

L293D の仕様を以下の表にまとめました。

項目仕様
動作電圧範囲4.5 V ~ 36 V
入力ロジック電源分離(Separate Input-Logic Supply)
内部ESD保護
高ノイズ耐性入力
出力電流(チャンネルあたり)1 A(L293Dの場合は600 mA)
ピーク出力電流(チャンネルあたり)2 A(L293Dの場合は1.2 A)
誘導性過渡電圧抑制用クランプダイオード有(L293D)

このモータドライバICは最大2個のモータを正転と逆転制御を行うことが出来ます。

16番ポートには中の制御ICを駆動するための電圧、5Vを印加します。

8番ポートにはモータを駆動させるための電圧を印加します。

下記の図の通り、3番ポートと6番ポートにモータをつなぎます。

ENポート(1番)にPWM信号を入力すると、モータの回転数を制御できます。

2番ポートと7番ポートの入力により回転方向を制御します。

2番がHIGH、7番がLOWの場合は正転、2番ポートがLOW、7番ポートがHIGHの場合は逆転です。

Arduinoに下記の通り接続します。

モータは回転を停止させる信号を送ると、しばらくは慣性の法則で回り続けます。

その際、モータから逆起電力により回路へ電流が逆流して流れます。

その電流から破壊されることを防ぐために、ダイオードをはさみ、逆起電流をGNDとショートさせることで回路を保護しています。

制御IC用の電源5VはArduinoから取り、モータ用の電源は安定化電源等外部電源で供給します。

その際、GNDは共通化させます。

PWMを100で正転、逆転、停止を1秒おきに繰り返すプログラムは以下の通りになります。

#define EN1 11
#define M1A 10
#define M1B 9

void setup() {
  pinMode(M1A, OUTPUT);
  pinMode(M1B, OUTPUT);
  analogWrite(EN1, 100);
}

void loop()
{
  digitalWrite(M1A, HIGH);
  digitalWrite(M1B, LOW);
  delay(1000);
  digitalWrite(M1A, LOW);
  digitalWrite(M1B, HIGH);
  delay(1000);
  digitalWrite(M1A, LOW);
  digitalWrite(M1B, LOW);
  delay(1000);
}

モータ制御 実験⑤

Arduino、L293D、エンコーダ付きギアドモータを使用して、モータの駆動制御を行なう装置を構成せよ。
シリアルモニタからA,B,Cのコマンドを送り,正転,逆転,停止とモータの回転が変化する。

それぞれのコマンドを送った際のエンコーダの波形を読取り、レポートで報告してください。

モータ制御 実験⑥

Arduino、L293D、エンコーダ付きギアドモータ,半固定抵抗を使用して、モータの回転数が変化する装置を構成せよ。

またPWMの値によりどのように回転数が変化するか計測せよ。

横軸PWM、縦軸回転数のグラフを作成,モータの出力PWMもオシロスコープで記録、報告してください。

次回はこちら

Follow me!

-Arduino, プログラム, モータ制御, 回路, 電子工作, 高専3年生
-, , , ,

PAGE TOP