Arduino用バイポーラステッピングモーターライブラリ – 産業グレードの制御機能
必要なパーツと用品
| Arduino UNO | ×1 |
| Texas Instruments L293D デュアルHブリッジ ドライバー | ×1 |
使用するアプリ
- Arduino IDE
プロジェクト概要
従来のユニポーラステッピングモーター用ライブラリに加え、バイポーラタイプにも対応した包括的なArduinoライブラリを開発しました。産業用モーション制御の要件を満たすよう設計されており、以下の機能を提供します。
主な特徴
- あらゆるバイポーラステッピングモーターを制御可能
- 回転方向(正転/逆転)の制御
- 回転数(1回転、2回転…)の高精度制御
- 回転速度をRPMで指定可能(精度95%以上)
- 目標角度(0〜360°)への位置決め(精度80〜100%)
- すべてのArduinoボードと互換

ライブラリ関数の説明
bi_polar_Stepper(int pin1, int pin2, int pin3, int pin4)– インスタンス生成。ドライバー接続ピンを指定。set_step_per_rev(int steps)– 1回転あたりのステップ数を設定(ステップ角の設定)。正確な制御のため必須。set_RPM(int rpm)– 回転速度をRPMで設定(95%精度)。rotate_CW()– 正転(時計回り)連続回転。ループ内で呼び出し。rotate_CCW()– 逆転(反時計回り)連続回転。ループ内で呼び出し。rotate(int dir)– 方向指定で1ステップ回転(1=正転, 0=逆転)。rotate_one_rev(int dir)– 指定方向にちょうど1回転。rotate_n_rev(int dir, int num)– 指定方向に指定回転数だけ回転。rotate_x_deg(int deg)– 指定角度(0〜360°)だけ回転(正負で方向指定)。
使用例
例1: 60 RPMで連続正転
#include
#define steps 200 // モーターに合わせて変更(1.8°なら200)
bi_polar_Stepper my_step_motor(8, 9, 10, 11);
int rpm = 60;
void setup() {
Serial.begin(9600);
my_step_motor.set_step_per_rev(steps);
my_step_motor.set_RPM(rpm);
}
void loop() {
my_step_motor.rotate_CW();
}
例2: 30 RPMで正転1回転→逆転1回転を繰り返し
#include
#define steps 200
bi_polar_Stepper my_step_motor(8, 9, 10, 11);
int rpm = 30;
void setup() {
Serial.begin(9600);
my_step_motor.set_step_per_rev(steps);
my_step_motor.set_RPM(rpm);
}
void loop() {
my_step_motor.rotate_one_rev(1);
delay(1000);
my_step_motor.rotate_one_rev(0);
delay(1000);
}
例3: 正転100 RPMで2回転 → 逆転50 RPMで2回転
#include
#define steps 200
bi_polar_Stepper my_step_motor(2, 3, 4, 5);
int i;
void setup() {
Serial.begin(9600);
my_step_motor.set_step_per_rev(steps);
}
void loop() {
my_step_motor.set_RPM(100);
for(i=0;i<100;i++) my_step_motor.rotate(1);
delay(2000);
my_step_motor.set_RPM(50);
for(i=0;i<100;i++) my_step_motor.rotate(0);
delay(2000);
}
例4: 正転20 RPMで4回転 → 逆転10 RPMで2回転
#include
#define steps 200
bi_polar_Stepper my_step_motor(2, 3, 4, 5);
void setup() {
Serial.begin(9600);
my_step_motor.set_step_per_rev(steps);
}
void loop() {
my_step_motor.set_RPM(20);
my_step_motor.rotate_n_rev(1, 4);
delay(2000);
my_step_motor.set_RPM(10);
my_step_motor.rotate_n_rev(0, 2);
delay(2000);
}
例5: 30 RPMで90°正転⇔90°逆転を繰り返し
#include
#define motor_steps 200
bi_polar_Stepper my_step_motor(8, 9, 10, 11);
int rpm = 30;
void setup() {
Serial.begin(9600);
my_step_motor.set_step_per_rev(motor_steps);
my_step_motor.set_RPM(rpm);
}
void loop() {
my_step_motor.rotate_x_deg(90);
delay(2000);
my_step_motor.rotate_x_deg(-90); // または270
delay(2000);
}
高電流・高電圧モーターへの対応
定格電流/電圧が大きいモーターの場合、L293Dの代わりにL298ドライバーや、TIP122/TIP142などのダーリントントランジスタ4個をHブリッジ構成で使用できます。
動作確認済みモーター
- 2相バイポーラ、5V、最大100 RPM、200ステップ/回転(1.8°ステップ角)
- 2相バイポーラ、5V、最大60 RPM、200ステップ/回転(1.8°ステップ角)
ライブラリファイル
ライブラリフォルダ bi_polar_Stepper をArduinoのライブラリフォルダ(例: C:\arduino-1.6.7\libraries)にコピーしてください。ライブラリ本体はダウンロード提供されています(プレビュー不可)。
回路図

製造プロセス
- Sensor Telemetry 2.0.1:Azure IoT Hubによる高度な温度監視
- Raspoulette:太陽光発電自律コープドアシステムのプロトタイプ
- DIY自律型ナーフセントリーガン:ステッピングモーター、カメラ、Arduinoでスマートナーフガンを自作
- ArduinoとステッピングモーターでTinder/Bumbleを自動スワイプする装置
- SmartWay: GPS・振動モーター・RGB LED・Arduino MKR Fox 1200で子供の通学を見守り
- リニアモーター理解:電気エネルギーから精密直線運動へ
- サーボモーターの仕組みと重要性
- サーボモーター vs ステッピングモーター:現代のグレーゾーンを明確にする
- 可変リラクタンスモーター:種類、動作原理、応用
- ステッピングモーター:種類、特性、実用応用
- 統合ドライバーが高出力ステッピングモーター設計を簡素化