2018年9月1日土曜日

3Dプリンタ その09(オートレベリングとFirmware書換)

前回、3D Touch Sensorを取り付けました。
オートレベリング機能を追加すべく、Firmwareの書き換えをやります。

それと、Repitier-HostにEEPROMの書換機能があるけど
マーティーのでは、
[Config]-[Firmware EEPROM...]を見るとグレーアウト状態(T_T)
これもFirmwareのUpdateで治ってくれないかと、微かな期待があります。
マーティーのFirmware Versionは、
Repetier-Hostから[Printer]-[Printer Information]すると
「V 1.0.04」とでています。
その下に「https://github.com/Ultimaker/Marlin」
ってあるな~
まずは、そのGitHubを覗いてみますが、

ダウンロードリンクが切れていたりと、どうも古いようです。
で、Geeetechのwiki「3DTouch Auto Leveling Sensor」に解説がありました。
3D Touch Sensorを使うには、FirmwareのUpdateだけではダメで、
3D Touch用にFirmwareを編集しないといけないのです。
Firmwareの編集箇所も載っています。
が、Firmwareのダウンロード先情報がありません。

で、Google先生に「Geeetech i3 pro b firmware download」と聞くと
Geeetech ForumのここにFirmwareがあることがわかりましたが、
沢山の機種があり、最初は、よくわからなく、
じ~~っと眺めながら下がっていくと、ありました!
5)Firmware for I3 pro&proB
ここに更に5種類あります。
マーティーのGeeetech I3 Pro Bのコントロールボードは、
Rev A+になっています。表側
裏側
ということで
一番下の「Marlin-PI3_Pro_B_3DTouch(A+).zip」
でいいハズです。
そこをクリックしてダウンロードします。
ダウンロードした「Marlin-PI3_Pro_B_3DTouch (A+).zip」を解凍します。

先のGeeetechのForumに
GT2560のFirmware書換手順は、ここに飛んでくれとあります。
Firmware書換には、Arduino IDE Version 1.0.1の指定があるので
赤矢印のリンクに飛びます。
このページに飛ぶので
[Arduino IDE for windows]をクリックして
[Arduino-1.0.1-windows.zip]をダウンロードします。
84.6MBですが、Serverが遅いのか30分以上かかるみたいです。
あまりにもダウンロードが遅くて、待ちきれないので
本家のここから1分もかからずにダウンロードできました。
MAC、Linuxも揃っています。
ちなみに、あまり色んなVersionを入れたくないので
Arduino IDE v.1.8.3 でFirmwareをコンパイルしてみましたが、
しっかりERRORがでました(-_-;)
マーティーPCには、現在 Ver.1.8.3が入っています。
これとは、別にInstallフォルダ名を変えばいいかな~っと、
ダウンロードした[Arduino-1.0.1-windows.zip]を解凍して
[arduino-1.0.1]フォルダのarduino.exeを実行してInstallします。
と思ったら
Installレスでいきなり起動しました!(-_-;)
「C:\Users\marty\Documents\Arduino」フォルダに
これまで作ってきたスケッチが入っているのですが
既存のスケッチの名前エラーが沢山でますが、全て[了解]をクリック
「ArduinoMicro_TXRX-Blink_A」がダメなの?
[了解]を数十回クリックして
ようやく起動しました。
「Marlin-PI3_Pro_B_3DTouch (A+).zip」解凍したフォルダの
「Marlin-PI3_Pro_B_3DTouch (A+)」のフォルダ名は大丈夫なのです。
「Marlin.ino」を開きます。
開いたら
先のGeeetechのwiki「3DTouch Auto Leveling Sensor」
下の方の「Firmware Setting」の編集内容をみていきます。

Firmware Settingのstep1の所
Step1.
 Open your firmware in Arduino IDE. Find the following code in Configuration.h:
 Modify the code in the red box into:
赤文字の内容になっているか確認してみます。
[Configration.h]タブで「#define NUM_SERVOS 1」を検索すると
上の赤文字の内容は、入っています。
Step2.
 Find the codes regarding to Bed Auto Leveling in Configuration.h.
#defineが数字になっていたりと、どうも変です。
探すと、このPDFのマニュアルがありました。
そのP18、P19にstep2があり、ちゃんと#defineがあります。

