CNCjsの使い方、設定、CNCマシンにG-code送る方法

こんにちは

これはバックラッシュかもしれないです。
https://jp.misumi-ec.com/special/gear/tips/03/

ベルト駆動なのでバックラッシュはネジ駆動に比べ大きいとは思いますが、5mmはさすがに大きいのでベルトの張りが甘いのかもしれません。

grblでの1軸だけのホーミングに関して補足です。

grblではホーミングコマンドで軸指定をしてホーミングということはできません。ホーミングをしようとするとすべての軸がホーミングされ、その順番はデフォルトではZをホーミング後、XYのホーミングとなっています。

CNCシールドを使っているとのことなので、arduinoとgrblのセットかと思いますが、1軸だけのホーミングを実現するにはgrblの設定ファイルの編集が必要かと思います。(grbl_esp32の場合はマシン定義のファイル編集になるかと思います)

動作するかどうかは未確認ですが、簡単に流れを説明します。
Arduino IDEでArduinoにgrblを書き込む前にgrblのソースコードを編集します。
config.hというファイルがあるので、それを編集します。

その中に以下のような表記があるので書き換えます。

#define HOMING_CYCLE_0 (1<<Z_AXIS)                // REQUIRED: First move Z to clear workspace.
#define HOMING_CYCLE_1 ((1<<X_AXIS)|(1<<Y_AXIS))  // OPTIONAL: Then move X,Y at the same time. 

これを下記のようにしてHoming cycle1を無効化、homing cycle0をX軸のみとします。

#define HOMING_CYCLE_0 (1<<X_AXIS)                // REQUIRED: X move ONLY
// #define HOMING_CYCLE_1 ((1<<X_AXIS)|(1<<Y_AXIS))  // OPTIONAL: Then move X,Y at the same time.

この編集を終えたらgrblをArduinoへ書き込みます。
実際に動かしてはないですが、たぶんこれでX軸だけのホーミングになるのではないかと思います。
もし1軸でのホーミングを試してみたい場合はチャレンジしてみてください。

X-Large剛性版を購入したものです。
機体組み立てとCNCjsのダウンロードまで進みました。
X軸のリミットスイッチを取り付けるため、移動ボタンを押したいのですが
押す場所がガードかかっている状態でボタンを押せず頓挫しています。
なにか解除手順があるのでしょうか? それとも配線接続がいけないでしょうか?
下画面となります。

こんにちは
CNCxPRO v5を使っている場合ですが

・コンソールにホーミングコマンドやアンロックコマンドが見えるが操作可能になっていないこと
・コンソールに接続中の後に起動ログが出ていないこと

これらから接続後にCNCxPRO v5本体のリセットボタンを押していないことが考えられます。
CNCjsにて接続後に反応がない場合は本体のリセットボタンを押してみてください。


また接続の設定の
・ハードウェアフローコントロール
・自動的に接続
にはチェックを入れてください。

nyaruさん 返信ありがとうございます。
リセットした際にカシュッ音も確認できておりますが、当初の画面上の問題解決
に至っていません。
本来、同梱されるべきケーブルUSB AtoCケーブルが無く(別なタイプのケーブル有 添付写真)、携帯充電器のUSB AtoCケーブルを代用した点に問題があるのかもしれないと考え、Avaron Tech側に確認のメールを送ることにしました。
問題点が別な点にありましたら、改めて質問をさせてください。
早く動かせるようになりたいです。。

スマホ用のUSB-AtoCケーブルでもたぶん問題は発生しないとは思いますが、写真の延長ケーブルではCNCxPROv5には接続できないので、その点については購入元に問い合わせて見たほうが良さそうです。
スマホもPCに認識されない完全な充電専用ケーブルだとCNCxPROv5も動かないので、ケーブルを変えてみるのは良いと思います。

念の為、以下も試してみてください

CNCjsで接続を開始し、CNCxPROv5のリセットボタンを押した後にCNCjsのコンソールに以下のような起動ログが表示されていれば問題なくPCはCNCxPROv5とで通信ができています。
一度確認してみてください。

