LoginSignup
13
5

More than 1 year has passed since last update.

ステッピングモータをまわす

Last updated at Posted at 2021-07-01

3Dプリンタやレーザーカッターなどの軸の移動でも使わわれるステッピングモータ、与えるパルスの数だけ回転するので、回転角や移動距離を指定しての制御に便利です。

とはいえ、マブチモータのようなDCモータと違って、ただ電源をつなぐだけで使える(回る)わけではないので、ちょっと使い方が面倒です。

それでもいろいろ動かすためのボードやライブラリがあるので、それを使うとだいぶ楽になります。といいつつ、「ステッピングモータ界の常識」みたいなのがあって、それを知らないと、やっぱりうまく動かせなかったりすることもあって、しょんぼりすることもあります(=今日の私)。

というわけで、「ステッグモータ界」の常識をふくめて、回すまでの記録です。

ステッピングモータの原理と「相」

そもそものステッピングモータの原理と、「相」については、いろいろなWebページや文献があるので、それらを調べてください(たとえばこちらの記事)。「相」は、簡単にうと、モータの構造の違いで、巻線が何組あるか、です。ホビーユースだと2相(2組、それぞれA相・B相、と呼ぶ)のものが多いようです。

ステッピングモータの駆動方式

ステッピングモータの駆動方式を調べていると、このモータの構造を表す「相」と間際らしい言葉として「2相駆動(2相励磁)」というのがあります。これは、例えばWikipediaに説明があるように、モータのコイルにどのように電流を流す(励磁するか)か、を表す用語です。

例えばA相とB相の2組のコイルがある2相モータで、励磁の順序に次の3通りがあります。

  • A相だけ励磁→B相だけ→A相だけ→・・・と1相だけ励磁する1相励磁
  • A相だけ励磁→A相とB相→B層だけ→A相とB相→・・・と1相と2相を交互に励磁する1-2相励磁
  • 常に2相を励磁する2相励磁(1相励磁よりトルクが2倍になる)

これとあわせて、駆動方式に関連する用語として「ユニポーラ駆動」と「バイポーラ駆動」というのがあります。詳しくはこのあたりにありますが、要するに、以下のようにモータの巻線の構造と駆動回路の方式で、両者が使い分けられますが、バイポーラ駆動しか使えないものもあることになります。

  • ユニポーラ駆動:巻線A-C間に中間タップ(O)が出ているモータで、A-O間、C-O間にそれぞれ正の電圧を加えることで、逆方向の磁界を発生させられる。つまり駆動側は、どちらかのコイルに正の電圧を加えるかどうかを制御すればよい(負電圧は必要ない)ので、駆動回路が単純にできる。そのかわり中間タップがないモータでは使えず、またケーブル本数が中間タップの分、増える。
  • バイポーラ駆動:中間タップがないモータで、巻線A-C間に、正の電圧と負の電圧を加える制御が必要なので、いわゆるフルブリッジのドライバが必要。ケーブル本数は中間タップがない分、減る。

モータの構造上、ユニポーラ駆動に対応しているモータでも、中間タップを使わずにバイポーラ駆動はできることになります。

よくあるステッピングモータ

RepRapをはじめとして3Dプリンタの自作が流行った(?)ころに、「NEMA17」という規格のステッピングモータがよく使われていました。手元に、「JK42HS34-1334AC」というステッピングモータがありましたが、これもこの「NEMA17」規格(互換?)のものの一つです。こちらのNEMA17互換品一覧にも載っています。Amazonでも商品ページがあります(JK42HS34-1334AC自体は製造中止のようですが・・・)。

ステッピグモータのコネクタの端子とコイルの対応関係が、なかなか情報がみつからず、またあっても「色」で書いてあります(さきほどのAmazonで売っている製品もそう)。

connection.png

手元にある「JK42HS34-1334AC」のコネクタ(JSTのPHコネクタ)には、6個の端子がありますが、それとの対応は、なかなかまとまって記載されているサイトがないようです(製品ページにも書いてない)。どうもこのあたりは、「ドライバボードの端子に、つなぐべきステッピングモータのケーブルの色」が書いてあることが多いので、あまり中の構造を意識せずに使う(使える)ためのようです。

