2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Raspberry Pi 5からL6470モータードライバ経由でステッピングモーターを駆動させる

Posted at

パソコン並の性能を持つと言われるRaspberry Pi 5ですが、RP1と呼ばれるI/Oコントローラーが追加されました。これに伴いGPIOの番号に互換性がなかったりして、良く使われてきたドライバーが動かなかったりします。ここでは、秋月電子のL6470使用 ステッピングモータードライブキットを使ってモーターを動かしながらSPI通信の方法をみていきます。

必要なもの

準備

下図のようにステッピングモーター等を接続します。

実行

Pythonで制御するために、公式サイトで紹介されているspidevを使用します。インストールされていない場合は以下のコマンドを実行してインストールします。

pip install spidev

次に、以下のプログラムを作成し実行します。

L6470_motor_drive.py
import spidev
import time

# SPIの初期化
spi = spidev.SpiDev()
spi.open(0, 0)
spi.bits_per_word = 8
spi.cshigh = False
spi.loop = True
spi.no_cs = False
spi.lsbfirst = False
spi.max_speed_hz = 4000000
spi.mode = 3
spi.threewire = False

# しばらく何もしない(NOP)
spi.xfer([0x00])
spi.xfer([0x00])
spi.xfer([0x00])
spi.xfer([0x00])

# HOMEポジションへ
spi.xfer([0x70])

# 最大回転速度設定
spi.xfer([0x07])
spi.xfer([0x20])

# モータ停止中の電圧
spi.xfer([0x09])
spi.xfer([0xFF])

# モータ定速回転中の電圧
spi.xfer([0x0A])
spi.xfer([0xFF])

# モータ加速中の電圧
spi.xfer([0x0B])
spi.xfer([0xFF])

# モータ減速中の電圧
spi.xfer([0x0C])
spi.xfer([0xFF])

# ステップモード
spi.xfer([0x16])
spi.xfer([0x00])

time.sleep(3)

while True:
    # 目標速度で正転させる
    spi.xfer([0x50])
    # NOP
    spi.xfer([0x00])
    # 回転速度を設定
    spi.xfer([0x20])
    # NOP
    spi.xfer([0x00])

    # 1秒回転
    time.sleep(1)

    # 停止
    spi.xfer([0xB8])
    # 1秒停止
    time.sleep(1)
2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?