. CNCマシン・レーザーカッターについて: CNCマシン:リミットスイッチ/ホーミングのトラブル(無事解決)
CNCマシン・レーザーカッターについて: CNCマシン:リミットスイッチ/ホーミングのトラブル(無事解決)
CNCマシン・レーザーカッターについて: CNCマシン:リミットスイッチ/ホーミングのトラブル(無事解決)

自作CNCマシン・レーザーカッターについて

使っているCNCシールドはV3.5なので、grbl0.9のピン配列に対応しています(V3.0の場合はZ limit端子がArduinoボードのD11からD12に入れ替わっているので注意、詳しくはこちらへ)。 上の写真のように、CNCマシン本体からのリミットスイッチ線を外し、かわりに緑色のジャンパワイヤをZ limitのZ+(5V)に接続しつつ、白いジャンパワイヤ(手でもっているだけで何にも接続されていない)をちょっとつけるだけで、そのノイズに反応してリミットスイッチが入ってしまうという現象。試しにテスターで計測しながらやってみると、たしかに5Vが外乱(白ジャンパワイヤ)によって1~3Vくらいまで下がってしまう。それで通常HIGH状態がLOWを瞬間的に検出して反応してしまうみたい。 なんでこんなに敏感すぎるんだ?じゃあ、コンデンサでもかましてみたほうがいいかな?と思って、ちょっと検索してみると、やっぱりこのようなリミットスイッチのノイズ問題はよくあるそうです。その対策としてシールド線を使うとか安物ではなくノイズに強い部品にするとかいろいろあるけど、手っ取り早いのがやはりコンデンサーをつけるというのが、instructablesにのってました。 そこでは0.47uFのコンデンサーをArduinoボード上のリミットスイッチ用の端子(grbl0.9の場合、D9、D10、D12)につけるといいと書いてあります。ためしに手持ちのコンデンサーをつけてみることにしました。

こんな感じ↑で、CNCシールドV3.5に電解コンデンサー3個を直づけ(ちょうどArduinoボードD9、D10、D12の真上の端子とGND)。 これで動かしてみました。bCNCでGコードを入力。$21=1にしてHard limitをオンにしておきます。 Control画面の矢印で前後左右上下に動かしてみると、リミットがかからずちゃんと動きます(感動)。なるほど、やはり何らかのノイズがコンデンサーで解消されたというわけです。

ホーミングサイクルにチャレンジ そのまま$21=1にしてHard limitをオンにして、今度はホーミングサイクルにチャレンジ。 しかし、、、動き始めましたが、途中で止まってしまいました。一歩進んだけど、また壁にぶちあたりました。 何が原因なんだろう?といろいろ調べてみたり、設定を変えてみたりしました。

grbl0.9にはホーミングの設定がいくつかあります(grblサイト参照)。 ・$22:Homing cycle bool ホーミングサイクルするかどうかの設定(する場合$22=1) ホーミングサイクルによって、Z軸、X軸、Y軸、(A軸)という順番でゼロ地点設定 そのためにはリミットスイッチを最低各軸の+側につける必要あり $23によってホーミングの方向を変更可能(通常各軸+側) ・$24:Homing feed mm/min ホーミングサイクルで最終的に座標ゼロポイントを決定するときの速度設定 かなり遅めにして少しずつ進む感じ 25mm/minくらい ・$25:Homing seek mm/min ホーミング開始後、各軸のリミットスイッチを探しだすときの速度設定 慎重すぎて遅すぎると時間がかりすぎるので、スイッチをなぎたおさないくらいの速度 600mm/minくらい(最終的には300に下げました) ・$26:Homing debounce ms ホーミングサイクルによってリミットスイッチを押す際のチャタリング/デバウンス防止のためのディレイ時間設定 5〜25ms(最初250msになっていました) ・$27:Homing pull-off mm ホーミングサイクル後にリミットスイッチから事故防止のため少しだけ離れておく距離 3〜5mm

・Z軸+リミットスイッチを探しに上にあがる。 ・Z軸+リミットスイッチを押す ・Z軸一旦少し下がる ・再度ゆっくり上昇(多分$24のHoming feedの速度で) ・また少し下がる(多分$27の5mm分)

ここまではいいのですが、次の行程でつまづきます。 ・XとY軸が+方向に向かって同時に動き始める ・それぞれリミットスイッチを押す ・それぞれ少し戻る そして、ここで止まる

おそらく次はZ軸の動きから察すると、ゆっくりHoming feedでゼロ地点を設定しに動くはずですが、なぜか止まります。またノイズなのかなとも思ったりして、いろいろ検索してみましたが、解決できるようなネタは見つかりません。 リミットスイッチにもコンデンサーつけてみたり、Y軸片側のモーターだけで駆動させてみたり。 なんとなくモーターに負荷がかかっているようにも見えるので(送りネジとガイドレールの平行がとれていなくて窮屈になっているとか)、ドライバが一時的にシャットダウンしているのかと思ってみたりして、それでマイクロステッピングを1/8から1/4に変えてみたりしてみました。

コンデンサー付け替え いろいろやっているうちに分からなくなってきて、先ほどつけたノイズ対策のコンデンサーを見てみると、0.47uFなのに47uFをつけていることに気がつきました。容量がデカすぎるけど、つけたことによって一応ノイズは消えたわけだし大丈夫だろうと思いましたが、もうちょっと他のコンデンサーがないか探してみると、1uFのコンデンサー一袋が見つかったのでためしに付け替えてみました。

こんどはこんな感じ。コンデンサーも小さくなりました。同じようにArduinoボードD9、D10、D12、GNDの真上の部分です。0.47uFに対して1uFなのでまあまあ近い。 念のためと思ってつけたリミットスイッチのコンデンサーも外してしまいました。この3つで勝負。 それと、上記に書いたgrbl0.9ホーミングの設定値も少し変えてみました。

主には、$24=30、$25=300、$26=25、$27=5、そしてマイクロステッピングは1/4。 さて、ホーミングボタン(Home)を押すと、

