- はじめに
Raspberry Piは、ホビー用途から産業用途まで幅広く使用されている人気のシングルボードコンピュータです。本質的にはクレジットカードサイズの小型コンピュータであり、ステッピングモーターの制御を含むさまざまなプロジェクトで広く利用されています。ステッピングモーターの制御は、モーション制御アプリケーションにおける一般的なタスクです。本記事では、Pythonプログラミング言語とRPi.GPIOライブラリを使用してステッピングモーターを制御する方法を、対応する配線手順とともにご紹介します。
- 必要な材料
- Raspberry Pi(Raspberry Pi 3B+以降を推奨)
- ステッピングモーター(例:NEMA 17)
- ステッピングモータードライバーモジュール(例:DRV8825またはA4988)
- ジャンパーワイヤー(デュポンコネクタ)
- 12V DC電源アダプター
- ブレッドボード(任意)
- デカップリングコンデンサ(例:100 µF電解コンデンサ)
- 配線手順
安全上の注意: 電源を投入する前に、モーターとドライバーの配線を必ず接続してください。Raspberry Piやドライバーモジュールの損傷を防ぐため、すべての接続を再確認してください。
- ステッピングモーターの4本のワイヤーを、モータードライバーモジュールのA1、A2、B1、B2ピンに接続します。
- 12V電源の正極をドライバーモジュールのVMOTピンに、負極をGNDピンに接続します。デカップリングコンデンサ(例:100 µF電解コンデンサ)をVMOTとGND間に、ドライバーモジュールのできるだけ近くに配置し、電圧スパイクを抑制します。
- Raspberry Piの5V電源ピン(物理ピン2またはピン4)をドライバーモジュールのVCCピンに接続し、GNDピン(例:物理ピン6)をドライバーモジュールのGNDピンに接続します。
- 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にプルするとドライバー出力が有効になります。
- 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
- まとめ
本記事では、Raspberry Piを使用してステッピングモーターを制御する方法を、配線手順とRPi.GPIOライブラリを使用したPythonコードとともにご紹介しました。これらの手順に従うことで、簡単にモーター制御を実現できます。コード内のパラメータ(ステップ数、遅延時間、マイクロステップ設定など)は、プロジェクトの要件に応じて調整してください。