Arduino(Japanino) で DCモータを制御してみる
今回はDC(直流)モータを扱ってみようと思い、カホパーツセンターに行ったところ、タミヤの「ミニバイク工作セット」なるものを見つけました。
DCモータも付いてるのでこれを動かしてみようということで即購入。
モータドライバには「TA7291P」を購入しました。
電子工作でモータを使うのは初めてだったので、書籍「Prototyping Lab」を見ながら回路を組んでみました。
今回Arduinoではなく、互換機のJapaninoを使った理由は、電池で動くので電源コードを引きずらなくて済むからということです。
同じく電池で動くFIOでも試してみたのですが、電力不足か何かでタイヤを回すまでに至りませんでした。(モータだけなら回るのですが。)
Japaninoを使うことによって書籍のサンプル回路と変わる点があります。(書籍ではArduino Duemilanoveが使われています。)
モータドライバ「TA7291P」の7ピンと繋ぐのがJapaninoでは5Vではなく3V3に、同じく8ピンと繋ぐのがVinではなく5Vに変更すれば動きました。
下の動画では、サイン波で徐々に前に進んだり後ろに進んだりするプログラムをJapaninoにアップロードしたものを動かしています。
荷物が重くてすぐ倒れるので後半はハンドルを持って支えています。補助輪がほしい!
最後に今回のArduinoのスケッチを載せておきます。
// モータドライバのIN1、IN2に接続したピンの番号 const int in1Pin = 9; const int in2Pin = 10; //サイン波の角度 int degree = 0; // モータを回転させる void set_move(double value) { if(value > 10){ //順方向 analogWrite(in1Pin, value); analogWrite(in2Pin, 0); }else if(value < -10){ //逆方向 analogWrite(in1Pin, 0); analogWrite(in2Pin, abs(value)); }else{ //ブレーキを使用しないで停止 digitalWrite(in1Pin, LOW); digitalWrite(in2Pin, LOW); } } void setup() { // IN1、IN2、PWMの各ピンのモードを出力にセット pinMode(in1Pin, OUTPUT); pinMode(in2Pin, OUTPUT); } void loop() { set_move( sin(degree*0.03)*255 ); degree ++; delay(20); }