STマイクロエレクトロニクスのステッピングモータードライバー「L6470」用のライブラリ。 既にある他のものとは違い、デフォルトで芋蔓式接続(デイジーチェーン接続)に対応しています。 回転速度や16進数変換のためのメソッドもあるので、中級者でも比較的安心して使用できるかと思います。
3DプリンタとかハンドメイドNCマシンとかで使える かも しれない、L6470のデイジーチェーン接続。 既存のものはデイジーチェーン全無視で作成されていたので、新たに作成しました。
-----------------------------------------
動画では結線を間違えているため、CWとCCWが反転しています。ご了承ください。
-----------------------------------------
秋月電子で販売しているL6470ドライバーキット
-----------------------------------------
デイジーチェーン時のSPI通信の様子
-----------------------------------------
デイジーチェーン接続の大雑把な配線図
-----------------------------------------
なんかコメント振ってもWikiに反映されないし、面倒になったので中途半端ですが公開します。 苦情などはこちらのページにコメントいただくか、 http://l52secondary.blog.fc2.com/blog-category-1.html まで。気が向けば回答します。
main.cpp@4:781871b89ac4, 2016-01-12 (annotated)
- Committer:
- Yajirushi
- Date:
- Tue Jan 12 11:33:16 2016 +0000
- Revision:
- 4:781871b89ac4
- Parent:
- 0:b1046a5398ca
Add Daisy-chain queue and methods. rewrite many...many...so many comments.
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
Yajirushi | 0:b1046a5398ca | 1 | #include "mbed.h" |
Yajirushi | 0:b1046a5398ca | 2 | #include "L6470SDC.h" |
Yajirushi | 0:b1046a5398ca | 3 | |
Yajirushi | 0:b1046a5398ca | 4 | int main(){ |
Yajirushi | 0:b1046a5398ca | 5 | //インスタンス化 |
Yajirushi | 0:b1046a5398ca | 6 | //USBシリアルとSPIとCSのピン別名を渡す |
Yajirushi | 0:b1046a5398ca | 7 | L6470SDC l6470(USBTX, USBRX, SPI_MOSI, SPI_MISO, SPI_SCK, D10); |
Yajirushi | 0:b1046a5398ca | 8 | |
Yajirushi | 0:b1046a5398ca | 9 | wait(1); |
Yajirushi | 0:b1046a5398ca | 10 | |
Yajirushi | 0:b1046a5398ca | 11 | //L6470ドライバーの初期化 |
Yajirushi | 0:b1046a5398ca | 12 | l6470.init(); |
Yajirushi | 0:b1046a5398ca | 13 | |
Yajirushi | 0:b1046a5398ca | 14 | wait(5); |
Yajirushi | 0:b1046a5398ca | 15 | |
Yajirushi | 0:b1046a5398ca | 16 | //1番目のモーターの最大速度を毎秒100ステップに設定 |
Yajirushi | 0:b1046a5398ca | 17 | l6470.setMaximumSpeed(1, l6470.calcMaxSpd(100)); |
Yajirushi | 0:b1046a5398ca | 18 | //2番目のモーターの最大速度を毎秒200ステップに設定 |
Yajirushi | 0:b1046a5398ca | 19 | l6470.setMaximumSpeed(2, l6470.calcMaxSpd(200)); |
Yajirushi | 0:b1046a5398ca | 20 | |
Yajirushi | 0:b1046a5398ca | 21 | //1番目と2番目のモーターを5秒回転させる |
Yajirushi | 4:781871b89ac4 | 22 | //最大速度は毎秒300ステップ |
Yajirushi | 4:781871b89ac4 | 23 | //キューを介して実行していないので、開始タイミングがズレる |
Yajirushi | 4:781871b89ac4 | 24 | l6470.run(1, l6470.calcSpd(300), true); //1番は時計回り |
Yajirushi | 4:781871b89ac4 | 25 | l6470.run(2, l6470.calcSpd(300), false); //2番は反時計回り |
Yajirushi | 0:b1046a5398ca | 26 | wait(5.0); |
Yajirushi | 0:b1046a5398ca | 27 | l6470.stop(1); |
Yajirushi | 0:b1046a5398ca | 28 | l6470.stop(2); |
Yajirushi | 0:b1046a5398ca | 29 | |
Yajirushi | 0:b1046a5398ca | 30 | //モーターが完全停止するまで待つ |
Yajirushi | 0:b1046a5398ca | 31 | while(l6470.isBusy(1) || l6470.isBusy(2)); |
Yajirushi | 0:b1046a5398ca | 32 | |
Yajirushi | 0:b1046a5398ca | 33 | //動きが早すぎるので人間が追い付くための待ち時間 |
Yajirushi | 0:b1046a5398ca | 34 | wait(3.0); |
Yajirushi | 0:b1046a5398ca | 35 | |
Yajirushi | 4:781871b89ac4 | 36 | //実行キューに追加:1番目のモーター7回転(1回転200ステップ×マイクロステップ数×7)、時計回り |
Yajirushi | 4:781871b89ac4 | 37 | l6470.ENQ_move(1, 200*128*7, true); |
Yajirushi | 0:b1046a5398ca | 38 | |
Yajirushi | 4:781871b89ac4 | 39 | //実行キューに追加:2番目のモーター7回転(1回転200ステップ×マイクロステップ数×7)、時計回り |
Yajirushi | 4:781871b89ac4 | 40 | l6470.ENQ_move(2, 200*128*7, true); |
Yajirushi | 4:781871b89ac4 | 41 | |
Yajirushi | 4:781871b89ac4 | 42 | //キューを実行 |
Yajirushi | 4:781871b89ac4 | 43 | l6470.Qexec(); |
Yajirushi | 0:b1046a5398ca | 44 | |
Yajirushi | 0:b1046a5398ca | 45 | //モーターが回転を終えるまで待つ |
Yajirushi | 0:b1046a5398ca | 46 | //2番目のモーターは1番目の2倍の速度で動くため、待ち続けることになる |
Yajirushi | 0:b1046a5398ca | 47 | while(l6470.isBusy(1) || l6470.isBusy(2)); |
Yajirushi | 0:b1046a5398ca | 48 | |
Yajirushi | 0:b1046a5398ca | 49 | //1番目のモーターの最大速度を2番目と同一に設定 |
Yajirushi | 0:b1046a5398ca | 50 | l6470.setMaximumSpeed(1, l6470.getMaximumSpeed(2)); |
Yajirushi | 0:b1046a5398ca | 51 | |
Yajirushi | 0:b1046a5398ca | 52 | //それぞれのモーターの初期位置に戻る(zeroとhomeは別名の同一関数) |
Yajirushi | 0:b1046a5398ca | 53 | l6470.home(1); |
Yajirushi | 0:b1046a5398ca | 54 | l6470.zero(2); |
Yajirushi | 0:b1046a5398ca | 55 | } |