2019年4月3日水曜日

Da vinci 2.0A RAMPS基板交換への道のり(7)忘れてたヒートベッドサーミスタ交換

この記事は、retrospectiveに書いているのですが、ふと、ヒートベッドのサーミスタのことを書き忘れていたことに気づきました。

https://steelcityelectronics.com/da-vinci-3d-printer/da-vinci-extruder-thermistor/

に紹介されているのですが、Da vinciに使われているサーミスタの分析です。

Frankenvinciでは、以下のようにかいてあります。

100kΩ NTC and a beta value of around 4380K. 
found that using the type 5 thermistor (ATC Semitec 104GT-2 with 4.7kΩ pullup) in the firmware configuration file, worked better.

要するに、エクストルーダーのサーミスタはFirmwareにはType5と記載した方がいいのかな?

そして、
printer bed thermistorについては、以下のごとくです。

The printer bed thermistor was a very weird one which I didn't trust much so I removed it and replaced it with a 100kΩ NTC thermistor with a beta value of 3974K. This is one that is commonly used on Repraps, and in the firmware configuration file is the type 7 thermistor (Honeywell 135-104LAG-J01 with a 4.7kΩ pullup). 

へんちくりんな部品なので、一般的なものに換えちゃった、と。

いまのところ、全部type 1にしちゃってますけど。

初めは、遠慮がちにベッド端に潜り込ませていたのですが、どうも温度が嘘っぽいので、
思い切って真ん中に配置しました。

ガラスとヒーターの下の断熱材シートのようなものを、線幅にきって配置。
どうも写真は取ってないみたいです。
ところで、このサーミスタ、つないであるところがいきなり抜けるというトラブルも経験しました。

ハンダでいいのかわからないのですが、とりあえずハンダずけして、熱収縮チューブで逃げましたが。

ということで今回は短め。





2019年3月30日土曜日

Da vinci 2.0A RAMPS基板交換への道のり(6) Firmwareってどうすんの?

物理的には徐々に動きそうな気配がするda vinci 2.0A 改造機(汎用エクストルーダー+RAMPS1.4へ換装)Frankenvinci 2.0ですが、制御用のソフトウェアもそろそろ検討しなくてはならない段階にきました。

これまた先人の教えのとおり、Marlinを選択。
これまでにもArduino IDEは使用していたのですが
IDEのバージョンによる相性とか、いろいろな記載が悩ませます。

当方の手持ちで稼働しそうな環境は
macintosh OSX mojave / High Sierra
windows 7 / core2duo / boot camp on  mac mini core2duo
のいずれかです。
将来の制御までかんがえて、windowsをなるべく専用に用意した方が良さそうです。

Marlin 1.1.xが安定なのでしょうか。とりあえず、bugfix-1.1.xを利用することにします。2019/03現在↓

IDEは紆余曲折ありましたが、ver 1.6.12でとりあえずコンパイル書き込み問題なくできております。安定板と称される古いverから試したのですが、むしろそちらの方がエラーを履いておりました。(あくまでも当方の環境では)

それから、


ボードの選択からして、古い記載が多いようで、いくらかupdateが必要でした。
古いバージョンは番号を入れているみたいです。

とりあえず、二つのエクストルーダーがある設定として、3軸の向きが正しくなるように、エンドスイッチの設定とか、液晶の設定とかをいじります。

わかるところだけ。まだファンの設定とか、PIDの詳細は詰めていません。

configure.hの抜粋

#define BAUDRATE 115200

#ifndef MOTHERBOARD
  #define MOTHERBOARD BOARD_RAMPS_14_EEB
#endif
ボードはRAMPS1.4で、D8エクストルーダー、D9エクストルーダー、 D10ベッドに配線します。


#define CUSTOM_MACHINE_NAME "Frankenvinci 2"
適当な名前をつけます。

#define EXTRUDERS 2
エクストルーダー二つです。

#define DEFAULT_NOMINAL_FILAMENT_DIA 1.75
フィラメント径をいれます。


#define TEMP_SENSOR_0 1
#define TEMP_SENSOR_1 1
#define TEMP_SENSOR_2 0
#define TEMP_SENSOR_3 0
#define TEMP_SENSOR_4 0
#define TEMP_SENSOR_BED 1
#define TEMP_SENSOR_CHAMBER 0

サーミスタの設定ですが、汎用品でよくわからないので1にしました。