これも[Configration.h]タブで
Step1と同様、既にオートレベリング有効になっています。
が、
マーティーは、推奨の取付具を使っていないので
ノズルと3D Touch Sensorの位置が異なり、変更が必要です。
デフォルトのソース
***
#define LEFT_PROBE_BED_POSITION 30
#define RIGHT_PROBE_BED_POSITION 200
#define BACK_PROBE_BED_POSITION 147
#define FRONT_PROBE_BED_POSITION 20
***
これは、推奨の取付具でノズルとSensorの距離
X:+4mm、Y:-43mm での設定値です。
その推奨の取付具を使った場合
X:+4、Y:-43 では、
LEFT:30-4=34mm--------X軸左
RIGHT:200-4=196mm---X軸右
BACK:147+43=190mm---Y軸奥
FRONT:20+43=63mm----Y軸手前
になるのです。

今回使う取付具は、前回その08で位置関係を測定していて
X:-22、Y:-42 なので
LEFT:30+22=52
RIGHT:200+22=222
BACK:147+42=189
FRONT:20+42=62
になります。
特にRIGHT:222mmは、いけません。
ソフトウェアリミットが効かないので「ガガガガ」っと脱腸します。
実際には、マーティーは、そのままやって「ガガガガ」音を聞いているのですが(-_-;)
推奨取付具と同じ位置になるようにします。
まあ、BACK、FRONTは、1mmの差、そのままでもいいのでしょうが。
***
#define LEFT_PROBE_BED_POSITION 12
#define RIGHT_PROBE_BED_POSITION 174
#define BACK_PROBE_BED_POSITION 148
#define FRONT_PROBE_BED_POSITION 21
***
編集後記:
一応、これで測定ポイントは、ステージ内に収まるのですが
左側がギリギリ、後側では、ファンダクトがクリップに当ったりと、
更に変えています。その奮闘は、後ろの方に記載します。
Step3: scroll down to find the codes to Define the probe offset
これも推奨の取付具で、ノズルに対するSensorの位置が
X:+4、Y:-43 場合です。
***
#define X_PROBE_OFFSET_FROM_EXTRUDER 4
#define Y_PROBE_OFFSET_FROM_EXTRUDER -43
#define Z_PROBE_OFFSET_FROM_EXTRUDER -1.4
***
準備した取付具は、
X:-22、Y:-42、Zは、ほぼ同じ位置なので
***
#define X_PROBE_OFFSET_FROM_EXTRUDER -22 
#define Y_PROBE_OFFSET_FROM_EXTRUDER -42
#define Z_PROBE_OFFSET_FROM_EXTRUDER -1.4
***
結局、最後までZ_PROBEの「-1.4」の意味は、わかりませんでした。
プロービングの移動時のZ軸高さ
ソースでは、
 #define Z_RAISE_BEFORE_HOMING 4
マニュアルでは、
 #define Z_RAISE_BEFORE_HOMING 10
余裕が大きい方が安全ですが、下降に時間がかかります。
ノズルとSensorピン(一番下に引き伸ばした状態)で
3mmない位なので、そのまま「4」で大丈夫でしょう。
ただ、左手前のガラス板のクランプが当るかもしれないので
クランプを右の方に避けておきます。

Step4.
 Find the following code in pins.h
「pin.h」ファイルは、
Arduino IDE v1.0.1のタブにでてこないので
テキストエディタで直接開かねばなりません。

所が、pin.hをみると
32に変更すると載っているのに
 #define SERVO0_PIN   32//13 // untested
ソースは、11になっているのです。
見直しますが、場所は、間違っていません。どっちが本当なのだろうか?
***
#define SUICIDE_PIN        54  //PIN that has to be turned on right after start, to keep power flowing.
#define SERVO0_PIN         11//32//13  untested
***

