はじめに
Raspberry Pi Pico でステッピングモーターを動かしてみます。回転角度を精密に制御することができて、いろいろなプロジェクトに活用することができます。
ステッピングモーターとは
ステッピングモーター(Stepper Motor)は、回転角度を精密に制御できるモーターの一種です。
一般的なDCモーターとは異なり、パルス信号を与えることで一定角度ずつ回転し、位置制御が可能です。
ステッピングモーターの仕組み
ステッピングモーターは、内部に複数のコイル(ステータ)を持ち、電流を順番に流すことで回転します。主に以下の2種類に分類されます
・ユニポーラ(Unipolar)モーター
センタータップ付きのコイルを持ち、電流が一方向に流れます。
・バイポーラ(Bipolar)モーター
センタータップがなく、電流が双方向に流れるため、Hブリッジ回路が必要です。
センタータップとは?
センタータップとは、コイルの中央部分に接続された端子のことです。ユニポーラモーターでは、このセンタータップを電源に接続し、残りの両端を順番にGNDに接続することで電流の向きを切り替えずに駆動できます。これにより、駆動回路が比較的シンプルになります。
ステッピングモーターを動かすには?
ステッピングモーターは直接マイコン(ラズベリーパイPicoなど)に接続して動かすことはできません。
ドライバが必要になります。
なぜドライバが必要なのか?
ステッピングモーターは高い電流を必要とし、ラズベリーパイPicoのGPIOピンでは十分な電流を供給できません。
また、GPIOは直接モーターを駆動するための保護機能がないため、過電流によって損傷する可能性があります。そのため、ドライバを使用してマイコンとモーターの間に適切な電流制御を行う必要があります。
ステッピングモーター駆動のためのドライバ
・ULN2003(ユニポーラ向け)
5V駆動のユニポーラステッピングモーター(28BYJ-48 など)を制御
ラズベリーパイPicoのGPIOピンから制御可能
・A4988, DRV8825(バイポーラ向け)
高トルクのバイポーラステッピングモーターを駆動
マイクロステップ制御が可能
追加の電源供給(12Vや24V)が必要
28BYJ-48ステッピングモーターの特徴
28BYJ-48は、内部にギヤを持つユニポーラステッピングモーターです。内部のギヤで減速することで、高いトルクと精密な制御が可能になります。通常、1回転するのに2048ステップ(64:1のギヤ比)が必要になります。そのため、高精度な位置制御を実現できます。
配線
ここでは、28BYJ-48(ユニポーラ)とULN2003ドライバを使った例を紹介します。
RaspberryPi Pico | ULN2003→28BYJ-48 |
VSYS(39番) | VCC |
GND(38番) | GND |
GP16(21番) | IN1 |
GP17(22番) | IN2 |
GP18(24番) | IN3 |
GP19(25番) | IN4 |
ステッピングモーターを動かす
ステッピングモーターを加速・減速させながら回転させます
from machine import Pin
import time
# ピンの設定
pins = [Pin(16, Pin.OUT), Pin(17, Pin.OUT), Pin(18, Pin.OUT), Pin(19, Pin.OUT)]
# ステッピングシーケンス(4相励磁)
step_sequence = [
[1, 0, 0, 0],
[1, 1, 0, 0],
[0, 1, 0, 0],
[0, 1, 1, 0],
[0, 0, 1, 0],
[0, 0, 1, 1],
[0, 0, 0, 1],
[1, 0, 0, 1]
]
def step_motor():
steps = 512 # 1回転分のステップ
min_delay = 0.001 # 最小遅延(最速)
max_delay = 0.01 # 最大遅延(最遅)
half_steps = steps // 2
for i in range(steps):
delay = max_delay - (max_delay - min_delay) * abs(i - half_steps) / half_steps
for step in step_sequence:
for j in range(4):
pins[j].value(step[j])
time.sleep(delay)
# モーターを加速・減速しながら回転させる
step_motor()
まとめ
ステッピングモーターは高精度に制御ができるため、ロボットのアームなどいろいろなところで使われています。
アイデアがあれば使い方は無限大だと思いますので、まずは一度触ってみることをおすすめします。
コメント