2017年9月2日土曜日

小型工作機CNC2418 その29(Probe-A5端子の変更)

この前のPWM周波数の変更の時に
cpu_map.hを眺めていたら
probeの入力ピン設定の項目が目に止まりました。
*****
  // Define probe switch input pin.
  #define PROBE_DDR       DDRC
  #define PROBE_PIN       PINC
  #define PROBE_PORT      PORTC
  #define PROBE_BIT       5  // Uno Analog Pin 5
*****

A5端子が壊れた時からチップを交換する準備を色々やってきたわけですが
A5から別の空き端子に変更できないかな?
ふと思い付きました。

GitHubのGRBL wikiのConnecting Grbl
ピンアサインの写真がありました。
A4:not used / reserved
が空いているようです。
ついでに
ここからGRBLの最新版を見ます。
左の[Branch master]から[Tags]を見ると
現在のmaterのバージョンがわかります。
v1.1f 20170801ってのがReleaseされています。
リリース文はここです。
現在、マーティーのは、v1.1f 20170717版です。
拡大。
20170731ってのもありますね~
意外と頻繁にUpdateされているんですね~
右側の緑の[Clone or Download]で「grbl-master.zip」をダウンロードします。
ファイル名は変えられないので
そのまま「grbl-master.zip」の名前でダウンロードします。
いつも同じフォルダ名に解凍されるので
以前に解凍した古い[grbl-master]フォルダがあれば
削除していることを確認して解凍します。
で解凍すると[grbl-master]フォルダができます。
これからソースを変更するので
フォルダ名を「grbl_11f_20170801mod」に変更します。
中の「grbl」フォルダ名も「grbl_11f_20170801mod」に変更します。
これがArduino IDEにインストールした時の名称になります。

改めて「cpu_map.h」を眺めます。
所が!
空いているはずのA4ピンが使われていま~す。
COOLANT_MISTになっています。
上の写真では、
A3:COOLANT_MIST
A4:not used / reserved
なのに
どこかで変更され
COOLANT_FLOOD:A3
が追加され
COOLANT_MIST:A3→A4
に変わったようです。
*****
  // Define flood and mist coolant enable output pins.
  #define COOLANT_FLOOD_DDR   DDRC
  #define COOLANT_FLOOD_PORT  PORTC
  #define COOLANT_FLOOD_BIT   3  // Uno Analog Pin 3
  #define COOLANT_MIST_DDR   DDRC
  #define COOLANT_MIST_PORT  PORTC
  #define COOLANT_MIST_BIT   4  // Uno Analog Pin 4
*****

空きがないので
使用しないCOOLANT_MISTをA5に割り当て
PROBEにA4を割り当てることにします。
(MISTとFLOODの違いがわからんし)
で、cpu_map.h黄色部を追記します。
「A5が壊れたボード」専用ということになります。
*****
  // Define flood and mist coolant enable output pins.
  #define COOLANT_FLOOD_DDR   DDRC
  #define COOLANT_FLOOD_PORT  PORTC
  #define COOLANT_FLOOD_BIT   3  // Uno Analog Pin 3
  #define COOLANT_MIST_DDR   DDRC
  #define COOLANT_MIST_PORT  PORTC
  // #define COOLANT_MIST_BIT   4  // Uno Analog Pin 4
  #define COOLANT_MIST_BIT   5  // Uno Analog Pin 5

~中略~

  // Define probe switch input pin.
  #define PROBE_DDR       DDRC
  #define PROBE_PIN       PINC
  #define PROBE_PORT      PORTC
  // #define PROBE_BIT       5  // Uno Analog Pin 5

  #define PROBE_BIT       4  // Uno Analog Pin 4
*****

マーティー仕様でPWM周波数の変更もしておきます。
この為です。
元の#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)
*****

それと
"$I"コマンドで何を変更しているか表示するようにします。
grbl.h
黄色部を追記します。
*****
// Grbl versioning system
#define GRBL_VERSION "1.1f"
#define GRBL_VERSION_BUILD "20170801_PWM7.8KHz_A5toA4"
*****

