2016.08.25先日、久々にはまったトラブルが解決したので報告します。事象との因果関係のまとめスポンサーリンクトラブルの内容BeagleBoneBlackにインストールしたLinuxCNCから計算通りのパルスが出力されず、数パルス余計に出力される問題が発生。原因が全く分かりません。他のサイト情報によると、同条件のLinuxCNCを使っているにもかかわらず、誤パルスは全く確認されないとのこと。この時点で私のパルスカウンターか、測定環境に問題がありそうだと推測できます。実際に同じ機械を使っているのに私の機械にだけ誤パルスが入るのは何か腑に落ちません。パルス異常値は、十分程度のNC可動で数十パルスにも及びます。私の作った高精度加工機では±1/100mmの精度の加工ができるのでこの誤パルスは致命的です。1/100mmは、わずか8パルス分なので、数十パルスも誤差が生じてしまうと大変な精度悪化となります。この原因をはっきりさせておかないと、自作カウンターも信頼性がなく、使い物になりません。原因はノイズだったステッピングモーターの駆動にはStep端子とDir端子の2本の信号で制御します。Step端子はモーターの回転速度を制御する信号で、Dir端子は回転向きを制御する端子です。パルス測定の理屈は、Step端子から出力される信号をカウントすればよく、回転方向に関する情報は基本的に必要ありません。必要ないのでDirパルスの配線はしていませんでした。マイコン側の設定についても、Dirの信号からの制御を削除し、Step端子からの信号だけを割り込みを作動させ、カウントするプログラムに変更していたのです。(理論上、他の割り込みと干渉しないのでカウントミスは起こらないはずです。)結果から言うと、これが異常パルス検出の原因でした。パルス異常の原因が全く分からなかったので、藁をもつかむ気持ちでとりあえずDirを元に戻してみることにしました。確認のため、8000パルスを往復するプログラムを100回実行するGコードを回してみたのですが、異常パルスが発生しないのです。なんと良かれと思って改良したDir端子の入力削除が悪影響していたわけですただし、同じGコードを5000行実行すると1パルス余計に観測されてしまいました。テストを重ねるたびにランダムに発生するのです。この時点で可能性の一つとして考えていたものの、確証がなかったので口にしませんでしたが確証が持てました。そこで、ノイズを除去するために、信号の立ち上がり信号で割り込みし、一定の時間(マイコン1サイクル分)時間稼ぎしてから、信号が立ち下がったときにカウントするプログラムに変更しました。これにより、瞬時に入力されるノイズパルスをある程度除去できるはずです修正したカウンターで上記の5000行のGコードを4セット実行してみましたが、誤パルスの検出はゼロ。事象との因果関係のまとめ実はよくわからない・・・・Dir端子が影響していることは間違いないのですが、そもそもDir端子の入力をマイコンのソフトウェアレベルで切っているので影響はないはず。Dir端子そのものを繋がないときに多くの誤パルスが発生し、Dir端子を繋ぐと誤パルスが少なくなるものの、ゼロにはならないしかも、他のコントローラも調べてみると、LinuxCNCだけでなく、USBCNCにも”Dir端子を取り外すと”同様の誤パルスが発生するのです。いうことは、もしかしたらDir端子のコードがアンテナになって何かのノイズを拾ってしまったのではないかとおもいますが、根拠がないのではっきりしません・・・。いずれにせよ、Dir端子を接続して対策を取ったカウンターとモータードライバに関しては、10時間ほど連続でGコードをループさせましたがエラーが発生し無いことを確認しています。一応、パルスカウンターやLinuxCNCはともに問題なかったようです。コメントをキャンセルメールアドレスが公開されることはありません。コメントデータの処理方法の詳細はこちらをご覧ください。自作工房について多関節によるリアルな鳥型飛行機の開発や、自作パソコンの話題、NCフライスを使った工作などを扱っています。最近はもっぱら鳥型飛行機の開発が中心となっています。ついて記事がお役に立ちましたら、ブログ運営をサポートしていただけると大変助かります。下記のリストからサポートしていただけるものがございましたら幸いです。ついて記事がお役に立ちましたら、ブログ運営をサポートしていただけると大変助かります。下記のリストからサポートしていただけるものがございましたら是非ともサポートのほどよろしくお願いいたします。