前回「PIC16F1827 + MDP-35A(Stepper Motor) を試す」までは、ステッピング・モーターをTA7774PGで駆動していた。
今回はハーフブリッジドライバのSN754410NEで駆動してみる。
秋月のMDP-35Aというステッピング・モーターのデータシートを眺めていたら、TA7774PGやTB6674PGでは2相励磁での駆動しか出来ないことに気付いた。
とりあえず動けばいいということで、いろんな駆動方法があるとかはよく見てこなかったから、実際には2相励磁で駆動していても2相励磁という呼び名を知らずにいた。
というより、TA7774PGではAとBの入力端子しかなく、~Aと~Bは自動的に論理が反転されて出力されるので、2相励磁でしか使えなかったのだと思う。
確かに2ピンで済むのでピン数節約といういい面もあるが、どうせPICで動かすのなら、ピン数に余裕さえあれば4ピン使って普通のドライバで駆動する手もありだと思う。
デジタルな励磁方法には、1相励磁、2相励時、1-2相励磁という3つの方法があるが、4ピン使う気ならどの方法も使える。
下の図の左が2相励磁、右がここで試した1-2相励磁だ。
1-2相励磁の方がなめらかな動きだと書いてあるが、実際に比べてみてないので違いはよくわからない。
プログラムも以下のようにした。
1方向に回り続けるだけの単純なものだというのもあるが、こっちの書き方の方がだいぶシンプルだと思う。
1 2 3 4 5 6 7 8 9 |
unsigned char i; unsigned char p[] = {0b0001, 0b0011, 0b0010, 0b0110, 0b0100, 0b1100, 0b1000, 0b1001}; while(1){ for(i = 0; i < 8; i++){ LATA = p[i]; __delay_ms(2); } } |
上は、ただずっと回転し続けるコードだが、下は、1回点ごとに一度停止するコード。
1 2 3 4 5 6 7 8 9 |
while(1){ for(j = 0; j < 12; j++){ for(i = 0; i < 8; i++){ LATA = p[i]; __delay_ms(5); } } __delay_ms(500); } |
データシートの値では48ステップのところ、12 × 8 = 96 = 48 × 2 で1周していることになる。
つまり2倍のなめらかさということになるか。