CNCjs 1.9.22 [Grbl]
COM3 にボーレート 115200 で接続中
ets Jun  8 2016 00:22:57
rst:0x1 (POWERON_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT)
configsip: 0, SPIWP:0xee
clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00
mode:DIO, clock div:1
load:0x3fff0018,len:4
load:0x3fff001c,len:1216
ho 0 tail 12 room 4
load:0x40078000,len:9720
ho 0 tail 12 room 4
load:0x40080400,len:6352
entry 0x400806b8
[MSG:Grbl_ESP32 Ver 1.3a Date 20201022]
[MSG:Compiled with ESP32 SDK:v3.2.3-14-gd3e562907]
[MSG:Using machine:CNC_xPRO_V5_XYYZ]
[MSG:Axis count 3]
[MSG:RMT Steps]
[MSG:Init Motors]
[MSG:TMCStepper Library Ver. 0x000701]
[MSG:X  Axis Trinamic TMC5160 Step:GPIO(12) Dir:GPIO(14) CS:GPIO(17) Disable:None Index:1 Limits(0.000,300.000)]
[MSG:X  Axis Trinamic driver test failed. Check motor power]
[MSG:Y  Axis Trinamic TMC5160 Step:GPIO(27) Dir:GPIO(26) CS:GPIO(17) Disable:None Index:2 Limits(0.000,300.000)]
[MSG:Y  Axis Trinamic driver test failed. Check motor power]
[MSG:Y2 Axis Trinamic TMC5160 Step:GPIO(33) Dir:GPIO(32) CS:GPIO(17) Disable:None Index:3 Limits(0.000,300.000)]
[MSG:Y2 Axis Trinamic driver test failed. Check motor power]
[MSG:Z  Axis Trinamic TMC5160 Step:GPIO(15) Dir:GPIO(2) CS:GPIO(17) Disable:None Index:4 Limits(-300.000,0.000)]
[MSG:Z  Axis Trinamic driver test failed. Check motor power]
[MSG:PWM spindle Output:GPIO(25), Enbl:GPIO(4), Dir:None, Freq:5000Hz, Res:13bits]
[MSG:Local access point CNC_xPRO_V5 started, 192.168.0.1]
[MSG:Captive Portal Started]
[MSG:HTTP Started]
[MSG:TELNET Started 23]
[MSG:Flood coolant on pin GPIO(21)]
[MSG:Mist coolant on pin GPIO(21)]
[MSG:X  Axis limit switch on pin GPIO(35)]
[MSG:Y  Axis limit switch on pin GPIO(34)]
[MSG:Z  Axis limit switch on pin GPIO(39)]
[MSG:Probe on pin GPIO(22)]
Grbl 1.3a ['$' for help]
client> $$
$0=4 (Step pulse time, microseconds)
$1=255 (Step idle delay, milliseconds)
$2=0 (Step pulse invert, mask)
$3=0 (Step direction invert, mask)
$4=0 (Invert step enable pin, boolean)
$5=1 (Invert limit pins, boolean)
$6=1 (Invert probe pin, boolean)
$10=1 (Status report options, mask)
$11=0.010 (Junction deviation, millimeters)
$12=0.002 (Arc tolerance, millimeters)
$13=0 (Report in inches, boolean)
$20=0 (Soft limits enable, boolean)
$21=0 (Hard limits enable, boolean)
$22=0 (Homing cycle enable, boolean)
$23=3 (Homing direction invert, mask)
$24=200.000 (Homing locate feed rate, mm/min)
$25=2000.000 (Homing search seek rate, mm/min)
$26=250.000 (Homing switch debounce delay, milliseconds)
$27=2.500 (Homing switch pull-off distance, millimeters)
$30=24000.000 (Maximum spindle speed, RPM)
$31=0.000 (Minimum spindle speed, RPM)
$32=0 (Laser-mode enable, boolean)
$N1=
$N0=
$100=200.000 (X-axis travel resolution, step/mm)
$101=200.000 (Y-axis travel resolution, step/mm)
$102=200.000 (Z-axis travel resolution, step/mm)
$103=200.000
$104=100.000
$105=100.000
$110=2500.000 (X-axis maximum rate, mm/min)
$111=2500.000 (Y-axis maximum rate, mm/min)
$112=2500.000 (Z-axis maximum rate, mm/min)
$113=1000.000
$114=1000.000
$115=1000.000
$120=100.000 (X-axis acceleration, mm/sec^2)
$121=100.000 (Y-axis acceleration, mm/sec^2)
$122=100.000 (Z-axis acceleration, mm/sec^2)
$123=200.000
$124=200.000
$125=200.000
$130=300.000 (X-axis maximum travel, millimeters)
$131=300.000 (Y-axis maximum travel, millimeters)
$132=300.000 (Z-axis maximum travel, millimeters)
$133=300.000
$134=300.000
$135=300.000
ok

追記:
CNCjs バージョン1.9.23とCNCxPROv5の組み合わせを試してみました。
接続後に一切のコマンドを受け付けなくなる挙動が見られたので、CNCjs 1.9.23は使わないほうが良いです。一度アンイストールして古いバージョン(1.9.22とか)をインストールしてみてください。

