ジャンクステッピングモータとA4988ドライバ

自作3Dプリンタ

 
ご存知の通り、みら太な日々はジャンクのステッピングモータを愛用しております。
プリンタから取り出したり、秋葉の日米無線電機商会や日本橋のデジットを始めとする、いわゆる「素性のわからない」モータばかりを使っております。だって安いですからね。
ひとつのモータに払うお金はいいとこ500円までです。それ以上は高くて買えません(笑

ステッピングモータは電源つなげば回るものではなく、いくつかあるコイルに順序良く電流を流してやる必要があります。原理はこちらなど。そして、そのためにはモータドライバと呼ばれる回路が必要です。
最初のころはこのモータドライバをPICとL298といったフル/ハーフブリッジ構成用ICを使って作っておりましたが、この構成でプログラムによってマイクロステップ駆動をしようとすると非常に面倒であります。
この面倒さはすでに解決されており、モータドライバモジュールとしてお金で買うことが出来ます。そのひとつがAllegro社のIC A4988 を使ったものです。 Polplu のものが有名どころですが、完全互換のパチモンが山ほど出ています。A4988はreprap が3Dプリンタ駆動用に採用したのでMakerの間では小型ステッピングモータの事実上の標準ドライバになっていると思われます。
このドライバを使うと、ジャンパ線でマイクロステップの分割数を設定したあと、回転方向を指定して、クロックを入れれば、クロックパルスごとに1(マイクロ)ステップずつ動いてくれます。お気楽であります。

私もこのA4988をつかったドライバを買っております。中華製でひとつ250円と激安ですが、何の問題も無く動いております。

いつもどおり前置きが長いですが、この投稿はジャンクモータをA4988で駆動する場合のTipsみたいなものをまとめておきます。以下Pololu互換A4988モータドライバモジュールを単にA4988と呼びます。特許明細書みたい(笑

※私はメカトロニクスの専門家ではありません。以下の記載内容は正式な学習によって得た知識ではありません。多分に間違っている可能性があります。ご利用は自己責任にて。

さて、ジャンクモータは普通スペックがわかりません。メカスペックはもとより、結線がどうなっているのか、何Vかけるのか、何A流せるのかといった電気的な仕様もわかりません。メカ仕様はある意味「動けばOK」ですが、電気的な仕様がわからないと回すことはもとより、正しく性能を引き出すことも出来ません。

まず結線。
ジャンクモータで手に入る可能性があるのは、

  1. 4本線の2相バイポーラ
  2. 6本線の2相ユニポーラ
  3. 5本線の2相ユニポーラ
  4. 8本線の2相ユニポーラ
  5. 3本線の3相バイポーラ
  6. 4本線の3相バイポーラ
  7. 5本線の5相バイポーラ
  8. 6本線の5相バイポーラ

あたりかと思います。私の経験からいきますと、通常の民生品をばらして出てくるのはだいたい1か2です。3はまれ。そして4以下はよほど特殊なケースか産業用機器でもばらさない限り出会いません。
「バイポ?」という方はこのあたりをご参照ください

モジュールの使い方は本家に詳しく書いてあります
まず結線については、

Four, six, and eight-wire stepper motors can be driven by the A4988 if they are properly connected; a FAQ answer explains the proper wirings in detail.

4,6,8本線のモータが使えるよとあります。これは上で言うところの1,2,4のモータが回せるよということです。このうちA4988の標準的な駆動対象は「4本線の2相バイポーラ」です。よって、6本線と8本線は擬似的に「A4988から見たら4本線に見える」結線にします。6本線はセンタータップを無視する。8本線は二本ずつ直列につないで無理やり4本線にする。というやり方です。このあたりはFAQで図示されてますのでわかりやすいです。

次に電圧について。これはCurrent Limitting のところに記載があります。

To achieve high step rates, the motor supply is typically much higher
than would be permissible without active current limiting. For
instance, a typical stepper motor might have a maximum current rating of
1 A with a 5Ω coil resistance, which would indicate a maximum motor
supply of 5 V. Using such a motor with 12 V would allow higher step
rates, but the current must actively be limited to under 1 A to prevent
damage to the motor.

結論から言うと「電圧は気にせんでええで」と言っております。それは電流制限(後述)しているので電圧が高くても電流が流れすぎてモータをぶっ壊すことはないからです。
たとえば5V1A定格のモータがあったとします。これにたとえば15Vをかけると、オームの法則から3A電流が流れます。これは定格の3倍ですのでいくらなんでも過熱かコイルの焼損が懸念されます。が、A4988は後述する出力電流を制限する機能(ボードについている半固定抵抗で設定)がありますので、これを1Aに設定することで「15Vでありながら1Aしか流れない」駆動をしてくれます。
実際は、PWMを使って15V3Aを1/3のdutyで駆動し、平均的に1Aの電流が流れるようにしています。
上の解説には「電圧を高くするとスピードが上がるよ」という説明があります。これは電圧を上げてモータコイルのインダクタンスに負けないように電流を突っ込むことで磁界をすばやく立ち上がらせ、詳細は省きますが、結果モータをより高い回転数で回そうということからです。平均的な電流は同じでもより速くモータを回せるということです。

で、最後に電流です。これ実はわかりません(笑
一般的な話としては40mm角くらいのモータであれば電流はコイルあたり500~1500mAくらいです。えいやで1Aというところでしょうか。
何かを分解してモータを手に入れる場合はうまくいけばモータの駆動電源の電圧がわかることがあります。駆動電圧がわかれば、あとはコイルの抵抗を測り、オームの法則に従って計算すれば最大電流値は出ます。しかし、それとてあまり当てにはなりません。なぜなら上に書いた「電圧は気にせんでええで」駆動をしている可能性がある、いやその可能性が高いからです。ということで、こればっかりは実際に動かしながらA4988の半固定抵抗を回し「こ、これくらいなら大丈夫かな…」とやる必要があります。
それよりも注意すべきことは、電流定格がわからないモータをマイクロステップ駆動する場合です。
ポイントは「必ずコイル抵抗を測って最大電流以下の値に電流制限を設定する」ということです。これをやらないと正しいマイクロステップになりません。
このあたりはマイクロステップの設定の所にさらりと書いてあって、

For the microstep modes to function correctly, the current limit must
be set low enough (see below) so that current limiting gets engaged.
Otherwise, the intermediate current levels will not be correctly
maintained, and the motor will skip microsteps.

「マイクロステップモードを正しく機能させるためには、電流制限が正常に働くように十分に低い値に設定される必要があります。さもなくば中間ステップのための電流値が正常に維持されずスキップが生じます。」とあります。

これの意味するところを以下の図で説明します。

二つの図の縦軸は±の電流値、横軸は時間経過です。ここでは1/16マイクロステップ駆動をする場合を例にします。グラフの上は正しい電流値が設定された状態、下がやってはいけない状態です。
上は電流制限の設定値が「その電圧をそのままコイルにかけたときに流れる電流(最大コイル電流)」よりも低く設定されています。一方で下は電流制限値が最大コイル電流以上に設定されています。
両者の駆動を行った場合の結果は明らかです。上では16段階(5つの電流値と異なる方向)それぞれの違いがあるのに対して、下は①~③、⑦~⑪、⑮/⑯の電流値が同じになっています。当たり前ですが、電流制限をどう設定しようとも、コイルにはオームの法則で規定される電流以上の値は流れませんので上記のようなことが起きるわけです。この場合、A4988が流そうとする電流が最大コイル電流以上になっている間はモータの状態は変わりませんから当然回転はしません。で、④や⑫になったときにいきなり数(マイクロ)ステップ跳び越して回ることになります。これではスムースな動作は期待できません。

簡単なことではありますが、ジャンクモータを使う場合は電流定格がわかりませんので、少しずつA4988の半固定抵抗を回して様子を見ながら電流を増やしていくことが多いです。このとき、いつの間にか上の図のようなことにならないようご注意くださいませ。
それから、電流制限値を設定する際に、

 Current Limit = VREF × 2.5
  
で計算せよ、という記載がありますが、私はコイル電流を直接測定することをおすすめします。
半固定抵抗を回しながら小さなスルーホールにテスタのプローブをあてるのは至難の業です。どっか短絡させたら元も子もありません。

ちなみに、そのほかの注意点として、VMOT直前には100uF以上のコンデンサを入れるよう要請されています。これは必ず守りましょう。それから、レーザ加工機のように非常識な電圧の電源を併用する場合にはLogic側にもノイズ対策のためにコンデンサを入れることを激おすすめします。

以上Tips でした。

コメント