• 締切済み

モータの速度制御

ロータリーエンコーダ(インクリメンタル型)を用いて速度を計測しようとしています。 この場合、ソフト上でロータリーエンコーダから出力されるパルスをカウントし、カウント値を角度に直して(角度(t)-角度(t-1))/サンプリング間隔 で速度は算出できると思いますが、算出結果をプロットしてみるとノイズのような波形になってしまいます。 どうしたちゃんとした速度が算出できるのでしょうか?素人なので文章の意味がわかりにくいと思いますがよろしくお願いします。

  • 科学
  • 回答数5
  • ありがとう数7

みんなの回答

  • foobar
  • ベストアンサー率44% (1423/3185)
回答No.5

(レシプロ測定という名称は、もしかしたら某測定器メーカだけが使ってる用語かも、、。) 測定方法の概要は以下のとおりです。 1. カウンタを2つ(AとB)、タイマーを一つ(これはサンプリング周期をセット)用意する。 2. カウンタAにはエンコーダからのパルスを入力、Bには基準周波数(1MHzとか、10MHzとか)を入力 3.測定開始信号直後の、エンコーダのパルス立ち上がりで、カウンタA,B、タイマーをスタート 4.タイマーの終了後、最初のエンコーダパルス立ち上がりでカウンタA、Bを停止(カウンタAは最後の立ち上がりをカウントしないようにする。カウントする場合には、1をカウント値から引く) 5. 周波数は、(カウンタAの値)/(カウンタBの値)*(カウンタBの入力周波数) 要は、エンコーダパルス整数周期(>サンプリング間隔)分の周期測定をカウンタBで行う という測定です。 で、問題になるのが、3.と4.の処理です。エンコーダの立ち上がりでカウンタの動作を制御する必要があります。これが実現できれば、現状のシステムでも可能かと思います。 留意点がいくつかあって、 1.測定分解能は、カウンタBの入力周波数とサンプリング間隔でほぼきまる。(最高周波数が1MHzのカウンタで間隔0.1msだと、1%程度の分解能しか得られない) 2. エンコーダ出力パルスの周期が長いと、測定周期が長くなる。 3. 最低サンプリング間隔は タイマ設定時間+エンコーダパルス幅*2 程度となり、また測定時間は若干ばらつく(エンコーダパルスの周期、スタート信号のタイミングにより) ご参考になれば。

pippi-paso
質問者

お礼

どうもありがとうございました。ちょっとわからないところもありますが参考になります。

  • foobar
  • ベストアンサー率44% (1423/3185)
回答No.4

整理すると、 モータの最高回転数 5000rpm(約80rps) エンコーダ出力パルス 2048*4(8kパルス/回転) サンプリング 0.1ms ですか。 この条件だと、最高回転数で回しても1サンプリングあたり64カウント程度ですから、速度計算にそのまま使うのは分解能不足かと思います。(回転数が下がれば、それだけカウント数も減りますし) もし、現状の機材で私がするとしたら、 1. サンプリング時間を見直す。測定に許容できる最大の時間にする 2. エンコーダ分周比を見直し、使用する最高回転数を考慮してボード入力周波数(1MHz)を越えない範囲で最大のパルス数/回転に設定する (場合によっては、もっと高速のPCI-632206(Max50MHz)に変える) をまず試みて、サンプリング期間中のカウント数を増やし、データのバラツキを抑えます。 そののちに、先に挙げた周期測定、レシプロ測定を検討します。 (もっとも、0.1msで0.1%のバラツキにいれようとしたら、10MHzをカウントできるカウンタが必要なので、6204では対応困難ですし、低速域でパルス周期が0.1msを越えないようにする必要が有ります。) 632206では、周期測定、平均周波数測定ができるようなので、こういったものを検討する必要も有るかと思います。

参考URL:
http://www.interface.co.jp/catalog/prdc.asp?name=pci-632206
pippi-paso
質問者

お礼

