0

2次元軸で2つのモーターを使用して、円または曲線に近いもの(たとえば正弦波)を描画しようとしています。基本的に、ラズベリー Pi と Adafruit モーター HAT を 2 つの nema17 ステッパー モーターで実行しています。

「滑らかな」何かを達成したいのですが、本当に「エイリアスされた」結果しか得られないようです。(しかし、3D プリンターはステッピング モーターを使用し、いくつかの良い結果が得られると思います)

いくつかの計算を行うと、各モーターの速度を計算できます。X = R cos(t) および Y = R sin(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

4

1 に答える 1

0

まず、いくつかの仕様が順番になります。

  1. あなたのモーター制御はどうですか?

    何を制御していますか (速度、+/- パルス、???) 補正ユニットはありますか? モーション コントロール プロセッサはありますか、それともパルスを自分で生成しますか?

  2. 目標精度とステップ分解能は?

今いくつかの洞察:

モーターを任意の速度で駆動することはできず、モーター間の速度比を維持する必要があるため、あなたのアプローチは良いとは思いません。これらは、私が通常扱っているエイリアシングと歪みの主な理由です。

  1. ステップ分解能

    速度を滑らかに駆動することができれば、曲線の場合、慣性と構造の柔軟性によってスムーズにオーバーライドされるため、ステップ解像度を無視できる場合があります。したがって、非常に大きなステップを踏まない限り、それほど問題になることはありません。

  2. 振動

    ステッピングモーターを任意の速度で駆動できないため、これが最大の問題です。各モーターは異なり、モーターが機械的に接続されているもの (ステーターとローターの両方) も重要です。ステッピング モーターは通常、低周波に共振領域があるため、モーターの始動は、(可能であれば) 回避するか、できる限り迅速に実行する必要があります。

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

    どの周波数が問題であるかを特定したい場合は、たとえば50Hz数秒間一定の周波数でモーターを駆動する100,150,200, 250,...と、ノイズが聞こえ始めたり、モーターがジャンプ/振動し始めたりすると、共振領域の近くにいます。近づけば近づくほど悪化!

    取り付けられていないモーターでこれを行うと、モーターの共振周波数が得られます。しかし、メカニック自体にも 1 つ以上の共鳴領域が存在する可能性があるため、これはメカニック内で負荷がかかっている場合にも行う必要があります。

  3. コントロールユニット

    (多くのCNCがそうであるように)モーターごとに別々のモーションプロセッサを使用している場合、機械とギアが提供できる最高の精度で曲線を作成することはできません. 曲線に必要なビットストリームを同期的に生成する必要があるため、個別のモーションコントロールユニットは線だけを完全に(そして最良のシナリオでのみ)実行できるため、このような設定では不可能です。このような場合、多くの線で曲線を近似すると、出力は通常より良く見えます。代わりに曲線を使用してそのような設定を駆動すると、特に各軸ごとに異なる機械的特性が得られた場合、出力は目的の形状の周りで振動します。

    自分でパルスを生成する場合は、問題ありません。曲線補間によるモーションコントロールは簡単ではありません。「レンダリング」したい曲線に沿って制御点を生成し、速度を計算して、モーターの位置がずれないようにし、CNCに取り付けられたツールの速度よりも速く処理が行われないようにします。その後、曲線をステップ分解能で補間し、+/-駆動される各モーターに存在する制御ビットを含む制御ストリームを生成し、同期してモーターに送信します。しかし、私が数行のテキストに入れたことは非常に複雑で、本全体を埋めることができます. 私は 10 年以上にわたって自分の仕事のためにこのようなものをコーディングしており (請求書を支払っているため)、私はまだこの分野の新人です。

  4. 電気的障害

    コールド ジョイントや高ノイズは、特に自家製のハードウェアで多くの予期せぬ問題を引き起こすことがあります。初心者は通常、シールド、ケーブルの長さと配置、EMC または RF ノイズ、電源/デジタル/ブロッキング グラウンドなどを無視します。電気系統に問題がないことを確認するために、テストすることができます。カウンターをモーター制御に接続し、パルスのカウントが正しいかどうかを確認します。また、オシロスコープを使用して、動作中のノイズについていくつかのピンをプローブしても害はありません。モーターとモータードライバーは多くのノイズを生成する可能性があり、モーションコントロールや送信データを歪ませることがあります。

    しかし、いじり始める前に、これを読んでください:

したがって、私のアドバイスは、あなたが得た歪みの原因を特定し、可能であればそれを取り除くことです...

于 2016-10-27T08:08:52.120 に答える