Raspberry Piでステッピングモーターを制御する方法

D

Daniel Zhang

最終更新日 Aug 17, 2026

  1. はじめに

Raspberry Piは、ホビー用途から産業用途まで幅広く使用されている人気のシングルボードコンピュータです。本質的にはクレジットカードサイズの小型コンピュータであり、ステッピングモーターの制御を含むさまざまなプロジェクトで広く利用されています。ステッピングモーターの制御は、モーション制御アプリケーションにおける一般的なタスクです。本記事では、Pythonプログラミング言語とRPi.GPIOライブラリを使用してステッピングモーターを制御する方法を、対応する配線手順とともにご紹介します。

  1. 必要な材料
  1. Raspberry Pi(Raspberry Pi 3B+以降を推奨)
  2. ステッピングモーター(例:NEMA 17)
  3. ステッピングモータードライバーモジュール(例:DRV8825またはA4988)
  4. ジャンパーワイヤー(デュポンコネクタ)
  5. 12V DC電源アダプター
  6. ブレッドボード(任意)
  7. デカップリングコンデンサ(例:100 µF電解コンデンサ)
  1. 配線手順

安全上の注意: 電源を投入する前に、モーターとドライバーの配線を必ず接続してください。Raspberry Piやドライバーモジュールの損傷を防ぐため、すべての接続を再確認してください。

  1. ステッピングモーターの4本のワイヤーを、モータードライバーモジュールのA1、A2、B1、B2ピンに接続します。
  2. 12V電源の正極をドライバーモジュールのVMOTピンに、負極をGNDピンに接続します。デカップリングコンデンサ(例:100 µF電解コンデンサ)をVMOTとGND間に、ドライバーモジュールのできるだけ近くに配置し、電圧スパイクを抑制します。
  3. Raspberry Piの5V電源ピン(物理ピン2またはピン4)をドライバーモジュールのVCCピンに接続し、GNDピン(例:物理ピン6)をドライバーモジュールのGNDピンに接続します。
  4. Raspberry Piの以下のBCM GPIOピンを、ドライバーモジュールの対応するピンに接続します:
Raspberry Pi GPIO(BCM) 物理ピン ドライバーモジュールのピン
GPIO 17 Pin 11 DIR
GPIO 18 Pin 12 STEP
GPIO 27 Pin 13 MS1
GPIO 22 Pin 15 MS2
GPIO 23 Pin 16 ENABLE

ヒント: ほとんどのA4988/DRV8825モジュールのENABLEピンはアクティブローです。LOWにプルするとドライバー出力が有効になります。

  1. Pythonコードの実装

まず、RPi.GPIOライブラリをインストールします。ターミナルで以下のコマンドを入力します:

sudo apt-get update
sudo apt-get install python3-rpi.gpio

次に、stepper_motor.pyという名前のPythonファイルを作成し、以下のコードを入力します:

import time
import RPi.GPIO as GPIO

# ピンの定義(BCM番号指定)
DIR = 17
STEP = 18
MS1 = 27
MS2 = 22
ENABLE = 23

# GPIOモードの設定
GPIO.setmode(GPIO.BCM)
GPIO.setup(DIR, GPIO.OUT)
GPIO.setup(STEP, GPIO.OUT)
GPIO.setup(MS1, GPIO.OUT)
GPIO.setup(MS2, GPIO.OUT)
GPIO.setup(ENABLE, GPIO.OUT)

# ドライバーを有効にして回転方向を設定
GPIO.output(ENABLE, GPIO.LOW)   # ドライバー有効化(アクティブロー)
GPIO.output(DIR, GPIO.HIGH)     # 時計回り方向

# ドライバーモデルに応じたステップモードの設定(例:A4988)
GPIO.output(MS1, GPIO.HIGH)     # 1/4ステップ
GPIO.output(MS2, GPIO.LOW)

# モーター回転の制御
steps = 200
delay = 0.001  # 遅延を短くすると高速化

for _ in range(steps):
    GPIO.output(STEP, GPIO.HIGH)
    time.sleep(delay)
    GPIO.output(STEP, GPIO.LOW)
    time.sleep(delay)

# GPIOのクリーンアップ
GPIO.cleanup()

最後に、ファイルを保存してターミナルで実行します:

python3 stepper_motor.py
  1. まとめ

本記事では、Raspberry Piを使用してステッピングモーターを制御する方法を、配線手順とRPi.GPIOライブラリを使用したPythonコードとともにご紹介しました。これらの手順に従うことで、簡単にモーター制御を実現できます。コード内のパラメータ(ステップ数、遅延時間、マイクロステップ設定など)は、プロジェクトの要件に応じて調整してください。