これは、回路図を探すしかないな~と探していると、
Geeetechのwiki「3DTouch Auto Leveling Sensor」の一番最後に
geeetech official online store」のリンクがあり
そこに「3DTouch auto leveling sensor User Manual.rar」がありました。
解凍して、中のPDFマニュアルを見ると、
このPDFマニュアルにだけ「Rev A」と「Rev A+」が載っていたのです。
なかなか振り回されております。(´・ω・`)

そこに「Rev A+」では、「11」でいいと、しっかり追記があります。
***
#define SERVO0_PIN         11//32//13  untested
***
これで、ようやくソースの確認は終了です。
では、書き込みに行きま~す!
[ツール]-[マイコンボード]-[Arduino Mega2560 or Maga ADK]を選択
[ツール]-[書込装置]で
[AVRISP mkII]になっていることを確認
まずは、[スケッチ]-[検証・コンパイル]してみます。
コンパイル終了です。
メッセージは、これ1行のみ。
I3 Pro BをUSBで繋いで、
[ツール]-[シリアルポート]が正しいことを確認して
このアイコンで書き込み開始
初めての書き込みは、いつもドキドキです。
また、コンパイルから始まりますが
書き込みに移りました
1分弱だったか、結構長く感じます。
無事、書き込みが終わりました。
終わった瞬間、RESETがかかるので
I3 Pro BのLCDが、数秒、真っ黄の文字なしになって
すぐに元の画面がでてきます。
Arduino IDEを終了します。
オフセットなどを修正しているので、これがでます。
[はい]します。
ちなみに
I3 Pro BをUSBに接続状態でArduino IDEを終了せずにUSBを抜いたら
Windows10がブルーバックであります_| ̄|○
先にArduino IDEを終了させないといけないようです。
再起動が無地完了するまでドキドキの時間を過ごす羽目になります。
無地にFirmwareを書き込みできたので
Repetier-Host v.1.6.0を起動します。
[Connect]します。
以前のより情報が少なくなっています。
Firmware:Marlin だけ?
この辺の管理がきちんとされていないと、ちょっと不安になります。
下のログの欄をみると
ひょっとして1.0.04 ⇒ 1.0.2に下がったのだろうか?
***
10:54:49.853 : Printer reset detected - initalizing
10:54:49.853 : start
10:54:49.853 : echo: External Reset
10:54:49.853 : Marlin1.0.2
10:54:49.869 : echo: Last Updated: Aug 27 2018 10:49:59 | Author: (geeetech, I3 config)
10:54:49.869 : Compiled: Aug 27 2018
10:54:49.869 : echo: Free Memory: 3471  PlannerBufferBytes: 1232
10:54:49.869 : echo:Stored settings retrieved
10:54:53.324 : echo:SD init fail
10:54:53.371 : FIRMWARE_NAME:Marlin V1.0.2; Sprinter/grbl mashup for gen6 FIRMWARE_URL:https://github.com/Ultimaker/Marlin PROTOCOL_VERSION:1.0 MACHINE_TYPE:PI3 Pro B  EXTRUDER_COUNT:1 UUID:00000000-0000-0000-0000-000000000000
10:54:53.387 : X:0.00 Y:0.00 Z:0.00 E:0.00 Count X: 0.00 Y:0.00 Z:0.00
10:54:53.387 : echo:Active Extruder: 0
10:54:53.387 : Begin file list
10:54:53.387 : End file list
10:54:53.393 : echo:Active Extruder: 0
***

[Config]-[Firmware EEPROM Configuration]を見てみると
おっ! 有効になっています。
クリックすると、
EEPROM Setting画面が出てきました!
これが出るということは、Firmwareのバージョンは上がってるのかな?
では、
3. Testing
 ・・・これは、3種類のマニュアルで全部同じですね~
が~~~どれも反応しません(T_T)
***
M280 P0 S10 ; pushes the pin down
M280 P0 S90 ; pulls the pin up
M280 P0 S120 ; Self test – keeps going until you do pin up/down or release alarm
M280 P0 S160 ; Release alarm
***
またトラブルか~ 引っ掛かり過ぎであります(-_-;)
マニュアルでは、電源投入時にセルフテスト
「...down/up 3 times and ends up the LED on solid.」とあるので
「ピンが3回上下してから、上がってLED点灯になる」ハズです。
所が、USBだけを接続すると
ピンは動かず数回点滅した後、4秒後からチカチカ点滅になります。
これは、セルフテストでエラーになったことを意味します。
動画で
ありゃ~、不良品なかとドキッとしましたが
USB給電だけでは、5Vの電流が不足になるのかな~?
と、USBを先に挿さずに、主電源を先に入れると、
セルフテストが始まり、ピンは上がったままで赤LED点灯になりました!
これも動画で!
ちなみにUSBを先に挿して、後から主電源を入れてもダメ、
RESETボタンを押してもダメなのです。
「セルフテスト」の名の通り、3D Touch Sensor内蔵テストですね~
Sensor自体の電源をON/OFFしないとERRORが解除されません。
Repetier-Hostの[Manual Control]タブの[Gcode]欄に
次のコマンドを入力してテストします。
***
M280 P0 S10 ; pushes the pin down
M280 P0 S90 ; pulls the pin up
M280 P0 S120 ; Self test – keeps going until you do pin up/down or release alarm
M280 P0 S160 ; Release alarm
***

次の動画は、上のコマンドテストです。
<秒> <コマンド> :   <動作>
00:00 主電源ON:セルフテストの後、ピンが上がったまま、赤LED-ON状態
00:07 USB接続して、Repetier-HostでConnectして
 [Manual Control]タブの[Gcode]から次のコマンドを実行
00:15 M280 P0 S10:ピンが下がり、赤LEDが消灯。
00:19 M280 P0 S90:ピンが上がり、赤LEDが点灯。
00:24 M280 P0 S120:セルフテストでカチカチ・チカチカします。
00:29 M280 P0 S160:セルフテスト終了
00:32 M280 P0 S10:ピンが下がり、赤LEDが消灯。
ここでほっと一息です。
最初のホームボタンは、ガラス板上では、とても怖いので
ヒートベッドに付属のマウスパッド(ゴム状)を敷いてやります。
いつでも止めれるように、Repetier-Hostの緊急停止ボタンにカーソル置いてます。
XY軸の原点だしの後、中央付近に移動して、ここで下がり始めます。
ホームボタン動作終了後の位置。
この状態では、ノズルとガラス板間が4~5mm空いています。
Repetier-Hostの表示は、XYZ全部「0.00」
そうだ、キャリブレーションしないといけません。
2つのPDFマニュアルには載ってないので、忘れるとこでした。
Geeetech wikiのWeb版マニュアルにしかありません。
実は、このマニュアルは、I3 Pro B Rev A+用ではなかったのです。
また悩まされることになるとは、この時、マーティーは知る由もありません(´-﹏-`;)

