アフィリエイト広告
アフィリエイト広告

ブラシ付モータ FA-130RA を Hブリッジ回路で PWM制御する (3) / エンコーダをつくる

ブラシ付モータ FA-130RA-2270 を、Hブリッジ回路で駆動し、PWM で速度制御しています。今回は、エンコーダを取り付け、回転数を検出できるようにします。

前回までに、ブラシ付モータを回すための回路をつくり、Arduino のスケッチを描きました。

ブラシ付モータ FA-130RA を Hブリッジ回路で PWM制御する (2) / スケッチを描く
ブラシ付モータ FA-130RA-2270 を回します。モータのドライブは Hブリッジ回路を使用し、PWM で速度を制御します。 前回は、モータを回すための回路をつくりました。ポイントは、PWM信号の周波数をどうするか、でしたね。 今回はモ...

とりあえず、回っています。でも、ブラシ付モータの回転数は、負荷や電圧の状態によって変化します。そこでこいつを、一定の回転数に制御することを考えてみようと思います。モータの回転数の制御は、「冷却ファンの 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。長いか? まぁ、やってみよう。

回転数を検出するエンコーダ

図1 ギヤボックスに取り付けたエンコーダ

ってことで、エンコーダをつくってみました。

円盤は、厚紙です。穴の加工はかなりテキトーですけど、本来はここ、しっかりつくらないと正確なパルスがでません (教訓)。
シャフトジョイントの側面に貼り付けて、ギヤモータの出力軸に取り付けました。

フォトインタラプタはジャンク品です。仕様はよくわからないのですが、以前「パタパタ表示機を作る」で使ったのと同じパーツです。アルミ板で支持金具をつくり、ギヤボックスとともに MDFボードの台座にのせてあります。

で、出力されたパルスは …、デューティ比が、バラバラ。パルス周期も、バラバラ。立ち上がりも立ち下がりも、遅い (;´Д`)
けど、なんかいい感じな予感がする。なんとかなるんじゃね?

回転数の検出と表示の回路

エンコーダの取り付けにともない、回路を追加、変更しました。

エンコーダ部

図2. エンコーダまわり回路図

フォトインタラプタまわりは、以前使ったときと定数がすこし違います。しっかり検出できるように、発光ダイオードの電流を 17mAに増やしています。コレクタ側は 10KΩがよさげでした。コンデンサ C1は、あったほうが制御が安定するようです。

フォトインタラプタの出力は波形が悪いので、整形しておきましょう。シュミットトリガインバータ 74HC14 とか入れるとよいです。
が、PWM信号発生回路で使ったコンパレータ BA10339 が 4回路入りで、2回路あまってますので、これを使いました。

U1 の回路は、ヒステリシス付きのコンパレータです。働きは、シュミットトリガインバータと同じ。ヒステリシスの計算は省略します (*1) が、この定数で、上昇時 3V、下降時 2Vほどのしきい値になります。
出力されたパルスのオンデューティ比は平均 52%ほどですが、円盤の精度が悪いのでばらつきます。

(*1) コンパレータのヒステリシス電圧について、ググると、むずかしい計算式がでてきたりします。が、R3、R4、R5で分圧の計算すればいいです。だいたいね。

Arduino 制御部

図3. Arduino 制御部 回路図

Arduino まわりを、すこし変更しています。

エンコーダ出力を、Arduinoの 2番ピンへ入力します。モータ駆動部ドライバへの出力を、5~7番ピンに変更しました。回転数を表示させるための 7セグメントLED表示部への出力を、10~12番ピンに割り当てます。

設定ボリューム VR1 の出力電圧を安定させるために、VR1の電源を Arduinoの 5V出力にしました。

7セグメントLED 表示部

回転数を表示させるための 7セグメントLED表示回路です。

図4. 7セグメントLED表示 回路図

この回路は、「冷却ファンのPID制御」で使ったものと同じです。ドライバは TM1630 です。よく使うので、ブレッドボードにモジュール化してます。

後記

図5. ブラシ付モータの回転数制御

今回は、ブラシ付モータを取り付けたギヤボックスに、出力回転数を検出するためのエンコーダをつくって、取り付けました。これで、出力回転数をフィードバックすることができるようになりました。

写真は、実験中のブレッドボードのようすです。エンコーダと 7セグメントLED表示器がついたぐらいで、大きな変化はありません。

では次回は、スケッチを描きましょう。回転数をフィードバックして一定にする制御を、冷却ファンのときと同様に、PID制御でやりたいと思います。
いろいろと不安定な要素があるので、うまくいくかどうかは、わかりません (;´Д`)

タイトルとURLをコピーしました