まずは、Z軸が動き始めました。そしてX軸、Y軸です。速度をちょっと変えたので、なんとなくいい感じ。それで、問題のXとY軸のHoming feed速度で動く部分(最初600でしたが300に下げたことで負荷が下がったのかも)。おお、ゆっくり動き始めした。このままいけるかな?と息をのんで見守っていると、なんとか最後まで無事ホーミングサイクルが終了しました。エラーなしです。思わずコンソール画面を見てみました。 偶然なのかなんなのか分かりませんが、ようやくホーミング達成(感動)。

ホーミングサイクルの流れ ・XYZ軸の+側(右、奥、上)にリミットスイッチ(この場合ホームスイッチと呼ぶのかも)をつける。 *grbl0.9ではZ+端子とSpinEn端子が入れ替わったので、CNCシールドV3.0を使う場合は、Z+リミットスイッチをSpinEnへつなぐ。Z+とZ-は内部でパラレルにつながっているので、Z-リミットスイッチもSpinEnにつなぐ(詳しくはこちらへ)。 ・デフォルト$21=0(リミットスイッチ:オフ)のままでも構わない。 ・$22=1にしてホーミングサイクル機能をオンにしておく。 ・$24〜$27は上記のような数値にしておく。場合によっては少し遅めにする。 ・あとは$Hをコマンド入力して(あるいはHomeボタン)ホーミングサイクルを開始する。 ・最初にZ軸がリミットスイッチ方向に動き出しマシン原点を見つける。つぎにXY軸も同じように原点を探し出して終了。これでリミットスイッチがある箇所、右奥上がマシン原点(0,0,0)となる。最終停止位置は、$27で設定した値分だけ戻った位置になり、そこで終了(ホーミングサイクル中に各リミットスイッチを押すけれども、S21=1でHard limitがオンになっていても関係なく動き続ける)。

この画面↑でも分かるように、右側のX-Y平面上で、きちんと右上に矢印と現在位置が重なりました。原因はコンデンサーなのか、設定値なのか分かりませんが、なんとかここまで辿りつけました。 これでようやくゼロ地点設定可能となったので、思うように操作できそうです。 というのが、今日の収穫でした。ここまで来るのにかなり疲れました。 あとで設定値などを変えてみてどこが原因だったのか究明したいと思います。途中試行錯誤していた段階でも、速度を変えると動き始めたりしたので、適度な速度設定などがもしかしたら必要なのかもしれません。当然マシンによっても違うので、調べても最適な値は分からないのかもしれません。

ちなみにホーミングが成功するまでは、以下のように現在値と原点がずれた感じになっていました。 追記: このずれは、現在地をWPosのリセットをすることで解消できます。G92X0Y0Z0のGコードを入力することで現在地を原点(加工原点)にセットすることができます。あるいは、bCNCならX=0、Y=0、Z=0ボタンで各軸ごとに、現在地を0に設定できます。 このままでも作業できないわけでもないのですが、やはりせっかくリミットスイッチもつけたことだし、ホーミングが機能しないと、なんとなく気持ちが悪い。

作業エリア940x740mmの3軸CNCマシンとしてこの段階で、 Grbl0.9j+bCNC:Mac対応フリーウェア ボールネジ+リニアレール一式:37000円 ステッピングモーターNEMA23(4個):9000円 アルミ構造フレーム材料+ネジ類:12000円 Arduino Uno:3000円 CNCシールドV3.5+モータドライバDRV8824(4個):3000円 配線材料+ケーブルドラッグチェーン:6000円 合計約70000円くらいかかりました。 予算の半分はボールネジ+リニアレールという感じ。MakerSlide、V-Wheel、タイミングベルトなどにしていれば、50000円くらいで済んだかもしれません。 その他: レーザーモジュール5.5W(購入済み:17000円)、トリマ300W(手持ち:10000円くらい)、DC24V/7A電源(手持ち:5000円くらい) という感じです。 使用工具など: 卓上マルノコ、小型ボール盤、ジグソー、ハンダゴテ、ホットボンド、各種タップ、各種ドリルビットくらいです。

追記: その後、ドライバ(DRV8825)のマイクロステッピング設定を1/4から1/8に戻してホーミングしてみましたが問題ありませんでした。 ついでに、以前サンプルで拾った星形の.ngcファイルを読み込ませて実行してみました。

投稿者 mirrorn 時刻: 1:44 177 件のコメント: 改造すると動かなくなりました。アラームエラーと・・・とりあえず次ぎ買うときは3.51を買おうと思います。ははは 削除

grbl0.8ならD9、D10、D11、D9:Limit X-AxisD10:Limit Y-AxisD11:Limit Z-AxisD12:Spindle Enable

grbl0.9(grbl1.1も)ならD9、D10、D12ですね。D9:Limit X-AxisD10:Limit Y-AxisD11:Variable Spindle PWMD12:Limit Z-Axis

ホーミング出来てよかったですね。機械原点は、ホーミングによって割り出された位置(通常右奥上)になります。ただ正確には、ホーミング直後の位置は、XYZ軸は1mmだけマイナス側に移動していると思います。デフォルトでは$27=1.000(homing pull-off, mm)になっていると思うので、この値設定がホーミング後に何ミリ戻すか(安全のためスイッチに触れないように)ということです。なのでホーミング直後の停止位置が、正確には機械原点ではないということです($27で設定した1mm分ずれている)。

ホーミングのあとは、材料をテーブル上の任意の位置に固定し、その材料に対して作業原点にしたい位置(CADなどで描いた図面の原点:例えば材料の左下など)へジョグボタンをつかってXY軸を移動します。Z軸は材料にぎりぎり当たるくらいまで少しずつ下げます。刃と材料の間に紙1枚はさんで、紙が動くか動かないか確かめる方法が一般的かもしれません。下げすぎると刃が材料を押しつぶして材料を破損したり、スピンドルやマシン自体も破損することにもなるので、ジョグボタンの進む量を小さくセットして(0.1ミリ以下)少しずつ下げていかないといけません。そして、そこを作業原点WPos(0,0,0)としてセットします。GrblControllerなら画面下中央にZero Positionボタンを押せば現在地をゼロ地点WPos(0,0,0)にセットしてくれます。手入力ならG92 X0 Y0 Z0と入力します。CAD等で描いた図面もその作業原点WPos(0,0,0)を基準としてあらかじめ描いておかなければいけません(作業原点を材料の右下にするか中央にするかは任意です)。