温度上限の設定
#define HEATER_0_MAXTEMP 255
#define HEATER_1_MAXTEMP 255
#define HEATER_2_MAXTEMP 275
#define HEATER_3_MAXTEMP 275
#define HEATER_4_MAXTEMP 275
#define BED_MAXTEMP 130
275度は熱すぎるような気がして 255と130(ベッド)にしています。

PIDsettingはあとから測定できるようです。
FIND YOUR OWN: "M303 E-1 C8 S90" to run autotune on the bed at 90 degreesC for 8 cycles.と書いてあります。

  #define DEFAULT_Kp 70
  #define DEFAULT_Ki 4.8
  #define DEFAULT_Kd 255

  #define DEFAULT_bedKp 10.00
  #define DEFAULT_bedKi .023
  #define DEFAULT_bedKd 305.4

#define PREVENT_COLD_EXTRUSION
#define EXTRUDE_MINTEMP 170
170度以下だとうごきません。

//==========================================================
//============================== Endstop Settings ==============
//==========================================================

/#define USE_XMIN_PLUG
//#define USE_YMIN_PLUG
#define USE_ZMIN_PLUG
#define USE_XMAX_PLUG
#define USE_YMAX_PLUG
//#define USE_ZMAX_PLUG

#define X_MIN_ENDSTOP_INVERTING true // set to true to invert the logic of the endstop.
#define Y_MIN_ENDSTOP_INVERTING true // set to true to invert the logic of the endstop.
#define Z_MIN_ENDSTOP_INVERTING true // set to true to invert the logic of the endstop.
#define X_MAX_ENDSTOP_INVERTING true // set to true to invert the logic of the endstop.
#define Y_MAX_ENDSTOP_INVERTING true // set to true to invert the logic of the endstop.
#define Z_MAX_ENDSTOP_INVERTING true // set to true to invert the logic of the endstop.
#define Z_MIN_PROBE_ENDSTOP_INVERTING true // set to true to invert the logic of the probe.

#define X_DRIVER_TYPE  A4988
#define Y_DRIVER_TYPE  A4988
#define Z_DRIVER_TYPE  A4988
#define E0_DRIVER_TYPE A4988
#define E1_DRIVER_TYPE A4988

//============================== Movement Settings =============


#define DEFAULT_AXIS_STEPS_PER_UNIT   { 80, 80, 2560, 89 }

#define DEFAULT_MAX_FEEDRATE          { 200, 200, 8, 50 }

#define DEFAULT_MAX_ACCELERATION      { 1000, 1000, 100, 5000 }

#define DEFAULT_ACCELERATION          500    // X, Y, Z and E acceleration for printing moves
#define DEFAULT_RETRACT_ACCELERATION  3000    // E acceleration for retracts
#define DEFAULT_TRAVEL_ACCELERATION   3000    // X, Y, Z acceleration for travel (non printing) moves

// @section machine

// Invert the stepper direction. Change (or reverse the motor connector) if an axis goes the wrong way.
#define INVERT_X_DIR true
#define INVERT_Y_DIR false
#define INVERT_Z_DIR false

// @section extruder

// For direct drive extruder v9 set to true, for geared extruder set to false.
#define INVERT_E0_DIR false
#define INVERT_E1_DIR true
#define INVERT_E2_DIR false

// Direction of endstops when homing; 1=MAX, -1=MIN
// :[-1,1]
#define X_HOME_DIR 1
#define Y_HOME_DIR 1
#define Z_HOME_DIR -1

// @section machine

// The size of the print bed
#define X_BED_SIZE 150
#define Y_BED_SIZE 200

// Travel limits (mm) after homing, corresponding to endstop positions.
#define X_MIN_POS 0
#define Y_MIN_POS 0
#define Z_MIN_POS 0
#define X_MAX_POS X_BED_SIZE
#define Y_MAX_POS Y_BED_SIZE
#define Z_MAX_POS 200

// Preheat Constants
#define PREHEAT_1_TEMP_HOTEND 180
#define PREHEAT_1_TEMP_BED     70
#define PREHEAT_1_FAN_SPEED     0 // Value from 0 to 255

#define PREHEAT_2_TEMP_HOTEND 240
#define PREHEAT_2_TEMP_BED    110
#define PREHEAT_2_FAN_SPEED     0 // Value from 0 to 255

#define REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER








Da vinci 2.0A RAMPS基板交換への道のり(5)RAMPS fan extender 基板入手


