物づくりの小部屋

個人で活躍するクリエーターになりたい現役エンジニアの行動記録

【ラズバイ】Raspberry Pi4でステッピングモータを回す②(バイポーラ式 : Quimat 17HS4401)

f:id:zaloha8:20220213110654j:plain

こんにちは。alohaです。

 

Raspberry Pi4でステッピングモータを回すテストの2回目として、バイポーラ式のモータを回してみます。

 

今回制御するモータは、3Dプリンタ等で使用されているQuimat Nema 17ステッピングモータで、型式は17HS4401です。

 

バイポーラ式ステッピングモータの回路図は下の図の通りになっており、

① Black -> Green ② Blue -> Red ③ Green -> Black ④ Red -> Blue

の順に電流を流すことによりモータが回転します。

f:id:zaloha8:20220213111611j:plain

 

電流を流す向きを変えながらモータに信号を入力する必要があるため、Raspberry Pi4のGPIOだけでモータを回す事は難しそうです。

 

そこで、今回はモータドライバとして、Quimat 4A TB6600を使ってモータを回します。

また、応用例として、1軸CNCルーターも回してみます。

 

それでは、早速作ってみましょう。

 

<必要部品(Raspberry Pi4以外に必要なもの)>

  • バイポーラ式ステッピングモータ(Quimat 17HS4401)   1個
  • モータドライバ(Quimat TB6600)            1個
  • DCアダプタ(12V, 2A)                  1個
  • ブレッドボード(小)                   1個
  • ジャンパー線                       数本

いずれも、Amazonから購入可能です。

f:id:zaloha8:20220213155712j:plain

 

<回路図>

BSch3Vで回路図を書くと下の図の様になります。

f:id:zaloha8:20220213112300j:plain

Amazonの商品紹介ページに載っている配線図の通りに配線しますが、Raspberry Pi4のGPIOから出力される電圧が3.3 [V]である点に注意が必要です。

TB6600の信号入力端子は、①ENA- / ENA+ ②DIR- / DIR+ ③PUL- / PUL+ の3組がありますが、いずれも2つの信号の差があるかどうかで制御の状態を切り替えています。

(例えば、DIR-とDIR+に入力される電圧が同じであればモータは正回転し、差があればモータは逆回転します)。

このため、ENA+, DIR+, PUL+は、Raspberry Pi4のGPIOの3.3 [V]に接続する必要があります。

回路図の通りに接続すると、下の写真の様になります(モータシャフトの回転が分かりやすい様に、3Dプリンタで作成した円盤をつけています)。

f:id:zaloha8:20220213102733j:plain

 

<TB6600の設定>

TB6600のDIPスイッチで、モータ1回転に必要なパルス数とモータに流す電流の上限値を設定します。

f:id:zaloha8:20220213104017j:plain

今回は、200パルスでモータ1回転するモードに設定します。また、17HS4401のデータシートを見ると、定格電流は1.7 [A]なのでDIPスイッチは以下の設定にします。

 

S1 = ON,    S2 = ON,    S3 = OFF,    S4 = ON,    S5 = ON,    S5 = OFF

f:id:zaloha8:20220213104406j:plain

 

<動作プログラム>

動作プログラムは以下の通りです。

回転角度を指定した後、角度をパルス数に変換してGPIO端子からパルスを出力しています。

このプログラムでは、モータシャフトを時計回りに1回転、反時計回りに1回転させています。

シャフトの回転速度を変えるには、29行目の変数widを変えて出力されるパルスの幅を変更します。

 

#coding:utf-8

#GPIOライブラリをインポート
import RPi.GPIO as GPIO

#timeライブラリをインポート
import time

#ピン番号の割当方式を「コネクタのピン番号」に設定
GPIO.setmode(GPIO.BOARD)

#使用するピン番号を代入
PUL=8
DIR=10
ENA=12

#8,10,12番ピンを出力ピンに設定し、初期出力をローレベルにする
GPIO.setup(PUL,GPIO.OUT,initial=GPIO.LOW)
GPIO.setup(DIR,GPIO.OUT,initial=GPIO.LOW)
GPIO.setup(ENA,GPIO.OUT,initial=GPIO.LOW)

#DIR=HIGHで時計回り、DIR=LOWで半時計回り。
#ENA=HIGHでトルク発生、ENA=LOWではトルクが発生しない。

DIR_ST = 1
ENA_ST = 1

#パルスの幅を指定。値を小さくする程高速で回転する。
wid = 0.005

#回転角度を指定
ang = 360

#減速比を設定
#1軸CNCルータの場合は4を設定
#モータ単体の場合は1を設定
ratio = 1

#回転角度をパルス数に換算
cnt = int(ratio*(ang / (360/200)))

for i in range(0,2):
    
    for j in range(0,cnt):    

        GPIO.output(ENA,ENA_ST)
        GPIO.output(DIR,DIR_ST)
        
        GPIO.output(PUL,0)
        time.sleep(wid)
        GPIO.output(PUL,1)
        time.sleep(wid)
    
    time.sleep(2.0)
    
    if(i % 2 == 0):
        DIR_ST = 0
    else:
        DIR_ST = 1


#メッセージを表示
print("End of program")

#GPIOを開放
GPIO.cleanup()

 

<応用例:1軸CNCルータを動かす>

Raspberry Pi4でバイポーラ式ステッピングモータを制御できるようになると、1軸CNCルータも動かせる様になります。1軸CNCルータとは写真の様な物で、ステッピングモータと円筒状の物をつかむチャックがセットになった物です。Amazonで偶然見つけて購入した物ですが、もともとは中国製の3軸CNCフライス盤に4軸目を追加する目的で作られた物の様です。

f:id:zaloha8:20220213104932j:plain

f:id:zaloha8:20220213105253j:plain

モータの回転軸とチャックの回転軸をベルトで繋ぎ、モータの駆動力を伝える構造になっています。ベルトで動力を伝える際にモータの回転角度が1/4に減速されるため、チャックを指定角度回転させるためには、プログラムの方でパルス数を4倍にする必要があります。

(プログラムの37行目で減速比を指定)

 

<まとめ>

今回は、Raspberry Pi4でバイポーラ式ステッピングモータを回すテストを行いました。応用例として1軸CNCルータの動作も確認しました。

 

ステッピングモータ等の3Dプリンタ用の部品もAmazonで簡単に購入できる様になっています。個人の物づくりもしやすくなっているので、どんどん活用していきたいですね。

 

それでは、また。