大体理解できました。$25ホーミングシーク?についてですが500.000mm/minになっていましたがこれは1分間に50cmなので動作的には速め位になっている気がします。どうですかね?(初期設定)その他ホーミングの付く設定も初期のままで、$24(feed)=25.000mm/min $26(debounce)=250msec $27(pull-off)=1.000mmとなっていました。結局昨日までハードの方を弄っていたので今日からソフトを弄るつもりです。しかし折角なので教えてください。ホーミングってホーム(原点)に戻る設定じゃなかったんでしょうか。(後に恥ずかしい質問だったと後悔することは分かってても聞かないとやれないんです。)

なのでソフト面に関してはmirror nerror さんがおっしゃられる通りに機械的な原点を決めたいと思います。加工データ(3DCAD)を原点から機械の加工スペースに合わせてズラした位置に作ってNCデータも原点スタート、原点エンドさせれば良いんですよね。 削除

リミットスイッチが動作の途中で押されれば(ホーミングサイクル中以外の場合)、マシン自体はその時点で非常停止になってしまいます(作業可能エリアを越えてしまったということなので)。再開するには、リセットとロック解除をしなければいけないはずです。bCNCなら上画像にあるようにResetとUnlockを押して再開です。コマンドならctrl-x (reset Grbl)と$X (kill alarm lock)を入力します。

弱いのは根本的にあると思います。今日は色々原因を探りましたが、本体の機能的な問題(歪みや精密度)があるのは分かりましたが、分解して再度組み立て直しても改善できる事ではないようです。調べてみるとステッピングモーターはトルク以上がかかると滑り、そのまま滑り続けると書いてる所もあるようで、その可能性を感じます。移動距離に対してモーターの回転速度を減らしたら必要なトルクを減らせ、脱調を防げるかもしれないと考えましたが、本当に弱い(モーターの振動など)力でも加わると止まるので違うと感じています。ステッピングモーターの型番はTYPE: FY42HM4405N-18.3T lot no FE23-F109使用電力は12V−5A,6A,7Aのアダプターで取っています。HM44がトルクだったような覚えがあるのですがやはり弱いですよね・・・わたし、アマゾン以外で買うのなれていなくて海外からでおすすめとかあるのでしょうか? 削除

何となく分かりました。この丸いのが回る事も初めて知りました。とりあえず、0.8Vをどうにか計測したら良いのですね。・・・今からCNCをほしがった時の自分に「無理だ」って伝えたいよ。 削除 電源(12V)を繋いで、USBをパソコンと繋げた状態で電圧を測定していたらどうもUSBポートが壊れました・・・正しい測定手順みたいなのってありますか・・・ 削除

XYZ軸の動く方向を確かめるだけなら、G91 X10(現在地からX軸を右に10mm動かす)G91 X-10(現在地からX軸を左に10mm動かす)などのコマンド入力で確かめられます。X軸はプラスが右方向、マイナスが左方向、Y軸はプラスが奥方向、マイナスが手前方向、Z軸はプラスが上方向、マイナスが下方向。 削除

どのソフトでも、XYZ軸の方向は同じなので、一旦図面をGコード生成して、それをG Code Sender上の図面表示(Visualizerなど)で見てみればいいと思います。G Code Senderの図面表示で、どっち向きに加工パスが現れているかでチェックできると思います。X軸を右に動かそうとしているのにY軸が奥へ移動しているとか、CNCマシン上で時計回りに90度ずれているとかなら、そのCNCマシンの配線がずれているのかもしれません。

もう一度画像の質問文読み返してみたら、意味が分かりました(たぶん)。画像右側にある赤緑青のXYZの矢印に最初ヘッドがあって、そこからヘッドが移動して材料を削り始めるようにするということでしょうか?一度、そのGコードをG Code Sender(bCNCなど)で見てみるといいと思います(Fusion360のシミュレーションではなく)。G Code Sender上では、どこが開始点になっているのか確認できると思います。原点(赤緑青のXYZの矢印の位置)に対して、XY平面上の-Xと-Yの領域に材料がおいてあるわけだから、ヘッドの開始点(加工原点)は、G Code Sender上では赤緑青のXYZの矢印ところになると思います。

作業の手順としては、・誤差を含んだ大体の位置でいいのでテーブルの中央あたりに材料を固定する(この誤差は以下の手順によって解消されます)・エンドミルの先端(Z軸)を材料の上面より高い位置に上げておく(材料固定金具などあるなら、それ以上の高さに上げておく:安全のため)・ジョグボタンを使って、エンドミルの先端を材料の角(仮に右奥)の真上にくるように移動する(X軸とY軸だけの移動、Z軸は材料よりも高い位置にあげたまま)・ジョグボタンを使って、エンドミル(Z軸)を材料の上面に接するまで少しずつ下げる(以前書いたように紙一枚はさんで材料の上面まで下げる)・この位置を加工原点としてセットする(GrblControllerなら「Zero Position」ボタン、bCNCならX=0、Y=0、Z=0のボタンを押す、コマンド入力ならG92 X0 Y0 Z0)・これで加工原点はセットされたので、安全のためZ軸を少し上のほうにあげておく(材料上面や固定金具よりも高い位置へ)・あとは切削開始・切削終了後、自動的に加工原点に戻るこの際、Z軸はJscutなどでGコードを生成する際に設定したエンドミル(Z軸)クリアランスの位置(材料上面よりも10mmほど高い位置)まで自動的に上がって停止する。・あとは、次の材料を同じ場所に固定し切削開始この際も材料を固定するとき治具がなければ、1~2mm程度のc位費の誤差はでてきます。何か目印でもつけておけば最低限の誤差で済むとは思います。その分材料の余白も数ミリ多くしておけば問題ないですが。

