2014年3月25日火曜日

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

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

用意するもの

・Arduino UNO R3
ステッピングモーター ST-42BYG020
モータードライバ MP4401
・9V電池 006P


配線とスケッチ

ST-42BYG020の線は
→…
の順番になるように並べて繋げれば回ります。
(逆にするともちろん逆回転しますが、それはプログラム次第で。)

冒頭でも言った通りこれはユニポーラ駆動での話なので、そもそもユニポーラとかバイポーラとかについてはこちらで分かり易く説明されています。バイファイラ巻きでユニポーラ駆動、モノファイラ巻きでバイポーラ駆動ってややこしいですね。


「MP4401」
pin
 1 - Arduino digital 10
 2 - ステッピングモーター ()
 3 - 9V
 4 - ステッピングモーター ()
 5 - Arduino digital 12
 6 - GND
 7 - GND
 8 - Arduino digital 13
 9 - ステッピングモーター ()
10 - 9V
11 - ステッピングモーター ()
12 - Arduino digital 11

 

配線はこのようにして、あとはスケッチを書きます。
とりあえず、ずっと回転し続けるものを励磁方法別に3つ。

2014/09/23 追記上の図なんですが、ArduinoのGNDがどこにも繋がってないですね…。
すみませんでした。ブレッドボード上のGNDと繋げてください。

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相励磁を交互に繰り返す方法で、ステップ角が半分になるからなめらかな回転になるらしいです。(比べてみないと正直よくわからない。)



結果

特に問題なくステッピングモーターを回転させることができました。
脱調?なのかどうかわかりませんが、delay(1);とすると回らなくなってしまったのでdelay(2);が1番速いと思います。ただ、うまく回転する周波数とかいろいろあるので速ければいいというわけでもなく…。そこら辺は必要なトルクとかに応じて励磁方法も変えたり何やかんやしてください。




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

4 件のコメント:

  1. どうぞ教えて下さい!
    spsを回しながら、toneで音を出したいのですが、同じLoop
    に入れるのは無理なのでしょうか?

    返信削除
  2. このコメントは投稿者によって削除されました。

    返信削除