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); } } }