== DCモータードライバの使い方 == DCモーターをArduino等のマイコンでコントロールする場合、モーターはたくさんの電流を消費するので直接DCモーターをマイコンに接続することはできません。[[BR]] そのためDCモータードライバという回路が必要になります。[[BR]] スイッチサイエンスで取り扱い中(2015/05/19現在)のDCモータードライバのリストです。 ||メーカー||商品名||PLU||モーター数||ロジック電源電圧||モーター電源電圧||最大電流(連続)||最大電流(ピーク)||最大PWM周波数||制御ピン|| ||Pololu||[https://www.switch-science.com/catalog/116/ モータードライバVNH3SP30(最大9A)]||116||1||5V||5.5V~16V||9A||30A||10kHz||回転方向切替:2本 回転速度:1本|| ||Pololu||[https://www.switch-science.com/catalog/233/ モータードライバVNH2SP30(最大14A、電流センサ内蔵)]||233||1||5V||5.5V~16V||14A||30A||20kHz||回転方向切替:2本 回転速度:1本|| ||Pololu||[https://www.switch-science.com/catalog/234/ デュアルモータードライバVNH3SP30(最大9A)]||234||2||5V||5.5V~16V||9A||30A||10kHz||回転方向切替:2本 回転速度:1本|| ||Pololu||[https://www.switch-science.com/catalog/235/ デュアルモータードライバVNH2SP20(最大14A、電流センサ内蔵)]||235||2||5V||5.5V~16V||14A||30A||20kHz||回転方向切替:2本 回転速度:1本|| ||Pololu||[https://www.switch-science.com/catalog/236/ デュアルモータードライバTB6612FNG]||236||2||2.7V~5.5V||4.5V~13.5V||1A||3A||100kHz||回転方向切替:2本 回転速度:1本|| ||Pololu||[https://www.switch-science.com/catalog/237/ ハイパワー・モータードライバ18V15]||237||1||5V||5.5V~30V||15A||30A||40kHz||回転方向切替:1本 回転速度:1本|| ||Pololu||[https://www.switch-science.com/catalog/238/ ハイパワー・モータードライバ36V9]||238||1||5V||5.5V~50V||9A||12A||40kHz||回転方向切替:1本 回転速度:1本|| ||SparkFun||[https://www.switch-science.com/catalog/385/ デュアルモータードライバTB6612FNG]||385||2||2.7V~5.5V||2.7V~13.5V||1.2A||3.2A||100kHz||回転方向切替:2本 回転速度:1本|| ||SparkFun||[https://www.switch-science.com/catalog/427/ Arduino用モータードライバシールド「Ardumoto」]||427||2||3.3V 5V||7V~12V||||2A||40kHz||回転方向切替:1本 回転速度:1本|| ||Pololu||[https://www.switch-science.com/catalog/580/ モータードライバMC33926]||580||1||2.5V~5.5V||5V~28V||3A||5A||20kHz||回転方向と速度:2本|| ||Pololu||[https://www.switch-science.com/catalog/581/ デュアルモータードライバMC33926]||581||2||2.5V~5.5V||5V~28V||3A||5A||20kHz||回転方向と速度:2本|| ||SparkFun||[https://www.switch-science.com/catalog/630/ Arduino用モータードライバシールド「Monster Moto」]||630||2||5V||5.5V~16V||14A||30A||20kHz||回転方向切替:2本 回転速度:1本|| ||Pololu||[https://www.switch-science.com/catalog/678/ パワーモータードライバ24V20]||678||1||5V||5.5V~34V||||20A||40kHz||回転方向切替:1本 回転速度:1本|| ||F-palette||[https://www.switch-science.com/catalog/757/ F-palette Moter Driver board]||757||4||2.7V~5.5V||2.5V~13.5V||0.8A||1A||100kHz||回転方向切替:2本 回転速度:1本|| ||seeedstudio||[https://www.switch-science.com/catalog/827/ GROVE-I2Cモータードライバ]||827||2||5V||6V~15V||0.7A||||||I2C|| ||Pololu||[https://www.switch-science.com/catalog/1063/ デュアルMC33926モータードライバシールド]||1063||2||5V||5V~28V||3A||5A||20kHz||回転方向と速度:2本|| ||switch science||[https://www.switch-science.com/catalog/1064/ BD6211F搭載モータードライバモジュール]||1064||1||3V~5.5V||3.3V~5.5V||1A||||100kHz||回転方向と速度:2本|| ||SparkFun||[https://www.switch-science.com/catalog/1239/ Raspberry Pi用モータードライバボード(キット)]||1239||2||5V||7V~12V||0.6A||1.2A||||回転方向切替:1本 回転速度:1本|| ||Pololu||[https://www.switch-science.com/catalog/1590/ VNH5019搭載モータードライバ]||1590||1||2.5V~5V||5.5V~24V||12A||30A||20kHz||回転方向切替:2本 回転速度:1本|| ||Pololu||[https://www.switch-science.com/catalog/1636/ デュアルモータードライバDRV8833]||1636||2||5V||2.7V~10.8V||1.2A||2A||50kHz||回転方向と速度:2本|| ||Pololu||[https://www.switch-science.com/catalog/1637/ デュアルモータードライバDRV8835]||1637||2||2V~7V||2V~11V||1.2A||1.5A||250kHz||回転方向切替:1本 回転速度:1本|| ||Pololu||[https://www.switch-science.com/catalog/1747/ デュアルモータードライバシールドVNH5019搭載]||1747||2||3.3V~5V||5.5V~24V||12A||30A||20kHz||回転方向切替:2本 回転速度:1本|| ||Pololu||[https://www.switch-science.com/catalog/1907/ DRV8835搭載デュアルモータードライバシールド]||1907||2||2V~7V||2V~11V||1.2A||1.5A||250kHz||回転方向切替:1本 回転速度:1本|| ||Pololu||[https://www.switch-science.com/catalog/1908/ A4990搭載デュアルモータードライバシールド]||1908||2||2.5V~5.5V||6V~32V||0.65A||0.9A||26kHz||回転方向と速度:2本|| ||SparkFun||[https://www.switch-science.com/catalog/1990/ Intel Edison Block - Dual H-Bridge]||1990||2||||2.7V~15V||1A||||100kHz||回転方向切替:2本 回転速度:1本|| ||switch science||[https://www.switch-science.com/catalog/2111/ BD6735FV搭載モータードライバモジュール]||2111||2||2V~8V||2V~8V||1A||||100kHz||回転方向切替:1本 回転速度:1本|| 使えるモーターの数、流せる電流の量、モーターの駆動電圧、内蔵されている保護回路の種類等の違いはありますが使い方はほとんど同じです。[[BR]] 上の表の制御ピンの欄を見てみると、大きく分けて次の3つに分類できます。中には複数の制御方法を切り替えられるものもありますが、代表的なものを表記しています。[[BR]] * 回転方向切替:2本 回転速度:1本 * 回転方向切替:1本 回転速度:1本 * 回転方向と速度:2本 この3種類の制御方法ごとに使い方を説明します。[[BR]] === ・回転方向切替:2本 回転速度:1本 === このタイプは回転方向(正回転・逆回転)の切替に2本の入力ピン、回転速度(PWM)の指定に1本の入力ピンを持っています。[[BR]] (OUT1 OUT2の状態はモータードライバの種類によって少し異なります。) ||PWM||IN1||IN2||OUT1||OUT2||状態|| ||0||0||0||Z||Z||ストップ|| ||1||0||0||Z||Z||ストップ|| ||0||0||1||L||L||ショートブレーキ|| ||1||0||1||L||H||逆転|| ||0||1||0||L||L||ショートブレーキ|| ||1||1||0||H||L||正転|| ||0||1||1||L||L||ショートブレーキ|| ||1||1||1||H||H||ショートブレーキ|| 例として[https://www.switch-science.com/catalog/236/ デュアルモータードライバTB6612FNG(連続最大1A)]を使ってみます。[[BR]] このモータードライバはモーター駆動電源の推奨値が4.5V~13.5Vですが、下の図では3Vにしています。(非推奨ですが2.5Vから動作します。) このように基本的にモータードライバーを使うときはマイコン用の電源とモーター用の電源の2種類を用意する必要があります。[[BR]] 理由は次の通りです。 * モーターに使う電源の電圧と制御系の電源電圧が違う * モーターの電流消費が大きく、大きなノイズも発生するので制御系への影響を少なくするため 今回の例で言うとVCCがロジック電源(制御系)、これはArduino Unoからもらっています。[[BR]] VMOTがモーター用の電源です。モータードライバの種類によってはロジックとモーター用の電源端子が共通になっているものもあります。[[BR]] AIN1とAIN2をArduino Unoのデジタル12、13番に接続し、PWMAをデジタル11番につなげました。 [[Image(0J4621.1200.jpg,240px)]] [[Image(TB6612_3.png,360px)]] サンプルスケッチです。正転と逆転を繰り返すようになっています。 {{{ #define AIN1 13 #define AIN2 12 #define PWMA 11 void setup() { pinMode(AIN1,OUTPUT); pinMode(AIN2,OUTPUT); pinMode(PWMA,OUTPUT); } void loop() { int i=0; //モーター停止 digitalWrite(AIN1,LOW); digitalWrite(AIN2,LOW); delay(500); //モーター正回転・スピード変化 digitalWrite(AIN1,HIGH); digitalWrite(AIN2,LOW); for(i=0;i<256;++){ analogWrite(PWMA,i); delay(100); } for(i=255;i>=0;i--){ analogWrite(PWMA,i); delay(100); } //モーター停止 digitalWrite(AIN1,LOW); digitalWrite(AIN2,LOW); delay(500); //モーター逆回転・スピード変化 digitalWrite(AIN1,LOW); digitalWrite(AIN2,HIGH); for(i=0;i<256;++){ analogWrite(PWMA,i); delay(100); } for(i=255;i>=0;i--){ analogWrite(PWMA,i); delay(100); } } }}} === 回転方向切替:1本 回転速度:1本 === このタイプは回転方向の制御に信号線を1本、回転速度を指定するために信号線(PWM)を1本使います。[[BR]] (OUT1 OUT2の状態はモータードライバの種類によって少し異なります。) ||IN||EN||OUT1||OUT2||状態|| ||0||PWM||PWM||L||正転|| ||1||PWM||L||PWM||逆転|| ||x||0||||L||L||ブレーキ|| 今回は例として[https://www.switch-science.com/catalog/1637/ デュアルモータードライバDRV8835]を使ってみます。