Release 2017.6.20 / Update 2017.11.3

モータドライバを使う

モータドライバを使ってDCモータを動かしてみました。簡易的なフォローフォーカスが作れないかな、と。

結論として、フォローフォーカスとしては「失敗」なんですけど、環境や使用モータによっては上手く機能すると思うので、参考になるようであれば。

TA7267BP

以前、マルツ電波で見つけたモータドライバ、TA7267BPです。

Arduinoなどのマイコンから2系統の電圧変化を送ることで、モータの回転方向等を制御できます。

確か200円もしなかったので、ついでに購入してそのまま放置してたんですが、先日、ポロっと出てきたので、久しぶりに動かしてみました。そしたら、クリックなしロータリーエンコーダと組み合わせれば、結構細かい制御ができます。

そこで、アルミチャンネル等を加工して固定出来るようにして、動作を確認してみました。

ちなみに、TR7267BPのピン配置は以下のようになっています。

そしてこの電子パーツはもう時代遅れらしく、あまり市場には出回っていないようです。普段、自分が利用する入手先だとここしかありませんでした。

せんごくネット通販

ただし、今回のスケッチでは、Arduinoの2ピンで右回り左回りのHigh・Lowを出しているだけなので、同様な機能のICはいくらでも見つけられるかと。

使用電子パーツ

  • Arduino
  • モータドライバ
  • ロータリーエンコーダ(クリックなし
  • DCモータ
  • コンデンサ(モータ用)

駆動部分はこちらを使いました。ただ、後述通り、あまり抵抗の大きい物体を細かく動かすのには向いてないので、今回の用途としてはあまりオススメできません。参考までに。

回路図

TA7267BPは大きいモータ用らしく、こういった小さいモータにはあまり適さないようです。でも、まあ動きました。

また、モータへ供給する電源は写真だと5Vバッテリーで一緒にしていますが、このギヤボックスのモータは3V定格です。ちゃんと定格に合わせた別電源を接続する事をオススメします。

スケッチ

このプロジェクトファイルをダウンロードするか、下記のウインドウを開いてコピペしてください。

Sample Sketch file – DC motor driver contorl

*このスケッチにはMsTimer2ライブラリが必要です。IDEに無ければインストールしてください。

ちょっと長いですが、ほぼ、エンコーダ読み取り関係です(こちらのコードをまんま流用)。やっているのは、「ロータリーエンコーダの増減があれば、少し(10ms)その方向にモータを動かす」だけです。あまり早いと取りこぼしはありますが、それでも、かなり細かい動きが出来ます。

定数の詳細

スケッチ内の定数についていくつか補足しておきます。

#MOVE_VAL

モータの動く時間で、そのままms(ミリ秒)です。エンコーダの1目盛り分での動きをもっと細かくしたければ値を減らし、逆なら増やします。

#REV_RAG

使ったギヤボックスは遊びがあるので、回転方向が反転すると、その分だけ空回りします。それを補うため、回転が反転した場合、余分に動く秒数(ms)を設定しています。いらなければ0にします。

失敗のワケ

動きは良かったんですが、このギヤボックス、結構ガタや遊びがあって、大事なところで滑って空回りしてしまいます。要は剛性・トルク不足です。

 

使おうとしていたレンズ「SIGMA 30mm1.4F」はかなり年季が入っていて、フォーカスリングが硬いです。なので、この程度のトルクではうまく機能しませんでした。アルミフレーム工作の精度が低いからかも知れませんが。

ただ、リングが軽いレンズならそれなりに動いたので、場合によっては使えるな、と。あるいは、もっと負荷の低い、別の用途だったら充分機能するのでは、と思います。

参考サイト

panchiga’s blog – DCモーターを制御する

コメントを残す

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください