goo blog サービス終了のお知らせ 

楽しみ見つけて猛突進

おっさんらしさとは・・・

Arduinoにmotorshield

2012年03月04日 18時10分36秒 | うんちく・小ネタ

太陽熱温水器があるんですけど、ガス給湯器との切り替え

バルブが家の外にあるんですよね。

家の中からこの切り替えが出来たらもっと楽なのにな~

と前々から思ってたので、色々考えました。

要はバルブのツマミをモータで回してやればいいんです。

ただ、正転、逆転、限界検知などが必要で、モーターと

電源とスイッチだけじゃ無理。

で、買いましたMotor Shield。

突然なのでちょっと紹介すると、フリーソフトのハード版

とかで最近有名な「Arduino」ってワンボードのマイコンが

ありまして、簡単なプログラミングで色々と出来る便利

な代物です。

このボードを拡張する別部品をshieldって言うんですね。

MotorShieldはモーターを制御出来るshieldって事。

購入は「スイッチサイエンス」さん。色々そろってて便利で、

配送も早い。時々お世話になってます。

ここで「Arduino モーターシールド Rev3」を手配。

商品のホームページに、製造元リンクで回路図へと、

ボード仕様と使用ピンが出ています。

逆に言うとこれで資料は全て。

R0010858_1

とりあえず基盤を眺めると、電源とモーターをつなぐ端子が

あるのが、わかります。

とりあえずArduinoと合体させます。けど、んっ?

ピンの数が合わないようで。手元にあったArduinoが

古いからのようですね。Arduino Duemilanoveってかい

てます。

R0010849_1

ピンの名前見てみると、数が違っても問題なさそうなので、

ArduinoとMotorshieldでピンの名前が合うように合体

させます。

ちょっと部品と干渉するので、一部のピンを曲げます。

R0010850_1

R0010851_1

とりあえず勘でスケッチ書いて、Vin端子とGND端子に

3Vをかけて、A端子の電圧を測ると、なんとかなりそうな

のでモーターをA端子につけるとPWMを最大にすると

モーターが唸っています。ん、んっ?PWMだから唸って

るのか?何かおかしいので、A端子の電圧を測ると明

らかに3V以上出ています。おかしいやん。なぜ?

とりあえず製造元のpdf回路図を見ました。

でわかったのが、デフォルトではArduinoにかけている

5VがそのままA、B端子に使われているんですね。

回路図のLSP5がVin端子ですが上にVIN-CONNECT

ってのがありますよね。そこにDEFAULT:Closedに

なってます。MotorSheild基盤の裏側を見ると、ありました!

それらしき箇所が。

R0010847_1

このVin Connect部分がくっついてますので、カッターで

切り離します。

で電圧を再度測るとばっちり3Vになっています。

PWMでA端子を制御すると、255付近にするとA端子

付近のLEDが片方点灯します。

R0010853_1

逆にPWM値を下げていくとこんな感じ。

R0010854_1_2

LEDで状態がわかるので便利ですね。

ちなみにモーターはタミヤの遊星ギヤーボックスを

使いました。

R0010852_1

このギヤーボックスはよく出来ているんですけど、音が

ちょっと大きいかな。

ま、モーター制御部はうまくいってよかった。

操作部とセンサー部が必要なんですけど、ま、それは

また次回。

サンプルにスケッチ載せときます。

あくまでも、サンプルですよ。

----------------------------------------------------

//motorshieldテスト
//digitalの12ピン13ピンで回転方向制御
//digitalの3ピン11ピンでPWM制御
//テストでは端子Aのみを使用
//端子Aはmot1

#define dir1 12
#define mot1 3

void setup()
{
    pinMode(dir1, OUTPUT);
}

void loop()
{
//HIGHとLOWで回転方向を変える
  digitalWrite(dir1, LOW);
 
//PWMで回転速度制御0が最低255が最高
  analogWrite(mot1, 255);
}

-------------------------------------------------------

Arduino モーターシールド Rev3用サンプル