ステッピングモーターであそぶ

どんなうごき

ステッピングモーターは1ステップごとに一定角度をだけ回転させることができるモーター。これを使って、回転の角度や速度を決めたりできる。

つくりかた

用意するもの

せつぞく

プログラム

from machine import Pin, PWM
import time

#RaspberryPiの動作確認:LED点灯(LED3回点滅)
led = Pin(25, Pin.OUT)   #RaspberryPiにのっているLEDはGP25、出力設定にする。
led.value(0)   #GP25をL出力
print('Program Start')
for i in range (6):
    led.toggle() #toggleは H -> L ,L -> H
    time.sleep(0.3) #0.3secのWait


#Pinの初期設定 (CMOS_OUT:Low)
Pin_IN1=Pin(18,Pin.OUT)
Pin_IN2=Pin(19,Pin.OUT)
Pin_IN3=Pin(20,Pin.OUT)
Pin_IN4=Pin(21,Pin.OUT)
Pin_IN1.value(0)
Pin_IN2.value(0)
Pin_IN3.value(0)
Pin_IN4.value(0)

#ステッピングモーター仕様
#ステッピング角:5.625*1/64。減速比:1/64 電圧:5V。

#ステッピングモーターのステップごとの設定
def SteppingMotor(Phase):
    if Phase == 0:
        Pin_IN1.value(0)
        Pin_IN2.value(0)
        Pin_IN3.value(0)
        Pin_IN4.value(1)
    elif Phase == 1:
        Pin_IN1.value(0)
        Pin_IN2.value(0)
        Pin_IN3.value(1)
        Pin_IN4.value(1)
    elif Phase == 2:
        Pin_IN1.value(0)
        Pin_IN2.value(0)
        Pin_IN3.value(1)
        Pin_IN4.value(0)
    elif Phase == 3:
        Pin_IN1.value(0)
        Pin_IN2.value(1)
        Pin_IN3.value(1)
        Pin_IN4.value(0)
    elif Phase == 4:
        Pin_IN1.value(0)
        Pin_IN2.value(1)
        Pin_IN3.value(0)
        Pin_IN4.value(0)
    elif Phase == 5:
        Pin_IN1.value(1)
        Pin_IN2.value(1)
        Pin_IN3.value(0)
        Pin_IN4.value(0)
    elif Phase == 6:
        Pin_IN1.value(1)
        Pin_IN2.value(0)
        Pin_IN3.value(0)
        Pin_IN4.value(0)
    elif Phase == 7:
        Pin_IN1.value(1)
        Pin_IN2.value(0)
        Pin_IN3.value(0)
        Pin_IN4.value(1)

def loop():
    Phase = 0 #初期値
    StepTime = 0.001 #StepPuls >1000plus/sec
    Allow = 1 #時計回り=1,反時計回り=-1
    while True:
        SteppingMotor(Phase)
        Phase=(Phase + Allow) % 8 #8で割ったあまりをPhaseに代入
        time.sleep(StepTime) #StepTimeの間待つことで、回転速度を決める

#緊急停止のときの処理、使用したポートは入力にしておけば壊れにくい。
def destroy():
    Pin_IN1.value(0)
    Pin_IN2.value(0)
    Pin_IN3.value(0)
    Pin_IN4.value(0)


#プログラムスタート
if __name__ == '__main__':     #プログラムスタート
    try:
        loop()
    except KeyboardInterrupt:  # Ctrl+C で中断処理
        destroy()

できたもの

詳細説明

ステッピングモーターの仕組み

このモーター(下図左)とモータードライバーの仕様(下図右)

まずは、ステッピングモーターの動作原理です。

ステッピングモーターは磁石とコイルでできています。流れる電流によってコイルから磁力が発生し、モーターの磁石の向きが変わります。
例えば、Step①の場合、オレンジ4がHighになると0Vになる。赤5には常に5V流れているので、赤色の方向にコイルに電流が流れます。するとコイルからN極に磁界が発生するので、モーターの磁石はS極が向きます。

このコイルのN極、S極をうまく切り替えると、下図の様に8ステップで1周するような動きになります。このステッピングモーターでは1Stepごとに45°回転しています。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

趣味で生きていけたらを夢見る中年サラリーマン。
なお、趣味>仕事のため出世の見込みはない模様。

コメント

コメント一覧 (1件)

コメントする

目次