メカキネアートシステムで自動演奏装置

ありがとうございます!!明日、早速試してみます!!

「いいね!」 1

おかげさまでかなり良いところまで進みましたが
一点、上手くいきません。

押しボタンを押すと、演奏用のtrigger2.gが実行されるようになりました。
そこでtrigger2.gの先頭にG28のコマンドを追加し保存しました。

それで押しボタンを押すとホーミングはされるのですが、
演奏が始まりません。ホーミングだけで終わってしまいます。
G28を消すと演奏はされます。

ホーミングから演奏までされるには、どのような設定変更が
必要になるのでしょうか?

うーん。こちらではホーミング後もtriggerの中身は継続されますね
ちなみにこんな感じの最小のtrigger◯.gを作って確認しています。(WEBUIのコンソールにメッセージがでます)

M118 P0 S"トリガーされました。Home前" L2 ;メッセージ表示
G28 X ;Xホーミング
M118 P0 S"トリガーされました。Home後" L2 ;メッセージ表示

可能性としてですが

  • ホーミングでエラーが起きていて失敗している可能性
    • トリガーのボタンを押した際にWEBUIのコンソールに何かエラーが出ていないか確認してみてください。
    • G28とだけ書いて実行している場合、homeall.gのファイルが実行されています。ただ先日配布したhomeall.gはXYZの3モーターをホーミングする内容なので、もしかしたらマシンと内容が合致していないかもしれません。
      その場合はhomeall.gの中身を編集 or trigger.gにはG28 XY のようにホーミング軸を指定することで解消する気がします。
「いいね!」 1

あやしいのはホーミングをしたあとに

G28
Error: Failed to enable endstops

というエラーがでることです。
とりあえずホーミングはきちんとできているので
これまで無視していました。

僕のhomeall.gはこのようになっています。

; homeall.g
; すべてのホーミング動作を定義

G91 ; 相対座標移動
G1 H1 X-1500 Y-1500 Z-1500 F1500 ; 送り速度F1500で早めに動く。スイッチに当たるまでXYZマイナス方向に1500移動
G1 H2 X20 Y67 Z66 F1500 ; XYZプラス方向に戻す

G90 ; 絶対座標移動に戻す
G92 X0 Y0 Z0 ; 現在位置をX0 Y0 Z0とする

G28 XYZのようにホーミング軸を指定するとホーミングと演奏が続いて実行されましたh。
その場合、ひとつの軸ずつホーミングが行われるので時間がかかってしまいます。
homeall.gだと3つの軸のホーミングが同時に行われるのでG28でいけると理想です。

使ってない軸とかが悪さしているのかなという気が若干しますが、少しこの辺の仕様等確認してみます。

とりあえずとしてはhomeall.gの中身を丸々triggerの先頭にG28の代わりとしてコピペすれば希望の動作になりそうな気がします。
(せっかくホーミングコマンドがあるので、それを使いたいところではありますが・・・)

「いいね!」 1

追加で試してもらいたいのですが、
homeall.gの最後のG92を
G92 X0 Y0 Z0 A0 B0 C0
にしてみたらどうでしょうか。

たぶんですが、使っていないABC軸のhomingファイルも実行されてリミットスイッチが見つからないよと言ってるので、使っていないけどhomeallで他の軸も原点設定してやれば回避できそうな気がします

「いいね!」 1

↑これで解決しました!!!
どうもありがとうございます!!

「いいね!」 1

良かったです!
以前アップロードしたhomeall.gのファイルは修正して差し替えておくことにします。ありがとうございます

「いいね!」 1

思い通りに動作することが確認できたので、バラして色塗りや筐体の作り替えなど仕上げの作業にとりかかります。その前に記念撮影。

「いいね!」 1

おかげさまで、とても良い感じになりました!!

二つ質問があります。

新しく買ったノートパソコンからメカキネを動かそうとしたときに、WEBUIとDUET3は接続できていて、メカキネソフトウェアもDUET3を認識しているのですが、メカキネソフトウェアからtrigger2へモーションデータを送信しても、DUET3のtrigger2.gが更新されませんでした。元々使っていたPCに接続しなおすと、正常に動作します。この現象の対策があれば教えてください。

もう一点、スタートボタンを続けて2回押すと2回演奏が始まるのですが、演奏中にボタンを押しても無効にする方法はありますでしょうか?

作品の動画です。↓

作品素晴らしいです!載せてくださりありがとうございます!

今は少し検証できない環境にいるため、以下は全て憶測での回答になります。

こちらの問題ですが、良ければ環境(windowsの種類とか)を教えて頂けると幸いです。こちらでも似たような環境を用意して確認してみたいと思います。

おそらく過去にあったこの辺のトラブルと同じかもしれません。

もし可能であれば、新PCに上記トピックのASP .NET Coreランタイム、.NET Runtimeを入れてみて様子を見てもらえたらと思います。

メカキネソフトを作った環境をやや複雑にしたせいで、この辺のトラブルの原因が分かりづらくなってしまっています。すみません。

