非接触回転速度センサを使ってモーターの回転数を計測してみた – TANG制作記録Part5

AgriRobotics

blog

非接触回転速度センサを使ってモーターの回転数を計測してみた – TANG制作記録Part5

TANG制作記録
CuGoV3TANG非接触回転速度センサ

はじめに

こんにちは!!
今回は秋月電子で販売されている非接触回転速度センサ「OH182/E」を使って、
モーターの回転数をカウントし、それを用いてロボットの移動速度を推定することを目指します。

今回は、センサ部分だけを見ればワンコインくらいでエンコーダもどきを既存のモーターに実装することができるので、モータの回転数をざっくり知りたいけどエンコーダ付きモータ高いから手が出せないみたいな方にはお勧めです。

ではどうやって実装したかお話していきます~

非接触回転速度センサ「OH182/E」とは?

磁気変化を利用して、歯車(金属)の歯のでこぼこを非接触で検出して出力します。

動画のようにギアの凹凸に従って電圧が変化します。なので、この変化をカウントすればギアの凹凸が何個センサを通過したかわかり、移動速度を計算することができます。具体的な計算方法、回路の組み方はこれからご紹介します。

必要な部品

  • 非接触回転速度センサ OH182/E
  • モーター
    ・今回はCuGoV3に取り付けられたDCモーターを使用しました。
  • Raspberry Pi 4
    ・出力されたセンサ値をGPIOピンで読み取ります。
    ・GPIOピンさえあれば問題ないので、ほかのマイコンでも可能です。
  • コンパレータIC LM339N
  • デバッグ用LED
  • 抵抗
    ・10kΩ, 1kΩ, 100Ω
  • コンデンサ
    ・0.1μF
  • そのほか
    ・ジャンパワイヤ
    ・ピンソケット
    ・ブレッドボード
    ・テスター など

回路設計

まずはブレッドボード上に部品を置いて下記画像のように配線してみました。

OH182/Eは、データシートを確認すると入力電圧は12Vですが、手元に12V電源がなかったので5Vとしました。下記の回路の場合、OH182/Eの出力電圧は0.4V, 0.8Vでした。ギアの凹凸がセンサを通過するたびに0.4V⇔0.8Vを交互に出力します。

その出力結果をGPIOを使って読み取るのですが、Raspberry Pi 4の場合、0V~1.19Vの間をLOW, 1.34V~3.3Vの間をHIGHとして読み取ります。したがって、センサから得られた値をそのままRaspberry Pi 4のGPIOで読み取ると0.4V⇔0.8Vを交互に出力されていてもずっとLOWとして認識されます。

なので、0.4V⇔0.8Vの出力を0.0⇔3.3Vの出力に変換する必要があります。そこで、コンパレータIC LM339Nを使用します。コンパレータICとは、その名の通り比較するもの、比較器と呼ばれるものです。
二つの電圧を比較して大小を判断し、LOWまたはHIGHを出力します。今回のような、微妙な電圧値で判定をしたい場合は役に立ちます。では、実際にどのようにしようするか紹介します。

コンパレータICの説明は下記の回路図を使います。コンパレータICに必要な入力は以下の通りです。

  • 電源電圧 Vcc
  • GND
  • 比較する電圧 NEG. INPUT1
  • 比較の基準となる電圧 POS. INPUT1

NEG. INPUT1>POS. INPUT1の場合はHIGH、NEG. INPUT1<POS. INPUT1の場合はLOWをコンパレータICのOUTPUT1から出力します。

今回の場合は、NEG. INPUT1はセンサからの出力なので0.4Vか0.8Vが入ります。
POS.INPUT1は0.4Vか0.8Vの間の電圧にする必要があります。
そこで、5Vを分圧してPOS.INPUT1を約0.6Vにしました。
例えば、センサからの出力が0.4Vのときは、基準となる電圧である0.6Vよりも小さいためにOUTPUTからLOWが出力されます。センサからの出力が0.8Vのときは、0.6Vよりも大きいためOUTPUTからHIGHが出力されます。

また、LEDはコンパレータICから出力された電圧を入力電圧とし、ギアが回転するたびにLEDが点滅するので、回路の動作確認に便利です。

実際に作ってみた回路は以下の通りです。

まずは動作確認のためにユニバーサル基板を使って部品をはんだ付けしてみました。
次は基板発注したいですね~~。

予備実験

前述した回路が正常に動作するかどうか確認するために予備実験を行いました。

下記動画のように、モーターに印をつけて5回転させたときに印が元の位置で止まるかどうか確認してみました。ギアの歯数は16であるため、5周で80回ギアの凹凸をカウントできればよいです。


実際にロボットに取り付ける場合は、動画のように電圧がLOW->HIGHに変化する、立ち上がりをカウントするだけではなく、HIGH->LOWに変化する、立ち下がりもカウントすることがRaspberyy Pi4ではできるので1周を16×2=32分割してカウントすることができます。なので、モーターが1周するとカウントは32になります。

ロボットで実験

TANGに取り付け

センサをTANGに取り付けるために、既存のCuGoV3のモーターカバーに、下記画像のようにセンサを取り付ける治具を取り付けてみました。

実際に取り付けてみた様子が以下の通りです。カバーはセンサの位置がわかりやすいように分割しています。センサとギアとの間は約2mm程度あけるように気をつけましょう。

計測対象とセンサの間では2mmほどあけるのがベストというのは、データシートを確認すればわかります。
CuGoV3のギアでは、モジュールM = ピッチ円の直径(D)/歯数(Z)= 33mm/16個 = 2.0なので、下記のグラフから計測対象とセンサの間では2mmほどあけるのがよさそうです。

TANGで動作確認

見やすくするためにユニバーサル基板を上に載せてみました。
動画ではTANGが動いたときに、LEDがモータの回転数に従って点滅しているのがわかると思います。

まとめ

今回は、非接触回転速度センサ「OH182/E」を使ってTANGに取り付けられたモータの回転数をカウントできるようにしました。これを用いることで、1秒間にギアがどれだけ回転したかがわかるようになり、ロボットの移動速度を計算できるようになります。
また、移動距離も同様に計算できるようになり、できることがかなり増えます。

一方で、今回のセンサではモータが正転、逆転しているかどうかがわからないので、その点はご注意ください。そういった場合は、CuGoV3をお持ちの方だけになってしまいますが、後付けエンコーダを取り付けることをお勧めします。
https://cuborex.base.shop/items/61688835

ここまで読んでくださりありがとうございます。また、ブログ更新していくので、Twitterのフォローやいいねなどよろしくお願いします、励みになります。
https://twitter.com/23232871hashimo