では、Calibrationの長~い奮闘記録です。
最初の注意書きには、
「USB経由でPCから行う。EEPROMが有効になっていること」
ということなので、気にせずに進めます。

Repetier-Hostから次のコマンドを発行していきます。

1.M851 ; note the number
 ⇒「番号に注意」の意味は何だろう?
 このエコーが返ってきました。
 ***echo***
 21:38:12.962 : echo:Z Offset :
 21:38:12.962 : 0.00
 ***
2.M851 Z0 ; set the offset to zero
 ⇒ 何も動作せず
 ***echo***
 21:56:22.811 : echo:Z Offsetz_min: -15z_max: -5
 ***
3.G28
 ⇒ ホーミングが実施され、XY原点がセットされた後、
   ステージ中央付近で、SensorがONになる高さで停止
 ***echoなし***
4.G1 Z0
 ⇒ 何も起こりません
 ***echoなし***
5.LCDメニューから操作してZを下げる
 [Prepare]-[Move axis]-[0.1mm]-[Move Z]で動かすも
 下がらないのです。
 上には移動できます。
 Repetier-Host v1.6.0からも下がりません。

このマニュアルの手順では、キャリブレーションできないようです。

困った~
と、MT氏から情報が!
LCDメニューから
[Control]-[Motion]-[Z Offset]:1.5
にセットしてやられているというものです。
これで
LCD表示が[Z 1.5]になり
[Prepare]-[Move axis]-[0.1mm]-[Move Z]で
下げられるようになりました。
Repetier-Host v1.6.0からは、下げられないままです。
その後、v2.1.3では下がるので、v1.6.0のバグであることが判明。

しかし、マーティーは、どうしてもRepetier-Hostから設定したいのであります。

そこで、再度コマンドを送信してみます。
Repetier-Host v1.6.0で「M851」送信
さっき、Z Offset を0.5にしていたからです。
LCDメニュー Control>Motion>Z Offset が0.5なのです。
続いて「M851 Z0」 送信
「echo:Z Offsetz_min: -15z_max: -5」
これって、怒られているんじゃないのだろうか?
「Z Offsetは、-5 ~ -15までだよ」って。
そこで、「M851 Z-5」してみると
 わお!「echo:Z Offset ok」が返ってきました!
そうなんです。「M851 Z0」では、怒られていたのです。
つまりM851コマンドは、どこかで
-5 ~ -15に制限されているハズです。

M851 Z-5の後、
LCDメニューでControl>Motion>Z Offset は、005.00になっています。
符号は逆ですが
M851コマンドは、この数値を変えていることがわかりました!
M500でEEPROMに保存していないので、電源OFFで元に戻ります。
そこで、ソース(Configuration.h)の中を覗いてみると
ありました!
(”-15”で検索すると一発ででてきました)
***
  #define CUSTOM_M_CODE_SET_Z_PROBE_OFFSET 851
  #define Z_PROBE_OFFSET_RANGE_MIN -15
  #define Z_PROBE_OFFSET_RANGE_MAX -5
***
ここでM851 Znコマンド、n:-5 ~ -15 に制限されているのです。
マニュアルの M851 Z0、M851 Z-1.5 とかのコマンドは無視されるわけです。
LCDメニューのControl>Motion>Z Offsetからは、設定可能なので
Repetier-HostからのGcode送信に対して制限がかかるようです。
ここの MAX 0 にしてFirmwareを書き換えてみます。
***
  #define CUSTOM_M_CODE_SET_Z_PROBE_OFFSET 851
  #define Z_PROBE_OFFSET_RANGE_MIN -15
  #define Z_PROBE_OFFSET_RANGE_MAX 0