Jscutは基本的にブラウザ上でhttp://jscut.org/jscut.htmlにアクセスすれば使えます。しかし、対応しているブラウザはFirefoxかChromeだけです。SafariやInternet Explorerは対応していないようです。なので、ソフトをダウンロードしないタイプのものです。最近は何でもブラウザ上で(インターネット上で)できるようになってきました(いちいちアプリをダウンロード&インストールする必要なし)。ただ、ダウンロードして使うスタンドアロンのものもあるようです。サイトを見てみるとわかるかと(http://jscut.org/)。個人的には使ったことはないです(そもそもChromeからアドレスにアクセスすればすぐに使えるので)。大体オープンソースのソフトやハードは主にChromeが使われています。Internet ExploreやSafariはあまり対応していないので使わないほうがいいと思います。

$$を入力したときGrblの各種設定はどうなっているでしょうか?ここにコピペできるでしょうか?もしかしたら、いくつか設定変えれば動くかもしれません。 削除

あと現在の状況としては、・Grbl0.9・Grbl Controller・Arduino Uno(中国製クローン)・CNCシールドV3.0・A4988ドライバ・NEMA17ステッピングモーターという感じでしょうか?使っているステッピングモーターのスペックやデータシートはあるでしょうか? 削除

現状は・Grbl0.9・Grbl Controller・Arduino Uno(中国製クローン)・CNCシールドV3.0・A4988ドライバ・TYPE: FY42HM4405N-18.3T lot no FE23-F109(最初から付けていたもの)スピンドル用のステッピングモーターは無記載ですね。ちょっと同型を購入した人に聞いてみたいと思います。いつも聞いてばかりですが型番だけなので今回は本当に分からないかもしれません。中国が独自に作った物ではあると思います。 返信 削除

あと考えられるのは、A4988ドライバの電流制限を調節してみるという感じでしょうか。前回調節したとき0.8Vなら、0.5くらいに下げてみるとか。過電流になるとシャットダウンしてしまうので。見た感じ1.7Aのステッピングモーターのような気もしますが、もしそうなら、1.7A=VREF x 2.5なので、VREF=0.68Vに設定ということになりますね。 削除

スピンドルのほうは、手入力で入れてみるとどうなりますか?M3 S1000(スピンドルオン、100%出力)M5 S0(スピンドルオフ、0%出力)これをGRBLcontroller、bCNCでそれぞれ入力して確かめてみるといいと思います。GRBLcontrollerやbCNCでは、ジョグボタン(十字ボタン)でXYZ軸それぞれ動かすことはできるんですよね?スピンドルオンのボタンだけ機能しないということでしょうか?ソフトによって、スピンドルオンのボタンに割り当てられているコマンドの中身が違うこともあるので、手入力なら確実です。それでも動かないようであれば、ハード(電気回路など)のほうの問題になるかもしれません。 削除

なんと出来ました!ついに!我ながら名案でした。予備に多くの基盤を買っていたのとGRBLコントロールの方ではスピンドルを動かせるという事で浮かんだのがスピンドル操作とNCコード操作を分ける方法です。①GRBLcontroller+Arduino UNO+CNCコントローラー+ステッピングモーター②GRBLコントロール+Arduino UNO+CNCコントローラー+スピンドルという事です。ちょっとやってる事が無茶苦茶で笑っちゃいましたが、これで切削テストに移れます。今は一歩でも前へ出たい所なので仕方ないですがこれで始めたいと思います。(うまく行くと感動しますね。)

bCNCの場合は、「Spindle」ボタンとその隣に出力調整のスライダーがあります。スライダーを右端いっぱい1000にしておいてから「Spindle」ボタンを押すと、M3 S1000が入力されます。つまりbCNCの場合はM3とS(出力値)が同時に入力される感じです。それに比べ、GRBLcontrollerの「Spindle On」は、M3だけのコマンドであってS(出力値)は入力されないようです。なので、手動で出力値Sを入力しないことには、動かないということです。おそらくGRBLcontrollerは数年前に開発がストップしているようなので、GRBL0.8対応のソフトって感じかもしれません。なので、GRBLcontrollerは、あまり使わない方がいいかもしれまんね。bCNC(GRBL1.1対応)のほうが結局は便利なので(加工原点移動などもボタン一つでできるし)、bCNCを使った方がいいと思います。bCNCはインストールは上手くいきましたか?bCNCは正常使えるような状態でしょうか? 削除

新しい問題NC加工が最後まで行きません。6割加工が終わるくらいの段階で止まってしまいます。これはbCNCもGRBLcontrollerも同じです。以前3Dプリンターでも同じ事があり、分からないままになってしまっていました。パソコンのスペックが低いのでしょうか?CNC 途中で止まる 多くはUSBケーブルをノイズキャンセル付きにしたら良いとあったのですが、元々ノイズキャンセルできる物を使っていたのでそれ以外だと思うのです。それは3Dプリンター 途中で止まる で検索しても同じような内容が見られました。

mirrorさんはそういうことは起きたりしませんか?ちなみに使用中のPCはwindows7 64bit CPU corei3 2.5Ghz 4Gメモリーです。 返信 削除

加工途中でとまってしまうのは、パソコンの問題ではないと思います。基本的にそれほどスペックの高いパソコンでなくても動きます。というのもラズパイのような貧弱なコンピュータでも動くので。問題として考えられるのは、USBシリアル通信のエラーかもしれません。これは、中国製Arduinoクローンに多く見られる現象のようです。対応策は特にないらしく、強いていえば、純正のArduino Unoにするのがベストという感じです。もし純正Arduino Unoを使っても途中で止まってしまうのであれば、次に考えられるのは、ステッピングモータやドライバ、あるいは電源関係かもしれません。加工中に負荷がかかる部分で過電流になり、ドライバの保護回路によってシャットダウンしてしまうということだと思います。モーターを強力なものにするか、ドライバをA4988ではなくDRV8825にして、もう少し高い電流が流れても大丈夫にしておくとか、電源もアンペア数の高いものにするとか。現状のままで解決するならば、ドライバの電流制限設定を8割くらいに下げてみる必要があるかもしれません。 削除

