- ステッピングモーターの動作モード
- ステッピングモーターを制御するためのMATLABグラフィカルユーザーインターフェイスの作成
- Arduinoでステッピングモーターを制御するためのMATLABコード
- 必要な材料
- 回路図
- MATLABによるステッピングモーターの制御
ステッピングモーターは、離散ステップで回転するブラシレスDCモーターであり、多くの精密モーションコントロールアプリケーションに最適です。また、ステッピングモーターは、ポジショニング、速度制御、および低速で高トルクを必要とするアプリケーションに適しています。
MATLABの以前のチュートリアルでは、MATLABを使用してDCモーター、サーボモーター、および家電製品を制御する方法について説明しました。今日は、MATLABとArduinoを使用してステッピングモーターを制御する方法を学びます。MATLABを初めて使用する場合は、MATLABを使用した単純なLED点滅プログラムを開始することをお勧めします。
ステッピングモーターの動作モード
ステッピングモーターのコーディングを開始する前に、ステッピングモーターの動作または回転の概念を理解する必要があります。ステッパーモードの固定子は異なるコイルのペアで構成されているため、各コイルのペアはさまざまな方法で励起でき、これによりモードをさまざまなモードで駆動できます。以下は大まかな分類です
フルステップモード
フルステップ励起モードでは、最小の回転数(ステップ)で完全な360°回転を実現できます。ただし、これにより慣性が低下し、回転がスムーズになりません。フルステップ励起にはさらに2つの分類があり、 1つのフェーズオンウェーブステッピングと2つのフェーズオンモードです。
1. 1つのフェーズオンステッピングまたはウェーブステッピング: このモードでは、モーターの1つの端子(フェーズ)のみが常に通電されます。これはステップ数が少ないため、完全な360°回転を実現できます。ステップ数が少ないため、この方法で消費される電流も非常に少なくなります。次の表に、4相ステッピングモーターのウェーブステッピングシーケンスを示します。
ステップ | フェーズ1(青) | フェーズ2(ピンク) | フェーズ3(黄色) | フェーズ4(オレンジ) |
1 | 1 | 0 | 0 | 0 |
2 | 0 | 1 | 0 | 0 |
3 | 0 | 0 | 1 | 0 |
4 | 0 | 0 | 0 | 1 |
2. 2フェーズオンステッピング: この方法で名前が示すように、2フェーズは1つになります。ウェーブステッピングと同じステップ数ですが、一度に2つのコイルに通電するため、以前の方法よりも優れたトルクと速度を提供できます。欠点の1つは、この方法でもより多くの電力を消費することです。
ステップ |
フェーズ1(青) |
フェーズ2(ピンク) |
フェーズ3(黄色) |
フェーズ4(オレンジ) |
1 |
1 |
1 |
0 |
0 |
2 |
0 |
1 |
1 |
0 |
3 |
0 |
0 |
1 |
1 |
4 |
1 |
0 |
0 |
1 |
ハーフステップモード
ハーフステップモードは、1フェーズオンモードと2フェーズオンモードの組み合わせです。この組み合わせは、両方のモードの上記の欠点を克服するのに役立ちます。
両方の方法を組み合わせているのでご想像のとおり 、完全なローテーションを取得するには、この方法で8ステップを実行する必要があります 。以下に示す4相ステッピングモーターのスイッチングシーケンス
ステップ |
フェーズ1(青) |
フェーズ2(ピンク) |
フェーズ3(黄色) |
フェーズ4(オレンジ) |
1 |
1 |
0 |
0 |
0 |
2 |
1 |
1 |
0 |
0 |
3 |
0 |
1 |
0 |
0 |
4 |
0 |
1 |
1 |
0 |
5 |
0 |
0 |
1 |
1 |
6 |
0 |
0 |
0 |
1 |
7 |
1 |
0 |
0 |
1 |
8 |
1 |
0 |
0 |
0 |
したがって、任意のモードでステッピングモーターをプログラムすることを選択しますが、私は2相オンステッピングフルステップモードを好みます。この方法は1相法よりも高速であり、ハーフモードと比較すると、2相法のステップ数が少ないため、コーディング部分が少なくなります。
ステッピングモーターとそのモードの詳細については、こちらをご覧ください
ステッピングモーターを制御するためのMATLABグラフィカルユーザーインターフェイスの作成
次に、ステッピングモーターを制御するためのGUI(グラフィカルユーザーインターフェイス)を構築する必要があります。GUIを起動するには、 コマンドウィンドウに 次のコマンドを 入力します
ガイド
ポップアップウィンドウが開き、下の画像に示すように、新しい 空白のGUI を選択します。
次に、以下に示すように、ステッピングモーターを時計回りと反時計回りに回転させるための2つのトグルボタンを選択します。
ボタンのサイズを変更したり、ボタンの形状を変更したりするには、ボタンをクリックするだけで、ボタンの角をドラッグできます。トグルボタンをダブルクリックすると、その特定のボタンの色、文字列、タグを変更できます。下の写真に示すように、2つのボタンをカスタマイズしました。
あなたはあなたの選択に従ってボタンをカスタマイズすることができます。これを保存すると、MATLABの エディターウィンドウ にコードが生成され ます 。プロジェクトに関連するタスクを実行するためにArduinoをコーディングするには、この生成されたコードを常に編集する必要があります。以下では、MATLABコードを編集しました。コマンドウィンドウ、エディターウィンドウなどの詳細については、MATLABチュートリアルの開始を参照してください。
Arduinoでステッピングモーターを制御するためのMATLABコード
ステッピングモーターを制御するための完全なMATLABコードは、このプロジェクトの最後にあります。さらに、ダウンロード用にGUIファイル(.fig)とコードファイル(.m)をここに含めます(リンクを右クリックして[名前を付けてリンクを保存…]を選択します))。これを使用して、要件に応じてボタンをカスタマイズできます。以下は、2つのトグルボタンを使用してステッピングモーターを時計回りと反時計回りに回転させるために行ったいくつかの調整です。
以下のコードをコピーして、行番号に貼り付けます。74 mファイルを実行するたびに、ArduinoがMATLABと通信していることを確認します。
すべてクリア; グローバルa; a = arduino ();
下にスクロールすると、GUIの両方のボタンに対して2つの関数が作成されていることがわかります。次に、クリック時に実行するタスクに応じて、両方の関数にコードを記述します。
では 時計回りの ボタンの機能、コピーして、時計回りの方向にモーターを回転させるだけの機能の終了前に、コードの下に貼り付けます。ステッピングモーターを時計回りに連続的に回転させるために、 whileループ を使用 して 、時計回りに2つのフェーズオンステッピングフルモードステップを繰り返します。
get(hObject、 'Value') グローバルa; writeDigitalPin(a、 'D8'、1); writeDigitalPin(a、 'D9'、0); writeDigitalPin(a、 'D10'、0); writeDigitalPin(a、 'D11'、1); 一時停止(0.0002); writeDigitalPin(a、 'D8'、0); writeDigitalPin(a、 'D9'、0); writeDigitalPin(a、 'D10'、1); writeDigitalPin(a、 'D11'、1); 一時停止(0.0002); writeDigitalPin(a、 'D8'、0); writeDigitalPin(a、 'D9'、1); writeDigitalPin(a、 'D10'、1); writeDigitalPin(a、 'D11'、0); 一時停止(0.0002); writeDigitalPin(a、 'D8'、1); writeDigitalPin(a、 'D9'、1); writeDigitalPin(a、 'D10'、0); writeDigitalPin(a、 'D11'、0); 一時停止(0.0002); 終わり
今では 反時計回り ボタンの機能、反時計回りの方向にモーターを回転させる機能のあるコードの下に貼り付けます。ステッピングモーターを反時計回りに連続的に回転させるために、 whileループ を使用 して 、反時計回りに2つのフェーズオンステッピングフルモードステップを繰り返します。
get(hObject、 'Value') グローバルa; writeDigitalPin(a、 'D8'、1); writeDigitalPin(a、 'D9'、1); writeDigitalPin(a、 'D10'、0); writeDigitalPin(a、 'D11'、0); 一時停止(0.0002); writeDigitalPin(a、 'D8'、0); writeDigitalPin(a、 'D9'、1); writeDigitalPin(a、 'D10'、1); writeDigitalPin(a、 'D11'、0); 一時停止(0.0002); writeDigitalPin(a、 'D8'、0); writeDigitalPin(a、 'D9'、0); writeDigitalPin(a、 'D10'、1); writeDigitalPin(a、 'D11'、1); 一時停止(0.0002); writeDigitalPin(a、 'D8'、1); writeDigitalPin(a、 'D9'、0); writeDigitalPin(a、 'D10'、0); writeDigitalPin(a、 'D11'、1); 一時停止(0.0002); 終わり
必要な材料
- MATLABがインストールされたラップトップ(設定:R2016a以降のバージョン)
- Arduino UNO
- ステッピングモーター(28BYJ-48、5VDC)
- ULN2003-ステッピングモータードライバー
回路図
MATLABによるステッピングモーターの制御
回路図に従ってハードウェアをセットアップした後、実行ボタンをクリックするだけで、編集したコードを.mファイルで実行できます。
MATLABは応答するのに数秒かかる場合があります。以下に示すように、MATLABが左隅の下側にビジーメッセージを表示するまで、GUIボタンをクリックしないでください。
すべての準備ができたら、時計回りまたは反時計回りのボタンをクリックしてモーターを回転させます。トグルボタンを使用しているため、もう一度ボタンを押すまで、ステッピングモーターは時計回りに動き続けます。同様に、反時計回りのトグルボタンを押すと、もう一度ボタンを押すまでモーターが反時計回りに回転し始めます。