わかりました。ありがとうございます。 レシプロ測定を現状のシステムでやることはできますよね?外部回路とか必要になってくるのでしょうか?

  • foobar
  • ベストアンサー率44% (1423/3185)
回答No.3

いくつか気になる点が、、 角度を算出するカウンタがフルスケールを越えたときの処理はどうやってますか? カウンタがフルスケール越えたときには、角度(t)<角度(t-1) になりますので、ここの処理を適切に行なわないと、速度信号にノイズが入ります。 サンプリング間隔とエンコーダの一回転あたりのパルス数はいくらでしょうか。これが判らないと、的外れなアドバイスをしてしまう可能性が、、。 このボードにはZ信号でリセットする機能が有りますが、これは使ってませんよね? これを使うと、リセット前後で角度(t)<角度(t-1) になり、速度信号にノイズが入ります。(しかもリセットが一回転毎に行なわれるため、ノイズが頻繁に入ります)

pippi-paso
質問者

補足

>角度を算出するカウンタがフルスケールを越えたときの処理はどうやってますか? 今のところ一回転すらさせていない状況で使用していますのでフルスケールになるまで使っていません。 >このボードにはZ信号でリセットする機能が有りますが、これは使ってませんよね? Z信号は使っていません。 >サンプリング間隔とエンコーダの一回転あたりのパルス数はいくらでしょうか? サンプリング間隔は0.1[ms]、一回転あたり65536の分解能があり、分周出力16~16384[パルス/1回転]です。現在、分周出力は2048[パルス/1回転]で使用し、カウンタボードで4逓倍しています。

  • pactaka
  • ベストアンサー率44% (45/102)
回答No.2

まずどの程度の速度(m/min)を測定したいのかが知りたいですね それとソフト上でと言う事は使用機器はPCですかPLCですか,それとも高速カウンタから測定値を入力しているのですか? 結論から言うとパルスの受け側が正常にエンコーダパルスを受け取れていないのでは? パルスの受け側のスキャンは相当高速ですか? エンコーダが1回転すると例えば4096パルス出力したとすると受側も4096パルスきちんと受け取れる入力精度がなければ正確な演算は無理ですよ 単純平均値ぐらいしか出ないのでは・・・ 私が経験した機械では巻出装置で速度は(25m/min)でロータリエンコーダはOMRONでPLCもOMRONのCVM1(スキャンは約10msec)これで速度ではなく距離演算してましたが,OMRONのロータリエンコーダ用の高速カウンタを使用してもパルス飛びが出ていたので,相当早いスキャンの高速カウンタを使用しなければ,まともに速度が算出できないと思いますよ

pippi-paso
質問者

補足

どの程度の速度で使うかは未定ですが最高5000[1/min]まで出せるモータを使ってます。 使用機器はPCでソフトにはVisual Basic6.0、アップダウンカウンタボードにはInterface社製のPCI-6204を使用しています。ロータリーエンコーダはモータに最初から付属しているものを使用しています。

  • foobar
  • ベストアンサー率44% (1423/3185)
回答No.1

サンプリング間隔が短いと、角度の差分(カウント数の増分)が少なくなって、非常に荒い速度しか出てきません。 (例えば、サンプル時間内でのカウント数が十程度しか増えないとすると、速度データは+-10%程度のバラツキを持ってしまいます。) これは、回転数が低い場合(パルスの周波数が低い場合)には顕著です。 で、どうやって対処するかとなると、ひとつの方法は、例えばパルスの周期を測定して、周波数(回転数)を計算する方法が有ります。この方法は低速で精度の良い測定が出来ますが、高速になると周期測定の確度が下がるという問題が有ります。 両者を組み合わせた方法として、 ・一定時間以上、パルスをカウント(カウント数をnとする)する。 ・nパルス分の時間(T)を測定する ・T/nで平均周期を求め、そこから回転数を出す という方法を使うことも有ります。 (レシプロ測定とか呼ばれていたような) また、周期測定をする場合には、ロータリーエンコーダのパルス間隔が均一である必要が有ります。周期測定をする場合には、パルス数をエンコーダ一周分のパルス数の整数倍にして、エンコーダのパルス間隔不均一さの影響を受けないようにする必要が有るかもしれません。

