ブラシ付モータ FA-130RA-2270 を、Hブリッジ回路で駆動し、PWM で速度制御しています。今回は、エンコーダを取り付け、回転数を検出できるようにします。
前回までに、ブラシ付モータを回すための回路をつくり、Arduino のスケッチを描きました。
とりあえず、回っています。でも、ブラシ付モータの回転数は、負荷や電圧の状態によって変化します。そこでこいつを、一定の回転数に制御することを考えてみようと思います。モータの回転数の制御は、「冷却ファンの PID制御」の一連でもやりました。同じようにやってみましょう。
回転数を検出する方法と仕様
ブラシ付モータは、部品箱にあったタミヤのシングルギヤボックス (4速タイプ) に取り付けました。ギヤボックスにはモータが付属していますが、取り付けたのは実験している MERCURY MOTOR 製の互換品です。減速比は 114.7:1 にしました。
モータ電圧 1.5V時の出力回転数は 79rpm。電圧を 0.9Vまで下げたときの最低回転数は、たぶん、48rpmぐらい。最高回転数は、PWM信号のデューティ比を 90%にとどめるために最高電圧を 2.5Vとして、たぶん 128rpmぐらい。
ということで、回転数の制御範囲は 50~120rpmあたりをめざしましょう。
この回転数をどうやって検出するか。
冷却ファンのときは、1回転あたり 2パルスの回転数信号が出力されていました。「エンコーダ」ですね。しかし、毎度のことですが、そんな洒落たもの、部品箱には、ない。けど、フォトインタラプタならジャンク箱にある。円盤は……、つくっちゃえ (^_^;)
冷却ファンのときのように、パルスの周期を検出するようにしましょう。1回転あたり 10パルスぐらいの円盤なら、わりと簡単につくれるんじゃね? パルス周期で 120~50ms。長いか? まぁ、やってみよう。
回転数を検出するエンコーダ
ってことで、エンコーダをつくってみました。
円盤は、厚紙です。穴の加工はかなりテキトーですけど、本来はここ、しっかりつくらないと正確なパルスがでません (教訓)。
シャフトジョイントの側面に貼り付けて、ギヤモータの出力軸に取り付けました。
フォトインタラプタはジャンク品です。仕様はよくわからないのですが、以前「パタパタ表示機を作る」で使ったのと同じパーツです。アルミ板で支持金具をつくり、ギヤボックスとともに MDFボードの台座にのせてあります。
で、出力されたパルスは …、デューティ比が、バラバラ。パルス周期も、バラバラ。立ち上がりも立ち下がりも、遅い (;´Д`)
けど、なんかいい感じな予感がする。なんとかなるんじゃね?
回転数の検出と表示の回路
エンコーダの取り付けにともない、回路を追加、変更しました。
エンコーダ部
フォトインタラプタまわりは、以前使ったときと定数がすこし違います。しっかり検出できるように、発光ダイオードの電流を 17mAに増やしています。コレクタ側は 10KΩがよさげでした。コンデンサ C1は、あったほうが制御が安定するようです。
フォトインタラプタの出力は波形が悪いので、整形しておきましょう。シュミットトリガインバータ 74HC14 とか入れるとよいです。
が、PWM信号発生回路で使ったコンパレータ BA10339 が 4回路入りで、2回路あまってますので、これを使いました。
U1 の回路は、ヒステリシス付きのコンパレータです。働きは、シュミットトリガインバータと同じ。ヒステリシスの計算は省略します (*1) が、この定数で、上昇時 3V、下降時 2Vほどのしきい値になります。
出力されたパルスのオンデューティ比は平均 52%ほどですが、円盤の精度が悪いのでばらつきます。
Arduino 制御部
Arduino まわりを、すこし変更しています。
エンコーダ出力を、Arduinoの 2番ピンへ入力します。モータ駆動部ドライバへの出力を、5~7番ピンに変更しました。回転数を表示させるための 7セグメントLED表示部への出力を、10~12番ピンに割り当てます。
設定ボリューム VR1 の出力電圧を安定させるために、VR1の電源を Arduinoの 5V出力にしました。
7セグメントLED 表示部
回転数を表示させるための 7セグメントLED表示回路です。
この回路は、「冷却ファンのPID制御」で使ったものと同じです。ドライバは TM1630 です。よく使うので、ブレッドボードにモジュール化してます。
後記
今回は、ブラシ付モータを取り付けたギヤボックスに、出力回転数を検出するためのエンコーダをつくって、取り付けました。これで、出力回転数をフィードバックすることができるようになりました。
写真は、実験中のブレッドボードのようすです。エンコーダと 7セグメントLED表示器がついたぐらいで、大きな変化はありません。
では次回は、スケッチを描きましょう。回転数をフィードバックして一定にする制御を、冷却ファンのときと同様に、PID制御でやりたいと思います。
いろいろと不安定な要素があるので、うまくいくかどうかは、わかりません (;´Д`)