質問:
パルスとステッパーRPMの関係を理解する
Dylan Madisetti
2014-04-30 03:18:32 UTC
view on stackexchange narkive permalink

これは Physics StackExchangeにとってより良い質問かもしれないので、質問を移動する必要があるかどうか教えてください。

制御に使用している非常に単純なスクリプトがありますステッピングモーターのRPM:

  void loop(){digitalWrite(PIN、HIGH); delayMicroseconds(待機); digitalWrite(PIN、LOW);}  

ご覧のとおり、かなり標準的なパルスを生成しているので、Arduinoをモーターを管理するドライバーに接続しています。 wait 変数は、タコメーターでRPMを測定し、値を微調整して得た2次方程式に由来します。

  //データからRPM = 31729 / x + 17.327したがって、x = 31729 /(RPM-17.527)wait = M /(RPM-C);  

これは非常にうまく機能し、わずか1〜2回転で一貫して測定値を取得します。しかし、傾斜と切片は私には完全に恣意的に見えます。 Arduinoのクロック速度と関係がある可能性はありますか?私は宇野を使っていますが、数字をいじってみると、関係が見つからないようです。私の知る限り、ドライバーは配線されているように見えるので、方程式とはあまり関係がないと思います。

これらの値、傾き/切片の意味について何か考えはありますか?

式: RPM = 31729 / wait + 17.327 M: 31729 およびC: 17.327

これで適切なパルスが発生するのだろうか。 `digitalWrite(PIN、LOW);`の後に遅延が必要です。
他の潜在的な問題の中でも、クロックに依存する粒度と追加の遅延が確実にあります。安定した回転のために、ハードウェアタイマーを使用してピンを駆動するか、少なくとも全体の速度が一定に保たれるように割り込みをトリガーすることに失敗することを検討してください。システムが適切に動作している限り、ステップレートの固定係数が必要ですが、特に負荷または共振の下で、ステップをスキップし始める速度と加速度の両方があります。
二 答え:
BrettAM
2014-05-26 03:04:24 UTC
view on stackexchange narkive permalink

この質問に対する本当の答えは、使用しているハードウェアを正確に理解する必要があります。パルスごとに1ステップを想定した式では、遅延は次のようになります。

wait =(MicroSecondsPerMinute)(1 / RPM)(1 / PulsesPerRevolution)-オーバーヘッド

ここで、オーバーヘッドは、digitalWriteを2回実行してループするのにかかる余分な時間です。小さいですが、ゼロの場合、信号がLOWである時間もゼロになるため、コードは機能しません。

数値は、1回転あたりのパルス数が1891年前後であることを示しています。モーターが配線されている1回転あたりのステップ数と、ドライバーが実行しているマイクロステッピングのビット数の積。たとえば、3ビットのマイクロステッピング(「真の」ステップごとに8つの小数ステップ)を備えた225ステップモーターのPPRは1800になります。あなたの数は一般的な設定と正確には一致しませんが、予想される範囲内にあり、小さなステッパーでは1600と2000が正常です。

「オーバーヘッド」という用語があるため、待機の関数としてのRPMは線形ではありません。定数値はRPMの関数である必要があります。実際、RPMが1分あたりのマイクロ秒数よりもはるかに大きくなると、RPMと等しくなるように収束するはずです。この場合、RPMが非常に低いため、17に近づけることはおそらく有効であり、すべてのエラーは小さすぎて気付かないでしょう。ただし、PPR値の奇妙さを引き起こしている可能性があります。

Sonali_B
2017-07-06 12:39:38 UTC
view on stackexchange narkive permalink

1パルスはステッパーの1ステップに相当し、rpmはステッパーが1分間に行う回転数です。stepper.hライブラリとAccelstepperライブラリを理解してください



このQ&Aは英語から自動的に翻訳されました。オリジナルのコンテンツはstackexchangeで入手できます。これは、配布されているcc by-sa 3.0ライセンスに感謝します。
Loading...