28BYJ-48 ステッピングモーター完全ガイド:仕様・配線・ULN2003ドライバー・Arduino制御
28BYJ-48 ステッピングモーターとは?
図1:28BYJ-48 ステッピングモーター
28BYJ-48 は、5V駆動・ユニポーラ・4相・ギアード (減速比 1:64) ステッピングモーター です。パルス信号で角度・速度・方向を精密制御でき、Arduino等のマイコンと ULN2003 ドライバー基板 (数百円) で手軽に始められる「電子工作入門の定番モーター」です。
動作原理のポイント
- パルス周波数 → 回転速度 (速いパルス = 高速回転)
- パルス順序 (励磁順序) → 回転方向 (正転/逆転)
- パルス数 → 回転角度 (ステップ数 × ストライド角 = 回転角)
- これら3要素が連携し、位置決め精度 ±1ステップ (約 0.088° 出力軸) を実現
ピン配置・内部構造
図2:28BYJ-48 ピン配置
| リード線色 (一般的) | 機能 | 備考 |
|---|---|---|
| 赤 (Red) | コモン (共通端子) | 5V 接続 (センタータップ) |
| 橙/ピンク (Orange/Pink) | 相 A (Phase A) | ULN2003 IN1 |
| 黄 (Yellow) | 相 B (Phase B) | ULN2003 IN2 |
| 桃/紫 (Pink/Purple) | 相 C (Phase C) | ULN2003 IN3 |
| 青 (Blue) | 相 D (Phase D) | ULN2003 IN4 |
※ リード色はロット/メーカーで異なる場合あり。コモン線 (赤系) は抵抗測定で確認推奨 (コモン-各相間で同一抵抗値)。
主要スペック
図3:CNC加工等の応用イメージ
| 項目 | 仕様 |
|---|---|
| 定格電圧 | 5V DC |
| 相数 | 4相 (ユニポーラ) |
| ステップ角 (モーター軸) | 5.625° (64ステップ/回転) |
| 減速比 | 1:64 (約 63.6839:1 実測値多し) |
| 出力軸ステップ角 | 5.625° / 64 ≈ 0.0879° (約 4096 ステップ/回転) |
| 駆動周波数 | 100 Hz 典型 (最大 約 500〜1000 Hz、負荷依存) |
| 絶縁耐圧 | 600V AC / 1mA / 1s |
| コイル抵抗 | 50Ω ±7% (25℃) |
| 摩擦トルク | 600〜1200 gf·cm |
| 引き込みトルク | 300 gf·cm |
| 自己位置決めトルク | > 34.3 mN·m |
| 質量 | 約 35g |
ULN2003 ドライバー基板との接続・Arduino 制御
図4:28BYJ-48 と ULN2003 ドライバー接続
出典: Wikipedia
必要な部品
- 28BYJ-48 ステッピングモーター (ケーブル付き)
- ULN2003 ドライバーボード (4相 Darlington アレイ、LED表示付き)
- Arduino Uno
- デュポンワイヤ (オス-メス ×4〜6本)
- 外部 5V 電源 (Arduino 5V から給電可だが、USB電流制限・ノイズ懸念あり。別途 5V 2A 以上推奨)
配線手順
- モーターの 5ピンコネクタを ULN2003 基板のソケットに確実に挿入 (キー溝で極性合わせ)
- ULN2003 の IN1〜IN4 を Arduino デジタルピンに接続 (例: D8, D9, D10, D11)
- ULN2003 の GND を Arduino GND に接続 (共通グランド必須)
- ULN2003 の VCC (または +) を外部 5V 電源 + に接続
- 外部 5V 電源 - を Arduino GND / ULN2003 GND に共通接続
- ※ ULN2003 基板のジャンパー (5V/12V選択) は 5V 側に
Arduino スケッチ (標準 Stepper ライブラリ使用)
#include
const int stepsPerRevolution = 2048; // 出力軸 1回転分 (ハーフステップ換算 4096/2)
Stepper myStepper(stepsPerRevolution, 8, 10, 9, 11); // ピン順: IN1, IN3, IN2, IN4 (ライブラリ仕様注意)
void setup() {
myStepper.setSpeed(10); // RPM 設定 (負荷により実効速度低下)
Serial.begin(9600);
}
void loop() {
Serial.println("Clockwise 1 turn");
myStepper.step(stepsPerRevolution);
delay(1000);
Serial.println("Counterclockwise 1 turn");
myStepper.step(-stepsPerRevolution);
delay(1000);
}
より高度な制御: AccelStepper ライブラリ推奨
- 加減速プロファイル (台形/ S字) 対応で脱調防止
- ノンブロッキング動作 (run() 呼び出しで逐次駆動)
- 複数モーター同時制御容易
- インストール: ライブラリマネージャで "AccelStepper" 検索
#include
#define HALFSTEP 8
AccelStepper stepper(HALFSTEP, 8, 10, 9, 11);
void setup() {
stepper.setMaxSpeed(500.0);
stepper.setAcceleration(200.0);
stepper.moveTo(2048); // 1回転
}
void loop() {
if (stepper.distanceToGo() == 0) {
stepper.moveTo(-stepper.currentPosition()); // 往復
}
stepper.run();
}
よくあるトラブルと対策
| 症状 | 原因・対策 |
|---|---|
| カタカタ音だけで回らない / 振動のみ | 配線順序誤り (IN順序確認)、電圧不足、負荷過大、ステップ角設定違い |
| 途中で止まる / 脱調する | 加速急すぎ、負荷トルク不足、電源容量不足、配線接触不良 |
| 発熱が激しい | ユニポーラは常時通電相あり。駆動停止時は全相 LOW (リリース) 推奨 |
| 逆回転する / 方向不定 | IN1〜IN4 の接続順序がライブラリ期待順と異なる |
| 出力軸が手で回せる (保持トルク弱) | ユニポーラ非励磁時はフリー。保持必要なら通電継続 (発熱注意) またはブレーキ機構併用 |
応用例・プロジェクトアイデア
- パンチルトカメラマウント (サーボより精密・保持力高)
- 自動カーテン/ブラインド開閉 (リミットスイッチ併用)
- 3Dプリンター Z軸 / エクストルーダー (低コスト自作機)
- CNC ルーター/プロッター X/Y/Z 軸
- 自動給餌器・ペット用品
- アナログ時計・分度器・アートインスタレーション
- 回転台 (フォトグラメトリ/3Dスキャン/製品撮影)
まとめ
28BYJ-48 + ULN2003 は、「数百円で精密位置決めを体験できる」最強の入門セットです。ギアードゆえの高トルク・高分解能・自己保持力を活かし、Arduino ライブラリ (Stepper / AccelStepper) で直感的に制御可能。発熱・脱調・配線順序の罠さえ押さえれば、ロボット・自動化・アート等多彩なプロジェクトの駆動源になります。次のステップとして、バイポーラステッピング (NEMA17等) + A4988/DRV8825/TMC2208 への移行も視野に入れて挑戦してみてください。ご質問はお気軽にどうぞ。
産業技術
- ArduinoとHC-SR04で作るサーボ駆動障害物回避ロボット
- Arduino Nanoとジョイスティックで2軸ステッピングモーターを制御:Visuinoで簡単プログラミング
- TinyMLで植物の健康状態を診断:実践ガイド
- サーミスタを使った温度測定: Arduinoステップバイステップガイド
- Arduinoで楽器演奏:音階生成のステップバイステップガイド
- ArduinoをNMEA-0183に接続するステップバイステップガイド
- ArduinoでModbusをマスターする:ステップバイステップガイド
- ジョイスティックで精密制御:Arduino UNOと28BYJ-48ステッピングモーター
- ステッピングモーター:種類、特性、実用応用
- C# Queue完全ガイド:Enqueue、Dequeue、FIFO操作の実例解説
- Java this キーワード完全マスター:目的、用法、実践例