2016-10-26 18 views
0

2つのモーターを使用して2つの軸を使用して円または曲線に近いもの(たとえばサイン)を描こうとしています。基本的に私は2つのnema17 steppersモーターを備えたラズベリーPiとAdafruitモーターHATを走らせています。2つのモーター軸を使用した描画カーブ

「スムーズ」なものを実現したいと思っていますが、実際に「エイリアス」の結果しか得られないようですが、これはSteppersのモーターを駆動しているからです。 (しかし、私は、3Dプリンタは、ステッパーモーターを使用して、いくつかの良い結果を達成信じて)いくつかの数学を行う

、私は、各モータの速度出て作業することができます: X = RのCoS(t)をし、Y = Rの罪(T) したがって、Vx = -R sin(t)とVy = R cos(t)

しかし、私はこれが最良の方法であるとは確信していませんが、ステッピングモータのスピードを駆動できますが、ステップ。

カーブのすべてのxとyの位置を計算することも考えましたが、やはり私のビルドの精度は十分に高いとは確信していません。

私はAdafruitライブラリを使用しています:https://github.com/adafruit/Adafruit-Motor-HAT-Python-Libraryですので、ハードウェアコードを掘り下げるのではなく、ライブラリが提供する機能を使用しています。基本的には、それぞれのモーターをxステップ分だけ別々に動かすことができます。そして、これはステッパーカードです:https://www.adafruit.com/product/2348

ビルド(これは非常にDIYです):https://www.youtube.com/watch?v=uqSTZiI4KuY

+1

あなたのステッピングモーターが1つのステップがあるようにむしろハイギアされている場合1mmなら、あなたは滑らかに見えるものを得るのが非常に難しいでしょう。 1ステップが例えばOTOHならば、 0.1mm(またはそれ以下)の場合、滑らかな線を得ることができます。あなたはまた、多くの手順を踏む必要があります。たとえば、円で近似しようとするとします。 8個のサンプルがあれば、八角形になります。より正確なヘルプを得るには、コードを投稿する必要があります。 – barny

+0

私は私の質問に詳細を追加しました。私は良い決断をすることができると信じている、私は1ステップ<0,1ミリメートルと思う。 – batmat

+0

モーターを一度に動かすだけならば、必然的に短い水平線または垂直線が得られます。特に、モーターの始動/停止による必然的な揺れは避けられません。対角線を取得するには、両方のモーターを同時に実行する必要があります。それぞれの速度は、描画しようとしているラインの傾きに対応していなければなりません。 – barny

答えて

0

まず、いくつかの仕様が順に次のようになります。あなたのモーターの制御をどのように見えるか

  1. 訂正単位はありますか?(誤ってドライブして、モーターの位置が失われないように値を補正すると)補正単位がありますか?あなたはモーションコントロールプロセッサーを持っていますか、あなた自身のパルスを生成していますか?

  2. 目標の精度とステップの解像度はどのくらいですか?

現在、いくつかの洞察:

は、私はあなたのアプローチは、あなたの代わりに任意の速度であなたのモーターを駆動することができないので、移動スロープが何であるので、あなたはモーターとの速度比を維持する必要があり良いとは思いませんあなたが必要です。これらは私が普通に取り扱っておりますエイリアシングや歪みの主な理由です:

  1. あなたはカーブのためにスムーズに、速度を駆動するために管理する場合は、時にはそれが意志としてステップ分解能を無視することができます

    ステップ分解能慣性と建設の柔軟性によって滑らかにオーバーライドすることができます。あなたが本当に大きなステップを踏んでいない限り、それは大きな問題ではないはずです。

  2. 振動

    あなたが望む任意の速度でステッピングモータを駆動することができないので、これが最大の問題です。各モーターは異なっており、モーターが機械的に接続されているもの(ステータとローターの両方)も重要です。ステッパーモーターは、通常、低周波数で共振領域を持っていますので、始動モーターを実行する必要があります(できるだけ避けてください)か、できるだけ早く駆動してください。

    この領域で作業している場合、モーターは特定の振動を生成しています。たとえば、直線の代わりに、sin波のようなものがあります。この領域はまた、多くのエネルギーを失うような他の問題を提示し、有用なトルクは通常の操作レベルのほんの一部であり、ダイナミクスのすべての計算をほとんど不可能にします。

    あなたが問題である周波数を識別したい場合は、100,150,200, 250,...その後、数秒間たとえば50Hzのために一定の周波数を使用してモータを駆動して、ノイズやモーターを聞く起動時に共鳴エリアの近くにある振動/ジャンプを開始します。あなたがより近くに近づくほど、それは得られます!

    モータを接続していない場合は、モータの共振周波数が得られます。しかし、メカニック自身の1つ以上の共鳴領域が存在する可能性があります。そのため、メカニックに負荷をかけてもこれを行う必要があります。 (多くのCNCのような行う)

  3. 制御ユニット

    あなたが各モータの動きプロセッサを離れてしまった場合は、曲線を作ることはメカニックとギアが提供できる最高の精度では不可能です。なぜなら、カーブに必要なビットストリームは同期的に生成されなければならず、そのような設定では不可能であるからである。そのような場合には、あなたの曲線を多くの行で近似すれば、出力は通常良く見えます。そのような設定をカーブで駆動すると、出力は、特に各軸ごとに異なる機械的特性が得られた場合、望ましい形状の周りを振動します。

    自分でパルスを生成する場合はOKです。カーブ補間によるモーションコントロールは簡単ではありません。私はカーブに沿って制御点を生成して、レンダリングしてから速度を計算して、モータが位置を失わず、工具の速度が遅くなってからCNCに接続するようにします。その後、ステップ解像度でカーブを補間し、それぞれの駆動モータに制御ビット+/-が存在する制御ストリームを生成し、それから同期的にモータに送信します。しかし、私がテキストのいくつかの行に入れたものは非常に複雑で、書籍全体を満たすことができます。私は10年以上にわたり私の仕事のためにこの材料をコーディングしています(それは私の請求書を支払うので)、私はまだ野生の新人です。

  4. 電気障害

    時には寒ジョイントと、高ノイズが特にHW製の家庭に予期せぬ多くの問題を引き起こす可能性があります。新生児は通常、シールド、ケーブルの長さと配置、EMCやRFノイズ、電源/デジタル/ブロッキングの敷地などを無視します。電気が正常であることを確認するには、それをテストできます。あなたのモーターコントロールへのカウンターを接続して、パルスの数がそうであるようになっているかどうかを確認してください。また、オシロスコープを使用して、ノイズの掃引動作のためにピンの一部をプローブしても問題はありません。モーターとモータードライバーは多くのノイズを発生させることがあり、モーションコントロールや送信データを歪めることがあります。

    しかし、あなたはチャンスをうかがっ開始する前に、この読み:だから私のアドバイスは、あなたが得た歪みの原因であるかを検出し、その後場合はそれを削除され

をあなたがすることができます...

+0

ありがとう、これは非常に完全な応答です、私はエイリアシングと解決のためのあなたのすべての点を理解し、私は私の質問にいくつかの詳細を追加しました。 – batmat

+0

@batmatはモーションコントロールプロセッサーユニットが存在しないようですが(HW)、私はAdafruitライブラリの経験がありませんので、SWコントロールレイヤーがあるかどうかは判断できませんが、弾丸#3のもの。 – Spektre

関連する問題