エンコーダパルスを読み取る方法
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!