既にArduino IDEに別のGRBLをインストールしている場合は、
インストールしているGRBLのスケッチが
"C:\Users\(User Name)\Documents\Arduino\libraries"
にコピーされているので
そのフォルダを削除してから(この場合[grbl]フォルダ)
Arduino IDE v1.8.3を起動してアンインストールしておきます。
残念ながら、フォルダ名を変えても
複数のGRBLをインストールすることはできないようです。
全て最後にインストールしたものになってしまいます。
Arduino IDE 1.8.3を起動して
[スケッチ]-[ライブラリをインクルード]
-[.ZIP形式ライブラリをインストール...]に進み
先ほどの[grbl_11f_20170801mod]フォルダ内の
「grbl_11f_20170801mod」を選択します。
Arduino IDEから[ファイル]-[スケッチの例]から
▼にカーソルを置いて一番下まで行くと
[grbl_11f_20170801mod]ができています。
インストールしたGRBLのスケッチが
"C:\Users\(User Name)\Documents\Arduino\libraries"
にコピーされています。
[ファイル]-[スケッチ例]-[grbl_11f_20170801mod]から
[grblUpload]を開きます。
A5端子が壊れているWoodpeckerをUSBで接続します。
設定を確認して
[マイコンボードに書き込む]します。
Arduino IDEを終了し
WoodpeckerをRESETして完了です。

Candle v1.1.7を起動して
Consoleから"$I"すると
[VER:1.1f.20170801_PWM7.8KHz_A5toA4]
と表示してくれました。
プローブ端子を確認するため
ここで作ってここで改良した非金属用プローブを
スピンドルに装着します。
ソースでA5とA4の機能を入れ替えたので
正規のA5端子ではなくA4端子に繋ぎます。
ゼロ点調整の

ボタンを押すと

このコマンドが出ます。
まず、F100で降りてきて接触すると
一旦そこから1mm上がり
今度は、F10でジワジワと降りてきて
接触(Probe SWがON)すると止まります。
動画で
Probe端子と非金属プローブの確認が終わりました。
これでまた、ゼロ点調整とHeightMap機能の復活です。
ATmega328Pを交換せずに済みました。
めでたしめでたし。

15 件のコメント:

kuchan さんのコメント...

はじめて投稿します。
bCNCのインストール時、参考にさせていただきました。
現在、CNCを構築中でやっと基板切削が出来るようになりました。

上記件で気になったので投稿した次第です。
私のシステムではProbe端子やリミット入力等のICの入力がそのまま外部へ出るはノイズ、静電気等の問題が出るのでがいやだったのでフォトカプラで絶縁しています。ご存じかとは思いますが参考まで。

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

見て頂いてありがとうございます。
フォトカプラは存じておりますが、基盤作るのに重い腰が動かず、適当に済ませている次第で...(^^ゞ

kuchan さんのコメント...

ごぶさたしています。
質問させて下さい。
当方、基板切削でCNCを利用しておりますが、当初は問題無かったのですが、あるときから急に基板パターンの円が微妙に楕円(左下から右上方向に)に切削されるようになってしまいました。
CNCのバックラッシュ、ガタなど調べてみましたが問題なさそうです。
四角形の図を切削すると直角もちゃんと出ているので原因が不明です。
なにかアドバイスあればよろしくお願いします。
当方、bCNC(2,OCT,2017)+grbl-v1.1f (2017-08-01)
ボードはMEGA2560です。

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

kuchanさん、こんにちは~
「あるときから急に」があるので、難解ですね~
円が楕円(左下から右上方向に)ですと
時計回りに切削していると「X軸が速い」か「Y軸が遅い」。
反時計回りに切削していると「Y軸が速い」か「X軸が遅い」。
ということになりますので
XかYの”step数 vs 移動量”が微妙にズレている場合です。
GRBLの設定ですと $100=800、$101=800 が変わっていないか
或いは、値を変えてどう変わるか、見てみるのもいいかもです。
私は、「小型工作機CNC2418その33(XY精度の較正)」で
微妙なズレを調整しましたのでご参考になれば幸いです。
取り急ぎ、今、思いつくのは、これしかないですね~

kuchan さんのコメント...

早速の回答ありがとうございます。
GRBLの設定は替えていないので不思議です。
また、気付きあればよろしくお願いします。

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

やっぱしマーティーは素人考えでしたm(_ _)m
上のだと上下か左右に楕円になりますね~
後、思いつくのは、
小型工作機CNC2418 その32(v1.1f Upgradeで妙な振動)
の様にGRBL v1.1でのPWM周波数の影響か
スピンドルのノイズが大きくなって誤動作しているのか
う~ん、お役に立てそうになくすみません。

kuchan さんのコメント...

続報です。
先にgrbl-v1.1f (2017-08-01)と書いていましたが、コンパイルミスで実際は旧バージョンのgrbl-v1.1eのままでした。
そこでgrbl-v1.1fにすべくコンパイル、ボード書込するも
PC->ボード通信は出来ているがボード->PC通信がNGでbCNCとの接続が出来ない状況です。
grbl-v1.1eに戻すと正常につながるのでハードの問題ではなさそうです。
(ボード書込も正常なので)
grbl-v1.1fにアップデート出来ないのが楕円になる原因かは不明ですが。しばらく悩みそうです。

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

GRBL v1.1eは、使ったことありません。
bCNC v0.9.9は、Pythonベースで私のPC(Win10 64bit 4MB i3-1.8GHz)
では重くて、時々、CNC側がフリーズしたりしていました。
ので、Candle v1.1.7を使用しています。
一度、Candleで試されるのも手かと?
そういえば、オシロスコープのXYモードでsin波とcos波では
円になりますが、位相がずれると斜め楕円になるのを思い出しました。
斜めの楕円になるのは、X軸とY軸の動作にズレが生じているのではないかと思います。なので重たいbCNCに原因があるかも?と思った次第です。それにしても不思議な現象ですね~
ご検討を祈ります。

kuchan さんのコメント...

そういえば、オシロスコープのXYモードでsin波とcos波では
円になりますが、位相がずれると斜め楕円になるのを思い出しました。
斜めの楕円になるのは、X軸とY軸の動作にズレが生じているのではないかと思います。なので重たいbCNCに原因があるかも?と思った次第です。それにしても不思議な現象ですね~
->
リサジュー波形ですね。たしかにそのような形に見えます。
マーティーさんのボードARDUINO-UNOだった思いますが、当方、MEGA2560でハードの違いがあるので1.1fが正常動作しない考えます。ボードの違いで動作に違いがあるように思われます。ネットで見てもMEGA2560の日本での事例は見当たらないので顕在化しないバグがあるのかもしれません。その辺調べてみます。解決できたらまたお知らせします。

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

私のCNC2418は、Woodpeckerという、CNC専用のボードです。
電力系の回路も一緒に載っています。
Arduino IDEで書き込む時は、Arduino Nanoを指定します。
チップは、ATmega328Pです。
MEGA2560は、ATmega2560なので確かにチップの違いは怪しいですね。
調べてみると、GitHubのサイト
https://github.com/gnea/grbl
の下の方に
”NOTE: Arduino Mega2560 support has been moved to an active, official Grbl-Mega project. All new developments here and there will be synced when it makes sense to.”
とあります。
”official Grbl-Mega project.”は、
https://github.com/gnea/grbl-Mega/
にあるようですので、これがMega用のGRBLのようです。
間違っていたらすみません。

kuchan さんのコメント...

情報ありがとうございます。
調べてみます。

kuchan さんのコメント...

先日の円が楕円になる件、調べてみました。
1)ver1.1fが書き込めない件
マーティさんが言われるとおり、MEGA版で書き込めました。
しかしこれでは解決しませんでした。

