• 締切済み

ロータリーエンコーダのパルスをカウント

現在電子工作をしており、それにPIC16F877Aを使っています。プログラムはC言語を使っています。 2相のステッピングモータを回転させてロータリーエンコーダで読み取り、そのパルスをカウンタICを使おうと思っています。 それを最終的にモータにボールねじを取り付け、カウンタICで読み取ったパルスをPICに送り距離に換算しようと思っています。 400パルスまでカウントしたいため、どのICを使うか悩んでいます。 2相ステッピングモータはオリエンタルモーターの「PK225PB」の両軸タイプ、 ロータリーエンコーダはオムロンの「E6A2-CWZ3C」のA相,B相,Z相の3相のオープンコレクタです。

みんなの回答

  • tadys
  • ベストアンサー率40% (856/2135)
回答No.2

ステッピングモーターを使うのであればモータに入れるパルスの数で回転数(回転角度)が分かるのでロータリーエンコーダを使う必要は無いでしょう。 PICを使うのであればPINのレベル変化割り込みを使って A相が変化した時のB層のレベルがLOWかHIGHか B相が変化した時のA層のレベルがLOWかHIGHか を判断すれば回転方向が分かるのでカウンタをアップ/ダウンさせれば良いでしょう。 Z相は使わなくても良いでしょう。 ボールネジが端に行った時に動作をとめるためのスイッチが必要でしょう。

nekosoft
質問者

補足

最終的にボールねじをつけた場合には先端にセンサをつけまして、そのセンサが反応するところまで行ったらモータをストップさせ、そこまでの距離を見るというものです。 C言語はあまりやってなかったものでカウンタのアップ/ダウンは難しいものですか?

  • richardo
  • ベストアンサー率20% (11/53)
回答No.1

 型名は忘れたけど、マウス用の2チャンネルのエンコーダICが有ります。そのような専用ICを使うのが良いでしょう。  メーカはNECだったかな。