私も同じ状態でしたが、使えるようになりました。
grblのバージョンは最新でしょうか?ネットの記事を見ていると「v0.8を使えばよい」みたいなことがけっこう書かれていましたが、最新でなければきちんと動かないそうです。

もし最新でないようなら、古いバージョンの実行ファイルではなく、最新のものをzipで落として試してみてください。

(X-Large剛性版というのをよくわかっていないので、的外れだったらすいません)

ご回答いただきありがとうございます!
確かにバックラッシの可能性は高そうですね。それにしても5mmは大きい…

ベルトはしっかり張ってるので、あとは制御でなんとかするしかないかもしれません
現在のメカ設定だと、1mm移動するのに5stepかかる(分解能0.2mm)なので大きすぎるのでしょうか?モーターのマイクロステップモードで試してみます。

ホーミングに関しても非常に分かりやすいご説明ありがとうございます。実際に試してみたところ、無事にホーミングできました!

ただ、プラス方向($23=0)にホーミングすると、スイッチの位置が座標0、スライダーの逆端がマイナス(500mmスライダーなら、座標-500)になってしまいます。これだと、スライダーを動かす時にマイナス入力になるので気持ち悪いのですが、なんとかなりませんでしょうか?

スイッチを反対側に付け替えた上でマイナス方向($23=1)にホーミングすると、スイッチの位置が座標-500になるので、状況が変わりません…
というか、スイッチの位置が必ず0になる訳じゃないんですね…座標-500になるのは「$130=500」にしているからでしょうが

「$3=1」にしてDirection の入力信号の反転させたりもしましたが、回転方向が逆になるだけでプラスホーミングでスイッチ位置0、逆端マイナスになるのは変わりませんでした。

ホーミングしてスイッチが座標0、逆端が座標500となり、プラス入力できるのが理想です。
よろしくお願いいたします。

CNCjs 最新バージョンでの不具合もありえるのですね
ケーブル変更で駄目だった場合、旧バージョン試してみます。
また後続の方の為にも結果報告いたします。

プラス方向に動かしたいという話ですね。

配線を入れ替えるかパラメーターでモーターの回転方向を逆にして、$23=1でホーミング方向を逆にすることを試してみてください。

公式のwikiではホーミング時に負方向にセットされる理由が説明されています。
またconfig.hでHOMING_FORCE_SET_ORIGINをコメントを解除し有効化するとホーミングすると原点に設定できるようになるとも説明されています。

試してみてください

ご回答ありがとうございます。
なるほど、昔からのCNCの仕様なんですね。

→配線を入れ替えるかパラメーターでモーターの回転方向を逆にして、$23=1 でホーミング方向を逆にすることを試してみてください。

というのは、$3=1'で入力信号を反転させてから $23=1` でホーミング方向を逆にするという認識で正しいでしょうか?試してみたのですが、(間違えていなければ)負になるのは変わらなかったと思います。

HOMING_FORCE_SET_ORIGINは上手く動きそうなのでやってみたいと思います!ありがとうございました!

ちなみにg-codeで動かす時って、三軸じゃないとダメみたいなことってないですよね?
今後スライダーを二軸にする予定なのですが、一軸や二軸でもCNCjs使ってg-codeで制御可能でしょうか?

返信ありがとうございます。
なかなか質問する側もトラブルをどのように伝えるかも難しいのですが、回答側の方も同じ経験をしている事を知るだけで励みになります。今後とも宜しくお願いします。

その認識で合ってます。ダメだったのであればconfig.h弄った方が良さそうです。

3軸じゃないとダメということはないはずです。config.h内にも2軸用の設定例とか書いてありますし、レーザー加工機などは2軸なので。
現状G01 X100 F100とか適当にコンソールに入力して問題なく動くのであれば、制御も特に問題もないかと思います。

接続デバイスに表示されている
Silicon Labs CP210x USB to UART Bridge(COM5)
を確認しまして、CNCjsのCOM5を選択しましたら稼働できるようになりました。ありがとうございます。しかしながら、Y軸が2本あるのですが、途中から片方しか動かなくなるエリアがありまして、斜めに傾くようです。。このレベルで普通に動かせる様になるのか心配ではありますが、とりあえず動きましたのでお礼とご報告をさせていただきます。

お世話になっております。

「$Xと表示されます。これをGRBLのwikiで調べると」とありますが、


図のような場所に入力するとよいのでしょうか?

