Arduinoの基礎 - ステッピングモータ
概要
ここでは、2相4ワイヤの小さなステッピングモータを、Arduinoから制御する方法について記載する。
一般的なモータは連続回転するのを期待する時に使用するが、ステッピングモータは特定の角度だけ回って止まるような動作をしたい場合に使用する。
制御単位となるのはステップで、それぞれのステッピングモータ毎に1ステップでどのくらいの角度で回転するか決まっている。
ステッピングモータの使用
ここで使用する小さなステッピングモータは、1ステップで18[度]回転するモータで、20ステップで1回転する。
また、使用するステッピングモータの種類は、バイポーラステッピングモータといい、内部にコイルが2つあり、その極性を切り替えることでモータの回転角を操作する。
ステッピングモータドライバIC(トランスレータ)として、L293Dを使用する。
L293DはデュアルHブリッジICであり、以下のように接続する。
1 in、2 in、3 in、4 inと記載した箇所は、Arduinoに接続する。
また、L293Dはインターナルのフライバックダイオードを内蔵している。
他のステッピングモータドライバICを使用する場合(SN754410等)は、フライバックダイオードを付ける必要がある。
ブレッドボードに接続した様子は次の通り。
ここで使用するステッピングモータは、下図のようなペア(1 inと2 inまたは3 inと4 in)とする。
Arduinoのサンプルコードを以下に記述する。
Stepper
クラスのsetSpeed
メソッドでモータの回転速度をRPMで指定する。
RPMは1分間に回転する回転数である。例えば、60[rpm]なら1分間に60回転、すなわち、1秒で1回転する。
サンプルコードでは、180[rpm]を指定している。
step
メソッドでは、現在の位置から回転するステップ数を指定する。負の値を指定すると逆回転になる。
なお、step
メソッドは同期関数で、操作が終了するまでブロックする。したがって、モータが回転している際は他の動作が止まる。(割り込み制御は可能)
#include <Stepper.h>
const int stepsPerRevolution = 20;
Stepper stepper(stepsPerRevolution, 8, 9, 10, 11);
void setup()
{
stepper.setSpeed(180);
}
void loop()
{
stepper.step(10);
delay(1000);
stepper.step(-10);
delay(1000);
}