はじめに
Aruduinoを使用してステッピングモータを操作する方法を解説します。
以下のものを使用します。モータードライバーは使用しません。
用意するもの | 型番 | 個数 |
---|---|---|
Aruduino | Aruduino UNO | |
ステッピングモーター | ST-42BYG020 | |
抵抗 | 470Ω, 1kΩ | 4 |
整流用ダイオード | 1N4007 | 4 |
5V直流電源 | ----- | |
NチャネルパワーMOSFET | 2SK22324 | 4 |
ステッピングモータの端子について
今回用いるステッピングモータには端子が6つあり、それぞれ赤、黄、緑、青、白、黒です。
白と黒はそれぞれ電源につなぎ、その他4色の端子を操作することでステッピングモータは回転します。
https://ja.wikipedia.org/wiki/%E3%82%B9%E3%83%86%E3%83%83%E3%83%94%E3%83%B3%E3%82%B0%E3%83%A2%E3%83%BC%E3%82%BF%E3%83%BC
ステッピングモータは図のように4つのコイルがあり、順番に電圧が加わることによって回転します。
そのため動作するときは以下図のようにして動作させます。
回路図
データシート
データシートより、1STEPで1.8度回転すると記載されていますので、200ステップで1回転することがわかります。
プログラム
1回転後に1逆回転するプログラムは以下のようになります。
// 必要なライブラリのインクルード
#include <Stepper.h>
// モーターのステップ数
const int stepsPerRevolution = 200; // モーターのステップ数
// Stepperライブラリのインスタンスを作成
Stepper myStepper(stepsPerRevolution, 8, 10, 9, 11);
void setup() {
// シリアル通信の開始
Serial.begin(9600);
// モーターのスピードを設定 (60 RPM)
myStepper.setSpeed(60);
// シリアルモニターにメッセージを表示
Serial.println("Stepper motor control");
}
void loop() {
// モーターを1回転前進
Serial.println("clockwise");
myStepper.step(stepsPerRevolution);
delay(500);
// モーターを1回転逆転
Serial.println("counterclockwise");
myStepper.step(-stepsPerRevolution);
delay(500);
}
90度回転させたい場合はmyStepper.step()
の引数にstepsPerRevolution / 4
とすればいいです。