- 必要な材料
- ステッピングモーター(28BYJ-48)
- ULN2003モータードライバーIC
- 回路図と接続
- STM32F103C8を使用した回転ステッピングモーター
- ステッピングモーター用のSTM32のプログラミング
ステッピングモーターはブラシレスDCモーターで、小さな角度で回転させることができます。これらの角度はステップと呼ばれます。通常、ステッピングモーターは200ステップを使用して360度の回転を完了します。つまり、ステップごとに1.8度回転します。ステッピングモーターは、ロボット、アンテナ、ハードドライブなど、正確な回転運動を必要とする多くのデバイスで使用されています。適切な指示を与えることで、ステッピングモーターを特定の角度に回転させることができます。主に2種類のステッピングモーター、ユニポーラ と バイポーラが利用できます 。ユニポーラは操作、制御が簡単で、入手も簡単です。このチュートリアルでは 、ステッピングモーターをSTM32F103C8(ブルーピル)ボードとインターフェースします。
必要な材料
- STM32F103C8(青い丸薬)
- ステッピングモーター(28BYJ-48)
- ULN2003 IC
- ポテンショメータ10k
- ブレッドボード
- ジャンパー線
ステッピングモーター(28BYJ-48)
28BYJ-48は、5V電源を必要とするユニポーラステッピングモーターです。モーターは4コイルのユニポーラ配置で、各コイルの定格は+ 5Vであるため、Arduino、Raspberry Pi、STM32などのマイクロコントローラーで比較的簡単に制御できます。ただし、ステッピングモーターを使用するため、ULN2003などのモータードライブICが必要です。大電流を消費すると、マイクロコントローラが損傷する可能性があります。
注意すべきもう1つの重要なデータは、 ストライド角度:5.625°/ 64です。 これは、8ステップシーケンスで動作する場合、モーターが各ステップで5.625度移動し、1回転を完了するのに64ステップ(5.625 * 64 = 360)かかることを意味します。その他の仕様は、以下のデータシートに記載されています。
また、ステッピングモーターと他のマイクロコントローラーとのインターフェースも確認してください。
- ステッピングモーターとArduinoUnoのインターフェース
- RaspberryPiによるステッピングモーター制御
- 8051マイクロコントローラーとインターフェースするステッピングモーター
- ステッピングモーターとPICマイクロコントローラーのインターフェース
ステッピングモーターは、マイクロコントローラーなしで制御することもできます。このステッピングモータードライバー回路を参照してください。
ULN2003モータードライバーIC
マイクロコントローラから受信したパルスに従ってモーターを駆動するために使用されます。以下はULN2003の図です。
ピン(IN1〜IN7)は入力ピンであり、(OUT 1〜OUT 7)は対応する出力ピンです。COMには、出力デバイスに必要な正の電源電圧が与えられます。ステッピングモーターのその他の接続については、以下の回路図のセクションを参照してください。
回路図と接続
以下は、上記の回路図の接続の説明です。
STM32F103C8(ブルーピル)
下の図でわかるように、PWMピンは波形(〜)で示され、ステッピングモーターへのパルス出力に使用できる15個のピンがあります。必要なピンは4つだけで、(PA0からPA3)を使用します。
ULN2003モータードライバーICを搭載したSTM32F103C8
ピン(PA0〜PA3)は、ULN2003 ICの入力ピン(IN1-IN4)に接続されている出力ピンと見なされます。
STM32F103C8のピン |
ULN2003ICのピン |
PA0 |
1で |
PA1 |
IN2 |
PA2 |
IN3 |
PA3 |
IN4 |
5V |
COM |
GND |
GND |
ステッピングモーター付きULN2003IC(28BYJ-48)
ULN2003 ICの出力ピン(OUT1-OUT4)は、ステッピングモーターのピン(オレンジ、イエロー、ピンク、ブルー)に接続されています。
ULN2003ICのピン |
ステッピングモーターのピン |
OUT1 |
オレンジ |
OUT2 |
黄 |
OUT3 |
ピンク |
OUT4 |
青い |
COM |
赤 |
ポテンショメータ付きSTM32F103C8
ポテンショメータは、ステッピングモーターの速度を設定するために使用されます。
ポテンショメータ |
STM32F103C8 |
左(入力) |
3.3 |
センター(出力) |
PA4 |
右(GND) |
GND |
STM32F103C8を使用した回転ステッピングモーター
以下は、ステッピングモーターを操作するためのいくつかの手順です。
- ポテンショメータを変えてステッピングモーターの速度を設定します。
- 次に、ARDUINO IDE([ツール]-> [シリアルモニター])またはCTRL + SHIFT + Mにあるシリアルモニターを使用して、時計回り(+値)または反時計回り(-値)に回転する手順を手動で入力します。
- シリアルモニターで指定された入力値に従って、ステッピングモーターで特定の回転ステップが発生します。
例えば
シリアルモニターで与えられる価値 |
回転 |
2048 |
(360)CLK WISE |
1024 |
(180)CLKワイズ |
512 |
(90)CLKワイズ |
-2048 |
(-360)アンチCLKワイズ |
-1024 |
(-180)ANTI CLK WISE |
-512 |
(-90)ANTI CLK WISE |
ステッピングモーター用のSTM32のプログラミング
前のチュートリアルと同様に、FTDIプログラマーを使用せずにUSBポートを介してArduinoIDEでSTM32F103C8をプログラミングしました。Arduino IDEを使用したSTM32のプログラミングについては、リンクをたどってください。Arduinoのようにプログラミングを進めることができます。 完全なコード はプロジェクトの最後に提供されます。
まず、ステッパーライブラリファイルを含める必要があります #include
#include
次に、noを定義します。回転時に完了するステップの数。ここでは、フルステップ(4ステップシーケンス)を使用しているため、32を使用します(360/32 = 11.25度)。したがって、1つのステップで、シャフトはストライド角度である11.25度移動します。4ステップシーケンスでは、1回転に4ステップが必要です。
#defineステップ32
8ステップシーケンス(360/64 = 5.625)のストライド角度があるハーフステップモードを使用することもできます。
1回転あたりのステップ数= 360 /ステップ角度
速度を設定しているので、ポテンショメータに接続されているPA4からアナログ値を取得する必要があります。そのためにピンを宣言する必要があります
const int speedm = PA4
次に、これらの値を整数型の変数に格納することによってアナログ値をデジタルに変換しました。その後、速度を設定するためにADC値をマップする必要があるため、次のステートメントを使用します。STM32でのADCの使用について詳しくは、こちらをご覧ください。
INT ADC = analogRead(speedm )。 int result = map(adc 、0、4096、1、1023 );
速度を設定するには、 stepper.setSpeed(result); を使用し ます。 速度範囲は(1-1023)です。
モーターに接続するピンを設定するには、以下のようなインスタンスを作成する必要があります。これらの手順のほとんどはこのパターンで間違いを犯すため、これらの手順には注意してください。それらは間違ったパターンを与え、そのためコイルにエネルギーを与えることができません。
ステッパーステッパー(STEPS、PA0、PA2、PA1、PA3);
以下のステートメントは、シリアルモニターからステップの値を取得するために使用されます。たとえば、1回転(32 * 64 = 2048)には2048の値が必要です。つまり、64がギア比になり、32が1回転のハーフステップシーケンスになります。
回転= Serial.parseInt();
コードの下には、インスタンスを呼び出し、.IFモーターを実行するために使用される 回転 値1は1時間ステッパー関数を呼び出すされ、1つの移動が行われます。
stepper.step(rotate);
デモンストレーションビデオを含む完全なコードを以下に示します。また、他のさまざまなマイクロコントローラーとのインターフェースを使用して、ここですべてのステッピングモーター関連プロジェクトを確認してください