STマイクロエレクトロニクスのステッピングモータードライバー「L6470」用のライブラリ。 既にある他のものとは違い、デフォルトで芋蔓式接続(デイジーチェーン接続)に対応しています。 回転速度や16進数変換のためのメソッドもあるので、中級者でも比較的安心して使用できるかと思います。
3DプリンタとかハンドメイドNCマシンとかで使える かも しれない、L6470のデイジーチェーン接続。 既存のものはデイジーチェーン全無視で作成されていたので、新たに作成しました。
-----------------------------------------
動画では結線を間違えているため、CWとCCWが反転しています。ご了承ください。
-----------------------------------------
秋月電子で販売しているL6470ドライバーキット
-----------------------------------------
デイジーチェーン時のSPI通信の様子
-----------------------------------------
デイジーチェーン接続の大雑把な配線図
-----------------------------------------
なんかコメント振ってもWikiに反映されないし、面倒になったので中途半端ですが公開します。 苦情などはこちらのページにコメントいただくか、 http://l52secondary.blog.fc2.com/blog-category-1.html まで。気が向けば回答します。
Diff: main.cpp
- Revision:
- 4:781871b89ac4
- Parent:
- 0:b1046a5398ca
--- a/main.cpp Tue Jun 09 06:16:34 2015 +0000 +++ b/main.cpp Tue Jan 12 11:33:16 2016 +0000 @@ -19,9 +19,10 @@ 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番は反時計回り + //最大速度は毎秒300ステップ + //キューを介して実行していないので、開始タイミングがズレる + l6470.run(1, l6470.calcSpd(300), true); //1番は時計回り + l6470.run(2, l6470.calcSpd(300), false); //2番は反時計回り wait(5.0); l6470.stop(1); l6470.stop(2); @@ -32,11 +33,14 @@ //動きが早すぎるので人間が追い付くための待ち時間 wait(3.0); - //1番目のモーター7回転(1回転200ステップ×マイクロステップ数×7)、時計回り - l6470.move(1, 200*128*7, true); + //実行キューに追加:1番目のモーター7回転(1回転200ステップ×マイクロステップ数×7)、時計回り + l6470.ENQ_move(1, 200*128*7, true); - //2番目のモーター7回転(1回転200ステップ×マイクロステップ数×7)、時計回り - l6470.move(2, 200*128*7, true); + //実行キューに追加:2番目のモーター7回転(1回転200ステップ×マイクロステップ数×7)、時計回り + l6470.ENQ_move(2, 200*128*7, true); + + //キューを実行 + l6470.Qexec(); //モーターが回転を終えるまで待つ //2番目のモーターは1番目の2倍の速度で動くため、待ち続けることになる