VCCが5Vなのを注意
ドライバ ... L6470使用 ステッピングモータードライブキット( http://akizukidenshi.com/catalog/g/gK-07024/ )
Arduino ... UNO
■ ピンアサイン(ドライバ 対 ステッピングモーター)
OUT1A ... 赤
OUT2A ... 緑
OUT2B ... 青
OUT1B ... 城
■ ピンアサイン(ドライバのCN4 対 Arduino UNO)
pin1 = D9
pin8 = D10
pin7 = D11
pin5 = D12
pin6 = D13
pin3 = GND
■ ピンアサイン(ドライバのその他)
JP1 ... pin1とpin2をジャンパでショート
VS ... 5V(5V3AのAC/DCアダプタ)
GND ... 忘れずにArduinoとAC/DCアダプタ共通化
■ テストコード
#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); } void loop(){ while (Serial.available() > 0) { int data = Serial.read(); rotateTest(); } //testDrive(); } void rotateTest(){ L6470_move(1, 32000); L6470_hardhiz(); //回転急停止、保持トルクなし L6470_move(0, 32000); L6470_hardhiz(); //回転急停止、保持トルクなし } void L6470_setup(){ L6470_setparam_acc(0x08A); //[R, WS] 加速度default 0x08A (12bit) (14.55*val+14.55[step/s^2]) L6470_setparam_dec(0x08A); //[R, WS] 減速度default 0x08A (12bit) (14.55*val+14.55[step/s^2]) L6470_setparam_maxspeed(0xFFFFFF); //[R, WR]最大速度default 0x041 (10bit) (15.25*val+15.25[step/s]) L6470_setparam_minspeed(0x00); //[R, WS]最小速度default 0x000 (1+12bit) (0.238*val[step/s]) L6470_setparam_fsspd(0xff); //[R, WR]μステップからフルステップへの切替点速度default 0x027 (10bit) (15.25*val+7.63[step/s]) L6470_setparam_kvalhold(0x80); //[R, WR]停止時励磁電圧default 0x29 (8bit) (Vs[V]*val/256) L6470_setparam_kvalrun(0xd0); //[R, WR]定速回転時励磁電圧default 0x29 (8bit) (Vs[V]*val/256) L6470_setparam_kvalacc(0x80); //[R, WR]加速時励磁電圧default 0x29 (8bit) (Vs[V]*val/256) L6470_setparam_kvaldec(0x60); //[R, WR]減速時励磁電圧default 0x29 (8bit) (Vs[V]*val/256) 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); }
■ その他
ライブラリはこちらのものを使用させていただいた : http://spinelify.blog.fc2.com/blog-entry-41.html
コードはこちらのものを応用させていただいた : http://d.hatena.ne.jp/seinzumtode/20130924/1380016507