よろしくお願いいたします。初心者なのですが、ホーミングを押しても初めはX軸が少し上方に動いたのですが、その後は何も動かなくなりました。
自動的にXYZそれぞれに限界点まで動いてその場所を認識してくれるものかと想像していたのですが、違いますでしょうか?(ぶしつけで申し訳ありません。)3018proを買いましたが今後使えるようになるのか心配です。。
その他、写真の状況でアラームを解除した後に手動でXYZを動かす(移動)にはどうしたら宜しいでしょうか?動かないです。。

こんにちは。

それはCNCjsのgithub(ソースコードが載っているところ)なので違います。
grblのgithubページを見てください。(特にwiki)
CNCjsはPCから制御基板へ指令(Gコード等)を送るソフト、grblは制御基板のファームウェアです。コマンドはCNCjsから制御基板へと送り制御基板のファームウェアで処理されるものなので、CNCjsのページを見るのではなく、grblの情報を確認する必要があります。

下記のリンクにgrblのwikiがあり、大体はそのwikiに載っています。

$Xのようなコマンドについては下記のリンクにて確認することができます。

ホーミングは各軸の限界点に設置・配線したスイッチがあって使えます。スイッチに当たるまで軸が動き、当たるとスイッチから少し離れて停止します。
スイッチがない場合は軸が動き続けるか(限界はありますが)、少しだけ動いて停止します。(この違いはスイッチのパラメータ$5次第でスイッチがONになっているか勘違いしているかどうかです)

ちなみに画像にはALARM:8と表示されているので、スイッチがOFFになってほしいのにONになったままと認識されているようです。

この状態はアラームと表示されているので、右上のアンロックボタンやリセットボタンを押してみると解除できるはずです。解除ができると軸移動のボタンが有効化されます。

ホーミングは有効化してあるとホーミング完了するまではアンロックしない限り軸移動をすることができないようになっています。ホーミングを無効化する場合はホーミング有効化のパラメータ$22を$22=0としてあげてください。
ちなみにスイッチがない場合(ホーミングをしない場合)は電源投入時の位置が機械原点として認識されます。

残念ながら3018についてはよくわからないので、配線や仕様等については販売元に聞いてみたほうがいいかもしれません

早速ご返答いただきましてありがとうございました。早々には理解できかねますが、3018は後発で中華系と言われているようですが、お値段がお手軽なのでつい飛び込んでしましました。おそらくは皆様の世界観はCNCフライス盤等の軸径6mm以上等の業者さんの分野なのでしょう。。
エレキギターのパーツを手作業で作っています。主に真鍮です。それもゆくゆくは手掛けたいですがプラスティックや樹脂系のパーツの切り取り手作業を、あまりにも手間がかかり精度を出すのも大変ですので、CNCと言いますか3018等(すいません御関わりが無い機種を述べまして)で理解しながら踏み入りたいと思いました。スイッチングは3方向×2個ずつついております。candleではとりあえずXYZ方向に動き、スイッチにあたって停止等をしました。しかし、なかなか初心者には解説書があってもかいつまんだ説明に見えて理解しずらく。困りまして、こちらの方など、とりあえずCNCjsを用いる形で双方向に質問があるこのサイトに出会い、この様な私でもどなたかのご指導でちょっとずつでもこの設定の段階ですが進んでいけるのかと期待をさせていただいております。ご回答の理解を進めながら試していきたいと思います。ひとまずですがついつい長文になりました、失礼いたします。

スイッチに当たって停止をしていてアラームが発生していないのであれば問題はありません。
スイッチに当たって停止しているにも関わらずALARMが出ている場合は、スイッチの設定かホーミングの設定かスイッチへの配線がおかしいです。

各種設定はgrblのパラメータを書き換えることで行いますが、具体的な内容については以下に載っています。

中華系CNCはどんな制御基板を使っていて内部でどんな配線がされているかがわからないです。回路図が公開されているかもわからないので、実際にスイッチ等の配線をどうするかは説明書をみるか、他のユーザーがどうしているか調べるか、実際に繋いでいろいろと試すしかないです。
ただ世界的にユーザーも多いかと思うので、調べれば日本語に限らず情報も多く出てくるかと思います。
例えば:

ここのコミュニティの人たちは初めて触る人~仕事で使う人まで様々です。
後から来る初心者の方のためにも、どうしたら解決できたかを共有していっていただけると幸いです。

また先程述べましたが、基本的に中華CNCはオープンソースハードウェアになっていないと思うので、分からないことは販売元に聞くか自分で手を動かして調べるかが基本となりますのでご理解ください。

「いいね!」 1