物理的には徐々に動きそうな気配がする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