***
書き込み完了です。
Arduino IDEを終了します。
一応、保存しておきます。
「M851」に続いて「M851 Z0」を送信します。
 お~っ!「echo:Z Offset ok」と返ってきました!
このままでは、LCDからもZ軸を下げることができませんので
「M851 Z-3」送信して
「G28」送信すると
LCD表示で「Z 3」とでます。
これでやり方が分かってきました。
ノズルの先端にフィラメントがこびり着いていないか確認して
紙を敷いて
LCDメニュー Prepare>Move axis>Move 0.1mm>Move Z
で下げていきます。紙を動かせなくなる所で止めます。
後で分りますが、Repetier-Hostは、v2.1.3も使わない方が無難です。
Repetier-Host v1.6.0では、下がりません。
Repetier-Host v2.1.3だと0.01mmずつ下げれるのですが
最初の1クリックは、どのボタンを押しても、3mm下がるので
ノズルでガラス板を破損する危険性があります。
後で分かるに、この操作は、間違っていました。
後ろのまとめで正しい手順を整理しています。
マーティーのは、Z座標 1.0 で、紙を動かせなくなりました。
つまり 3-1=2mm 下げたわけです。
ノズルと3D Touch Sensorの距離が、2.0mmだということです。
LCDから操作した時は、Repetier-Hostは、Z:0.00のまま反映されません。
ノズルと3D Touch Sensorの距離が、2.0mm なので
Repetier-Hostから
「M851 Z-2」と「M500」を送信します。
M500:EEPROMへ設定保存です。
echoも正常です。
Z軸を10mm上げて電源を入れ直します。
そのままZ0の高さで再起動すると、
3D Touch Sensorのセルフテストでピンが下に当りエラーになります。
再起動したら、Repetier-Hostから「M851」送信します。
「echo:Z Offset : -2.00」が返ってきました。
保存されています!
LCDの方も2になっています。
ふ~~っ!やっとキャリブレーションが終わりました。
ということで、Geeetech wikiのWeb版マニュアルのキャリブレーションは、
I3 Pro B Rev A+用ではなかったようですね~
たぶん、旧モデルか、別モデルのでしょう。

<キャリブレーション手順をまとめると>

ポイントは、
LCDメニュー Control > Motion > Z Offset:n での設定と
M851 Z-n での設定は、同じことです。

<LCDメニューから行う場合>
1.LCDメニュー Control > Motion > Z Offset:3
2.LCDメニュー Prepare > Auto Home
3.ここでノズルの下に紙を敷いてZ軸を下げていきます。
 LCDメニュー Prepare > Move axis > Move 0.1mm > Move Z
 紙を動かせなくなった座標が
 ・LCD表示 Z:3 ⇒ 1.3
  とすると、下げた分が、ノズルとSensorの距離になるので
   3 - 1.3 = 1.7
となり
4.LCDメニュー Control > Motion > Z Offset:1.7  にして
5.LCDメニュー Control > Store Memory  で設定保存します。


<Repetier-Host v2.1.3 で行う(v1.6.0はできません)>
1.ソース(Configuration.h)の書き換え必須です。
(”-15”で検索すると一発ででてきます)
***
  #define CUSTOM_M_CODE_SET_Z_PROBE_OFFSET 851
  #define Z_PROBE_OFFSET_RANGE_MIN -15
  #define Z_PROBE_OFFSET_RANGE_MAX 0
***

