Arduinoでステッピングモータ42BYGHM809(Sparkfun)をL6470ステッピングモータドライバ(Strawberry Linux)で動かす

ステッピングモータとステッピングモータドライバは千石電商で購入した。
・ステッピングモータ 42BYGHM809
http://www.sengoku.co.jp/mod/sgk_cart/detail.php?code=EEHD-0PK4
・ステッピングモータドライバ L6740
http://www.sengoku.co.jp/mod/sgk_cart/detail.php?code=EEHD-0KU3

ここのコードを使わせてもらった。
http://spinelify.blog.fc2.com/blog-entry-41.html

とりあえずコードをメモ代わりに貼っておく

#include <SPI.h>
#include <MsTimer2.h>

// ピン定義。
#define PIN_SPI_MOSI 11
#define PIN_SPI_MISO 12
#define PIN_SPI_SCK 13
#define PIN_SPI_SS 10
#define PIN_BUSY 9

void setup()
{
  delay(1000);
  pinMode(PIN_SPI_MOSI, OUTPUT);
  pinMode(PIN_SPI_MISO, INPUT);
  pinMode(PIN_SPI_SCK, OUTPUT);
  pinMode(PIN_SPI_SS, OUTPUT);
  pinMode(PIN_BUSY, INPUT);
  SPI.begin();
  SPI.setDataMode(SPI_MODE3);
  SPI.setBitOrder(MSBFIRST);
  Serial.begin(9600);
  digitalWrite(PIN_SPI_SS, HIGH);
 
  L6470_resetdevice(); //残留コマンドの削除とリセット 
  L6470_setup();  //L6470を設定
  
  MsTimer2::set(100, fulash);
  MsTimer2::start();
  delay(2000);
  
  //L6470_move(1,160000);
  //L6470_busydelay(5000); 
  //L6470_run(0,94000);
  //L6470_run(0,10000);
  //delay(6000);
  //L6470_softstop();
  //L6470_busydelay(5000);
  //L6470_goto(0x6789);
  //L6470_busydelay(5000);
  //L6470_run(0,0x4567);
  //L6470_run(1,94000);
  //delay(1000);
  //L6470_hardhiz();
}

void loop(){
  testDrive();
}

void rotateTest(){
  L6470_move(1,16000);  
  L6470_hardhiz(); //回転急停止、保持トルクなし
  L6470_move(0,16000);  
  L6470_hardhiz(); //回転急停止、保持トルクなし  
}

void testDrive(){
  L6470_run(0,300000);
  delay(5000);
  L6470_softstop();
  L6470_busydelay(500);
  L6470_run(1,300000);
  delay(5000);
  L6470_softstop();
  L6470_busydelay(500);  
}

void L6470_setup(){
//L6470_setparam_acc(0x40); //default 0x08A (12bit) (14.55*val+14.55[step/s^2])
L6470_setparam_acc(0x08A); //default 0x08A (12bit) (14.55*val+14.55[step/s^2])
//L6470_setparam_dec(0x40); //default 0x08A (12bit) (14.55*val+14.55[step/s^2])
L6470_setparam_acc(0x08A); //default 0x08A (12bit) (14.55*val+14.55[step/s^2])
//L6470_setparam_maxspeed(0x40); //default 0x041 (10bit) (15.25*val+15.25[step/s])
//L6470_setparam_maxspeed(0xFFFFFF); //default 0x041 (10bit) (15.25*val+15.25[step/s])
// When half step // L6470_setparam_maxspeed(0x5C); //default 0x041 (10bit) (15.25*val+15.25[step/s])
L6470_setparam_maxspeed(0xFFFFFF); //default 0x041 (10bit) (15.25*val+15.25[step/s])
L6470_setparam_minspeed(0x00); //default 0x000 (1+12bit) (0.238*val[step/s])
L6470_setparam_fsspd(0xff); //default 0x027 (10bit) (15.25*val+7.63[step/s])
//L6470_setparam_fsspd(0x3ff); //default 0x027 (10bit) (15.25*val+7.63[step/s])
//L6470_setparam_fsspd(0x027); //default 0x027 (10bit) (15.25*val+7.63[step/s])
L6470_setparam_kvalhold(0x80); //default 0x29 (8bit) (Vs[V]*val/256)
L6470_setparam_kvalrun(0xd0); //default 0x29 (8bit) (Vs[V]*val/256)
L6470_setparam_kvalacc(0x80); //default 0x29 (8bit) (Vs[V]*val/256)
L6470_setparam_kvaldec(0x60); //default 0x29 (8bit) (Vs[V]*val/256)

//L6470_setparam_stepmood(0x03); //default 0x07 (1+3+1+3bit)
L6470_setparam_stepmood(0x07); //default 0x07 (1+3+1+3bit)

}

void fulash(){
  Serial.print("0x");
  Serial.print( L6470_getparam_abspos(),HEX);
  Serial.print("  ");
  Serial.print("0x");
  Serial.println( L6470_getparam_speed(),HEX);
}