2017年8月26日土曜日

小型工作機CNC2418 その27(GRBL v1.1f レーザー途中停止の原因と対策1)

GRBL v1.1fにUpgradeしてから
レーザーを使うと、途中でCNC2418がフリーズして止まるのです。
ここで紙をカットしている時です。
RESETスイッチを押さないと復帰しません。
時にはレーザー照射したまま止ります。
恐ろしや~
失敗の残骸。
この様に止まる所は同じ所ではないのです。
以前は、正常に動作していたので
WoodpeckerをGRBL 0.9jに戻してみると、
止まらず最後まで行くのです。
2、3度カットしましたが異常なしです。

v0.9j と v1.1fの違いであることは明白のようです。
まずは、気になっていた
GitHubのv1.1レーザーモードの解説を読みます。
"Grbl v1.1 Laser Mode
Sonny Jeon edited this page on 24 Feb · 10 revisions"
Google先生に助けを借りて翻訳すると~

新しく素晴らしい機能が追加されていることがわかりましたが
その試用は別の機会にするとして。
ここにスピンドルPWM周波数の事がありました。
*****
By default, the spindle PWM frequency is 1kHz, which is the recommended PWM frequency for most current Grbl-compatible lasers system. If a different frequency is required, this may be altered by editing the cpu_map.h file.
*****
訳すと
*****
デフォルトでは、スピンドルPWM周波数は1kHzです。これは現在のほとんどのGrbl互換レーザーシステムで推奨されているPWM周波数です。 異なる周波数にする場合は、cpu_map.h ファイルを編集して変更できます。
*****
てなことが書いてあります。
わざわざ、この周波数にした説明があるということは、
PWM周波数を変えている感じがします。
これ、怪しいです。

直ぐにcpu_map.hを眺めていくと
”SPINDLE_TCCRB_INIT_MASK”が
PWM周波数に関係しているようです。
PWMは、最後の#defineが有効になっています。
v0.9では7.8KHz (Used in v0.9)だったのが
v1.1で0.98KHzに変わっていたのです。
周波数が下がっているので
12V系の電流のPeak to Peakは、相当増えていると思われます。
*****
  // #define SPINDLE_TCCRB_INIT_MASK   (1<<CS20)               // Disable prescaler -> 62.5kHz
  // #define SPINDLE_TCCRB_INIT_MASK   (1<<CS21)               // 1/8 prescaler -> 7.8kHz (Used in v0.9)
  // #define SPINDLE_TCCRB_INIT_MASK   ((1<<CS21) | (1<<CS20)) // 1/32 prescaler -> 1.96kHz
  #define SPINDLE_TCCRB_INIT_MASK      (1<<CS22)               // 1/64 prescaler -> 0.98kHz (J-tech laser)
*****

GRBL v0.9jの時のPWM周波数に戻してみます。

GitHubからダウンロードした
「grbl-master.zip」を解凍します。
バージョンはv1.1f(2017-07-17 Release)です。
解凍したら、バージョンがわかるようフォルダ名を変えます。
[grbl-master]⇒[grbl_11f_20170717mod]
中のフォルダも
[grbl]⇒[grbl_11f_20170717mod]
このフォルダに
cpu_map.h があります。

元の#defineの前に"// "を追記
(Used in v0.9)の#defineの前の"// "を削除します。
黄色部の所です。
*****
  // #define SPINDLE_TCCRB_INIT_MASK   (1<<CS20)               // Disable prescaler -> 62.5kHz
   #define SPINDLE_TCCRB_INIT_MASK   (1<<CS21)               // 1/8 prescaler -> 7.8kHz (Used in v0.9)
  // #define SPINDLE_TCCRB_INIT_MASK   ((1<<CS21) | (1<<CS20)) // 1/32 prescaler -> 1.96kHz
  // #define SPINDLE_TCCRB_INIT_MASK      (1<<CS22)               // 1/64 prescaler -> 0.98kHz (J-tech laser)
*****

その前にArduino IDE v1.8.3にある
現在のGRBLをアンインストールします。
マーティーのWindows10 64bit、Arduino IDE v1.8.3では、
「C:\Users\(User Name)\Documents\Arduino\libraries」
の「grbl 」フォルダを削除します。
一旦、Arduino IDEを起動するとアンインストール終了です。
[ファイル]-[スケッチの例]から
GRBLが消えていることを確認します。

