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ピンを三つ使います。(これも在庫あり。)

配線用に、


da vinci 2.0A エクストルーダー改造、動作確認まで。

前回の通り、エクストルーダーはホットエンドの加工を加えることで、実装可能になったものの、精度がわるく、フィラメント送りとの位置関係がずれているため、実用的ではなさそうなことが判明しました。

もともとのエクストルーダー


フィラメントガイドから、ノズルまでが一直線。あたりまえですが。

試作改造版

さっきと上下が逆ですが 0.3-0.5ミリぐらいのずれですが、致命的です。
フィラメントがほぼ送れません。インサートも困難であることがわかりました。

私の条件で、加工精度をあげるためには、金属加工を最小限にして、エクストルーダーユニットそのものを新規に作成したほうが良さそうです。

でこうなりました。形としてはほぼ完成です。




この場合、6Mタップ穴の間隔だけに集中してそのほかの部材は3Dプリンタの精度になります。

でもまだだめでした。下の写真のとおり、送りギアとの位置が合っていません。
ハンドタップが垂直でないため、また二つのノズルの高さを揃える調節がかなり難航します。

治具を作って
下穴用、5.5mm穴用、タップ用をこさえましたが、それでもいまいちです。

結局、ノズルの高さがもとより下の位置になる(相対的にZ軸の可動範囲が狭くなる)ことはやむなしとして、アルミ板は穴を二つ開けるのみとして、35.5mm間隔のみ。
上下ナットでスロートチューブを固定しました。
高さ調節は格段によくなりました。

以下は試作した形の数々です。ABS JGaurora A3Sでプリント。



のちに、基板交換のあと動作確認をしましたところ、問題なくフィラメント排出にいたり、一安心。最後の完成型の写真がありません。

空冷ファンをまだ取り付けていません。

フィラメントにも問題がありました。








2019年3月16日土曜日

da vinci 2.0A 温度が上がらなくなった顛末 基板損傷と判定。

かくして、フィラメントジャム多発機の対策として、

汎用ノズルを使いたい!→エクストルーダー改造か で試行錯誤中出会ったのですが
ついに内部の基板そのほかを開けてみることになりました。

蛇足ながら、本機の外装は結構簡単に外すことができます。

まず両外側の半透明の壁をばきっと外します。結構割れそうな音がしますが、今の所大丈夫みたいです。
上のふたをむしります。
前面の扉をむしります。
あとはT10ネジで後方のフィラメントカートリッジ受けを外すと、その下部分に基板が格納されています。
上前面の液晶の付いている部分も簡単に取り外せますが、ケーブルが付いているので今はそのまま。

基板全景です。

FW V1.0 B

F1.x F2.x Engne board F2 (Engneは誤植?)
3DP03-ES008
2014/08/01
JH M3 94V-0 とかかいてありますが全くなんのことやら。

ちなみに100Vが入力する電源ユニットは FLXA5201Aと。
検索するとPC用でしょうか、たくさんでてきます。コネクタが違います。


右側に USBと100V電源
左側は ヒートベッド電源、基板に給電するコネクタx2 上は12V Gnd 12V Gnd 下は12V 5V 3.3V Gnd

上側は右から、液晶パネルへのフィルムケーブル (青紫?)ベッドサーミスタ (グレー)カートリッジのICチップ (4色)Z軸ステップモーター、(4色)エクストルーダーステップモーター、(黄色)Z軸エンドスイッチ、(4色)エクストルーダーステップモーター、(茶色)内部照明LED、(青x2)ベッドセンサー(青x3)上蓋センサー、

下側 右から、エクストルーダからの7pin (配線は6pin)コネクタx2(ファンx2、サーミスタx2、フィラメント検知もしくは押し出しモーターの回転検知) (オレンジ)Y軸エンドスイッチ (4色)Y軸ステップモーター (赤)X軸エンドスイッチ (4色)X軸ステップモーター
そして、ホットエンドのヒーター行きのコネクタx2です。

当然、ヒーターのコネクタ周りから疑ってかかります。
エクストルーダー部分のコネクタは、断線、接触不良のレポートもあります。
コネクタ抜いて、ヒータの抵抗をテスターで計測しますが、
接触不良ではないようです。数オームを示しました。

電源を入れてヒーターの電圧など測定していると、なにやらぱちと機械の中で音が一度だけしました。
静電気かな?
もう片方のエクストルーダは使えそうなのだが、どうも片方でも温度が上がらないと、内部保護が働いて、印刷が開始できない模様。(詳細未確認)

また、いじっているうちヒーターの断線およびショートが混在していることに気づく。
写真の説明はありません。
原因か結果かは不明。
ヒーターから出ている線は、本来あんまり曲げ伸ばししないほうがよかったんでしょうね。

検索の結果、


写真の説明はありません。

によれば、12Vからヒーターに行く過程でチップ抵抗にみえているものはが基板実装ヒューズのようです。確かにこの前後で12Vが途絶えています。

da vinci 1.0ですが、このヒューズR271をショートさせることで復活した方がおられるようです。
ヒーターの電流はそれなりに流れると思われますが、

エクストルーダー周りをいじる過程で、ヒーターのケーブルをショートすることがそもそもの始まりで、基板のヒューズが切れたのではないかと推察。
結構あるあるなのかもしれません?

本機はdual 仕様なので、もしかすると、R271がもう一つのほうに行っているのか?
基板から回路を引き直すスキルは持っていないので、勝手な推測です。

ヒーターはすでに購入していたため、コネクタを切断して付け替えることで、新規に入れ替えが可能でした。
適当に小さな5Aぐらいのヒューズをリード線でつけてみましたが、なにぶん細かい部分で、ハンダつけすら綺麗にとはいいがたい状況。動作を検証するに至りませんでした。

電圧がかかっていることは確認できました。
フィラメントロードにすると、一応加熱は始まるのですが、
80度以上になりません。
ところで、今回交換したヒーターは、12V 35Wのもので、オリジナルと同じ仕様のはずなのですが、抵抗値は三倍ぐらいあります。
オリジナル 約4オーム、新規部品 約13オーム?
でショートしていたオリジナルの方を、配線を注意深く曲げて再度実装してみると、エクストルーダー1は加温せず、エクストルーダ-2の方につけると、今度は270度を超えてエラーとなります。

なにやら暗雲立ち込めています。

別の表面実装用のヒューズ買ってから、R272 271の部分の短絡にチャレンジすることにしました。


届いたチップと外したヒューズを(元の部品より大きかった!)






















つけてみましたが、状況は変わりません。初めて基盤実装部品を扱いましたので汚いですけど、電気的には繋がっているはずです。
同様の状況の報告は、海外のサイトにもあり、MOS FETかなにかがダメになったのではないかと、ありますが解決策は見つけられませんでした。
デタラメやってもダメですね。
基本的にはお手上げなのですが、
Frakenvinci化が最後の生き残りでしょうか

RAMPS control にチャレンジ、、か。