2016-04-28 222 views
0

私はArduinoMega 2560(R3)を使用して24V NEMA23ステッパーモーターを制御しようとしています。
私はST-M5045ドライバを使用しています。Arduinoステッパーライブラリ作業中/ AccelStepperが動作しない

デフォルトのArduinoステッパーライブラリを使用すると、モーターは正常に動作します。

私はステップのためのピン31を使用して、方向のためのピン30を使用しています。

私のコードは次のようになります。

#include <Stepper.h> 

const int stepsPerRevolution = 200; // change this to fit the number of steps per revolution 

void setup() { 
    pinMode(30,OUTPUT); 
    pinMode(31,OUTPUT); 
    digitalWrite(30,LOW); 
    digitalWrite(31,LOW); 
} 

void loop() { 
    digitalWrite(31,HIGH); 
    digitalWrite(31,LOW); 
} 

、私はAccelStepperを使用して、同じモーターを操作したいが、応答を取得することはできません。

#include <AccelStepper.h> 

AccelStepper stepper3(1, 31, 30); 

void setup() 
{ 
    stepper3.setMaxSpeed(400.0); 
    stepper3.setAcceleration(100.0); 
    stepper3.moveTo(100000); 
} 

void loop() 
{ 
    stepper3.run(); 
} 

なぜこれが動作していない上の任意のアイデア:

私のコードは嘘に見えますか? 私はここでいくつかのバリエーションを試したことがあります。

ご協力いただきありがとうございます。

よろしく、いくつかのテストの後 ジェームズ

+1

[一定速度の例](http://www.airspayce。 com/mikem/arduino/AccelStepper/ConstantSpeed_8pde-example.html)のライブラリですか?もちろんステッパードライバの定義を使うべきです。 – frarugi87

+0

私はAccelStepper定義の最初のパラメータとして1,2,4を入れたバリエーションも含めて、これも試しました。 – user1805103

+0

"STEP"と "DIR"入力を持つステッパードライバを持っている場合、AccelStepper stepper3(1、31、30);はそのようにしてください。元のコードでは動作しますが、例?あなたはそれを長時間走らせておきましたか?あなたのモーターは実際には遅いようです(あなたのコードでは約1Mステップ/秒を送信しています)ので、おそらくそれはゆっくりと動きます。 – frarugi87

答えて

2

問題はスピードだけだったように、それが見えます。

オリジナルのコード(マニュアルピンの動きのあるもの)は、ステップのために非常に高い周波数のクロックを生成しました(1MHzに近いと思います)。

したがって、400ステップ/秒の最高速度を使用する場合、ユーザーはモーターが停止していると考えることができます。しかし、実際には、モータは回転していますが、回転が遅すぎます。

モータが動作することを確認するには、コントローラのステップピンがパルスされているかどうかを確認するだけで十分です。あるいは、速度を上げて、モーターが実際に回転していることを確認してください。

1つの発言。これらのステップはすべて本当に必要ですか?つまり、モーターが本当に遅くなっているのは、ドライバをマイクロステップモード(1ステップあたり32パルスまたは64パルス)に設定したためです。このような場合は、非常に正確な動きが本当に必要な場合を除いて、これを下げる必要があります(ただし速度を犠牲にしなければなりません)。

+1

再び、すばらしいコメント。私はおそらく、マイクロステッピングスイッチが間違って設定されている可能性があります。それを見ると、25600 steps/revが必要です。それはあまりにも高いです。はるかに合理的な数値(3200など)に設定されていた場合、元のコードが機能していたはずです。再度、感謝します。 – user1805103

+0

フォローアップをお願いできますか?AccelStepperで指定する速度をどのように計算しますか?私は200ステップ/ revを使用していると言うモーターを使用しています。さらに、ST-M5045を6400パルス/回転に設定しました。これは32マイクロステップに相当すると思います。私がAccellStepper以外のコードを使用すると、モーターが動きます。私のAccelStepperコードを使用すると、スピードが1/4またはそれ以下になります。たとえば、ランダムサンプルコードを使用し、20000をベースとして使用すると、それはまだ非常に遅いです。どうすればスピードを上げることができますか?ありがとう – user1805103

+0

@ user1805103まあ、私は20000パルス/秒を設定すると、毎秒約3回転することになると思います。速度が遅い場合は、マイクロコントローラの速度が十分でない可能性があります。その速度を上げることはできません。これがあなたのケースであれば、不都合なことに、別のボードを選択する以外の方法はありません。コントローラーボードをより少ないステップ/回転に設定してください(結局、6400パルス/回転が本当に高いです)。 – frarugi87

関連する問題