XBPx Portfolio · Japan
Contact
Lesson 02 / Stepper Motor

第二回
ステッピングモーター制御

ステッピングモーター A4988 ドライバ delayMicroseconds

CH 01ステッピングモーターとは

パルス信号 1 つにつき決まった角度だけ回転する、位置決めに強いモーター。

特徴

  • 1 パルスで 1 ステップ角 進む(例:1.8°)
  • 角度・回転数をカウントで管理できる
  • 低速で大きなトルクを出しやすい
  • 大電流が流れるため 専用ドライバ 経由で駆動

今回使用する部品

ステッピングモーター

定格電圧 12V / ステップ角 1.8° の 2 相バイポーラタイプ。

モータードライバ

A4988。STEP / DIR の 2 線でマイコンから制御できる。

外部電源

モーター駆動用に 12V 電源を別途用意する。

Arduino Uno

STEP / DIR 信号を出力する役割。

Point DC モーターのように速さを制御するのではなく、ステッピングモーターは位置と回数を制御するのが基本。「何度回したいか」をプログラムから組み立てる発想に切り替える。

CH 02配線と接続

A4988 と Arduino を最低限の本数で接続する。STEP と DIR の 2 本だけで方向と回転量をコントロールできる。

ピン対応表

A4988 側接続先役割
STEPD9パルスを入れるたびに 1 ステップ進める
DIRD8HIGH / LOW で回転方向を切り替える
VDD5Vロジック電源(Arduino から供給)
GNDGNDArduino と共通グランド
VMOT / GND外部 12Vモーター駆動用電源
1A / 1B / 2A / 2Bモーター 4 線2 相コイルへの出力
Caution モーター電源を入れる前に、必ず Arduino と A4988 の GND を共通化しておく。VMOT 投入中にモーター線を抜き差しすると、ドライバ IC が破損することがある。

CH 03プログラム実装

STEP に短いパルスを入れるたびに 1 ステップ進む、というシンプルな仕組みをそのままコードに落とし込む。

ピン定義

const int DIR  = 8;
const int STEP = 9;

setup()

void setup() {
  pinMode(DIR,  OUTPUT);
  pinMode(STEP, OUTPUT);
  digitalWrite(DIR,  LOW);
  digitalWrite(STEP, LOW);
}

時計回り / 反時計回り

1 ステップ分のパルスを送る関数を、方向ごとに用意する。delayMicroseconds でパルスの幅を決めるのがポイント。

void clockwise(int delaytime){
  digitalWrite(DIR,  HIGH);
  digitalWrite(STEP, HIGH);
  delayMicroseconds(delaytime);
  digitalWrite(STEP, LOW);
  delayMicroseconds(delaytime);
}

void counter_clockwise(int delaytime){
  digitalWrite(DIR,  LOW);
  digitalWrite(STEP, HIGH);
  delayMicroseconds(delaytime);
  digitalWrite(STEP, LOW);
  delayMicroseconds(delaytime);
}

loop() — 50 ステップずつ往復

void loop() {
  for (int i = 0; i < 50; i++) {
    clockwise(5000);          // 時計回りに 1 ステップ
  }
  for (int i = 0; i < 50; i++) {
    counter_clockwise(5000);  // 反時計回りに 1 ステップ
  }
}

主要関数の整理

digitalWrite()

STEP / DIR を HIGH / LOW にしてパルスと方向を作る。

delayMicroseconds()

パルス幅をマイクロ秒で制御。値が小さいほど高速回転。

for ループ

「何ステップ回すか」を整数の回数として扱う。

const int

変更しないピン番号は定数として宣言。可読性とミス防止に有効。

Tips delaytime を小さくすると速く、大きくするとゆっくり回る。ただし小さくしすぎると脱調(ステップが飛ぶ)するので、まずは 5000μs 前後から試すと安定しやすい。
Qiita 原文を読む

CH 04動作のイメージ

ステッピングモーターが実際に「カクカクと一定角度ずつ動く」様子を、ショート動画でも併せて確認する。

Observation 50 ステップ × 1.8° = 90°。コード上の 50 という数字が、実際の回転角度として目に見える形で現れる。これがステッピングモーターの一番面白いところ。
YouTube Shorts を開く