The Fool In The Valleyの雑記帳

-- 好奇心いっぱいのおじいちゃんが綴るよしなし事 --

Raspberry Piでstepping motorを動かす 1

Raspberry PiのGPIOを使ってstepping motorを動かしてみました。以下は、それについての備忘のためのメモです。

ーーーーーーーーーーーーー
使用したステッピングモータはバイポーラ駆動用の17PM-K044 、ドライバはDRV8835 で、秋月電子のWebサイトから通信販売で購入した。
ステッピングモータの主な仕様は200ステップ(1.8°)、定格電流0.9A、巻き線抵抗5.6Ωである。
f:id:tfitv:20220307174645j:plain
DRV8835はこれに合わせて入手したドライバで、主な電気的特性は、Vm~11V、Iout~1.5Aである。f:id:tfitv:20220307175234j:plain
モータ軸を1回転/secの速度で回すとすると、200ステップ/secであり、5msec/ステップとなる。モータとドライバのデータシートから判断すると、A、Bの各相に下図のような電流を流せばCWに回転し、これと逆相の電流をながせばCCWに回転させることができるようである。

f:id:tfitv:20220307184419j:plain
Raspberry Pi、ドライバ、ステッピングモータを下図のように配線する。ドライバ8835をmode1で使うのでmodeをHighにしておく。
モータの定格電流は0.9Aなので、それだけの電流を流すためにモータの電源はRaspberry Piとは別に用意する。

f:id:tfitv:20220307173540j:plain

GPIOを制御するためのライブラリはいくつかあるが、デフォルトでインストールされているRPi.GPIOを使うことにする。
以下は、テストのために作成したプログラムで、ステッピングモータを「約1秒でCW方向に1回転→2秒静止→約1秒でCCW方向に1回転→2秒間静止」させ、それを繰り返させるものである。

import RPi.GPIO as GPIO # RPi.GPIOパッケージを読み込む
import time        # timeパッケージを読み込む

APHASE = 5; AENABLE = 6; BPHASE = 19; BENABLE = 26
msec = 0.005

GPIO.setwarnings(False)
GPIO.setmode(GPIO.BCM)   # GPIO番号指定モードの設定
GPIO.setup(APHASE, GPIO.OUT)  # GPIOの入出力の設定
GPIO.setup(AENABLE, GPIO.OUT)
GPIO.setup(BPHASE, GPIO.OUT)
GPIO.setup(BENABLE, GPIO.OUT)
GPIO.output(AENABLE,GPIO.HIGH)  # ピンの出力をHighにする
GPIO.output(BENABLE,GPIO.HIGH)

def CW():
    GPIO.output(APHASE, GPIO.HIGH); time.sleep(msec)
    GPIO.output(BPHASE, GPIO.HIGH); time.sleep(msec)
    GPIO.output(APHASE, GPIO.LOW); time.sleep(msec)
    GPIO.output(BPHASE, GPIO.LOW); time.sleep(msec)

def CCW():
    GPIO.output(BPHASE, GPIO.HIGH); time.sleep(msec)
    GPIO.output(APHASE, GPIO.HIGH); time.sleep(msec)
    GPIO.output(BPHASE, GPIO.LOW); time.sleep(msec)
    GPIO.output(APHASE, GPIO.LOW); time.sleep(msec)

try:
    while True:
        for i in range(50):   # 50回くり返す。 5(sec) x 4 x 50=1000(sec)
            CW()
        time.sleep(2)
        for i in range(50):   # 50回くり返す。 5(sec) x 4 x 50=1000(sec)
            CCW()        
        time.sleep(2)

except KeyboardInterrupt:
    pass

下のビデオは上記プログラムを実行した時の様子を撮影したものである。

youtu.be

プログラムに従って動いていることが確認できる。

→ Raspberry Piでstepping motorを動かす 2