drv8825ドライバで駆動するいくつかのステッピングモータを使って学校プロジェクトを行っています(実際には天井走行クレーンになります) Arduino UNOと共演しました。まず第一に、我々は莫大な金額を費やすことができませんでした。 問題はこれです:私たちは、モータの速度を制御するMPU6050 acc +ジャイロを通してPID制御を使用するつもりです(負荷は動きの中で可能な限り頑丈であると考えられています)。ステッピングモータの速度を変更する唯一の2つの方法がある:DCモータのスピードコントロールStepper(モーター:NEMA 17、ドライバ:drv8825)[周波数調整]
1)遅延メソッドを介して、例えば:このメソッドを使用して
for (i = 0; i<400; i++)
{
digitalWrite(StepPinB, LOW);
delayMicroseconds(500);
digitalWrite(StepPinB, HIGH);
delayMicroseconds(500);
}
、Arduinoのは、すべての時間忙しくなるので、私は意志正確な速度に達するために、センサの値を連続的にチェックすることができない。このため、私はこの方法を使うことができません。
2) "電圧 - 周波数コンバータ"(可変電圧は "Arduino PWM" + "ローパスフィルタ"で与えられます)を使用するか、周波数を変更するための「デジタルポテンショメータ」を備えた「無安定マルチバイブレータ」(「安定発振器」)。 私はすでに "電圧 - 周波数コンバータ"方式を試しましたが、回路のノイズのために動作しませんでした。
ステッパモーターの速度をプログラム中で連続的に変更するにはどうすればよいかを知るために助けてください(また、ポイント2で示されるように、可変周波数を作る良い方法を見つけることができます) 。
これは、割り込みにどのようにアタッチするかではありません。 'clockSignal()'を呼び出して 'void'をつけるだけです。 –
@gre_gorこれは、私が示唆している(やはり、質問の下のコメントであるべきです)、私が見つけることができる最初の例(ドイツ語:http://playground.arduino.cc/Deutsch/HalloWeltMitInterruptUndTimerlibrary)を使用しようとすると起こります。右の実装に自由に編集してください。しかし、とにかく、その背後にあるアイデアは役に立つかもしれません。 –
あなたの答えをありがとう、今私はあなたのコードを私はまだ私のモータを停止せずに私のセンサーをチェックできるかどうかを確認するいくつかの試みを行うつもりです。 – Jacopo