RAMPSの端子からして、通常の1エクストルーダーであれば、出力に、エクストルーダー、ファン、ベットとかなるみたいな設定ですが、dual extruder のばあい、EEBとなるので、ファンの端子が足りません。
冷却ファンの配線はどうするのだろう?
基板そのものも冷却したほうがよい、との記載もあります。
そして、da vinciエクストルーダーのファンは、40mm 5Vであります。

RAMPSで fan extender という基板を発見。

良さげ。ぽち。amazon



ところが、


うむむ。再度別の販売店から注文。入手には時間がかかりました。

エクストルーダ側もまだファンの設置はきちんとかんがえておりません。
多少うるさくてもつけなくてはダメなんだろうな、ぐらいの感覚。
あと設定がよくわからない。

いずれにしても、12Vのファンを入手する必要がありそうなので、ぽち。
着弾待ち中。




Da vinci 2.0A RAMPS基板交換への道のり(4) arduino mega 修理

誤操作によって5Vレギュレータを焼いてしまったArduino mega(中華)です。
当初、原因がわからないため、もう一枚を購入。いつの間にかこちらも焼いた気配。

以後の調査で5Vレギュレータの張替えで修理可能であることが見込まれました。

型番をしらべたところ、AMS1117らしい。

注文 aitendo



作業

半田吸い取りとはんだごてで外して、半田付け。もいっちょ。

ついでに、DCジャックを取り外して、端子台に変更。

RAMPSからの給電をやめにして、別に電源を取ることにしました。

このため、RAMPS1.4側では、モーターシールドの下にあるD1を除去しました。

Da vinci2.0には、12V 12V GND GNDのほか、12V 5V 3.3V GNDの電源コネクタがあり、こちらから、12Vをarduino megaにつなぎ、動作を確認しました。

改造作業は、fanをのぞいて、おおよそ終了であります。

もと基板除去して、Arduino Mega + RAMPS 1.4 導入
電源 12V x2 GMD x2
ステップモーターx5
サーミスタx3
ヒーターx3
エンドスイッチx3
Arduino 側 12V GND
を配線。

















Da vinci 2.0A RAMPS基板交換への道のり(3)エンドスイッチ 交換

Frankenvinciによると、
XYZプリンティング社が使っている光センサーは、RAMPS対応ではないとのこと。
上ふたのセンサー、3軸のオプティカルスイッチ 4つは取り外します。

STLファイルを親切にも配布いただいているので、遠慮なく作成します。
フィラメントはXYZの開腹ABSで、上記STLを他者3DPでそのまま印刷。

RAMPS対応のメカニカルスイッチは在庫していたので、ねじ止め。

Z軸 minですね。天板にねじ止めする形です。コネクタが、送りネジに近いのですが、ぶつかりはしませんでした。
da Vinciは台が上下するので、台が最大上がったところでZ=0となるのでした。


お次はY軸。金属板の穴にもぴったりフィットです。問題なく取り付け。
こちらはY maxですね。


ほぼそのままですが、X軸だけは、タッチ側の延長が必要でしたので、適当な四角を刷って、延長しております。X maxですね。


一番問題になったのがRAMPS基板側です。


この写真の左下あたりが、エンドスイッチの接続なのですが、

もともとRepRap対応のメカニカルエンドスイッチは、緑、黒、赤で配線が4Pコネクタからでておりました。
これを、途中の配線をオリジナル(3本、同じ色! 軸ごとに色分け)にコネクトして、基板側で再度コネクタを介すようにしたため、テスターで確認して基板側の配線の色を接続したつもりでありました。


上の写真は、私の作業機体の、正常動作の時の配線です。
franken vinciの写真では、そのまま引用しますが、
(http://www.techmonkeybusiness.com/frankenvinci-converting-a-bricked-da-vinci-to-ramps-controller.html)




こうなっています。赤と緑が逆なんです。
電気的に正しければなんでもいいのかもしれませんが、色と参考サイトを合わせればよいと安易に考えたため、ここでトラブルが。
他のサイトでも、frankenvinciの写真のほうが多いので、私の配線が逆だったのでしょう。

概ね配線が終了して、あとでのべますがfirmwareをインストールして、動作確認!と思った時のことでした。

3軸操作可能だったので気を良くしてhomingにチャレンジしたところ、いきなり再起動がかかりました。

油断がトラブルを呼ぶのです。エクストルーダーの改造の予定が、ヒーターの取り扱いで失敗して、結局全基板交換となり、ここでもまた余計な作業と出費をしいられました。

https://www.youtube.com/watch?v=d-U_FwDP0kw

Reprap - Dangers with ramps 1.4 wiring for beginners.

にあります通り、のことがおこったのです。

エンドスイッチが作動した瞬間に、5Vがショートして過電流になり
Arduino megaの5Vレギュレータを焼いてしまった。ようです。
結果、Youtubeにある通り、液晶画面が真っ白となりました。

USB給電だけにすると、起動はするみたいです。













2019年3月20日水曜日

Da vinci 2.0A RAMPS基板交換への道のり(2)コネクタ変換 基板固定

RAMPS 1.4 + arduino mega 着弾です。

作業にかかります。

なるべく内部の配線に手をつけないように考えて、コネクタ変換を作ります。

エンドスイッチ 
スイッチ側はJST プラグ4P 途中までのコネクタはPH 3P
基板側 PH3Pでうけて、JST 3Pメスにする

3軸分、両端で6個つくる。

ステップモーター
この4本がモーターなので

こうなるように、PH4P JST 4Pのケーブルを5個作成。

サーミスタ、ファン、フィラメントセンサーは、まとめてあったのを手前でバラして
コネクタは除去して4Pごとにファンx2、サーミスタx2、そのほかに分けました。
それから、ベッドからくるサーミスタもあわせて変換。

あとはヒーター、電源系ですが、電源ケーブルは同じものを見つけられませんでしたので、電源ユニットから出ているところで切断、コネクタを付け替えました。
基板側も平板端子をつけて端子台にネジどめ。
ベッドのヒーターは基板にネジどめ担っていたので、2Px2の端子台を金属部分に貼り付けて使用することにしました。

あわせてarduino megaの固定ですが、megaのネジ穴にあうmega用のホルダーをThingsverseから引用して、USB差し口をそのまま利用できるように固定することにしました。

当初基板固定用のネジ穴を利用した綺麗な固定も考えましたが、強度が足りない上に、手間なので、


当初案。変換コネクタがのたうちまわっております。

最終的には、金属に適当な厚みのシナ合板を大雑把に切って貼り付け、そこで最後に糊付けする予定としました。現物あわせが一番簡単なので



この時点ではfirmwareのことはなにも知りません。
とりあえずハードウェアを換装することで頭がいっぱい。




2019年3月19日火曜日

Da vinci 2.0A RAMPS基板交換への道のり(1)コネクタ、配線の準備。

とうとう基板がダメになったので、生き残りをかけて、心臓部の移植に挑戦です。

基板そのままでfirmwareを書き換える方法もあるみたいですが、こちらは挑戦しませんでした。

Arduino Mega + RAMPS 1.4をポチ。


dual extruderが対応可能なA4988 5個付き、液晶コントローラーつきでこの値段です。

参考文献は主に


から。ここによれば、da vinciのRAMPS化をもってFrankenvinciと名乗るそうです。
2.0Aでもほとんどこのまま流用可能でした。

ハードウェアとしては、

各種ケーブルのコネクタ変換
エンドスイッチの交換、
エンドスイッチ固定用の治具作成(3Dプリンタを稼働させるために3Dプリンタがいる!)
テーブルのサーミスタ交換
ボードの取り付け

てところでしょうか。

コネクタは、あちこちで改修が必要でした。元の配線をなるべく変えないというポリシーのもと、

電源取り出し部 に 端子ハウジングセット 4接点のもの x2
ヒーター加温電源 エクストルーダーx2、にELコネクタもどき、ベッドは4P 端子台 
コネクタ変換:エンドスイッチ 3P 両端、3軸
コネクタ変換:ステップモーター 4線 5モーター
コネクタ変換;サーミスタ x3 (エクストルーダーx2、ベッド)

とりあえず基本機能として、いらなくなる配線は、

トップ蓋のオプティカルスイッチ
LED照明
ベッドのタッチセンサー?

エクストルーダからは、サーミスタ、ファンを別々に取り出し、フィラメントセンサーの配線は基板ごとっていうかエクストルーダーユニットごと交換となりました。

まずはコネクタ変換を作ります。RAMPS側は、これが合います、在庫あり。




本体側は、PHコネクタになっておりますので、


この辺をかき集めておきます。
熱収縮チューブで絶縁も。

電源の取り出しコネクタも、基板側のコネクタを外すのはためらわれたので、これを。

それから、エンドスイッチ側は、
在庫が、

こういう形だったので、それに見合うコネクタ


これの4ピンを三つ使います。(これも在庫あり。)

配線用に、