そ、そうだったんですね!いままでそこまで考えていませんでした。一応買った物に交換します。なのでその詳細とグーグル翻訳を貼ってみます。ちなみに軽く脱調を起こすトルクを手の間隔で見るのってダメですか?グッと握って止めるの・・・説明読んでるとまずい事した気がしました。その際の間隔としては買って来た方と大差がなかったです。それから、ステップの数なのか早さなのか分かりませんが買って来た方が反動が細かかったです。、。・、。、。。、・、。・。・、、。・、。・。、・、。・、。・、。。・、。。、ステッピングモーター詳細This is high torque Nema 17 stepper motor with 1.8 deg. step angle (200 steps/revolution). Each phase draws 2A, allowing for a holding torque of 45Ncm(63.7oz.in). This stepper motor is ideal for the RepRap Prusa, Mendel 90, Rostock and similar 3D printers, as well as CNC and robotics applications. The motors are supplied with a 1 metre long power cable with a 4-pin Harwin female connector already fitted - ready to plug and print!

* Manufacturer Part Number: 17HS16-2004S* Motor Type: Bipolar Stepper* Step Angle: 1.8 deg. * Holding Torque: 45Ncm(63.7oz.in)* Rated Current/phase: 2A* Phase Resistance: 1.1ohms* Inductance: 2.6mH+/-20%(1KHz)

* Frame Size: 42 x 42mm* Body Length: 40mm* Shaft Diameter: 5mm* Shaft Length: 23mm* D-cut Length: 21mm* Number of Leads: 4* Lead Length: 1000mm* Weight: 310g

Black(A+), Green(A-), Red(B+), Blue(B-)

Make sure the motor connect to a constant current or chopper drive controller before you test motor. Connecting the motor directly to a power supply will destroy the motor.

これは1.8度の高トルクNema 17ステッピングモーターです。ステップ角(200ステップ/回転)。各相は2Aを引き、45Ncm(63.7oz.in)の保持トルクを可能にする。このステッパーモーターは、R​​epRap Prusa、Mendel 90、Rostockおよび同様の3Dプリンター、ならびにCNCおよびロボティクスアプリケーションに最適です。モーターには、長さ1mの電源ケーブルが付属しており、4ピンHarwinメスコネクターが装備されています。

*フレームサイズ:42 x 42mm*本体の長さ:40mm*軸径:5mm*軸長:23mm* Dカット長さ:21mm*リード数:4*リード長さ:1000mm*重量:310g

http://cnc-selfbuild.blogspot.jp/p/blog-page.htmlまとめの記事を書き直しているところなので、こちらのページも参考にしてみてください。 削除

実は現在A4988を使っています。DRV8825が壊れてしまったので新しいのが来るまでですが。なので直流で0.5Vに制限しています。1.7A=VREF x 2.5なので、VREF=0.68Vに設定とおっしゃってたので今回のモーターを変えて2Aに増えたので上げるべきか下げるべきかわからず下げました。このVREFはモーターに一定の電圧をかける意味みたいですが今思うと当時0.68Vにしか目がいってなくて理解していませんでした。1.7Aでは0.68Vとはどういう計算でしょうか。Current Limit=VREF x 2.5って言うのが分かりません。最大トルクを得る為のセッティング・・・このモーターに合う数字をもう一度教えてください。実は二度と間違った端子に触れない様に新しく買うドライバチップは両サイドの端子にコードの皮膜をハーフパイプ状にカットした物をかぶせています。その他基盤のチップにも接着剤でコーティング。そこから初めて電圧を設定する様にしています。完全にGNDと可変抵抗機しか当たらない様にしています。

A4988の場合は、Current Limit=VREF×2.5という公式がPoluluのサイトに書いてありました。Current Limitが、制限したいステッピングモーターの電流値(定格電流値)。VREFが、ドライバ上の可変抵抗器の電圧調整値。よって、電流制限設定では、ドライバ上の可変抵抗器の電圧調整値VREFを知りたいので、VREF=Current Limit/2.5となり、Currnet Limit(ステッピングモーターの定格電流値)が1.7Aとデータシートに書いてあれば、VREF=1.7/2.5=0.68となり、ドライバ上の可変抵抗器を0.68V(もしくは0.68V以下に)設定します。もし、A4988で定格電流値2Aの違うモーターを使う場合なら、VREF=2.0/2.5=0.8となるので、ドライバ上の可変抵抗器を0.8V(もしくは0.8V以下に)設定します。DRV8825の場合は、公式がCurrent Limit=VREF×2となるので、同様に計算してVREFを求めます。しかし、先ほどPoluluのサイトを見てみると、2017年以降のPolulu製A4988ボードには、従来は50mΩのセンスレジスタであったのに対して0.68mΩに変わったようで、そのため公式も以下のようになったようです。VREF=8⋅Imax⋅RcsVREFは、今まで同様ドライバ上の可変抵抗器の電圧調節値Imaxは、制限したい電流値(ステッピングモーターのデータシート上の定格電流値)Rcsが、センスレジスタの値、従来の50mΩか2017年以降の新しい68mΩか。従来のものであれば、VREF=0.4×Imaxとなるので、去年までの公式であったVREF=Current Limit/2.5と結局は同じということです。DRV8825に関しては、特に変更はないようなので、今まで通りのVREF=Current Limit/2.0で大丈夫そうです。

ブートローダーは、パソコン上のArduino IDEアプリからUSB経由でプログラムを書き込めるようにするためのマイコン内に用意されたもう一つのプログラムです。もしArduino Unoが壊れたときに、ATmega328を交換すれば大体は復活するのですが、ATmega328を差し替えただけではArduinoとしては使用できないので、最初にブートローダーを書き込んでおく必要があります。ATmega328をArduinoではなく、普通のAVRマイコンとして使うのであればAVRライターなど使用してプログラムを書き込むことになります。Arduinoはこのへんの面倒な手順をPCとUSB接続して簡単にプログラムを書き換え可能にしてくれているという感じです。自作CNCにおいても、電気の専門用語や知識がある程度は必要となるので、CNCとは別にArduinoで電気について勉強してみるといいと思います。「Arduino 使い方」などで検索すれば、LEDの点滅の仕方から様々なセンサを使った応用例などでてくると思います。 削除

