エンコーダパルスを読み取る方法
25 次查看(过去 30 天)
显示 更早的评论
私はsimulinkとArduinoIOを用いて、エンコーダのパルスを読み取り、カウントしようと考えております。 そこでArduinoIOにあった「Encoder Read」ブロックを用いて、パルスを読み取ろうと考えたのですが、それとなく値は出力されるのですが、その値が何を示しているのかが良く分かりません。 また、「Encoder Read」ブロックを用いる以外の方法で、パルスをカウントする方法があったら、ご教授お願い申し上げます。 サンプルタイムは「0.02」秒です。 ブロック図は「Encoder Read」に「Scope」を繋いだだけです。
0 个评论
采纳的回答
Atsushi Matsumoto
2016-12-15
エンコーダにも色々な方式があるので、方式によって方法は異なると思いますが、インクリメンタル式のエンコードについて説明します。
このインクリメンタル式は2相のパルスが出力され、その位相によって回転方向がわかります。また、Simulink/Logic and Bit Operations/Detect Increaseブロックで、パルスのエッジを検出して、それをHDL Coder/HDL Operations/HDL Counterブロックのenable端子に入力すると、パルスの回数をカウントして、何度回転したかわかります。
0 个评论
更多回答(2 个)
amir tahir
2017-5-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?
0 个评论
Atsushi Matsumoto
2017-5-2
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.
0 个评论
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Arduino Hardware 的更多信息
产品
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!