2.[]内のコマンド発行
1)[M851]
2)[M851 Z-3
3)[G28]
 この時、LCD表示[Z 3]、Repetier-Host表示[Z 0.00
4)[G1 Z3
 Z軸は、何も動きません。表示を揃えるための操作です。
 この時、LCD表示[Z 3]、Repetier-Host表示[Z 3.00

3. ここでノズルの下に紙を敷きます。
 Reppetier-HostのZ軸ジョグボタン0.1mmや0.01mmで下げて
 紙を動かせなくなる位置で止めます。
 ・Repetier-Host Z:0 ⇒ 1.28 になったとすると
 3 - 1.281.72    ( m:少数点2位までOK )
 が、Sensorとノズルの距離になります。
4.[M851 Z-1.72]  ( 符号「-」を忘れずに )
5.[M500]  で設定保存します。

注意:G28の直後は、Repetier-Hostのジョグボタンを押してはダメです。
0.01mmUPでも3mm下がるので、ノズルががラス板に衝突する危険性があります。
必ず、[G1 Z3]します。

理由は、G28が終了した時点では、
LCD表示[Z 3]、Repetier-Host v2.1.3表示[Z 0.00]と一致してなく
ここでRepetier-HostのManual ControlでZ軸UP/DOWNどの操作をしても
LCDが[Z 0]になるように移動するのです。
M851 Z-3 の後だと、3mm下がるのです。(0.01mmUPを押してもです)
本当は、G28の終了時点で
Repetier-Hostの表示も[Z 3.00]になるべきなのです。バグでしょう?

最後の設定は、スライサーです。
これは、3種類のマニュアルで一致しておりました。
G29コマンドを追加するだけです。
[Printer Setting]タブで
左の[Custom G-code]にして「G29」を追加します。
***
G28;home all axis
G29
G1 Z5 F5000;lift nozzle
***
追加すると同時に-default-の後ろに(modified)が付きます。
フロッピディスクアイコンをクリックして
ダウンボックスを出して
マーティーのは、この名前「I3pro B PLA config 001 wG29」にしました。
Slic3rを終了します。
Repetier-Host v1.6.0に戻って
[Printer Setting]の所をダウンボックスから
上で保存した名前のを選択します。
[Printer Setting]:I3pro B PLA config 001 wG29  になりました。
一応、これらのコマンドを手動で試しておくことにします。
G28
G29
G1 Z5 F5000
をRepetier-Host v1.6.0からコマンドでやってみます。

その前に、この「G29」を先に調べておいた方がよさそうです。
reprap.orgのG29の解説は、ここです。

G29:ベッドレベリング
オートとマニュアルがあるようです。
が、オプションは、説明が多すぎて読む気力が湧きません。
何も考えずにそのままやってみることにします。
もちろん、いつ異常が起こってもいいように
Repetier-Hostの緊急停止ボタンにマウスカーソルを合わせておきます。

まず、G28
これは、既にやったホーミングです。
XY原点調整の後、中央付近で3D Touch Senorが触れた所で止まります。

G29
最初は、怖いので付属のマウスパッドを敷いています^^;
Xのオフセットをこの取付具用にしておかないといけなかったんです。
200mmを超えて行くので「ガーーーー」っと脱腸します(´-﹏-`;)
MAXのソフトウェアリミットは、効かないのかなあ~? ないのかな~?

で、ここで最初の方にも書いているオフセットの調整をするわけです。
Geeetech推奨の取付具を使った場合は、
ノズルに対するSensorの位置が、X:+4、Y:-43
LEFT:30-4=34mm--------X軸左
RIGHT:200-4=196mm---X軸右
BACK:147+43=190mm---Y軸奥
FRONT:20+43=63mm----Y軸手前
になっています。

今回使う取付具は、前回その08で位置関係を測定していて
X:-22、Y:-42 なので、ソースの設定そのままだと
LEFT:30+22=52
RIGHT:200+22=222
BACK:147+42=189
FRONT:20+42=62
になります。
このRIGHT:222mmの200mm超えたのが、いけなかったわけです。
G28の後は、ソフトウェアリミット効いてほしいですね~

推奨取付具と同じ位置になるようにします。
一応、BACK、FRONTもピッタリと。
***
#define LEFT_PROBE_BED_POSITION 12
#define RIGHT_PROBE_BED_POSITION 174
#define BACK_PROBE_BED_POSITION 148
#define FRONT_PROBE_BED_POSITION 21
***
これで「ガガガガ」は、解消できましたが、
左前
ちょっとギリギリですね~
というか、ガラス板から約1mm外側のようです。
それにしても付属のマウスパッドは、ゴム状なので役に立ちます。
念の為、敷いていてよかった~
右前
後側の右では、ファンダクトがクリップに当ります。
ここもマウスパッド・クッションで助かりました。
後方の左側
なので、全体を右に10mm、前方に10mmずらします。
***
#define LEFT_PROBE_BED_POSITION 22
#define RIGHT_PROBE_BED_POSITION 184
#define BACK_PROBE_BED_POSITION 138
#define FRONT_PROBE_BED_POSITION 11
***
左前。GOODです。
右前
いい位置ではありますが
X軸のベルトプーリーのボルトの位置まできています。
マーティーのは、その01の組立時にプーリーのボルトを切って
短くしていたので、上記の写真の様に接触は免れました。
珍しく「転ばぬ先の杖」が功を奏したわけです^^;
X軸のベルトプーリーのボルトの先を短くしていない場合は、
ステッピングモーターが右端に来た時に衝突します。
当たる場合は、5mm減らして179にした方がいいでしょう。
***
#define RIGHT_PROBE_BED_POSITION 179
***
後方もクリップに当たらなくなりました。
これで、やっとまともに使えそうになりました。
それでは、G28の動作を動画で
中央に行くと、ピンが下がって赤LEDが消えます。
もし、ピンが下がらず、上がったままLED点灯状態の時は、
Sensorが正しく起動していないので、すぐに緊急停止して電源を入れ直します。
そうしないと、どんどん下がってきてがラス板に衝突します。
続いて、G29の動作を動画で
4ポイントのレベルを測定しています。
ちなみに、4つの測定ポイントでのZの値は、
左前
なぜ、10mm足されたみたいな値なのかわかりません。
右前
左右の差を計算すると、0.13mm!
右後ろ
前後の差は、0.27mm
左後ろ(ここは、座標がでません)
中央との差は、0.08mmということみたいです。
ちょっと気になるのが、
G28をすると、中央付近に移動してZゼロ調整しているのですが
LCD表示は、X127、Y147、Z2 となっているのに
Repetier-Host v1.6.0では、XYZ全部 0.00なのです。
G29が終了した後は、
LCD表示は、X43、Y179、Z2.08 となっているのに
XY:0.00、Z:2.15で+0.7の差
どうも気になります。
Repetier-Host v2.1.3にしてみますが、同じでした。
ここで座標がちゃんとでていないのは、とても違和感あります。
何かバグが潜んでいそうです。
Firmwareの方のバグが濃厚です。
Firmware Marlin v1.1.8が最新のようなので
その内、Updateしたいと思います。
試しにフィラメントを入れずに
最初のPlate.srtをプリントしたら
G28、G29では、Repetier-Host上に座標がでなかったのが
プリントし始めるとちゃんと座標がでています。
プリントもほぼ中央付近で始まっています。

所が、次の日、本番プリントしようと思ったら
主電源を先に入れてもセルフテストエラーになるのです。
あちゃ~壊れたか? 何でこんなにトラブルが起こるんだろう~

で、5V赤リード線に電流計を挟んで測ってみると
セルフテスト時の電流は、50mA弱なのです。
こりゃ~電流不足ではないですね~
そこで[赤:5V、茶:GND]だけに外部電源を接続してみます。
少しピンが上がりそうで上がらない動きです。
ひょっとして電圧不足か? 電圧は、5.1Vです。
と、5.1V、5.2Vと上げると、「ピン上げ」がだんだん上手になっていきます。
まるで小学生の逆上がりの練習を思わせます^^;
5.3Vでセルフテストが正常になりました。
電圧が足りなかったんですね!

そこでコントロールボードに接続して5Vを測ると
主電源ON:5.01V
USB給電だけ:4.79V
これだけの違いで動きに差が出るのか~?(´-﹏-`;)

ちょっと中を開けてみますが、コイルの線でこれ以上開きません。
ここでようやく思い出しました!
コアが付いていることに!
取り付ける時は、いつ調整するんだろう?とか思っていたのに忘れているのです。
で、六角レンチで右に回していきます。
90°ずつ右に回しては、電源再投入を2回繰り返し
180°右に回した所でセルフテストのエラーがなくなりました!
(後でわかるに、本来これはやらなくてよかったのでした)
それではと、
USB給電だけでセルフテストをクリアするまでねじ込むと
今度は、G28でピンが下がらなくなりました。
M280 P0 S10でも下がらないのです。
主電源だけONにして、ギリギリ、セルフテストをクリアする位にしないとダメです。
いや~これは、ちょっとクリティカル過ぎです。

それにしても、おかしいな~ おかしいな~...
と、ケーブルに触れると、セルフテストエラーに?!
まさか、中華ケーブルの接触不良か?

テスターで測ってみると
ななななんと! そのまさかです!
x1レンジでこれ!5Ω、少ない線でも2Ω
5本繋いでいるといえ、あんまりです。
ここに来て、こんな事で躓くとは、情けない(T_T)
しばらく立ち直れません。_| ̄|○
このケーブルです。使用上の注意が必要です。
接点のハマリは、緩いわけはないのです。
端子のカシメが悪いのか、接触が悪いのか、両方かもです。

で、古いUSBケーブルでハンダ付けして作ります。
芯線4本+シールドで5本。
被覆をむいて~
カシメ機がまだ届いてないので、端子は、ハンダ付けしました!
このケーブルに付け替えると、
快調!快調!
USB通電だけでセルフテストをクリアー
主電源入れてもちゃんと動きます!
今までの苦労は何だったんだろう(-_-;)
「急がば回れ」の典型例になりました。
これまでの日本製の常識が通用しませんね~
まあ、使いこなすノウハウは積み上がってきているはずです。
と、自分を元気づけるマーティーであります。

さて、とても長~いトラブルのダイジェストになりましたが
3D Touch Sensorのオートレベルの威力とやらを確認します。
テスト用のPlate.stlをLOADして
XY:3倍、Z:0.5倍にします。
サイズは、
144 x 144 x 1.5mm よさそうです。
スライスします。
1h 45m 10sか~長いな~
最初は、怖いのでフィラメントを入れずにやってみると
大きいので左前のクリップが吹っ飛びました(-_-;)
次にフィラメント入れて本番やると
レイヤーファン・ダクトが低過ぎるようです。
ノズルよりわずかに上には付けているのですが
ファンダクトがプリントしたものを引っ掛けてしまってグチャグチャ(T_T)
元のサイズのもやってみましたが、無残な結果。
裏から見上げると、赤丸部にこびり着いています。
ファンダクトの取付位置を上げます。
ノズルは、ほぼガラス板の高さで、左の1.5mmの六角レンチが入る位です。
これで、再度
[M851 Z-3][G28][G1 Z3]コマンド送って
Repetier-Hostでじわじわ下げて、「Z 2.26」で紙を動かせなくなったので
3 - 2.26 = 0.74
[M851 Z-0.74][M500]でキャリブレーション完了。
ちなみに、G29を走らせてレベルを測ると
左右の差:左が0.25mm高い
右前後の差:前が0.32mm高い
左奥と中央の差:+0.11mm

で、プリント始めました。
最初の方を動画で
この大きさでも1層目は、かなり均一の厚さになっていると思います。
オートレベリングを付けた甲斐があったようです。
緑枠の所に最初の垂れの塊が付いていますが、何とかクリアー。
G29の後に原点に戻るコマンドを入れると
プリントが始まる前に垂れの塊を手で取ることができそうです。
最後までプリントしても使い道ないので、2層目の途中でやめました。
PLAピザのできあがり~!
最後に、やっぱプリント開始前は、原点にいて欲しいので
[Slicer]-[Configuration]の
[Printer Setting]-[Custom G-code]の[Start G-code]に
XYホームへ移動するGcodeを追加しました。
***
G28 ; home all axes
G29 ; Auto Lebel
G1 Z5 F5000 ; lift nozzle
G1 X0 Y0 ; Home X & Y axis
***
それと、フィラメント無しでヒートベッドとノズルヒーターもONせずに
プリント動作をチェックする時の手順も記録しておきます。
[Slicer]-[Configuration]を開いて
[File]-[Quick Slice and Save As...]して
テストしたい .stlファイルを開くと
スライス後のGcodeファイル名を聞いてくるので、そのままでよければ[保存]
できたGcodeファイルをメモ帳などで開いて
この3箇所の前に「;」を追加してコメントアウトします。
Repetier-Hostから[File]-[Load] して
編集したGcodeファイルを開けば、
ヒートベッド、ノズルヒーターを加熱せずにテストできます。
いや~今回も長くなりました(-_-;)
何でこうも沢山のトラブルに合うのだろう?
9月になって運が良くなるといいな~ ^^;

途中で見つけたこれも備忘録で残しておきます。
この「BL Touch」というのが、「3D Touch」の元祖だと思われます。
(開くのにちょっと時間かかります)
どうもホールセンサーが使われてるみたいで、詳しい動作説明などがあり
付属していた抵抗の使い道やピンの穴の清掃方法も載っています。
その内、ゆっくり見ることにします。

4 件のコメント:

sbin さんのコメント...

こんにちは、中々難しいですね。
私は赤外線差動センサタイプで試してみましたが、失敗しました。なのでZ0に近づくと光るだけのオブジェになってます。
結局Zはネジでほぼ0に合わせてます。
それからMESH Bed Leveling してみたら以外綺麗に書けるようになりました。所詮はプラなので誤差は発生しますが、M92でXYを追い込んでます。

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

sbinさん、こんにちは~
3D Touchのピンにテフロンテープ巻いて少しは改善しましたが
時々動作点がズレてプリントし直ししないといけないです。
4コーナーのネジで綺麗に調整していても、
ちょっと持ち上げて場所を移動したりすると、ズレてしまいます。
所詮プラですね~
設置場所を固定して、精度のいいメカニカルSWにするのが一番いいのかも?とも考えています。

sbin さんのコメント...

確かに移動するとずれるかも知れませんね。4隅のネジを調整したら、その後は調整しません。
私の場合はずれたかなと思ったらG29で平滑化の学習させます。後はM117の前にM420で呼び出して補正させて印刷してます。
一応学習時にシクネスゲージで確認してます。

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

すみません、返信を忘れておりましたm(_ _)m
sbinさんの「混沌な日々」をみさせていただき
ベッドを改造してからやってみようと思ってたのです。と言い訳(-_-;)
改造終わったら、ゲージの注文を忘れていたという始末。
実践するのは、もう少し先になりそうです(-_-;)