こちらですが、似た検証を以前した気がするんですがちょっと結果を失念してしまいました。
duetのconfigにてM581にてトリガーの定義をしていると思うのですが、その行にR2(SDカードからファイルを実行していない時にのみトリガーを受付するオプション)を付けると改善するかもしれません。(例M581 T2 P1 R2

https://docs.duet3d.com/User_manual/Reference/Gcodes#m581-configure-external-trigger

もしこれで対応できなかった場合、モーションのあるtrigger〇.gのファイルをgcodeフォルダに移し、新しいtrigger.gにはM32 trigger〇.gとかだけ記載して、トリガーファイルからNCファイルを実行させるようにバイパスしたらいけるかなぁという気がしますが、完全に未確認です。

https://docs.duet3d.com/User_manual/Reference/Gcodes#m32-select-file-and-start-sd-print

以上、確認できないので全部ふわふわな回答になるのですが、ご参考になれば。
確認できるようになったらこちらでも確認したいと思います

「いいね!」 1

どうもありがとうございます!

以下のようになっております。
あと、このPCではUSB-LAN変換ケーブルを使用しています。

エディション Windows 11 Pro
バージョン 22H2
インストール日 ‎2024/‎01/‎29
OS ビルド 22621.3155
エクスペリエンス Windows Feature Experience Pack 1000.22684.1000.0
デバイス名 DESKTOP-55TMOLA
プロセッサ Intel(R) Core™ i5-8350U CPU @ 1.70GHz 1.90 GHz
実装 RAM 8.00 GB (7.86 GB 使用可能)
デバイス ID B3AEF1C4-7ABA-4C61-9ED5-5EE5CD7FDBC6
プロダクト ID 00330-80000-00000-AA916
システムの種類 64 ビット オペレーティング システム、x64 ベース プロセッサ
ペンとタッチ このディスプレイでは、ペン入力とタッチ入力は利用できません

両方ともインストールしましたが、変化はありませんでした。

なお、スタートボタンについては、一回だけ押しても
2度演奏されることがあるのでチャタリングの対策も必要になりそうです。
もしハードウェアでチャタリング防止回路を追加する場合、
実態配線図を教えていただけないでしょうか?

こちらで用意してみたWin11の環境ではメカキネソフトはモーション送信&実行可能でした。
ただ、いくつかセットアップを忘れており1回目は失敗してしまったので、もしかしたらautomatamakerさんもセットアップが抜けているのかもしれません。
以下の通り、アプリフォルダのresources/binフォルダにncフォルダがないことが原因でした。

失敗したときにメカキネソフトのDebugのところを見ると保存場所が見つからなくて保存できなかった。みたいなものがでています。
もしかしたら違うエラーで引っかかっているのかもしれませんが、その場合は同様にエラーが出ている可能性があるのでお知らせください。

24/02/27 15:12:50: Board:0 NC file output error : Could not find a part of the path 'C:\Users\kyano\Downloads\MKAS_v0.16\MKAS_v0.16\resources\bin\nc\out0.nc'.
24/02/27 15:12:50: Can NOT Send NC File
Could not find a part of the path 'C:\Users\kyano\Downloads\MKAS_v0.16\MKAS_v0.16\resources\bin\nc\out0.nc'.

これらすべて含めてソフト側で処理すべきなんですが、ちょっと手が回っていないので今後修正していきたいと思います。

こちら確認してみました。
configを少し変更した上で、トリガーのファイル内でモーションを実行していたのをトリガーを起点に別ファイルのモーションを呼び出しという形にすることで何度押しても最初の1回だけが有効となるようになりました。

流れを簡単に説明します。

  1. config.gのトリガーを定義しているM581の行にR2を書き加えます。(例:M581 P1 T6 R2)
    R2はファイルを実行していないときだけトリガーを受け付けるオプションです。
    image

  2. WEBUIにてSystemに入っているtrigger2.gをJobsに移動(ダウンロードして再アップロード)。
    画像ではtrigger6.gになっています。

  3. Systemに残っているtrigger2.gを開き(ない場合は新規作成)、以下の1行だけに内容を書き換えます。

M32 trigger2.g      ;Gcodesフォルダ内のファイル実行
  1. スイッチを押して動作確認

これらの編集により、何もしていない時しかスイッチの入力を受け付れず、スイッチを連打しても1回しか実行されないようになります。

一連の作業はメカキネソフト側で対応するように変更したいと思います。
今は申し訳ないですが、手作業にてお願いいたします。

おそらく、上記の対応でチャタリングによる複数回入力も防げると思うので、お試しください!

「いいね!」 1

教えていただいた方法で2点とも解決しました!
どうもありがとうございます。
これで完全に完成したと思います。

以前、ステッピングモーターをArduinoで制御しようとして上手くいかず
それからはステッピングモーターを使おうとしていなかったのですが
今回、メカキネアートシステムと、ここでいただいたアドバイスのおかげで
ステッピングモーターを使った自動演奏装置が完成できてとても感謝しています。

リクエストとして、セットしたモーションを編集しやすくなると嬉しいです。
たとえば、ホームページ作成ソフトで画面の上半分では、画像を投げ込んだり
文字を直接打ち込んだりできるようになっていて、下半分ではHTMLが編集
できるようになっているものがあります。
そんな感じで、メカキネアートシステムでも上半分はグラフィカルに
モーションがセットできて、その内容が下半分にCSVで表示されて、
CSVを編集できると、さらに使いやすくなると思います。

今後もメカキネを使って作品を作りたいと思っています。
どうぞ引き続きよろしくお願いいたします。

「いいね!」 1

うまくいったようで安心しました!
こちらこそメカキネソフトで作られた作品が見れてとても嬉しかったです。

ありがとうございます!
より良くなるように改良していきたいと思いますので、どうぞよろしくお願いします。

「いいね!」 1