pippi-paso
質問者

お礼

だいたいわかりました。ありがとうございます。パルスの周期はソフト上でどうのようにしたらいいのでしょうか? よろしくお願いします。

関連するQ&A

  • モーターとエンコーダーを用いた位置制御について

    モータの回転をエンコーダで読ませ、エンコーダのパルス数を参考にPID制御をしようとしています。 パルスのカウント値をプロセス変量として使う際、カウント値を出力する電圧量に変換するにはどうしたらよいでしょうか? お手数ですが、ご教授願います。

  • H8マイコンでのカウントタイマー動作

    H8 3052Fのituを使ってラップカウントは出来るでしょうか? あるパルス信号をTCNTでカウントする時にカウント動作を止めないで その時のカウント数を読み出す事は出来るでしょうか? パルス波形と正弦波の2つの信号波形があって、パルス信号をあるタイミングからカウントしていき、それと同時に正弦波の電圧をサンプリングして行った場合に、電圧を測定したPOINTのパルス波形のカウント数を調べたいです。 計測する期間は約2mSで、この期間内でなるべく多く正弦波の電圧をサンプリングしたいのですが、マニュアルを読んでもTCNTの動作、停止しか書いてないみたいでよく分かりません。 ご存知の方がいらっしゃいましたら教えて下さい。

  • ロータリーエンコーダ 信号(A,B,Z相)処理

    こんにちは。 ロータリーエンコーダを用いて回転速度・距離の測定を試みています。出力信号(A,B,Z相)の計測・記録まではできたのですが、それらの信号が何を意味するものなのか理解ができていません。その信号から回転速度・距離をどのように算出すればよろしいのでしょうか?教えてください。なお、使用しているロータリーエンコーダは http://www.mutoheng.com/~deji/rotaryencoder/index.html#UN です。

  • モーター制御について教えて下さい。

    初心者ですが、モーター制御で良くわからない点があり、教えて下さい。 ACサーボモーターを使用してトルク制御を行なおうと考えています。 具体的には、ある原点位置から ・角度θ1の位置に至ったら、トルクT1を出力 ・角度θ2の位置に至ったら、トルクT2を出力 (省略) ・角度θxの位置に至ったら、トルクTxを出力 といった出力を連続して行なうことを考えています。 (トルクはフィードバック制御を行なう) ある位置で定義したトルクを超える負荷が掛かると、次の位置に至り、その位置で定義したトルクを超える負荷が掛かるとまた次へ。。。 といった単純な仕組みを考えています。 そこで、良くわからない点というのが、角度θ1からθ2に至る時の軸の回転速度がどの様になるのかです。 例えば、トルクT1が大きい状態からトルクT2が小さい状態へ変化する時、モーター軸の回転速度は負荷イナーシャによって決まる物でしょうか? 速度は制御するわけではないので、単純に考えるとイナーシャの大きさとトルクの変化量によって決まるのかと思うのですが。。。 できれば、このトルク制御をベースに、θ1からθ2に変化する時の速度を増減させる様な事をしたいのですが、原理的に可能でしょうか? (特に、トルクが大きい状態から小さい状態へ変化する時の速度を大きくコントロールしたい) 色々資料を見ていますが、トルク制御をした場合の速度変化をどう考えれば良いか、トルク制御をベースに速度も制御することが可能なのかを明記している資料も事例も無さそうなので、ご教示いただけると幸いです。

  • 軌条での走行速度計測

    軌条を走行する台車の速度計測についての質問です。 緊急ブレーキ作動時の走行速度(瞬間最大)を計測するために 現在は、ロータリーエンコーダ+FVコンバータを用いて 電圧出力をレコーダに記録しています。 屋外での計測のため、ポータブルバッテリからDC/ACコンバータを用いて AC100V仕様のFVコンバータを駆動していたのですが 質の悪い電源のせいか、計測値の誤差がだいぶ大きいことが判明しました。 使用しているロータリーエンコーダは小野測器製RP-721です。 (使用範囲すると6000pps前後の出力になります) FVコンバータも小野測器製ですが、だいぶ古いものです。 単純にFVコンバータをDC電源仕様のものに更新すれば良いのかもしれませんが それ以外に、どういった計測方法があるか アイディアをいただければと思います。 ロータリーエンコーダはまだ新しいので、使えるに越したことはないのですが 他に良い案があれば考えてみたいのでよろしくお願いします。

  • エンコーダ

    サンプリング周期1msecで100rpm以上の回転速度を計測するには、いくらのパルス/回転以上のインクリメンタルエンコーダが必要ですか?

  • インクリメンタルエンコーダの不具合について

    研究にインクリメンタルエンコーダを用いているのですが 回転速度に依存して出力されるパルス数が異なるという 不具合が生じています。 例えば、使用しているエンコーダは2000P/R なのですが、手で試しに回してみると 1回転で遅い速度だと1パルス 速い速度だと500パルスくらいになります。 もっと速いと1回転3000パルスくらいになります。 手で回しているので速度は曖昧ですが 速ければ速いほどパルス数は多いです。 カウント方法としてはDSPに内蔵されているCNTボードに よってカウントしてるのですが、他のエンコーダについても 使用しているのでDSPの故障は考えられないと思っています。 メーカーに聞いたのですがそのような不具合は考えられない と言われました。 このような不具合を生じたことがある方はいらっしゃいますか? またこのような症状は何が考えられますか? よろしくお願いします。

  • ロータリーエンコーダを使った距離測定

    マイコンカーラリーなどで使われているロータリーエンコーダ(日立、Ver.2)の取り付け方法と出力値から距離を測定する方法を教えてください。 ロータリーエンコーダの仕組みは分かったんですが、実装するとなるとどうすればいいのか… また、タイヤ一週分のパルスをカウントした後どうすれば距離が得られるのでしょうか 初心者丸出しの質問で申し訳ないですが、よろしければ力を貸してください

  • ロータリーエンコーダのパルス。

    ボール式マウスであれば、ボールの回転を活かしてロータリーエンコーダを回転させ、A相、B相と2つのパルス信号が出来、回転方向や速度を定めるわけですが....(角度を出すことの出来るZ相はないものとします)。 この2つのパルスなのですが、ロータリーエンコーダなしに、回路で再現することは出来ないのでしょうか? 単なる一つのパルスを作るのであれば、トランジスタとコンデンサや555シリーズだけでも作れると思いますが、一つのパルスと連動する形でもう一つのパルスを発生させることは出来ないものでしょうか? 色々と考えてはいるつもりなのですが、確信を持てません....。検索もしているのですが、マウス関連の技術的なサイトや文献(PDF形式)があまりなく、調べようがないために困っております。 どうぞよろしくお願い申し上げます。

  • エクセルでの波形プロット

    エクセルを用いて、以下の波形をプロットしたいのですが行き詰ってしまいました。 f1(t)=sin(5*2*3.141592*t)・・・式(1) 5Hzの正弦波   f2(t)=sin(5*2*3.141592*t)・・・式(2) 30Hzの正弦波  f3(t)=0.4*rand( )・・・式(3) 乱数  サンプリングインターバルは500Hzでt= 0.002 0.004  :  1 で計測する。 上記の式があるとき、 g(t)=f1(t)+f2(t)+f3(t)で得られる波形を同位相で5周期加算して平均を求め、その波形をプロットする。 波形を同位相でプロットするとはどのような手順で行えば正しい結果が得られるのでしょうか。よろしくお願いします。