ST-42BYG020 + MP4401 + Arduino

 
ステッピングモーターの仕様

◆基本ステップ角:1.8度±5%
◆1回転ステップ数:200
◆絶縁抵抗:100MΩ(500VDC)
◆コイル抵抗:20±10%Ω/相
◆入力定格電圧:12V
◆定格電流:0.6A/相
◆静止トルク:1.6kgf・cm
◆重量:0.21kg
※1パルスあたり 0.005 回転

A:  赤
/A: 緑 
V+: 黒
V+: 白
B: 黄
/B: 青 


・配線

・MP4401と(Arduino or ステッピングモーター)の配線
Pin1: D10[Arduino]
Pin2: ステッピングモーター 青
Pin3: Vin[Arduino, 12V]
Pin4: ステッピングモーター 黄
Pin5: D12[Arduino]
Pin6: GND
Pin7: GND
Pin8: D13[Arduino]
Pin9: ステッピングモーター 緑
Pin10: Vin[Arduino, 12V]
Pin11: ステッピングモーター 赤
Pin12: D11[Arduino]

・その他
Vin: ステッピングモーター 黒, ステッピングモーター 白, Arduino Vin
GND: 共通

参考: http://eleclog.quitsq.com/2012/06/mp4401-spg20-332.html
ステッピングモーターの線材は色が違うので注意!!!


・サンプルコード

int pin[4] = {10,11,12,13};
int spd = 10000;
int pls = 128;//128;
boolean states = true;

void setup(){
  Serial.begin(9600);

  for(int i=0;i<4;i++){
    pinMode(pin[i], OUTPUT);
  }

  pinMode(13, OUTPUT);
  digitalWrite(13, LOW);
}
 
void loop(){
  while (Serial.available() > 0) {
    int data = Serial.read();
    
    if (data == '0') {
      states = !states;
      
      // reset speed
      spd = 10000;
    }
    else if (data == '1') {
      if (spd > 2500) {
        spd -= 500;
      }
    }
    else if (data == '2') {
      if (spd < 95000) {
        spd += 500;
      }
    }
  }
  
  if (states == true) {
    Serial.println(spd);
    forward(1);
  
    if (spd > 2500) {
      spd -= 500;
    }
  }
  else {
  }
}

void forward(int rot){
  for(int i=0;i<rot*pls;i++){
    for(int i=0;i<4;i++){
       int prev = i-1;
       int next = i+1;
       if(prev < 0) prev = 3;
       if(next > 3) next = 0;
       digitalWrite(pin[prev], LOW);
       digitalWrite(pin[i], HIGH);
       digitalWrite(pin[next], HIGH);
       delayMicroseconds(spd);
     }
   }
}

void reverse(int rot){
  for(int i=0;i<rot*pls;i++){
     for(int i=3;i>=0;i--){
       int prev = i+1;
       int next = i-1;
       if(prev > 3) prev = 0;
       if(next < 0) next = 3;
       digitalWrite(pin[prev], LOW);
       digitalWrite(pin[i], HIGH);
       digitalWrite(pin[next], HIGH);
       delayMicroseconds(spd);
     }
   }
}