プロジェクト19:ステッピングモーター

プロジェクト19:ステッピングモーター

このプロジェクトで学ぶこと: ステッピングモーターをULN2003ドライバーボードで制御し、指定したステップ数だけ精密に回転させる方法を学びます。フィードバックなしで角度を正確に制御できる仕組みを理解します。


完成イメージ

[ステッピングモーターが1回転し、正確に元の位置に戻る動画を挿入]


必要な部品

部品名 数量
Arduino Uno R3 1
ステッピングモーター(28BYJ-48) 1
ULN2003 ドライバーボード 1
ジャンパー線 6本

回路図と配線

[回路図画像を挿入]

配線手順

  1. ULN2003ドライバーボードの 5〜12V電源 をArduinoの 5VピンGND に接続する
  2. ドライバーボードの IN1〜IN4 をArduinoの 8・9・10・11番ピン にそれぞれ接続する
  3. ステッピングモーターのコネクターをULN2003ドライバーボードに接続する

Arduinoスケッチ(プログラム)

// ステッピングモーターで1回転

#include <Stepper.h>

// 28BYJ-48モーターは1回転に2048ステップ(減速ギア込み)
const int STEPS_PER_REVOLUTION = 2048;

// Stepperライブラリのピン順(IN1, IN3, IN2, IN4)
Stepper myStepper(STEPS_PER_REVOLUTION, 8, 10, 9, 11);

void setup() {
  myStepper.setSpeed(10);  // 回転速度(RPM)
}

void loop() {
  myStepper.step(STEPS_PER_REVOLUTION);   // 時計回りに1回転
  delay(500);
  myStepper.step(-STEPS_PER_REVOLUTION);  // 反時計回りに1回転
  delay(500);
}

コードのポイント解説

Stepperライブラリ Arduinoに標準搭載のステッパーライブラリです。コイルの励磁シーケンス(4相のON/OFF切り替え)を自動で処理してくれます。

myStepper.step(ステップ数) 正の値で時計回り、負の値で反時計回りに指定ステップ数だけ回転します。step()はステップが完了するまで処理をブロックします。

28BYJ-48の特性 このモーターは内部に減速ギアがあり、実際には1回転に2048ステップが必要です(1ステップ≒0.176度)。この細かい制御がステッピングモーターの精密さの根拠です。


動作確認

  1. スケッチをアップロードする
  2. モーターが時計回りに1回転→反時計回りに1回転を繰り返せば成功
  3. 1回転の終わりが開始位置に正確に戻ることを確認する

このプロジェクトで学んだこと

  • ステッピングモーターの原理: 磁界の切り替えシーケンスで精密に角度を制御する仕組みを理解しました
  • オープンループ制御: フィードバックなしで位置を制御できる特性を学びました
  • Stepperライブラリ: 複雑なコイル制御をライブラリで抽象化して使う方法を習得しました

次のプロジェクト「ステッピングモータードライバー」では、より高度なドライバーICを使った制御を学びます。


深掘り:技術の背景と社会への広がり

ステッピングモーターの発明と精密機械への応用

ステッピングモーターの原理は1920年代に確立されましたが、実用化が進んだのは1950〜60年代、デジタル制御技術の発展とともにです。1970〜80年代にフロッピーディスクドライブのヘッド位置決めにステッピングモーターが採用されたことで量産化が進み、コストが劇的に下がりました。フィードバックセンサーなしで位置を保持できる「オープンループ制御」が可能なため、制御システムが単純で信頼性が高く、精密機器に多用されています。

3Dプリンター・CNCと製造業のDXへの貢献

ステッピングモーターが最も大きな社会インパクトをもたらした応用例が3Dプリンターです。2009年のRepRapプロジェクトが3Dプリンターのオープンソース設計を公開し、安価なステッピングモーターが普及の鍵となりました。現在1台5万円以下で購入できる家庭用3Dプリンターには通常3〜5個のステッピングモーターが使われています。医療分野では義肢・補聴器・医療機器の試作コストが大幅に下がり、途上国での医療機器自作(メイカー医療)という新しい潮流も生まれています。


プロジェクト18:モーター方向制御全プロジェクト一覧 | 次のプロジェクト:光追尾システム →