ちょっとTea Time !? 正体不明のステッピングモータを動かしてみよう。2019.10.23

日本橋を散策し、デジットにたちよりステッピングモータを3つばかりゲット。
とくに使うあてもなかったけど、簡単なX,Yステージでもつくれるかな〜(それも何につかうか未定ですが・・)、
という思いもあり、また1個500円という値段にひかれて買ってしまいました。
 他にも色々なモータがありましたが、とりあえずこれが一番大きかったのと、シャフトも長いのでつかいやすいかなという感じです。


デジットでモータを3つばかりゲット。合計で1500円です。

買ったときは、値札に書いてあったバイポーラ駆動ということだけ確認しましたが、詳細はわかりません(笑。
文字が書いてあったけど、小さくて読めなかったので、あとでいいや〜という感じです。
まあ、型番がわかればネットで調べたらでてくるでしょう。

型番はKP4M4−005
 家に戻って型番をみたら書いてありました。日本サーボのKP4M4-005というものです。
型番をみてから気づきましたが3.6deg/stepなのですね。結構分解能が粗いです。
本当は1.8deg/step程度のものがほしかったのですが・・・・ちょっと残念。


型番はKP4M4-005

ネットでしらべても、この型番で直接的にヒットするものが見当たらないので、とりあえず日本サーボのWEBから類似するものを
調査です。すくなくとも、配線の色と接続法だけわかればいいので。
 で、調べてみて気づきましたが日本サーボは社名が日本電産サーボに変わったようですね。どうやら日本電産の
グループ会社になったようです。知りませんでした。

で、バイポーラ駆動のモータの取り説からから配線の色と接続がわかりました。なお、巻き線の抵抗を測定すると39Ωと結構高いです。
おそらく12Vあるいは24V電源でつかうのでしょう。


日本電産サーボのHPより引用。2相のバイポーラ型の接続がこれで確認できます。

とりあえず動かしてみましょう!

折角なので、簡単なドライバーをつくって動かすことにしました。バイポーラのステップモータを動かすためには
フルブリッジ(Hブリッジ)の駆動回路が必要になります。本来は専用の駆動ICをつかうのが便利ですが、手元にはないので
適当なトランジスタを寄せ集めて組んでみることにしました。
 ちょうど、秋月の年始の福袋を買ったときにMOSFETが大量に入っていたので、それを消費させることにしました。
しかし、このMOSFETですが、まだ秋月でも4個200円で売っていますが、なぜ福袋に大量にいれているのだろう?
ちょっと不思議な感じです。


福袋に入っていたMOSFET。これと同じ量のものが3袋分ありました。


IRFW540A:VDSS=100V,ID=28A、RDS=0.041Ωです。

フルブリッジは2個必要ですので、MOSFETは合計8個必要です。ブレッドボードに刺さるように
40PのICソケットに無理やりとりつけました。MOSFETのパッケージがリードタイプなら直接ブレッドボードに
突き刺せるのですが、このタイプだと無理ですからね。


40PのICソケットに8個のMOSFETをのせました。

回路は超簡略して下記の通りです。MOSFETなのでゲートに電流は流れませんから、PICのIOポートに直接接続しています。
MOSFETをONさせるためにはゲート電圧は最大で4V必要です(最小では2V)。回路のPICのC4〜C7に接続したMOSFETは問題ありませんが、
C0〜C3につないだMOSFETは駆動電圧が足りない可能性があります。そのため、すこしだけ動作電圧を上げて6Vで動かします。
PICの上限電圧は5.5Vですが、少々は大丈夫でしょう・・・。
 こんな回路なので、モータに加わる電圧は2〜4V程度の予想ですが、負荷がなければ、まあなんとか回ってくれるでしょう。



こんな回路で動作させてみます。PICには高めの電圧がかかっています。PICさん、ごめんなさい。


試験動作プログラムはです。100ステップ(1回転)させてすこし休憩、を繰り返します。

動きました!

簡単な回路とプログラムですが、まあなんとか回りました。
ただし、動作電圧が低いためか、モータの回転速度はあまり上げられません。
それに、軸を指で挟んでやると簡単に止まってしまいます。電圧が低いので
トルクがでていません。まあ、仕方ないですね。


一応、モータの回転を確認しました。弱弱しくまわります。


モータに加わる電圧は4V程度です。流れている電流も100mA程度です。


ちゃんとしたドライバーで動かしてみよう!

動くことも確認できたので、折角なのでちゃんとしたドライバーで動かしてみたくなりました。
ドライバーについては、AMAZONをみてみると安価なものがいくつかヒットするのでそれらから選択することにしました。

どのドライバーにしようかな?

ネットを調べて、色々とでてきます。

最初に候補にあがったのがこれです。920円なので1個あたり184円です。安いですね。評価の数もそれなりにあります。
で、その評価内容をみていると、どうやらかなり高い確率で不良品が混じっているようです。
5個中で2個動きません!とかいう書き込みも散見。こりゃ、ちょっと避けたほうがよさそうです。

これが安くて機能もたかそうですが、不良品の混入率が高いようなのでちょっと遠慮しました。

次の候補はこれ。206円/個で送料込みです。

これも安くてよさそうです。

これに使われているドライバーのICはL298Nというものですが、このICは秋月からも売られています。
秋月では350円/個です。秋月の価格も、他の店にくらべると安いと思うのですが、上記では、ICが基板について、放熱板もついてなぜ206円でできるのか謎です・・・・。


秋月からもL298Nが売られています。350円/個です。

ただ、このドライブ基板はドライバーのみ、すなわちモータを駆動するトランジスタのみが入ったものであり、
パルス制御は外部で行う必要があります。ちょっとつかうのは面倒かな〜

選んだのはDRV8825

結局色々と探してみて、これを選ぶことにしました。DRV8825をつかったドライブ基板です。
すこしお高い(260円/個)ですが、機能が高そうです。
 この手のICはモータ回転方向とパルスを入力するだけで、モータが回るので便利につかえます。
それに加えて、マイクロステップの機能もあるのでモータを高分解能に制御することができます。
今回買ったモータは100パルス1回転ですが、このICをつかえば最大で3200パルスで1回転と
することもできるはずです。



マイクロステップとは、A、B相にコイルに流れる電流をON/OFFの2値だけでなく、アナログ的に変化させることでステッピングモータの動作量を
本来のステップ間隔に対して内挿を行います。このICでは最大で32分割までできます。実際には電圧をアナログ変化させるのではなくて、
PWM変調をかけて見かけ上の正弦波にしています。


マイクロステップの動作原理(?)みたいなものです。

気がかりは・・・・

安いのはいいのですが、気がかりはデータシートの類が付属していないことです。
中華製を買って、いままで取り説がついてきたことはほとんどありません。おそらく、今回も部品だけが送られるのだろうな〜と予想です。
ただ、別のメーカのドライバーでは、基板の裏側に端子のシルクがあります。
jこれがあればまあ、なんとかなるかもしれません。


基板の裏側に、このような端子のシルクがあるといいのですが・・・・

それにしても安いな〜

ちなみに、ドライバー素子のDRV8825ですが、DIGIEYで買うと1個なら441円/個で、1000個買っても233円/個です。
今回購入したのは、ICに基板と部品がついて、さらに放熱板もついています。それでいて260円/です。いったい、どういう
からくりなんでしょうね?人件費が安いだけでは説明できないようなきがします。

まあ、いいっか!

ブツ届く!

早速AMZONで注文したブツが届きました。AMAZONのプチプチの封筒の中に、簡素な包装で入っています。
最初は、こんなんじゃ中身が壊れるやん!と思いましたが、国内の配送は丁寧なのか、壊れたものに出くわしたことはありません。
そのため、この形態での配送には慣れてしまいました。

こんな包装で送られてきます。もう慣れました。



早速1個を開封して中身を確認します。基板と放熱板が入っています。これで260円/個です。

これが安さの秘密かな?

ICのマーキングを確認しようと思いましたが、どうやらICの表面印刷は削りとられているようです。
このあたりに安さの秘密があるのでしょうね。例えばコピー品であったり、メーカからの横○しだったり・・・。
こちらとしては、動けばいいのだけど、すくなくとも合法なものであることを祈るばかりです。


表面のマーキングは削りとられています。

動かしてみましょう!

さっそくブレッドボードに突き刺して動かしてみましょう。
その前に、ピンの機能の確認ですが、裏面にシルクがありました。
これで、使い方はわかりそうです。

裏面にシルクがあるので、一応の機能がわかります。

備忘録みたいなものですが、DRV8825のデータシートを眺めながらピンの機能を列挙しておきました。

GND DIR INPUT (H:CW, L:CCW)
OUTPUT FAULT STEP INPUT PULSE INPUT
OUTPUT MOTOR 2A SLEEP ACTIVE LOW
OUTPUT MOTOR 1A RESET ACTIVE LOW
OUTPUT MOTOR 2B M2 INPUT MODE
OUTPUT MOTOR 2B M1 INPUT MODE
GND M0 INPUT MODE
MOTOR POWER VMOT ENABLE INPUT ACTIVE LOW

使い方は簡単で、基本的には制御線は2本でたります。回転の方向をDIRで決めて、
あとはパルスをSTEPに送りこむだけです。これで、パルス分の回転をします。

動いた!???
まずはフルモードで動かします(マイクロステップは使わない)。すなわち3.5deg/stepのモータですから
100パルスで1回転です。これは問題なく動きました。モータにかかる電圧も電源電圧(12V)がフルに
かかりますから、トルクも結構でています。指でつまんでも止まりません。思いっきりつまむと止まりますが・・・。


フルモードで動かしました。まずは問題なしです。


モータにかかる電圧は電源電圧がそのままかかります。

マイクロステップはだめかな?

つぎにマイクロステップの設定にします。8マイクロステップに設定すると、
今度はパルス800回で丁度1回転するようになりますが、どうも動きがぎこちない。
モータの波形をみると、フルモードと変わりません。どうやら、基板上についていいるVRで
PWMの変調を調整するようです。

マイクロステップはこれでPWMを調整するようです。

で、VRを調整していくとマイクロステップに動作を移行していくのですが、完全な正弦波になりません。
やっかいなことに、正弦波にちかづけようとするとトルクが低下してモータがストップしてしまいます。
また、ぎりぎりで動くところの設定がかなりシビアです。


マイクロステップはうまく動かないようです。

うまく動かない原因は、多分モータ側の問題です。最初にモータの巻き線を測定したときに39Ωとかなり
高かったのですが、これは細い線をたくさん巻いているためです。そのため巻き線のインダクタンスが
大きくなって、PWM制御ができないためだろうな〜と推察しています。できているのだけど、電流が少ないので
トルクがでないのでしょう。
 最近のステッピングモータは動作電流が大きくなっているのは、巻き線数を少なくしてインダクタンスを
下げているからなんだと思います。

まあ、このモータは3.6deg/stepでつかうこととしましょう

で、何につかうの?・・を考えなくっちゃ!!

L298ドライバーも買ってみました 2019.12.17

こちらのドライバーも買ってみました。
こちらは、単なるHブリッジの回路が2つあるだけなので、モータの駆動信号ABはマイコン側で作る必要があります。
まあ、大した手間ではないですが・・・・。

こちらのドライバーも買ってみました。ちょと値上げしたようです。

なぜ、新しいドライバーを買ったかといえば・・・・・先に買ったドライバーのロジック電源に誤って15Vを加えてしまい、
見事にICに穴があきました(燃えました・・・・・)。


購入したブツです。一応、写真と同じです。


相変わらず、ICの品番はけずりとってあります。ひょっとしてはじめから書いてないものをつかっている?

気になる表示があります

このL298はモータのドライブ電源とは別にロジック回路用に5Vの電源が必要になります。
基板上には78M05が乗っていて、モータのドライブ電圧から5Vを生成しています。
それならば、78M05の上限電圧の35Vまだ大丈夫のはずですが・・・・・、ひょっとして
ロジック回路の消費電力が大きくて、発熱の問題から12Vで打ち止めにしているのかな?
でも消費電流は高々30mA程度のようなので、しれているのですが・・・よくわかりません。
まあ、気にしないでおきましょう。


モータ電源からロジック電源の生成には78M05がつかわれています。
ということは入力35Vまで使えるはずだけどな〜?。


とりあえず動かしてみましょう!

とりあえず配線して動かしてみました。
モータ配線がよくわからなかったので、回らなければ変更するという感じでテストです。

とりあえず回してみましょう。

無事、回りました!

備忘録代わりに配線だけ記録しておきましょう。

基板(OUT1) モータ赤
基板(OUT2) モータ青
基板(OUT3) モータ黄
基板(OUT4) モータ白


int16 phase;
step_ap(){output_high(IN1);output_low(IN2);}

step_am(){output_low(IN1);output_high(IN2);}

step_bp(){output_high(IN3);output_low(IN4);}
step_bm(){output_low(IN3);output_high(IN4);}
delay_motor(){delay_us(4000);}
motor_step(){

              switch(phase&3){
              case 0:step_am();step_bm();delay_motor();break;
              case 1:step_ap();step_bm();delay_motor();break;
              case 2:step_ap();step_bp();delay_motor();break;
              case 3:step_am();step_bp();delay_motor();break;
              default:break; 
}
}

これでPHASEを1つづつ増やして、motor_step()を実行すれば
右回転で回ります。反対にPHASEを-1すると反転しました。


(おしまい)