質問: ### 前提・実現したいこと 秋月版の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 #include // ピン定義。 #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の部分をつなぎ変える。11-2だけつなぐ、23-4だけつなぐ、31-2, 3-4を繋ぐ ・モータードライバへの電源を、 112V1Aのアダプタで供給する, 29V電池×3個で供給する、35V1Aのアダプタで供給する。 ### 補足情報(FW/ツールのバージョンなど) 電源周りが悪いのかなと思っていますが、どのように変更すればいいのかがわかりません。 何かアドバイスをお願いします。
回答: まず、このモータはユニポーラで、ドライバがバイポーラ用という事は理解していますか? 多分バイポーラ結線しただけで使えるとは思いますけど、「絶対」ではありません。 で、UNOなら5V駆動になりますから、ジャンパーは3-4のみで、5VをArduinoからEXT-VDDに入れて、ドライバを5Vで動かします。 その電源なら、12V1Aの方が良いと思います。 で、 L6470_setparam_kvalrun(0x50); L6470_setparam_kvalacc(0x50); L6470_setparam_kvaldec(0x50); あたりは0x50→170(8V相当)で試すのが良いと思います。 ※デフォルトの0x50だと3.7V相当です。バイポーラ結線なら低すぎます。 ちゃんと結線しているのなら、その程度の変更で動きそうな気がします。