STマイクロエレクトロニクスのステッピングモータードライバー「L6470」用のライブラリ。 既にある他のものとは違い、デフォルトで芋蔓式接続(デイジーチェーン接続)に対応しています。 回転速度や16進数変換のためのメソッドもあるので、中級者でも比較的安心して使用できるかと思います。
3DプリンタとかハンドメイドNCマシンとかで使える かも しれない、L6470のデイジーチェーン接続。 既存のものはデイジーチェーン全無視で作成されていたので、新たに作成しました。
-----------------------------------------
動画では結線を間違えているため、CWとCCWが反転しています。ご了承ください。
-----------------------------------------
秋月電子で販売しているL6470ドライバーキット
-----------------------------------------
デイジーチェーン時のSPI通信の様子
-----------------------------------------
デイジーチェーン接続の大雑把な配線図
-----------------------------------------
なんかコメント振ってもWikiに反映されないし、面倒になったので中途半端ですが公開します。 苦情などはこちらのページにコメントいただくか、 http://l52secondary.blog.fc2.com/blog-category-1.html まで。気が向けば回答します。
Diff: main.cpp
- Revision:
- 0:b1046a5398ca
- Child:
- 4:781871b89ac4
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/main.cpp Sat May 30 14:32:55 2015 +0000 @@ -0,0 +1,51 @@ +#include "mbed.h" +#include "L6470SDC.h" + +int main(){ + //インスタンス化 + //USBシリアルとSPIとCSのピン別名を渡す + L6470SDC l6470(USBTX, USBRX, SPI_MOSI, SPI_MISO, SPI_SCK, D10); + + wait(1); + + //L6470ドライバーの初期化 + l6470.init(); + + wait(5); + + //1番目のモーターの最大速度を毎秒100ステップに設定 + l6470.setMaximumSpeed(1, l6470.calcMaxSpd(100)); + //2番目のモーターの最大速度を毎秒200ステップに設定 + l6470.setMaximumSpeed(2, l6470.calcMaxSpd(200)); + + //1番目と2番目のモーターを5秒回転させる + //最大速度は毎秒400ステップ + l6470.run(1, l6470.calcSpd(400), true); //1番は時計回り + l6470.run(2, l6470.calcSpd(400), false); //2番は反時計回り + wait(5.0); + l6470.stop(1); + l6470.stop(2); + + //モーターが完全停止するまで待つ + while(l6470.isBusy(1) || l6470.isBusy(2)); + + //動きが早すぎるので人間が追い付くための待ち時間 + wait(3.0); + + //1番目のモーター7回転(1回転200ステップ×マイクロステップ数×7)、時計回り + l6470.move(1, 200*128*7, true); + + //2番目のモーター7回転(1回転200ステップ×マイクロステップ数×7)、時計回り + l6470.move(2, 200*128*7, true); + + //モーターが回転を終えるまで待つ + //2番目のモーターは1番目の2倍の速度で動くため、待ち続けることになる + while(l6470.isBusy(1) || l6470.isBusy(2)); + + //1番目のモーターの最大速度を2番目と同一に設定 + l6470.setMaximumSpeed(1, l6470.getMaximumSpeed(2)); + + //それぞれのモーターの初期位置に戻る(zeroとhomeは別名の同一関数) + l6470.home(1); + l6470.zero(2); +}