2014年8月15日金曜日

Arduinoでステッピングモータ(バイポーラ編)

今回はArduinoでステッピングモーターを動かしてみたいと思います。
ちなみにバイポーラ駆動で、簡単なモータドライバを作ります。
ユニポーラ編はこちら→Arduinoでステッピングモータ(ユニポーラ編)

用意するもの

・Arduino UNO R3
ステッピングモーター 17PM-K044-AKZ
MOS-FET 2N7000(10個入り)
・抵抗 4.7kΩ 4つ
・9V電池 006P

抵抗はプルダウンに使うので数kΩ~10kΩぐらいならどれでもいいと思います。

配線とスケッチ

 

図1 配線した様子

相変わらずごちゃごちゃしててすみません…
こう…なんかうまい感じにまとまらなくてアレでした。
このFETは左からソース、ゲート、ドレインになってます。(図1の向きから見て)

8つのFETを右上から
T7 T5 T3 T1
T8 T6 T4 T2
とします。

A側を+V、Aバー側をGNDに繋げるにはT7とT6をONにします。
このように+V側に繋げるのをA→B→A_→B_→A→…の順でやっていけばモータは回転します。
→…)

よって、各FET(T7,T6) (T3,T2) (T5,T6) (T1,T2)をセットとしてパルスを送れば、ユニポーラ駆動の時と同じスケッチが使えるなーと思いました。

なのでArduinoのDigitalPin10~13を
10 (T7,T6)  A
11 (T3,T2)  B
12 (T5,T6)  A_
13 (T1,T2)  B_
のように繋げます。以下はユニポーラ編のスケッチの流用です。

1相励磁

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
int pin[4] = {10,11,12,13};
 
void setup()
{
    for(int i=0; i<4; i++)
    {
        pinMode(pin[i], OUTPUT);
    }
}
 
void loop()
{
    for(int i=0; i<4; i++)
    {
        int prev = i-1;
        if(prev == -1) prev =3;
        digitalWrite(pin[prev], LOW);
        digitalWrite(pin[i], HIGH);
        delay(2);
    }
}

2相励磁
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
int pin[4] = {10,11,12,13};
 
void setup()
{
    for(int i=0; i<4; i++)
    {
        pinMode(pin[i], OUTPUT);
    }
}
 
void loop()
{
    for(int i=0; i<4; i++)
    {
        int prev = i-1;
        int next = i+1;
        if(prev == -1) prev =3;
        if(next == 4) next = 0;
        digitalWrite(pin[prev], LOW);
        digitalWrite(pin[i], HIGH);
        digitalWrite(pin[next], HIGH);
        delay(2);
    }
}

1-2相励磁
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
int pin[4] = {10,11,12,13};
 
void setup()
{
    for(int i=0; i<4; i++)
    {
        pinMode(pin[i], OUTPUT);
    }
}
 
void loop()
{
    for(int i=0; i<4; i++)
    {
        int prev = i-1;
        int next = i+1;
        if(prev == -1) prev =3;
        if(next == 4) next = 0;
        digitalWrite(pin[prev], LOW);
        digitalWrite(pin[i], HIGH);
        digitalWrite(pin[next], LOW);
        delay(2);
        digitalWrite(pin[next], HIGH);
        delay(2);
    }
}
1-2相励磁は1相励磁と2相励磁を交互に繰り返す方法で、ステップ角が半分になるため、なめらかな回転になるらしいです。(比べてみないと正直よくわからない。)


結果

 
実際に配線した様子



簡単なものですが、バイポーラ駆動用のモータドライバができました。
定格とかを考えると、果たしてこのMOS-FETと17PM-K044-AKZの組み合わせが適切だったかどうかわかりませんが、手持ちにこれしか無かったので…。

今までユニポーラ駆動のものしか使ったことがなかったのですが、バイポーラ駆動でも同じ感じでやればよいということがわかりました。

参考サイト
http://eleclog.quitsq.com/2012/06/mp4401-spg20-332.html



0 件のコメント:

コメントを投稿