2017年7月22日土曜日

小型工作機CNC2418 その23(GRBL v1.1f Upgrade)

いよいよ
GRBL v1.1 Upgradeへの挑戦です!

CNC2418のGRBLコントロールボードのWoodpeckerで
v1.1fへのUpgradeに成功した記述がちらっと載っていたので
少し前から気にはなっていたのです。
ボードが2つになったので、
A5端子が壊れたボードで心置きなく挑戦できます。
CNC2418についていたオリジナルのボードです。

ある時、Woodpeckerの端子の意味を調べていたら
GitHubのここにこんな書き込みが!

最後から3番目まで行くと7 May(2017)に
***
I received my Linkpsrite CNC1610 last month and was able upgrade it with limit switches and flash the new firmware from GRBL0.9 to GRBL1.1f. Homing function is working fine now (I'm using bCNC). The new firmware was flashed using Arduino IDE and configuring the board as arduino nano. Thanks guys for the references published here! ;-)
***
先月届いたLinkpsrite CNC1610のfirmwareをGRBL0.9からGRBL1.1fにして
リミットスイッチもつけちゃった。・・・
Arduino IDEで「Arduino nano」としてコンフィグレーションしたよ。
とある。
その下の 23 May に別の人が、
***
Did you ignore the alert about few memory for variables? I compiled the 1.1f but I didn't send the code to my card because I read that warning...
***
「few memory for variables」のアラートは無視しちゃたの?
1.1fのコンパイルはできたけど、ボードへの書込は止めたよ、
warningを見ちゃったからね...
ともあります。

そこで
「Linkpsrite CNC1610」を調べたら
「Linksprite CNC1610」が正しいスペルのようですが
ここに詳しく説明があります。
CNC2418と同じボードのようです。
同じボードとみて間違いないでしょう!
詳しい組立説明もあります。
最後の方に回路図までありました。ラッキー!
これでできる確信がわきました。

さて前置きが長くなりましたが
先にインストールしておいたArduino IDE 1.8.3を起動して
Woodpeckerを接続、[ボード情報を取得]してみると。
これが出てきました。
このVIDとPIDは、USB SerialのSH340のIDを認識しているということです。
どうもFirmwareの書き込み方法がわからないので
グーグル先生に紹介してもらいます。
mirror nerrorさんの
GRBLソフトウェアを試してみる」GRBL 0.8の手順と
最新版Grbl1.1をインストール」GRBL 1.1の手順
みら太な日々さんの「GRBLを動かす
を参考にさせていただきました。
ありがとうございます。

まず、ここからGRBLの最新版をダウンロードします。
左の[Branch master]から[Tags]を見ると
現在のmaterのバージョンがわかります。
拡大。
v1.1fですが
つい最近2017-07-17にUpdateされています。
右側の[Clone or Download]で「grbl-master.zip」をダウンロードします。
解凍すると[grbl-master]フォルダができます。
以前は、このフルダ名を変えないといけなかったようですが
最近のArduino IDEでは、そのままで大丈夫でした。
Arduino IDE 1.8.3を起動して
[スケッチ]-[ライブラリをインクルード]
-[.ZIP形式ライブラリをインストール...]に進み
先ほど解凍した「grbl-master」内の「grbl」フォルダを選択します。
”ライブラリが追加されました。
「ライブラリをインクルード」メニューを確認してください”
の表示が出ます。
Arduino IDEから[ファイル]-[スケッチの例]から
▼にカーソルを置いて一番下まで行って
[grbl]-[grblUpload]と選択すると
別のウインドウがでてきます。
最初の行に
"This sketch compiles and uploads Grbl to your 328p-based Arduino!"
とあります。
最初に見た、GitHubで7 Mayに成功した方が”Nano”でやったと書いてあるので
念の為、[ツール]-[ボード:]から[Arduino Nano]を選択しておきます。
書込装置はデフォルトの"AVRISP mkII"のままです。
このスケッチのウインドウのメニューから
[スケッチ]-[検証・コンパイル]をします。
コンパイルが始まります。
待つこと1~2分でしょうか
この様なコメントが下の欄にでます。
無事コンパイルできたようです。
GitHubの23 Mayの方は、3行目の赤文字でビビったのだろうか?
[スケッチ]-[マイコンボードに書き込む]をします。
緊張が走ります。
勇気を出して”クリック”っと!
またこの画面がでます。
”スケッチをコンパイルしています”とでたので
一瞬、間違えたかと思いましたが
緑のバーが右端まで行くと
”マイコンボードに書き込んでいます”とでて
数秒後に
”ボードへの書き込みが完了しました”とでました。
どうやらできたようです。
grblUploadのスケッチのウィンドウを閉じます。
Arduino IDEのシリアルモニタ機能でアップロードしたgrblの内容が確認できます。
[ツール]-[シリアルモニタ]を実行します。
このウィンドウがでます。
赤枠の所を「CRおよびLF」「115200bps」に変更すると
ちょっと間をおいて
”Grbl 1.1f ['$' for help]”と出ました!
成功です!!!
上のコマンドラインに「$$」を入力すると
設定値が出てきました。
GRBL 1.1fのデフォルトの設定値のようです。
CNC2418の設定とだいぶ違っています。
メモリ削減のため設定値の後ろの説明がなくなっているとのこと。
*****
Grbl 1.1f ['$' for help]
$0=10
$1=25
$2=0
$3=0
$4=0
$5=0
$6=0
$10=1
$11=0.010
$12=0.002
$13=0
$20=0
$21=0
$22=0
$23=0
$24=25.000
$25=500.000
$26=250
$27=1.000
$30=1000
$31=0
$32=0
$100=250.000
$101=250.000
$102=250.000
$110=500.000
$111=500.000
$112=500.000
$120=10.000
$121=10.000
$122=10.000
$130=200.000
$131=200.000
$132=200.000
*****
その22のボード交換で確認しておいた
CNC2418のGRBL 0.9jの設定値は、これでした。
*****
$$ <
$0=10 (step pulse, usec)
$1=25 (step idle delay, msec)
$2=0 (step port invert mask:00000000)
$3=5 (dir port invert mask:00000101)
$4=0 (step enable invert, bool)
$5=0 (limit pins invert, bool)
$6=0 (probe pin invert, bool)
$10=3 (status report mask:00000011)
$11=0.010 (junction deviation, mm)
$12=0.002 (arc tolerance, mm)
$13=0 (report inches, bool)
$20=0 (soft limits, bool)
$21=0 (hard limits, bool)
$22=0 (homing cycle, bool)
$23=0 (homing dir invert mask:00000000)
$24=25.000 (homing feed, mm/min)
$25=500.000 (homing seek, mm/min)
$26=250 (homing debounce, msec)
$27=1.000 (homing pull-off, mm)
$100=800.000 (x, step/mm)
$101=800.000 (y, step/mm)
$102=800.000 (z, step/mm)
$110=5000.000 (x max rate, mm/min)
$111=5000.000 (y max rate, mm/min)
$112=500.000 (z max rate, mm/min)
$120=10.000 (x accel, mm/sec^2)
$121=10.000 (y accel, mm/sec^2)
$122=10.000 (z accel, mm/sec^2)
$130=200.000 (x max travel, mm)
$131=200.000 (y max travel, mm)
$132=200.000 (z max travel, mm)

******
$30~$32は、v1.1で新規の項目ですね~
GitHubのここ
GRBL 1.1のConfigrationの説明がありました。

$30 - Max spindle speed, RPM
$31 - Min spindle speed, RPM
$32 - Laser mode, boolean

CNC2418は、スピンドル回転数を指定できるわけではないので
$30と$31は、そのままにしておきます。
$32はよくわからんのですが
曲がり角でレーザーパワーを自動で微調整してくれたりする機能ではないかと?
詳しくは、GRBL laser documentation 見てくれーとあるので
また別の機会にしたいと思います。
取り敢えず、デフォルトのまま「=0:無効」にします。

で結局、CNC2418と同じにするには、これだけのはずです。
$3=5 (dir port invert mask:00000101)
$10=3 (status report mask:00000011)
$100=800.000 (x, step/mm)
$101=800.000 (y, step/mm)
$102=800.000 (z, step/mm)
$110=5000.000 (x max rate, mm/min)
$111=5000.000 (y max rate, mm/min)

コマンドを入力するとerrorがでたので
Arduino IDEを再起動してボードのUSBを挿し直すとerrorはでなくなりました。
で設定コマンドを入力しても"ok"しかでません。
ボードのリセットボタンだけでよかったのかも。
"$$"で確認します。
変更されています。
念の為、もう一度Arduino IDEを再起動して
USB挿し直して再確認します。
覚書として残しておきます。
*****
Grbl 1.1f ['$' for help]
$0=10
$1=25
$2=0
$3=5
$4=0
$5=0
$6=0
$10=3
$11=0.010
$12=0.002
$13=0
$20=0
$21=0
$22=0
$23=0
$24=25.000
$25=500.000
$26=250
$27=1.000
$30=1000
$31=0
$32=0
$100=800.000
$101=800.000
$102=800.000
$110=5000.000
         ⇒ 2000に変更(2017.8.7)
$111=5000.000
         ⇒ 2000に変更(2017.8.7)
$112=500.000
$120=10.000
$121=10.000
$122=10.000
$130=200.000
$131=200.000
$132=200.000
*****

”$I”コマンドでは
[VER:1.1f.20170717:]
[OPT:V,15,128]
とでました。

よく考えてみると
チップAtmel MEGA328Pに依存したソフトなので
UNOもNanoも関係ない気もしますが、わかりません。
当初は、328PをCNC専用チップだと思っていたので
周辺ハードも含めてv1.1に対応できるか調べないといけないと
思っていて、ここまで引き伸ばしていました。

いよいよ実機での確認です。
まずは、今まで使っていた Candle 1.0.11で
ありゃー、Statusに”Unknown”の文字が!
Z軸の数値も変になっている。
そう言えば、Candle 1.0.11は、GRBL v1.1未対応だったのを思い出しました。
それでは、最新版の Candle 1.1.07で行きます。
これは、CNC2418付属GRBLcontrolソフトの最新版で
以前、GRBL 0.9jで試したけど正常に動作しなかったのです。
GitHubのここからダウンロードできます。
これは、右の[Clone or download]からダウンロードできません。
下の方のDownloadsの所から
「Windows:candle_1.1.7.zip」をダウンロードします。
インストール不要です。
解凍したらCandle.exe を即実行できます。
Z軸を動かしてみるとじわ~っと下がりました。
また正常に動かんのかな~と思いきや

すぐ下を見ると
「Step」と「feed」があります。
初期はFeed:10になっています。
動きが遅いはずです。
ジョグの真中に「駐車禁止マーク」?
ボタンでした。
ジョグを途中でSTOPできます。
1.0.11にはありませんでした。
ジョグ時のFeedが可変できるようになっています。
Feed:500にすると
XYZ軸、全ていつものように軽快に動きます。
次に気になったのが
「Jog」 の 上に 「Overriding」 の文字!
展開するとこのようにバーがでてきます。
うぉー!これが噂のリアルタイム可変バー!
バーを最低の位置では、こうなります。
100%ポイントが薄く残っています。
最高の位置は、これです。
いい~!
これはすぐに試さなくては!
早速、Fusion360で直径100mm 高さ20mmの円柱を描き
[2D]-[輪郭]で0.2mmずつ掘るGcodeを作ります。
やっと、これくらいは、ちゃちゃーっとできるようになりました。
CAM設定はこれです。
部材なしで空間を削ってみます。
一応、エンドミルは2.0mmです。
スピンドルはうるさいので200rpm、つまりDuty 20%で回します。
この2つにチェック入れます。
まずは、Spindle speedのCandle画面の動画です。
応答速度は少し緩やかなのでバーを早く動かすと
ゆっくり追従してきます。
バーの可変でSpendleの音が変わっているのがわかると思います。
次は、Feed rateです。
こちらもCandle画面から
ステッピングモーターの音が変わっているのがわかると思います。
Feed rate可変している時のCNC2418の動きです。
Gcodeは100mmの円を一定速度で回しています。
円は1行の命令になっています。
     G2 Y51 J51 F300
15秒目位で10%まで落としているのでほぼ止まって見えます。
最後の方は、ステージが後方に移動していきますが
スピードが変わっているのがよくわかるかと思います。
リアルタイムに可変できる!これはいいです!

bCNCの最新は、v0.9.9です。
GRBL 0.9j、GRBL 1.1f どちらでも動作します。
リアルタイム可変できましたが、どうも追従が悪いのです。
特にスピンドルを一旦遅くすると
100%にしても回転が戻らず
200%近くまで上げてから下げないと戻りません。
Feedも追従していますが、Candleより遅い感じです。

たぶんPCがメモリ4Gしか積んでないからかな~と思われます。
この所、ジョグでカチカチ連打して移動していると
固まってしまうこともあったのです。
ハードリセットしないと復帰しません。
Fusion360を立ち上げていると起こりやすい感じがします。
Python上で動いているので元々重いのですね。
Gcode読み込んでツールパス画像を移動拡大している時も
動きがもっさりしたり、しなかったり。
Core i3-3217U 1.8GHz 4GBでは無理があるのでしょう。

ということで
Candle、最新版のv1.1.07がメインになりそうです。

いや~久々の感動でした。

Arduino IDE 1.8.3のインストール

GRBLコントロールボード(Woodpecker)の
AVRマイコンの交換する前に
生のAtmel MEGA328PにBootloaderを書き込まねばなりません。
またGRBL v1.1へのUpgradeを行うにも
Arduino IDEをインストールしておく必要があります。

インストール方法はここを参考にさせていただきました。

公式サイトのここから
マーティーのPCはWindows10 64bitなので
右の「WINDOWS INSTALLER」をクリックして
arduino-1.8.3-windows.exe をダウンロードします。

arduino-1.8.3-windows.exeを実行します。
ライセンス使用許可の画面を[Agree]して
この画面もそのまま[Next]
インストール先は、デフォルトの
C:\Program Files (x86)\Arduino
2分程かかって最後の方で
デバイスソフトウェアをインストールするか聞いてくるので
[インストール]します。
もうひとつ
USBデバイスソフトウェアをインストールするか聞いてくるので
[インストール]します。
さらにもうひとつ(発行元が前のと異なっています)
USBデバイスソフトウェアをインストールするか聞いてくるので
[インストール]します。

完了したので[Close]する
Arduino IDEを起動します。
最初だけWindowsの警告が出ます。
Java使うんですね~
[アクセスを許可する]にします。(するしかないでしょう)
Arduino IDE 1.8.3の起動画面です。
いきなり日本語になっています。
何も接続していない状態で
メニューの[ツール]を見ると
[シリアルポート]の項目はグレーアウトしています。
参考にしたサイトは1.8.0ですが
1.8.3では、シリアルポートの設定は自動になっています。
CNC2418のGRBLコントロールボード「Woodpecker」をUSBで接続して
メニューの[ツール]を見ると
[シリアルポート]の項目は「COM3」がでているので
[COM3]を選択すれば設定完了。
次からは、ボードを接続すると自動認識します。
元々、CNC2418を接続していた時と同じ
COM3ポートなのでBaud rate設定などはそのままです。
(COM番号はお使いのPCにより変わります)
ひとまず、インストールは終わりです。

2017年7月20日木曜日

小型工作機CNC2418 その22(コントロールボード交換)

注文していたGRBLコントロールボードが届いたので交換します。
えらく早い到着です。
ボード系は初めて購入するのですが
思いの外、大きな箱でやたら厳重に梱包されています。
まず、オリジナルボードの設定値を
CNC2418付属のGRBLcontrol(Candle)で
GRBL Settingの設定値を確認しておきます。
$$コマンドで
*****
$$ <
$0=10 (step pulse, usec)
$1=25 (step idle delay, msec)
$2=0 (step port invert mask:00000000)
$3=5 (dir port invert mask:00000101)
$4=0 (step enable invert, bool)
$5=0 (limit pins invert, bool)
$6=0 (probe pin invert, bool)
$10=3 (status report mask:00000011)
$11=0.010 (junction deviation, mm)
$12=0.002 (arc tolerance, mm)
$13=0 (report inches, bool)
$20=0 (soft limits, bool)
$21=0 (hard limits, bool)
$22=0 (homing cycle, bool)
$23=0 (homing dir invert mask:00000000)
$24=25.000 (homing feed, mm/min)
$25=500.000 (homing seek, mm/min)
$26=250 (homing debounce, msec)
$27=1.000 (homing pull-off, mm)
$100=800.000 (x, step/mm)
$101=800.000 (y, step/mm)
$102=800.000 (z, step/mm)
$110=5000.000 (x max rate, mm/min)
$111=5000.000 (y max rate, mm/min)
$112=500.000 (z max rate, mm/min)
$120=10.000 (x accel, mm/sec^2)
$121=10.000 (y accel, mm/sec^2)
$122=10.000 (z accel, mm/sec^2)
$130=200.000 (x max travel, mm)
$131=200.000 (y max travel, mm)
$132=200.000 (z max travel, mm)

******

新品のボード単品にUSBだけ接続して5Vを供給します。
(まだCNC2418には装着していません)
CNC2418付属のGRBLcontrol(Candle)を起動します。
(私は v1.0.11を使っています)
同様に$$コマンドで見ると
異なっているのは
$110と$111だけです。(赤太文字の行)
つまりX軸とY軸の Maxスピードのみです。
******
$$ <
$0=10 (step pulse, usec)
$1=25 (step idle delay, msec)
$2=0 (step port invert mask:00000000)
$3=5 (dir port invert mask:00000101)
$4=0 (step enable invert, bool)
$5=0 (limit pins invert, bool)
$6=0 (probe pin invert, bool)
$10=3 (status report mask:00000011)
$11=0.010 (junction deviation, mm)
$12=0.002 (arc tolerance, mm)
$13=0 (report inches, bool)
$20=0 (soft limits, bool)
$21=0 (hard limits, bool)
$22=0 (homing cycle, bool)
$23=0 (homing dir invert mask:00000000)
$24=25.000 (homing feed, mm/min)
$25=500.000 (homing seek, m/min)
$26=250 (homing debounce, msec)
$27=1.000 (homing pull-off, mm)
$100=800.000 (x, step/mm)
$101=800.000 (y, step/mm)
$102=800.000 (z, step/mm)
$110=800.000 (x max rate,mm/min)
$111=800.000 (y max rate,mm/min) 

$112=500.000 (z max rate,mm/min)
$120=10.000 (x accel, mm/sec^2)
$121=10.000 (y accel, mm/sec^2)
$122=10.000 (z accel, mm/sec^2)
$130=200.000 (x max travel, mm)
$131=200.000 (y max travel, mm)
$132=200.000 (z max travel, mm)

******

んで、
Candleのコマンドボックスで
$110=5000
$111=5000
と入力すれば設定の変更完了です。
念の為、以下のコマンドも確認してみますが
これらは違いはありませんでした。
GRBLバージョンは0.9j.20150930で同じです。
*****
$G <
[G0 G54 G17 G21 G90 G94 M0 M5 M9 T0 F0. S0.]

$I <
[0.9j.20150930:]

$N <
$N0=
$N1=

$C <
[Enabled]
******

次は、ステッピングモーターシールド A4988の調整をします。
「みら太な日々」師匠のこここれを参考にさせていただきました。
師匠はコイル電流を直接測定することを薦められています。
が、電流測定が面倒なので次の式でVREFFで調整します。
師匠m(_ _)m

電流制限値は、
VREFF:半固定VRのセンター端子の電圧
から次の式で決めるということです。
 Current Limit = VREF × 2.5

CNC2418を購入したセラー「DZT 's store」で
同じ型のステッピングモーターの諸元を見ると。

current/phase: 1.33A
とあります。

で計算して
1.33÷2.5=0.532 なので
0.5Vに調整しようと思いましたがーー
オリジナルでうまく動いているので
それに合わせるのがよかろうもんと思い立ち。
オリジナルボードのA4988を測定してみると
XYZ全部 0.65Vになっています。
VRもセンター位置ではなく傾いた位置なので
一応、調整されて出荷されていると考えていいようです。
計算より高めですが
長時間動かした時にステップングモーターの発熱は許せる程度だったし
トルクも高くなっているはずなので
結局、0.65Vにすることにします。
(Z軸用がやや発熱大ではありますが)
たまにはアナログで!
細かい数値を気にせずに調整できます。
設定が終わったら
A4988に付属の小~さい放熱フィンを張り付けます。

仕上げに
A5端子がまた壊れると困るので
外付け保護ダイオードで強化します。
手持ちの1S1588を2本加工します。
汎用小信号用シリコンダイオードです。
A5端子の裏にダイオードをハンダ付けします。
銅テープを張って最右上の5Vに接続しています。
久しぶりの細かいハンダ付けでしたがうまくいきました。
さすがに拡大鏡は使いました。
このボードはオジリナルと違って
チップ部品も全て表側に実装されていました。
CNC2418にボードを付け替えケーブルを接続します。

GRBLcontrol(Candle)を起動し
ジョグから確認していきます。
X軸、Y軸は100mm、Z軸は30mm移動させて
スケールで大きく狂っていないことを確認。OKです。
スピンドルをON/OFF、回転数を変えます。OKです。


ゼロ点探索ボタンを試します。

Z軸が下がってきて、下に接触するとすぐ止まりました。
エラーはでていません。
これでまたプローブ機能が使えます。

一応、$$コマンドで設定の確認です。
$110=5000.000
$111=5000.000
になっています。OKです。
交換作業、無事完了です!
ボード丸ごとなので、わかってしまえば、とても簡単な作業でした。

所でこのGRBLコントロールボード
CNC2418を購入したセラーより安かったのですが
オリジナルと違う所があります。
リミットスイッチ用の端子が、
X軸とY軸は2個ありますが、Z軸用が1個しかなく、
隣のpinは、MEGA328Pの15pinに接続されているので
リミットスイッチを使われている方は、一考されてた方がいいでしょう。
それとチップ部品が全て表面に付いています。
ということでアフィリンクは止めておきます。