前提・実現したいこと
秋月版のL6470モータードライバを使って、ステッピングモータを動かしたいです。
動くはずのタイミングで、ステッピングモーターはピクっと動き、モータードライバのLEDが緑色に光りますが、正常な動きはしません。
使用しているもの
・ユニポーラ ステッピングモーターST-42BYG0506H(秋月)
・L6470(秋月)
・Arduino UNO
・電源は12V1Aのアダプタまたは、9V電池を3つ使用
配線は以下のサイトを参考にしています
・秋月版L6470使用ステッピングモータードライバの使い方
コードは、以下のサイトからダウンロードしたものをそのまま書き込みました。
・L6470をArduinoで簡単に動かすスケッチ北の国から電子工作(仮)
※編集・追記依頼がありましたので、、
秋月版ではないL6470モータードライバは持っておらず、動くかどうかの確認はできません。
ATOMIC ステッピングモータードライバキット
を持っていたのでこれでステッピングモーターを動かしたところ、正常に動かすことができました。
発生している問題・エラーメッセージ
コンパイルのエラー等はなくArduinoに書き込めました。
モータードライバのJP1ですが、
3-4を繋ぐと、ステッピングモーターは何も動かず、
1-2,3-4を両方繋ぐと、動くはずのタイミングでステッピングモーターがピクッとだけ動き、モータードライバのLEDが緑色に一瞬光ります。
該当のソースコード
L6470をArduinoで簡単に動かすスケッチ北の国から電子工作(仮)
こちらをダウンロードしそのままスケッチとしました。エラーは出ませんでした。
#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リセット L6470_setup(); //L6470を設定 MsTimer2::set(50, fulash);//シリアルモニター用のタイマー割り込み MsTimer2::start(); delay(4000); L6470_move(1,1600);//指定方向に指定数ステップする L6470_busydelay(5000); //busyフラグがHIGHになってから、指定ミリ秒待つ。 L6470_run(0,10000);//指定方向に連続回転 delay(6000); L6470_softstop();//回転停止、保持トルクあり L6470_busydelay(5000); L6470_goto(0x6789);//指定座標に最短でいける回転方向で移動 L6470_busydelay(5000); L6470_run(0,0x4567); delay(6000); L6470_hardhiz();//回転急停止、保持トルクなし } void loop(){ } void L6470_setup(){ L6470_setparam_acc(0x40); //[R, WS] 加速度default 0x08A (12bit) (14.55*val+14.55[step/s^2]) L6470_setparam_dec(0x40); //[R, WS] 減速度default 0x08A (12bit) (14.55*val+14.55[step/s^2]) L6470_setparam_maxspeed(0x40); //[R, WR]最大速度default 0x041 (10bit) (15.25*val+15.25[step/s]) L6470_setparam_minspeed(0x01); //[R, WS]最小速度default 0x000 (1+12bit) (0.238*val[step/s]) L6470_setparam_fsspd(0x3ff); //[R, WR]μステップからフルステップへの切替点速度default 0x027 (10bit) (15.25*val+7.63[step/s]) L6470_setparam_kvalhold(0x50); //[R, WR]停止時励磁電圧default 0x29 (8bit) (Vs[V]*val/256) L6470_setparam_kvalrun(0x50); //[R, WR]定速回転時励磁電圧default 0x29 (8bit) (Vs[V]*val/256) L6470_setparam_kvalacc(0x50); //[R, WR]加速時励磁電圧default 0x29 (8bit) (Vs[V]*val/256) L6470_setparam_kvaldec(0x50); //[R, WR]減速時励磁電圧default 0x29 (8bit) (Vs[V]*val/256) L6470_setparam_stepmood(0x03); //ステップモード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); }
void loop {}
の中に
L6470_move(1,200); //正転方向に200ステップする
L6470_move(0,400); //逆転方向に400ステップする
を書いてみたりもしました。が動きませんでした。
試したこと
・JP1の部分をつなぎ変える。①1-2だけつなぐ、②3-4だけつなぐ、③1-2, 3-4を繋ぐ
・モータードライバへの電源を、 ①12V1Aのアダプタで供給する, ②9V電池×3個で供給する、③5V1Aのアダプタで供給する。
補足情報(FW/ツールのバージョンなど)
電源周りが悪いのかなと思っていますが、どのように変更すればいいのかがわかりません。
何かアドバイスをお願いします。