windows でずっとやって来たのですが(利点がいくつかあったため)誤作動が多いため(スピンドルが動かない、スピンドルを動かすと接続が途切れる)パイソンやCNC制御ソフトの無駄な物をアンインストールしたり試してみてるのですがよくなりませんので一度Macで制御しようと思うのですが・・・MacでArduinoUNOをUSB接続した際にbCNCでポートを選択する方法がwindowsと違うので分かりません。windowsはデバイスマネージャーでArduinoUNOのポートを調べればいそのポートを選べば良かったです。Macもシステムレポートを見ればArduinoUNOと接続しているのは分かるのですが、ポートが分かりません。 製品 ID: 0x0043 製造元 ID: 0x2a03 バージョン: 0.01 シリアル番号: 85531303830351815171 速度: 最高 12 Mb/秒 製造元: Arduino Srl 場所 ID: 0x14100000 / 1 利用可能な電流(mA): 500 必要な電流(mA): 100こんなのが出ます。 削除

ArduinoをMacにつなぐと、/dev/tty.usbmodem1411のようなシリアルポートがでてきますが、これを調べるには、ArduinoをUSB接続したあとに、Macでターミナルを開いて、以下を入力するとls -l /dev/tty.*シリアルポートのリストがでてきます。この中に/dev/tty.usbmodem1411のようなポートがあれば、それをコピペするか手入力でbCNCのポート欄に入れるといいと思います。もしターミナルを使わないなら、ArduinoをUSB接続したあとにArduino IDEを開いて、メニューバー>ツール>シリアルポートを選択すると、その中に複数シリアルポートのリストがでてきます。純正なら、/dev/tty.usbmodem1411中国製なら、/dev/tty.wchusbserial1410こんな感じのポートがあれば、それをbCNCに手入力すればいいと思います。もし、ここで上のようなポートが見当たらない場合は、認識されていないということなので、再起動するか、中国製なら専用のドライバのインストールが必要になります。 削除

bCNCのオープンを押しても'NoneType' object has no attribute 'Serial'と出ます。繋がりません。/dev/cu.usbmodem1411(ArduinoIDEで調べた場合)

crw-rw-rw- 1 root wheel 18, 2 1 14 13:10 /dev/tty.Bluetooth-Incoming-Portcrw-rw-rw- 1 root wheel 18, 4 1 14 13:10 /dev/tty.Bluetooth-Modemcrw-rw-rw- 1 root wheel 18, 14 1 14 22:58 /dev/tty.usbmodem1411(ターミナルで調べた場合)二種類コピペしたのですが、同じ結果でした。1411もだめでした。シリアルが違うって書いてあるのでしょうか?bCNCのbautは15200にしてます。下向きの▲を押した時候補になるポートが空なんですが、普通はここでそのポートが出るのですよね? 削除

ちなみに、pyserialはインストールしてあるでしょうか?pyserialがインストールしてあるか確認するには、ターミナルを開いて、以下を入力。python -c "help('modules')"そうすると、アルファベット順にたくさんモジュール名が出てきます。そのなかで、serialというのがあれば、pyserialがインストールされているということになります。 削除

以前、空運転まではできたと言ってましたが、また出来なくなったのでしょうか?それとも、スピンドルをオンにするとノイズで誤作動するということでしょうか? 削除

あと、元々あったステッピングモーターの情報が見つかりました。中国語と英語で書かれていますが、Nema17stepperMotor 17HS16-2004S1stepperonine社 www.OMC-StepperOnline.com

ステップ角度1.8 クラスB トルクholding torque ( 2phases on)N.m0.45rated surrent/phase2.0 phase resistance 1.1 rated voltage/phase 2.2 phase inductance tyoical 2.6

ドライバA4988かDRV8825で大丈夫だと思います。それよりも、スピンドルのリレー回路とCNCシールドとの接続のほうに問題ありそうな感じですね。 削除 DRV8825が届いたら、すべて正常に動くといいですね。7Yさんのブログにも、画像などアップロードお願いします。 削除 どんなエラーでしょうか?おそらくドライバのほうは1.0Vまであげても大丈夫だと思います。スピンドルをオフにして運転すると、きちんと最後まで動きますか? 削除

そういえばチョイチョイ出るコマンド(コード)のエラーの中にerror:Unsupported command[for T 1 M6]がでますね・・・これはGコード作成時に正しい種類のコード化を選択してないってことですかね?

