Arduinoの基礎 - ステッピングモータ

提供:MochiuWiki - SUSE, Electronic Circuit, PCB
2020年8月7日 (金) 06:28時点におけるWiki (トーク | 投稿記録)による版 (ページの作成:「== 概要 == ここでは、2相4ワイヤの小さなステッピングモータを、Arduinoから制御する方法について記載する。<br> <br> 一般的なモ…」)
(差分) ← 古い版 | 最新版 (差分) | 新しい版 → (差分)
ナビゲーションに移動 検索に移動

概要

ここでは、2相4ワイヤの小さなステッピングモータを、Arduinoから制御する方法について記載する。

一般的なモータは連続回転するのを期待する時に使用するが、ステッピングモータは特定の角度だけ回って止まるような動作をしたい場合に使用する。
制御単位となるのはステップで、それぞれのステッピングモータ毎に1ステップでどのくらいの角度で回転するか決まっている。


ステッピングモータの使用

ここで使用する小さなステッピングモータは、1ステップで18[度]回転するモータで、20ステップで1回転する。
また、使用するステッピングモータの種類は、バイポーラステッピングモータといい、内部にコイルが2つあり、その極性を切り替えることでモータの回転角を操作する。

ステッピングモータドライバIC(トランスレータ)として、L293Dを使用する。
L293DはデュアルHブリッジICであり、以下のように接続する。
1 in、2 in、3 in、4 inと記載した箇所は、Arduinoに接続する。

Arduino SteppingMotor L293D 1.png


また、L293Dはインターナルのフライバックダイオードを内蔵している。
他のステッピングモータドライバICを使用する場合(SN754410等)は、フライバックダイオードを付ける必要がある。

ブレッドボードに接続した様子は次の通り。
ここで使用するステッピングモータは、下図のようなペア(1 inと2 inまたは3 inと4 in)とする。

Arduino SteppingMotor L293D 2.png


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);  
 }