2)パルスモータドライバをZ軸<->X軸、Y軸それぞれで入替。
->変化無し

3)メカ系のガタ有無確認、増し締め。
->変化無し

4)senderソフトを「Candle」にしてみる。
->変化無し

5)3Dプリンタに付属していたレーザユニットでパターンを書かせてみる。
->真円で描画できる。

以上のことからソフト、ハード(無負荷)は問題なさそうです。
負荷が掛かると楕円になるみたいで、それも小円になるほど顕著になる。
かといって切削速度をおとしても変化無しです。
では何故以前は正常に動作していたかがまだ不明です。
取りあえず楕円になってるが許容範囲なのでこのまま使うつもり。
また突然直るかもしれないのでしばらく放置です。

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

kuchanさん、詳細なご連絡ありがとうございます。
色々やられていますね~
モータードライバのDecayが関係しているかもと思っていましたが、入れ替えても変化なしだと無関係のようですね。
しかも小円で顕著ですか!不思議です。
残るは、X・Y モーター自体の入れ替えですかね?

kuchan さんのコメント...

ご無沙汰しています。

以前問題になっていた上記件ですが、原因がわかりました。
この不具合が起きてから、別のスピンドル(3Dプリンタで製作した軸受け+ブラシレスモータでベルト駆動した自作スピンドル)でやってみたところ、上記不具合が無くなりました。
調べてみると、上記問題が起こる前にスピンドル用に使用していたリョービのハンドルータをバラしてメンテしていたのですが、組み立てる際、ルータ軸の根元を固定するネジが緩んでいたようでこれが原因でXYが動いたときにちょうど筆をなでるような動きをして楕円になっていたようです。
お騒がせしました。

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

kuchanさん、お久しぶりです。

いや~このようなご連絡をいただけるとは、実に嬉しいですね。
実はずっと気になっておりましたので原因がわかってスッキリです。
ありがとうございます。
負荷をかけた時だけ発生してた理由も納得でき勉強になりました!
なんだか随分と改造されていらっしゃるようで
3Dプリンタもあるんですね~羨ましい~
私も何とか置き場所を探して、そろそろ3Dプリンタに手を出したい所です。