ちなみに、NEMA17互換モータだと、この順序です(ちょっと直感と違うので注意)。※1-6番の順序が逆のものもあるようですが、結果として同じ配線になるので、あまり気にしないほうがよさそうです。
- 1:黒
- 3:赤
- 4:緑
- 6:青
つまり、1-4をドライバのA相、3-6をB相につなぐことになります。
JST-PH.png

コネクタの端子が6個あるのは、ユニポーラ駆動用の中間タップがあるものでも使えるように、ということだと思いますが、中間タップの端子は未結線でユニポーラ駆動では使えないものもあるようです。

ステッピングモータの駆動電圧

この手の製品紹介をみていて、前から不思議だったのが、「駆動電圧」が書かれていないことが多いことでした。「駆動電流(定格電流)」は書いてあります(このモータだと最大1.3A)。

これは、ステッピングモータの駆動回路は、一般的には定電流駆動回路(のドライバボード)を使うので、指定した電流(例えば1A)になるように駆動電圧が自動的に制御されます。そのため、モータの規格には駆動電圧が書かれていないのですね。ちなみに駆動電流が多いほど、モータの動作時や静止時のトルク(力)が大きくなります(がその分、発熱も増える)。

Arduinoなどから使ってみる

ステッピングモータは、基本的にはA相とB相の2つのコイルに正負の電圧を、順序正しく加えることで回転するものなので、それを駆動するドライバボードとしては、要は「DCモータを正転/逆転できる駆動回路」が2つあればよいことになります。

これができるのはいろいろな製品があって、例えばこちらは、Groveコネクタ経由のI2Cでコマンドを送ると制御できる、ものです。

使い方は、普通のGroveボードと同じで、Arduino用のライブラリを入れて、サンプルスケッチを実行すればOK、なのですが、ちょっとクセがあって、うまく回らず(じーー、と言うだけ)、心が折れそうになります(=今日の私)。

実はこのボードのArduino用ライブラリは、当初かなり作りが雑で、4相専用で、1ステップ分動かそうとすると4パルス分動くようになっていました。さすがにそれだと、2相が使えないのと、細かい制御ができないので、ライブラリを自分で拡張し、PullRequestを送ってマージしてもらっています。ただ、サンプルにあるスケッチ"steppermotor_test"が、当初のライブラリ用のままで、モータがうまく回らない(4相モータ用の制御パルスを出してしまい、脱調している)のです。

そこで、StepperRun()のソースコードにあるように、StepperRun()に3個の引数を与えることで、第1引数のstep数の段階だけ、なめらかに回るようになります。

StepperRun(step, 1, 1);
  • 1個めの引数:パルス数
  • 2個めの引数:モータの相数(今回使っているNEMA17互換モータは2相なので、これを1にする)
  • 3個めの引数:パルス駆動モード(これを1にすると、1個めの引数分のパルスが出る)
// ***************************Stepper Motor Function***************************
// Drive a stepper motor
// _step: -1024~1024, when _step>0, stepper motor runs clockwise; when _step<0, 
// stepper motor runs anticlockwise; when _step is 512, the stepper motor will 
// run a complete turn; if step is 1024, the stepper motor will run 2 turns.
//  _type: 0 -> 4 phase stepper motor, default
//         1 -> 2 phase stepper motor
//  _mode: 0 -> compatible mode (_step=1 corresponds 4 steps)
//         1 -> fine mode (_step1 corresponds 1 steps)
void I2CMotorDriver::StepperRun(int _step, int _type, int _mode) 

もっと高度な制御

いわゆるgrbl互換ボードというのがあって、それだと、シリアル経由で制御用のGコードを送ると、XYZ軸のステッピングモータを動かせるので、3Dプリンタやレーザーカッターのようなものを作るときには、これを使うのも便利かと思います。

13
5
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
13
5