エラーとしてはまず、Z軸が動かなくなります。なので再度接続し直しました。また、一度エラーが出るとUSBを刺し直しが必要になります。また、各ドライバのヒートシンクの60度くらいの発熱を感じます(ヒートシンクのサイズ変更も考えています。ここでZ軸のエラーの原因を探ってたらスピンドルのノイズ対策のダイオードが一つ逆である事が分かり、これを戻しました。(ここで初めてダイオードを使ったノイズ除去が機能。今まではもう一つのコンデンサーによる方のノイズ除去のみ効果があった様子)するとスピンドルの動きは一気に緩慢になり、1秒に1回転程度のクルックルッと断続的な回転になったためノイズ対策を一気に全部除去してみました。すると以前あったスピンドルを動かすとUSB接続の切断が再開しました。また、その状態でスピンドルを使わないでGコードを使うと最後まで動いてくれます。(最初に書いたエラー内容はありますが)問題なのは多分スピンドルのノイズ対策でダイオードを3つ[uxcell ショットキーバリアダイオード 整流用ダイオード 高速スイッチ 1N5817 DO-41 20V 1A]だと思います。なのでこれを減らすべきなのか増やすべきなのかですね・・・ 削除

そのリレー回路とCNCシールドはどのように配線してます?実際の画像アップできますか? 削除 http://ycnnc.blogspot.jp/2017/01/blog-post_22.htmlがんばりました。初めての事をやるのって楽しいって人いますね・・・僕は苦手です。 削除 む・・・頑張ります。まあ、テスト的なブログでちゃんとやるときはまた別でやりたいです。貼り直してみました。 削除

今回はリミットスイッチでハマってしまいました。またご助言をいただけないでしょうか?このページに書いてあるとおり、0.47uFの電解コンデンサをつけたのですが「Alarm lock」が表示されてしまいます。構成は CNCシールドv3.0+Grbl v0.9ですが電解コンデンサは・・・D9、D10、D12にプラスを半田付けし、D14にGNDでいいんですよね?GrblControlerの設定かと思い、設定を変更してみましたがダメでした・・・。

GrblControllerは、以下の投稿でも書いてありますが、http://cnc-selfbuild.blogspot.jp/2016/03/blog-post_26.html設定(GRBL Settings)で、error: Invalid statementというエラーがでるときがあります。「Alarm lock」なので、このエラーではなさそうですね。ためしに、ほかのG Code Senderを使ってみるのも手だと思います。

(2) GRBL ControlerとbCNCで挙動が違う。現在、これに悩まされているのですが・・・。「GRBL接続 → ホーミング」を行ったあと、bCNCではZ軸が動かなくなってしまいます。一瞬だけ動いた感じはあるのですが。GRBL Controlerでは普通に動作しています。bCNCで設定がいるとか・・・?

(1)https://github.com/gnea/grbl/wiki/Grbl-v1.1-CommandsこのGrbl wikiのページの$X(Kill Alarm Lock)や$H(Homing)を見ると、事前に$22=1でホーミングをオンにしておくと、Arduinoへ電源投入し接続直後にAlarm Lockがかかる仕様のようです。何か異常があったときにもAlarm Lockがでますが、マシン原点が未設定(まだホーミングしていない)の場合もAlarm Lockがでるようです。マシン原点が未設定なので、そのままでは危ないですよということだと思います。$X入力でロック解除できますが、この際もマシン原点未設定ということを念頭にいれて、その後の操作など行わなければいけないということです。

ただし、ArduinoをUSB接続したまま(電源を入れたまま)、一旦bCNCと接続を切ったのち再接続した場合は、Arduino自体はリセットされていないのでAlarm Lockはでないと思います。つまり、ArduinoもbCNCも両方とも電源を再投入すれば、接続直後には必ずAlarm Lockがでて、その都度$Xでロック解除する必要があるのだと思います。

・UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-1: ordinal not in range(128)

bCNCで$J=G53 Y5.0を入力すると、なぜかエラー(error:22)が出ますね。調べてみましたが、error:22はフィード未設定のためのエラーのようで、$J=G53 Y5.0 F600という感じで、後ろにフィード値(例えば600)を入れるとエラーが出ませんでした。この$J=というコマンドはGrbl1.1からの新しい機能だと思います。実際使ったことないです。普通に操作するなら、G90 Z10で絶対座標Z10(mm)へ移動G91 Z10なら、相対座標でZ軸が現在の位置から10mm移動という感じで入力してます。

Pythonの文字エンコードについては、Python起動後、>>> import.sys>>> sys.getdefaultencoding()を入力すると、'ascii'と出て来ます。普段bCNCを使っている上では、asciiになっていても特に問題ありませんね。もしutf-8に切り替えるのであれば、http://qiita.com/puriketu99/items/55e04332881d7b679b00ここに載ってました。 削除

bCNCですが原点を左下に移動させることってできるのでしょうか?bCNCは右上が原点になっていますよね?GRBLでは$23 (homing dir invert mask:11010000)を3に設定してあります。(X -方向 Y-方向 Z+方向)

(2)F値についてTerminalで「G91 X10 F10」「G91 X10 F20」「G91 X10 F100」などとF値だけ変えているのですが、まったく速度が変わりません。

(2)デフォルトではG0(位置決め用の早送り)に設定されているので、F値を反映させたいときはG1にします。G1 G91 X10 F100というように、G0をG1に変えて動かせばF値に合わせてゆっくり動くはずです。G0やG1はモーダル(一度変更すると再度変更しない限りその設定は継続する)なので、最初に入力しておくだけで大丈夫です。ただ、Grbl1.1からは、ジョグ操作は$J=X10F100と入れれば、Gコードに関係なく動かせると思います。

写真見ました。このマシンは3Dプリンタでパーツを作ったのでしょうか?もう少し全体が写っている画像も見てみたいです。 削除

(1)ngcファイルのGコードについてデフォルト値(M5 G0 Z20)にM2やM30を追加してみましたが、やはり98%で止まってしまいます。これであっていますか?・M5 G0 Z20 M30

Arduino接続前 →Not connectedArduino接続後 →Not connectedホーミング後 →Not connectedclear Message選択 →Not connectedリミットスイッチオン →HardLimit

起動からずっとNot connectedになっていますね(涙)一応、Not connectedでも動くので問題はないと思いますが・・・。Arduinoに問題があるのでしょうかね。

それから、インストールされているパッケージ/モジュールをアップデートしてみるとか。まずpipをアップデート(すでにアップデートされていれば、already up-to-dateと出ます。pip install -U pipアップデートしたら、インストール済みのパッケージリストを表示します。pip list一応リストを見たら、その後一括でアップデートします。pip freeze --local | grep -v '^\-e' | cut -d = -f 1 | xargs pip install -Uエラーが出るようなら、一個ずつアップデートしてもいいかもしれません。先ほどのパッケージリストを「pip list」で表示して、「pip install -U パッケージ名」、例えば、pip install -U pyserial

設定については、HeaderのM3 S12000 G4 P3となっていますが、GRBLだとS値はS1000が最大値になります。Spindle Max(RPM)は、S1000にした時のスピンドルモーターの最大回転数を設定しておけばいいと思います。 削除

・ wpos・mposの表示・ Statusの変化・ bCNC画面右側のXYZが動くようになった

やっとprobe作りを始めたのですが、また問題が発生しました。このようなエラーが表示されたのですが「at least one probe direction should be specified(機械翻訳:少なくとも1つのプローブ方向を指定する必要があります)」GRBL上で何か設定が必要でしょうか?SCL端子とGNDに差すだけじゃダメなのでしょうか? 削除

このコメントは投稿者によって削除されました。 返信 削除

USB接続の場合500mAが上限ですが、DRV8825一個で5〜8mA程度、Arduino Unoが50mA程度なので、制御回路上では合計70mAくらいしか消費していないので上限500mAまではまだまだゆとりがあります。・Arduino Unoは500mAまで、それ以上流れたらArduino Unoのポリヒューズがリセット。・ステッピングモーターはDRV8825の電流制限により2Aまで、それ以上流れたらDRV8825の保護回路がリセット。・スピンドルについては、過電流になればACアダプター内のブレーカーによってリセット。回路用電源、ステッピングモーター用電源、スピンドル用電源の3種類別々になっていて、それぞれどこがリセットしているか違うということです。

パソコンが3.0USBだったら良かったんですよね〜ちなみに油はhttps://www.amazon.co.jp/AZ-エーゼット-水溶性切削油1L-切削油・切削オイル-821/dp/B000TGATK6/ref=sr_1_4?ie=UTF8&qid=1486455568&sr=8-4&keywords=切削油です。水に溶いて使っています。水と混ぜるから安上がりです。ちなみにスピンドルは僕も見ていたのですが、チャックとファンのセットで今の奴に付くのか調べてみると全然サイズ違いでした。今のは太さが38mm高さが65mmです。モータの高さ: 175ミリメートル直径: 52ミリメートルでは本体の作り替えからになりそうです。また、ベッドからスピンドルのエンドミルが設置できる幅(Z軸可動行)が50mmから80mmとせまいです。コレットが48+αも有るのでこれにエンドミルも付けられないと分かったのでこの金属加工用は諦めました。値段こそは安くて欲しかったです。まあ、笑ってください。油無しでも溶けたりはしません。刃が擦ったあとが全体的に白くなり、ムラが出る部分が縦線に残るのが気になるくらいです。切削油を使いたかったのは表面がツルッと仕上がるからです。でも鏡面仕上げするには結局削る事には変わりないです。鏡面仕上げしない場合にこっちが重宝すると思ったので出来れば使いたかったです。多分ですが、油を使った方が刃がしっかり立ってる気がします。それが逆にエンドミルをアクリル板側に引っ張る結果になり、スピンドルを上下に揺れさせる原因になってる気がします。切削油無しだとほとんど振動しないので油無しの場合は熱で柔らかくなったアクリルが切り取るよりは剥がれる感じで掘っている気がします。エンドミル温度は加工の時の直線かカーブか、で違いますが、緩やかなカーブほど熱くなり、大体30〜70度くらいになっています。アクリルとの接点はもう少し熱いと思います。ちなみに、刃を逆回転させるとこれも綺麗に削れます。特徴としては逆回転なので削った物を中に押し込んじゃうような力が働くので切削油がまとわりつくようになるのでよCNC周囲が汚れません。また、削ると同時に溶かす感じになって少し透けます。なので残念ながら現状一番綺麗な切削の組み合わせは逆回転で油有りです。続いて逆回転の油無し、正転油無しです。正転油有りがおそらく一番綺麗に作れます。べつに油にこだわってないのですが、逆回転と言うのが・・・ただそれだけって言っていいのかな? 削除

そういえば、エンドミルを3Φ使っていたのですが、2Φ1Φを試す事をしていませんでした。上に書いた考えが正しければ振動が減るかもしれません。 削除 http://ywyacnc.blogspot.jpタイトル変えました。なのでドメインも変えました。良かったらまた遊びに来てください! 削除

こんにちは。 とても詳細な記事ありがとうございます。参考にさせて頂いております。 リミットスイッチの件ですが、誰かすでに投稿しているかもしれませんが。コメントさせて頂きます。リミットスイッチは常時閉と常時開の二種類があります。多くのリミットスイッチは端子が3本出ていて、片方がNC、もう片方がNOとなっています。 リミットスイッチはスイッチがONになると接点がバウンスする為、20~30msのチャタリングが発生します。 それを避ける為に、NCで使用することが多々あります。接点が離れる際はチャタリングが非常に少なくなります。 また、Aruduinoではリミットスイッチの入力はプルアップされていますが、インピーダンスが高く設定されています。 この場合の解決方法としては、常時閉(NC)でリミットスイッチを使用する方が確実です。 設計者は常時開(NO)で使われることを想定してコンデンサを入れる場合がありますが、信号の遅延を起こすことと対策効果の確認ができないので、あまりお勧めの対策ではありません。 よって、方策としてはリミットスイッチは常時閉の状態のものを使用し両端のスイッチを直列にして使用します。 これにより、どちらの左右どちらのスイッチが入ってもリミットセンスされますしノイズによる誤動作は発生しません。 ちなみに反転信号になりますので$5=1の設定が必要です。線の数も半分になります。 間違っていましたらすみません。 返信 削除

遅れてすみません。コメントありがとうございます。参考になりました。常時閉じの場合、断線などの異常も事前に検知できるので便利そうです。 削除

人気の投稿

追記: *リミットスイッチの配線については、Grblサイトの Wiring Limit Switches に追記されたので参考にするといいと思います。ノイズフィルターの有無、ノーマルオープン/ノーマルクローズドなど画像付きで詳しく書かれています(英語)。 G-Code-S.

Ubuntu 18.04のカスタマイズのついでに、自作Gnome Shell Extensionsにチャレンジ。ネットを探してもあまりサンプル例がなく、最初は こちら を参考にしました。 今回つくろうとしたもの: ・トップバーにアイコン(下画像:左から3個目のアイコ.

MacとUbuntuでファイル共有しているので、その設定の覚書。 ・ファイアウォールを設置する ・ファイアウォールで特定の通信を許可する ・Sambaへの登録 ・MacからUbuntuへアクセス(smb://~) ついでに、画面共有も(vnc://~)。 ・Mac.

Ubuntu 18.04インストール後、いくつかのセッティングをしました。今後インストールし直すときもあるかもしれないのでカスタマイズした設定の覚書。 日本語入力・切替え: 普段Macも使っているのでスペースキーを中心に、[英数][スペース][かな]の三つのキーで切替.

ランチャーなどの簡単なスクリプトはテキストエディター(gedit)を使っていますが、複数書類を開くときにタブで表示されるので、新規ウィンドウで開くように設定できないかと。 調べてみると、 ここにその方法 が書いてありました。 「/usr/share/application.

これまでは、Anacondaの仮想環境を切り替えるには、 source activate py36 をターミナルで入力していましたが、いつのまにか(conda4.4から) conda activate py36 に変わっていたらしく、設定を変えてみました。 .

📎📎📎📎📎📎📎📎📎📎