前回、DRV8830によるDCモーターの制御で、I2Cのレジスタを何度もたたかないと動かないという症状に出くわしました。

仕様として片づけるには余りにもおかしいので調べることにしました。何か問題があるのであれば、エラーが発生しているはずです。ここは重い腰をあげてエラーステータスを確認することにしました。

DRV8830 の FAULTn ピン を Arduino Nano のD4ピンにセットします。 FAULTn が LOWになるとエラーが発生したことを意味します。





少し分かりにくいので斜めからの角度からも写しました。




エラーステータスは、I2Cのレジスタ:0x01 から読み出すことができます。




念のため、データシートのRead シーケンスを下記に示します。




エラーチェックを加えたスケッチを下記のようにプログラムしてみました。




動作させて見ると、やはりまともに動きません。シリアルモニターを確認すると、"under voltage"が出ています。どうもモーターに電流が流れすぎてしまい、肝心のドライバの電圧が降下しているみたいです。





名無しのモーターですがプラモデル用なので、恐らく代表的なタミヤのモーターFA130 であろうと推測し特性を調べてみました。


FA-130RA
http://www.mabuchi-motor.co.jp/ja_JP/cat_files/fa_130ra.pdf


これを見ると、通常使用では1.5V となっています。一方スケッチで指定している電圧は 5.06V(0x3F )!仕様からも大きく逸脱した使い方です。そこで、電圧設定を 1.53V(0x13)に直しました。(スケッチの一部を抜粋)





きちんと動いてくれました!やはりレジスタを何度もたたく必要はありませんでした。しかし、モーターのトルクは弱々しく、指で押さえると簡単に止まってしまいます。





コンソールを確認してみると、相変わらず "under voltage"が出ています。




どうも Arduino Nano からの電流供給では、モーターを十分に駆動できないようです。ということで外部電源を接続することにしました。




外部電源から電源を供給するために Arduino Nano の Vin 端子と直流電源の5Vを接続しています。
さて動かしてみましょう。





今度は力強く動いてくれています。指で押さえても回り続けてくれています。

モーターは電力喰いの上にアナログ回路なので、いろいろなところに影響して難しいですね。でもこれでビュートローバーの車輪を回す目途がついてきました!
(^_^)/~


関連記事
Arduino Nano とモータードライバでDCモーターを正転・逆転してみた(1)
http://makers-with-myson.blog.so-net.ne.jp/2014-05-15

Arduino でモータを動かす
http://makers-with-myson.blog.so-net.ne.jp/2013-11-11

Arduino Nano でサーボモータを動かしてみた
http://makers-with-myson.blog.so-net.ne.jp/2014-04-24






サインスマート(SainSmart)Nano v3.0 互換 ATmega328P搭載 for Arduino ブラック

  • 出版社/メーカー: サインスマート(SainSmart)
  • メディア: Personal Computers



サインスマート(SainSmart)Nano I/O 拡張シールド for Arduino

  • 出版社/メーカー: サインスマート(SainSmart)
  • メディア: おもちゃ&ホビー



Arduino用モータードライバシールド「Ardumoto」

  • 出版社/メーカー: スイッチサイエンス
  • メディア: エレクトロニクス