«前の日記(2016年12月06日) 最新 次の日記(2017年03月06日)» 編集

日々をアレコレ

-広告-


2017年01月05日

シリアルコントロールモータードライバを使ってみた

乾電池6本という比較的大きめの電圧でモーターをmbedのBLE経由で駆動させたいということで、シリアル通信でモーター駆動できるモータードライバを探していたら、 SparkFunのシリアルコントロールモータードライバ を発見。これまでよく使っていた、DRV8830を使ったI2Cモータードライバモジュール と比べると性能、機能として以下の部分が優れてる感じ。

  • 動作電圧が11V(最大定格は12V)まで。
  • モーター接続が2チャンネルあって、1チャンネルあたり瞬間最大1.5A(定常1.2A)まで対応の上、ブリッジすることで1台なら2倍の電流に対応可。
  • 通信方法はTTLなUART(9600/57600/115200)、I2C、SPIが選択可。
  • I2Cのアドレスは10パターン選択可。
  • 1台をマスターとして上位のCPUと通信し、最大16台をスレーブとして接続することで最大34台まで同時に制御可能。
  • 入力電源から3.3Vを出力できるので、マイコンの電源も場合によっては供給可能。

実際に使ってみると、少し面倒な感じになってたのでメモ。詳細はSerial Controlled Motor Driver Hookup Guide - learn.sparkfun.com を参考のこと。

  1. Hardware Overview にある通り、通信の設定は基板裏のジャンパで設定する。デフォルトは9600bpsのUARTになっている。商品ページにある「2Cアドレスには、デフォルトでUARTのbaudsが利用可能」という一文がよくわからないなーと思ったら、アドレス設定というよりは、通信方法の設定のデフォルトがUARTで9600bpsになってるということらしい。
  2. I2Cで使う場合、プルアップ抵抗を自分で実装、あるいは、裏面のジャンパをUser向けのジャンパを閉じる必要がある。
  3. I2C(多分、SPIでも)で使う場合、初期化処理が時間かかる場合がある。利用する流れは次の通り。

    1. IDを読み込んで、正しい値(0xA9)が返ってくるのを待つ。
    2. コマンド受付可になるまで待つ。
    3. ブリッジや回転方向などの設定をする。
    4. モーターの各チャンネルを有効にする。

    どうも、2のところで時間がかかる場合があるっぽい。その辺、は仕方ないのかなーと思ってとりあえず深くは調べてない。

面倒なところがあるとはいっても、一度操作になれると結構便利に使えそうな感じではあるので、ネタによっては使っていきたいものではある。


-広告-

«前の日記(2016年12月06日) 最新 次の日記(2017年03月06日)» 編集