Arduino IDE 1.8.3を起動して
[スケッチ]-[ライブラリをインクルード]
-[.ZIP形式ライブラリをインストール...]に進み
先ほど解凍し改名した[grbl_11f_20170717mod]フォルダ内の
「grbl_11f_20170717mod」を選択します。
Arduino IDEから[ファイル]-[スケッチの例]から
▼にカーソルを置いて一番下まで行くと
[grbl_11f_20170717mod]ができています。
CNC2418をUSBで接続して
Arduino IDE v1.8.3を起動
[ファイル]-[スケッチの例]から
[grbl_11f_20170717mod]-[grblUpload]をクリック
設定を確認して
[マイコンボードに書き込む]します。
Arduino IDEを終了し
WoodpeckerをRESETして
Candle v1.1.7を起動します。
Consoleから"$I"でバージョンを確認します。
設定がv1.1f デフォルトなのでCNC2418用に変更します。
$3=5 (dir port invert mask:00000101)
$100=800 (x, step/mm)
$101=800 (y, step/mm)
$102=800 (z, step/mm)
$110=2000 (x max rate, mm/min)
$111=2000 (y max rate, mm/min)
Candle v1.1.7にエラーで止まっていたGcodeを読み込みます。
このマスクパターンです。
S40 F1500 にしています。
ゴーグルを忘れないように!
慣れて先を急ぐと忘れそうになります。
テストカットはマスクパターンを4つ。
予想通り最後まで行きました。
エラーも起こっていません。
左からF1000、F1500、F2000、F3000、全てS40です。
設定は、
$110=3000 (x max rate, mm/min)
$111=3000 (y max rate, mm/min)
にしています。
F1500より右は、変わらないですね~
スポット径が安定していないので
均一に切れていません。
今回は久しぶりに”感”が的中!
やはりPWM周波数の変更が原因でした。

この周波数が変わったことで
12V系の電流のPeak to Peakが、かなり増えているはずです。
カレントプローブがなく、電流測るのが面倒なので測っていません。
Woodpeckerのパターンを見るとGNDラインが・・・・!
入力24V~ATmega328P回路~12V電源
とATmega328P回路を経由しています。
これでは、12Vに大きな電流が流れると
ATmega328P回路のGNDが振られて不安定になるはずです。
下手したらチップが壊れる可能性も否めません。
実際、RESETがかかるほど振れていたようです。
CNC2418のWoodpeckerに起こりうる特有のものですね。
しかもその先に5V電源がある構成です。
GNDの引き回し方が大変悪いです。
12V電源のGNDは、すぐにでも修正する必要があります。
また、レーザードライバ基盤の電源は
CNC2418のWoodpeckerからのレーザードライブ出力から得ています。
S40ですと12Vの4%のPWMです。
スポット径が安定しないはずですね~。
このドライバ基盤にはTTL端子があるので
その内、試したいと思います。
低パワーでスポット径が安定しないのは治るはずです。
レーザーは、このXL4003でドライブされています。
Datasheetをみると300KHz駆動のようですので
Woodpeckerの12Vの電流Peak to Peakは、相当小さくなるはずです。
一方、スピンドルは、max 12000rpmとすると
200回転/秒:200Hz相当なので
v1.1fの0.98KHz駆動だと5倍しかなく
何か不具合が起きそうな気もします。
ということで
マーティーのCNC2418は、GRBL v0.9jの7.8KHz駆動を標準にします。
WoodpeckerのGND引き回し修正は、後ほど!

2 件のコメント:

7110 さんのコメント...

こんにちは
初めて書き込みさせていただきます。

私はcnc3018を使っております、モーターのブラシが減ってきましたのでブラシレスモーターとドライブを購入し接続しましたがスピンドルの回転制御が上手くいかず悩んでいました。
マーティーさんのブログを見てアッと思いPWM周波数を変更したところ問題解決いたしました!
大きなヒントをいただいて感謝しています。

マーティーの工房日誌 さんのコメント...

お役に立てて幸いです。
775のブラシ、あの5mm程の分厚いやつが減ったのですか!
かなり使い倒されていますね~
v1.1でPWM周波数を下げられた理由がわからないんです。
少なくとも私のCNC2418には、色々と悪い方向です。