エンコーダパルスを読み取る方法

私はsimulinkとArduinoIOを用いて、エンコーダのパルスを読み取り、カウントしようと考えております。 そこでArduinoIOにあった「Encoder Read」ブロックを用いて、パルスを読み取ろうと考えたのですが、それとなく値は出力されるのですが、その値が何を示しているのかが良く分かりません。 また、「Encoder Read」ブロックを用いる以外の方法で、パルスをカウントする方法があったら、ご教授お願い申し上げます。 サンプルタイムは「0.02」秒です。 ブロック図は「Encoder Read」に「Scope」を繋いだだけです。

 采纳的回答

Atsushi Matsumoto
Atsushi Matsumoto 2016-12-15

2 个投票

エンコーダにも色々な方式があるので、方式によって方法は異なると思いますが、インクリメンタル式のエンコードについて説明します。
このインクリメンタル式は2相のパルスが出力され、その位相によって回転方向がわかります。また、Simulink/Logic and Bit Operations/Detect Increaseブロックで、パルスのエッジを検出して、それをHDL Coder/HDL Operations/HDL Counterブロックのenable端子に入力すると、パルスの回数をカウントして、何度回転したかわかります。

更多回答(2 个)

amir tahir
amir tahir 2017-5-1

1 个投票

I face same problem, I use arduino mega 2560 with connected with my encoder by arduinoIO block.Here type my encoder http://www.mybotic.com.my/products/Rotary-Encoder-Kit/115 when read analogread block which is connected to pin data encoder it give output in pulse or ON and OFF ->My quastion is how to convert given output in pulse to RPM? I already use block detect edge but it still not give output in RPM any professor can help me?

1 个投票

Your encoder generates 20 cycles of pulse with 1 turn/360 degrees. It means 1 cycle of pulse is 1/20 turn.
Where the pulse count is P,
You can convert it to RPM with following formula.
RPM = P/20/minutes.    
 
Hope it helps.

类别

在 帮助中心 和 File Exchange 中查找有关 Modeling 的更多信息

产品

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by