From c5175e97ec18f067f86a9e8a6efbcd164410e346 Mon Sep 17 00:00:00 2001 From: Robert Pelnar Date: Wed, 21 Feb 2018 15:19:34 +0100 Subject: [PATCH] Pinout, conditional translation and variant file for MK2 --- Firmware/Configuration_prusa.h | 3 + Firmware/Marlin_main.cpp | 17 +- Firmware/pins_Einsy_1_0.h | 2 - Firmware/pins_Rambo_1_3.h | 2 - Firmware/stepper.cpp | 2 +- Firmware/temperature.cpp | 12 +- Firmware/temperature.h | 2 +- Firmware/ultralcd.cpp | 39 +- Firmware/ultralcd.h | 1 + .../variants/1_75mm_MK2-RAMBo13a-E3Dv6full.h | 426 ++++++++++++++++++ .../variants/1_75mm_MK25-RAMBo13a-E3Dv6full.h | 25 +- .../variants/1_75mm_MK3-EINSy10a-E3Dv6full.h | 4 + 12 files changed, 504 insertions(+), 31 deletions(-) create mode 100644 Firmware/variants/1_75mm_MK2-RAMBo13a-E3Dv6full.h diff --git a/Firmware/Configuration_prusa.h b/Firmware/Configuration_prusa.h index f8657264..d7cc579d 100644 --- a/Firmware/Configuration_prusa.h +++ b/Firmware/Configuration_prusa.h @@ -164,6 +164,9 @@ const bool Z_MIN_ENDSTOP_INVERTING = false; // set to true to invert the logic o #define EXTRUDER_AUTO_FAN_SPEED 255 // == full speed +#define PAT9125 +#define FANCHECK + /*------------------------------------ LOAD/UNLOAD FILAMENT SETTINGS diff --git a/Firmware/Marlin_main.cpp b/Firmware/Marlin_main.cpp index b1425192..6a5427fa 100644 --- a/Firmware/Marlin_main.cpp +++ b/Firmware/Marlin_main.cpp @@ -1179,13 +1179,15 @@ void setup() setup_uvlo_interrupt(); #endif //UVLO_SUPPORT -#if !defined(DEBUG_DISABLE_FANCHECK) && defined(TACH_1) && TACH_1 >-1 +#if !defined(DEBUG_DISABLE_FANCHECK) && defined(FANCHECK) && defined(TACH_1) && TACH_1 >-1 setup_fan_interrupt(); #endif //DEBUG_DISABLE_FANCHECK +#ifdef PAT9125 #ifndef DEBUG_DISABLE_FSENSORCHECK fsensor_setup_interrupt(); #endif //DEBUG_DISABLE_FSENSORCHECK +#endif //PAT9125 for (int i = 0; i<4; i++) EEPROM_read_B(EEPROM_BOWDEN_LENGTH + i * 2, &bowden_length[i]); #ifndef DEBUG_DISABLE_STARTMSGS @@ -5551,8 +5553,10 @@ case 404: //M404 Enter the nominal filament width (3mm, 1.75mm ) N<3.0> or disp #ifdef FILAMENTCHANGEENABLE case 600: //Pause for filament change X[pos] Y[pos] Z[relative lift] E[initial retract] L[later retract distance for removal] { +#ifdef PAT9125 bool old_fsensor_enabled = fsensor_enabled; fsensor_enabled = false; //temporary solution for unexpected restarting +#endif //PAT9125 st_synchronize(); float target[4]; @@ -6003,9 +6007,8 @@ case 404: //M404 Enter the nominal filament width (3mm, 1.75mm ) N<3.0> or disp custom_message = false; custom_message_type = 0; - fsensor_enabled = old_fsensor_enabled; //temporary solution for unexpected restarting - #ifdef PAT9125 + fsensor_enabled = old_fsensor_enabled; //temporary solution for unexpected restarting if (fsensor_M600) { @@ -6205,8 +6208,10 @@ case 404: //M404 Enter the nominal filament width (3mm, 1.75mm ) N<3.0> or disp extr_unload_all(); //unload all filaments } #else +#ifdef PAT9125 bool old_fsensor_enabled = fsensor_enabled; fsensor_enabled = false; +#endif //PAT9125 custom_message = true; custom_message_type = 2; lcd_setstatuspgm(MSG_UNLOADING_FILAMENT); @@ -6248,7 +6253,9 @@ case 404: //M404 Enter the nominal filament width (3mm, 1.75mm ) N<3.0> or disp lcd_setstatuspgm(WELCOME_MSG); custom_message = false; custom_message_type = 0; +#ifdef PAT9125 fsensor_enabled = old_fsensor_enabled; +#endif //PAT9125 #endif } break; @@ -6679,6 +6686,7 @@ void handle_status_leds(void) { void manage_inactivity(bool ignore_stepper_queue/*=false*/) //default argument set in Marlin.h { +#ifdef PAT9125 if (fsensor_enabled && filament_autoload_enabled && !fsensor_M600 && !moves_planned() && !IS_SD_PRINTING && !is_usb_printing && (lcd_commands_type != LCD_COMMAND_V2_CAL)) { if (fsensor_autoload_enabled) @@ -6716,6 +6724,7 @@ void manage_inactivity(bool ignore_stepper_queue/*=false*/) //default argument s else if (fsensor_autoload_enabled) fsensor_autoload_check_stop(); +#endif //PAT9125 #if defined(KILL_PIN) && KILL_PIN > -1 static int killCount = 0; // make the inactivity button a bit less responsive @@ -7668,7 +7677,7 @@ void uvlo_() } #endif //UVLO_SUPPORT -#if defined(TACH_1) && TACH_1 >-1 +#if (defined(FANCHECK) && defined(TACH_1) && (TACH_1 >-1)) void setup_fan_interrupt() { //INT7 diff --git a/Firmware/pins_Einsy_1_0.h b/Firmware/pins_Einsy_1_0.h index c86c1e5e..94410304 100644 --- a/Firmware/pins_Einsy_1_0.h +++ b/Firmware/pins_Einsy_1_0.h @@ -10,8 +10,6 @@ #endif #define TMC2130 -#define PAT9125 -#define UVLO_SUPPORT #define UVLO_SUPPORT #define AMBIENT_THERMISTOR diff --git a/Firmware/pins_Rambo_1_3.h b/Firmware/pins_Rambo_1_3.h index ccac2b1f..b8ef9d43 100644 --- a/Firmware/pins_Rambo_1_3.h +++ b/Firmware/pins_Rambo_1_3.h @@ -9,8 +9,6 @@ #error Oops! Make sure you have 'Arduino Mega 2560 or Rambo' selected from the 'Tools -> Boards' menu. #endif -#define PAT9125 - #define PINDA_THERMISTOR #define SWI2C // enable software i2c diff --git a/Firmware/stepper.cpp b/Firmware/stepper.cpp index 645b2fdb..8510daf9 100644 --- a/Firmware/stepper.cpp +++ b/Firmware/stepper.cpp @@ -1056,7 +1056,7 @@ void st_init() #endif #endif - #if defined(TACH_0) && TACH_0 > -1 + #if (defined(FANCHECK) && defined(TACH_0) && (TACH_0 > -1)) SET_INPUT(TACH_0); #ifdef TACH0PULLUP WRITE(TACH_0, HIGH); diff --git a/Firmware/temperature.cpp b/Firmware/temperature.cpp index 77da9bcb..5e7704b8 100644 --- a/Firmware/temperature.cpp +++ b/Firmware/temperature.cpp @@ -454,7 +454,7 @@ void setExtruderAutoFanState(int pin, bool state) analogWrite(pin, newFanSpeed); } -#if (defined(TACH_0) && TACH_0 >-1) || (defined(TACH_1) && TACH_1 > -1) +#if (defined(FANCHECK) && (((defined(TACH_0) && (TACH_0 >-1)) || (defined(TACH_1) && (TACH_1 > -1))))) void countFanSpeed() { @@ -475,11 +475,11 @@ void checkFanSpeed() { fans_check_enabled = (eeprom_read_byte((uint8_t*)EEPROM_FAN_CHECK_ENABLED) > 0); static unsigned char fan_speed_errors[2] = { 0,0 }; -#if defined(TACH_0) && TACH_0 >-1 +#if (defined(FANCHECK) && defined(TACH_0) && (TACH_0 >-1)) if (fan_speed[0] == 0 && (current_temperature[0] > EXTRUDER_AUTO_FAN_TEMPERATURE)) fan_speed_errors[0]++; else fan_speed_errors[0] = 0; #endif -#if defined(TACH_1) && TACH_1 >-1 +#if (defined(FANCHECK) && defined(TACH_1) && (TACH_1 >-1)) if ((fan_speed[1] == 0)&& (fanSpeed > MIN_PRINT_FAN_SPEED)) fan_speed_errors[1]++; else fan_speed_errors[1] = 0; #endif @@ -713,7 +713,7 @@ void manage_heater() (defined(EXTRUDER_2_AUTO_FAN_PIN) && EXTRUDER_2_AUTO_FAN_PIN > -1) if(millis() - extruder_autofan_last_check > 1000) // only need to check fan state very infrequently { -#if (defined(TACH_0) && TACH_0 >-1) || (defined(TACH_1) && TACH_1 > -1) +#if (defined(FANCHECK) && ((defined(TACH_0) && (TACH_0 >-1)) || (defined(TACH_1) && (TACH_1 > -1)))) countFanSpeed(); checkFanSpeed(); #endif //(defined(TACH_0) && TACH_0 >-1) || (defined(TACH_1) && TACH_1 > -1) @@ -1919,7 +1919,7 @@ ISR(TIMER0_COMPB_vect) } #endif //BABYSTEPPING -#if (defined(TACH_0) && TACH_0 > -1) +#if (defined(FANCHECK) && defined(TACH_0) && (TACH_0 > -1)) check_fans(); #endif //(defined(TACH_0)) @@ -1997,7 +1997,7 @@ void check_min_temp() check_min_temp_bed(); } -#if (defined(TACH_0) && TACH_0 > -1) +#if (defined(FANCHECK) && defined(TACH_0) && (TACH_0 > -1)) void check_fans() { if (READ(TACH_0) != fan_state[0]) { fan_edge_counter[0] ++; diff --git a/Firmware/temperature.h b/Firmware/temperature.h index 952a9df3..73c503bc 100644 --- a/Firmware/temperature.h +++ b/Firmware/temperature.h @@ -227,7 +227,7 @@ void setExtruderAutoFanState(int pin, bool state); void checkExtruderAutoFans(); -#if (defined(TACH_0) && TACH_0 > -1) +#if (defined(FANCHECK) && defined(TACH_0) && (TACH_0 > -1)) void countFanSpeed(); void checkFanSpeed(); diff --git a/Firmware/ultralcd.cpp b/Firmware/ultralcd.cpp index ff487e26..88150ec1 100644 --- a/Firmware/ultralcd.cpp +++ b/Firmware/ultralcd.cpp @@ -33,9 +33,10 @@ extern int lcd_change_fil_state; extern bool fans_check_enabled; extern bool filament_autoload_enabled; +#ifdef PAT9125 extern bool fsensor_not_responding; - extern bool fsensor_enabled; +#endif //PAT9125 //Function pointer to menu functions. typedef void (*menuFunc_t)(); @@ -1465,7 +1466,9 @@ static void lcd_menu_extruder_info() { int fan_speed_RPM[2]; +#ifdef PAT9125 pat9125_update(); +#endif //PAT9125 fan_speed_RPM[0] = 60*fan_speed[0]; fan_speed_RPM[1] = 60*fan_speed[1]; @@ -1494,8 +1497,8 @@ static void lcd_menu_extruder_info() lcd.print(" RPM"); #endif - // Display X and Y difference from Filament sensor - +#ifdef PAT9125 + // Display X and Y difference from Filament sensor lcd.setCursor(0, 2); lcd.print("Fil. Xd:"); lcd.print(itostr3(pat9125_x)); @@ -1524,6 +1527,7 @@ static void lcd_menu_extruder_info() lcd.print("Shut: "); lcd.setCursor(15, 3); lcd.print(itostr3(pat9125_s)); +#endif //PAT9125 if (lcd_clicked()) @@ -1991,11 +1995,13 @@ void lcd_LoadFilament() { if (degHotend0() > EXTRUDE_MINTEMP) { +#ifdef PAT9125 if (filament_autoload_enabled && fsensor_enabled) { lcd_show_fullscreen_message_and_wait_P(MSG_AUTOLOADING_ENABLED); return; } +#endif //PAT9125 custom_message = true; loading_flag = true; enquecommand_P(PSTR("M701")); //load filament @@ -3392,6 +3398,7 @@ static void lcd_crash_mode_info2() } #endif //TMC2130 +#ifdef PAT9125 static void lcd_filament_autoload_info() { lcd_show_fullscreen_message_and_wait_P(MSG_AUTOLOADING_ONLY_IF_FSENS_ON); @@ -3401,6 +3408,8 @@ static void lcd_fsensor_fail() { lcd_show_fullscreen_message_and_wait_P(MSG_FSENS_NOT_RESPONDING); } +#endif //PAT9125 + static void lcd_silent_mode_set() { SilentModeMenu = !SilentModeMenu; @@ -3454,6 +3463,7 @@ static void lcd_set_lang(unsigned char lang) { langsel = LANGSEL_ACTIVE; } +#ifdef PAT9125 static void lcd_fsensor_state_set() { FSensorStateMenu = !FSensorStateMenu; //set also from fsensor_enable() and fsensor_disable() @@ -3473,6 +3483,8 @@ static void lcd_fsensor_state_set() else lcd_goto_menu(lcd_settings_menu, 7); } +#endif //PAT9125 + #if !SDSORT_USES_RAM void lcd_set_degree() { @@ -3772,7 +3784,9 @@ void lcd_wizard(int state) { state = 7; break; case 7: //load filament +#ifdef PAT9125 fsensor_block(); +#endif //PAT9125 lcd_show_fullscreen_message_and_wait_P(MSG_WIZARD_LOAD_FILAMENT); lcd_update_enable(false); lcd_implementation_clear(); @@ -3781,7 +3795,9 @@ void lcd_wizard(int state) { change_extr(0); #endif gcode_M701(); +#ifdef PAT9125 fsensor_unblock(); +#endif //PAT9125 state = 9; break; case 8: @@ -3875,6 +3891,8 @@ static void lcd_settings_menu() { MENU_ITEM(gcode, MSG_DISABLE_STEPPERS, PSTR("M84")); } + +#ifdef PAT9125 #ifndef DEBUG_DISABLE_FSENSORCHECK if (FSensorStateMenu == 0) { if (fsensor_not_responding){ @@ -3900,6 +3918,7 @@ static void lcd_settings_menu() } #endif //DEBUG_DISABLE_FSENSORCHECK +#endif //PAT9125 if (fans_check_enabled == true) { MENU_ITEM(function, MSG_FANS_CHECK_ON, lcd_set_fan_check); @@ -5166,9 +5185,11 @@ static void lcd_main_menu() else { #ifndef SNMM +#ifdef PAT9125 if ( ((filament_autoload_enabled == true) && (fsensor_enabled == true))) MENU_ITEM(function, MSG_AUTOLOAD_FILAMENT, lcd_LoadFilament); else +#endif //PAT9125 MENU_ITEM(function, MSG_LOAD_FILAMENT, lcd_LoadFilament); MENU_ITEM(function, MSG_UNLOAD_FILAMENT, lcd_unLoadFilament); #endif @@ -5260,6 +5281,7 @@ static void lcd_tune_menu() MENU_ITEM(function, MSG_FILAMENTCHANGE, lcd_colorprint_change);//7 #endif +#ifdef PAT9125 #ifndef DEBUG_DISABLE_FSENSORCHECK if (FSensorStateMenu == 0) { MENU_ITEM(function, MSG_FSENSOR_OFF, lcd_fsensor_state_set); @@ -5267,6 +5289,7 @@ static void lcd_tune_menu() MENU_ITEM(function, MSG_FSENSOR_ON, lcd_fsensor_state_set); } #endif //DEBUG_DISABLE_FSENSORCHECK +#endif //PAT9125 #ifdef TMC2130 if (SilentModeMenu == 0) MENU_ITEM(function, MSG_SILENT_MODE_OFF, lcd_silent_mode_set); @@ -5633,12 +5656,16 @@ static bool lcd_selftest() delay(2000); KEEPALIVE_STATE(IN_HANDLER); _progress = lcd_selftest_screen(-1, _progress, 3, true, 2000); +#if (defined(FANCHECK) && defined(TACH_0)) _result = lcd_selftest_fan_dialog(0); +#else //defined(TACH_0) + _result = lcd_selftest_manual_fan_check(0, false); +#endif //defined(TACH_0) if (_result) { _progress = lcd_selftest_screen(0, _progress, 3, true, 2000); -#if (defined(TACH_1)) +#if (defined(FANCHECK) && defined(TACH_1)) _result = lcd_selftest_fan_dialog(1); #else //defined(TACH_1) _result = lcd_selftest_manual_fan_check(1, false); @@ -5902,7 +5929,7 @@ static bool lcd_selfcheck_axis_sg(char axis) { } #endif //TMC2130 -#ifndef TMC2130 +//#ifndef TMC2130 static bool lcd_selfcheck_axis(int _axis, int _travel) { @@ -6092,7 +6119,7 @@ static bool lcd_selfcheck_endstops() manage_inactivity(true); return _result; } -#endif //not defined TMC2130 +//#endif //not defined TMC2130 static bool lcd_selfcheck_check_heater(bool _isbed) { diff --git a/Firmware/ultralcd.h b/Firmware/ultralcd.h index e3f0bb0e..1dde5128 100644 --- a/Firmware/ultralcd.h +++ b/Firmware/ultralcd.h @@ -40,6 +40,7 @@ void lcd_mylang(); #ifdef TMC2130 static void reset_crash_det(char axis); static bool lcd_selfcheck_axis_sg(char axis); + static bool lcd_selfcheck_axis(int _axis, int _travel); #else static bool lcd_selfcheck_endstops(); static bool lcd_selfcheck_axis(int _axis, int _travel); diff --git a/Firmware/variants/1_75mm_MK2-RAMBo13a-E3Dv6full.h b/Firmware/variants/1_75mm_MK2-RAMBo13a-E3Dv6full.h new file mode 100644 index 00000000..2324daf6 --- /dev/null +++ b/Firmware/variants/1_75mm_MK2-RAMBo13a-E3Dv6full.h @@ -0,0 +1,426 @@ +#ifndef CONFIGURATION_PRUSA_H +#define CONFIGURATION_PRUSA_H + +/*------------------------------------ +GENERAL SETTINGS +*------------------------------------*/ + +// Printer revision +#define FILAMENT_SIZE "1_75mm_MK2" +#define NOZZLE_TYPE "E3Dv6full" + +// Developer flag +#define DEVELOPER + +// Printer name +#define CUSTOM_MENDEL_NAME "Prusa i3 MK2" + +// Electronics +#define MOTHERBOARD BOARD_RAMBO_MINI_1_3 + +// Prusa Single extruder multiple material suport +//#define SNMM + +// Uncomment the below for the E3D PT100 temperature sensor (with or without PT100 Amplifier) +//#define E3D_PT100_EXTRUDER_WITH_AMP +//#define E3D_PT100_EXTRUDER_NO_AMP +//#define E3D_PT100_BED_WITH_AMP +//#define E3D_PT100_BED_NO_AMP + + +/*------------------------------------ +AXIS SETTINGS +*------------------------------------*/ + +// Steps per unit {X,Y,Z,E} +#ifdef SNMM +#define DEFAULT_AXIS_STEPS_PER_UNIT {100,100,3200/8,140} +#else +#define DEFAULT_AXIS_STEPS_PER_UNIT {100,100,3200/8,161.3} +#endif + + +// Endstop inverting +const bool X_MIN_ENDSTOP_INVERTING = false; // set to true to invert the logic of the endstop. +const bool Y_MIN_ENDSTOP_INVERTING = false; // set to true to invert the logic of the endstop. +const bool Z_MIN_ENDSTOP_INVERTING = false; // set to true to invert the logic of the endstop. + +// Direction inverting +#define INVERT_X_DIR false // for Mendel set to false, for Orca set to true +#define INVERT_Y_DIR false // for Mendel set to true, for Orca set to false +#define INVERT_Z_DIR false // for Mendel set to false, for Orca set to true +#define INVERT_E0_DIR true // for direct drive extruder v9 set to true, for geared extruder set to false +#define INVERT_E1_DIR true // for direct drive extruder v9 set to true, for geared extruder set to false +#define INVERT_E2_DIR true // for direct drive extruder v9 set to true, for geared extruder set to false + + +// Home position +#define MANUAL_X_HOME_POS 0 +#define MANUAL_Y_HOME_POS -2.2 +#define MANUAL_Z_HOME_POS 0.15 + +// Travel limits after homing +#define X_MAX_POS 250 +#define X_MIN_POS 0 +#define Y_MAX_POS 210 +#define Y_MIN_POS -2.2 +#define Z_MAX_POS 210 +#define Z_MIN_POS 0.15 + +// Canceled home position +#define X_CANCEL_POS 50 +#define Y_CANCEL_POS 190 + +//Pause print position +#define X_PAUSE_POS 50 +#define Y_PAUSE_POS 190 +#define Z_PAUSE_LIFT 20 + +#define NUM_AXIS 4 // The axis order in all axis related arrays is X, Y, Z, E +#define HOMING_FEEDRATE {3000, 3000, 800, 0} // set the homing speeds (mm/min) + +#define DEFAULT_MAX_FEEDRATE {500, 500, 12, 120} // (mm/sec) +#define DEFAULT_MAX_ACCELERATION {9000,9000,500,10000} // X, Y, Z, E maximum start speed for accelerated moves. E default values are good for Skeinforge 40+, for older versions raise them a lot. + +#define DEFAULT_ACCELERATION 1500 // X, Y, Z and E max acceleration in mm/s^2 for printing moves +#define DEFAULT_RETRACT_ACCELERATION 1500 // X, Y, Z and E max acceleration in mm/s^2 for retracts + + +#define MANUAL_FEEDRATE {3000, 3000, 1000, 100} // set the speeds for manual moves (mm/min) + +#define Z_AXIS_ALWAYS_ON 1 + +/*------------------------------------ +EXTRUDER SETTINGS +*------------------------------------*/ + +// Mintemps +#define HEATER_0_MINTEMP 15 +#define HEATER_1_MINTEMP 5 +#define HEATER_2_MINTEMP 5 +#define BED_MINTEMP 15 + +// Maxtemps +#if defined(E3D_PT100_EXTRUDER_WITH_AMP) || defined(E3D_PT100_EXTRUDER_NO_AMP) +#define HEATER_0_MAXTEMP 410 +#else +#define HEATER_0_MAXTEMP 305 +#endif +#define HEATER_1_MAXTEMP 305 +#define HEATER_2_MAXTEMP 305 +#define BED_MAXTEMP 150 + +#if defined(E3D_PT100_EXTRUDER_WITH_AMP) || defined(E3D_PT100_EXTRUDER_NO_AMP) +// Define PID constants for extruder with PT100 +#define DEFAULT_Kp 21.70 +#define DEFAULT_Ki 1.60 +#define DEFAULT_Kd 73.76 +#else +// Define PID constants for extruder +#define DEFAULT_Kp 40.925 +#define DEFAULT_Ki 4.875 +#define DEFAULT_Kd 86.085 +#endif + +// Extrude mintemp +#define EXTRUDE_MINTEMP 130 + +// Extruder cooling fans +#define EXTRUDER_0_AUTO_FAN_PIN 8 +#define EXTRUDER_1_AUTO_FAN_PIN -1 +#define EXTRUDER_2_AUTO_FAN_PIN -1 +#define EXTRUDER_AUTO_FAN_TEMPERATURE 50 +#define EXTRUDER_AUTO_FAN_SPEED 255 // == full speed + + +#ifdef SNMM +//#define BOWDEN_LENGTH 408 +#define BOWDEN_LENGTH 433 //default total length for filament fast loading part; max length for extrusion is 465 mm!; this length can be adjusted in service menu +#define FIL_LOAD_LENGTH 102 //length for loading filament into the nozzle +#define FIL_COOLING 10 //length for cooling moves +#define E_MOTOR_LOW_CURRENT 350 // current for PRUSAY code +#define E_MOTOR_HIGH_CURRENT 700 //current for unloading filament, stop print, PRUSAY ramming +#endif //SNMM + +//#define DIS //for measuring bed heigth and PINDa detection heigth relative to auto home point, experimental function + + +/*------------------------------------ +CHANGE FILAMENT SETTINGS +*------------------------------------*/ + +// Filament change configuration +#define FILAMENTCHANGEENABLE +#ifdef FILAMENTCHANGEENABLE +#define FILAMENTCHANGE_XPOS 211 +#define FILAMENTCHANGE_YPOS 0 +#define FILAMENTCHANGE_ZADD 2 +#define FILAMENTCHANGE_FIRSTRETRACT -2 +#define FILAMENTCHANGE_FINALRETRACT -80 + +#define FILAMENTCHANGE_FIRSTFEED 70 +#define FILAMENTCHANGE_FINALFEED 50 +#define FILAMENTCHANGE_RECFEED 5 + +#define FILAMENTCHANGE_XYFEED 50 +#define FILAMENTCHANGE_EFEED 20 +#define FILAMENTCHANGE_RFEED 400 +#define FILAMENTCHANGE_EXFEED 2 +#define FILAMENTCHANGE_ZFEED 15 + +#endif + +/*------------------------------------ +ADDITIONAL FEATURES SETTINGS +*------------------------------------*/ + +// Define Prusa filament runout sensor +//#define FILAMENT_RUNOUT_SUPPORT + +#ifdef FILAMENT_RUNOUT_SUPPORT +#define FILAMENT_RUNOUT_SENSOR 1 +#define FILAMENT_RUNOUT_SCRIPT "M600" +#endif + +// temperature runaway +#define TEMP_RUNAWAY_BED_HYSTERESIS 5 +#define TEMP_RUNAWAY_BED_TIMEOUT 360 + +#define TEMP_RUNAWAY_EXTRUDER_HYSTERESIS 15 +#define TEMP_RUNAWAY_EXTRUDER_TIMEOUT 45 + +/*------------------------------------ +MOTOR CURRENT SETTINGS +*------------------------------------*/ + +// Motor Current setting for BIG RAMBo +#define DIGIPOT_MOTOR_CURRENT {135,135,135,135,135} // Values 0-255 (RAMBO 135 = ~0.75A, 185 = ~1A) +#define DIGIPOT_MOTOR_CURRENT_LOUD {135,135,135,135,135} + +// Motor Current settings for RAMBo mini PWM value = MotorCurrentSetting * 255 / range +#if MOTHERBOARD == 203 || MOTHERBOARD == 200 +#define MOTOR_CURRENT_PWM_RANGE 2000 +#define DEFAULT_PWM_MOTOR_CURRENT {270, 830, 450} // {XY,Z,E} +#define DEFAULT_PWM_MOTOR_CURRENT_LOUD {540, 830, 500} // {XY,Z,E} +#define Z_SILENT 0 +#define Z_HIGH_POWER 200 +#endif + +/*------------------------------------ +BED SETTINGS +*------------------------------------*/ + +// Define Mesh Bed Leveling system to enable it +#define MESH_BED_LEVELING +#ifdef MESH_BED_LEVELING + +#define MBL_Z_STEP 0.01 + +// Mesh definitions +#define MESH_MIN_X 35 +#define MESH_MAX_X 238 +#define MESH_MIN_Y 6 +#define MESH_MAX_Y 202 + +// Mesh upsample definition +#define MESH_NUM_X_POINTS 7 +#define MESH_NUM_Y_POINTS 7 +// Mesh measure definition +#define MESH_MEAS_NUM_X_POINTS 3 +#define MESH_MEAS_NUM_Y_POINTS 3 + +#define MESH_HOME_Z_CALIB 0.2 +#define MESH_HOME_Z_SEARCH 5 //Z lift for homing, mesh bed leveling etc. + +#define X_PROBE_OFFSET_FROM_EXTRUDER 23 // Z probe to nozzle X offset: -left +right +#define Y_PROBE_OFFSET_FROM_EXTRUDER 9 // Z probe to nozzle Y offset: -front +behind +#define Z_PROBE_OFFSET_FROM_EXTRUDER -0.4 // Z probe to nozzle Z offset: -below (always!) +#endif + +// Bed Temperature Control +// Select PID or bang-bang with PIDTEMPBED. If bang-bang, BED_LIMIT_SWITCHING will enable hysteresis +// +// Uncomment this to enable PID on the bed. It uses the same frequency PWM as the extruder. +// If your PID_dT above is the default, and correct for your hardware/configuration, that means 7.689Hz, +// which is fine for driving a square wave into a resistive load and does not significantly impact you FET heating. +// This also works fine on a Fotek SSR-10DA Solid State Relay into a 250W heater. +// If your configuration is significantly different than this and you don't understand the issues involved, you probably +// shouldn't use bed PID until someone else verifies your hardware works. +// If this is enabled, find your own PID constants below. +#define PIDTEMPBED +// +//#define BED_LIMIT_SWITCHING + +// This sets the max power delivered to the bed, and replaces the HEATER_BED_DUTY_CYCLE_DIVIDER option. +// all forms of bed control obey this (PID, bang-bang, bang-bang with hysteresis) +// setting this to anything other than 255 enables a form of PWM to the bed just like HEATER_BED_DUTY_CYCLE_DIVIDER did, +// so you shouldn't use it unless you are OK with PWM on your bed. (see the comment on enabling PIDTEMPBED) +#define MAX_BED_POWER 255 // limits duty cycle to bed; 255=full current + +// Bed temperature compensation settings +#define BED_OFFSET 10 +#define BED_OFFSET_START 40 +#define BED_OFFSET_CENTER 50 + + +#ifdef PIDTEMPBED +//120v 250W silicone heater into 4mm borosilicate (MendelMax 1.5+) +//from FOPDT model - kp=.39 Tp=405 Tdead=66, Tc set to 79.2, aggressive factor of .15 (vs .1, 1, 10) +#if defined(E3D_PT100_BED_WITH_AMP) || defined(E3D_PT100_BED_NO_AMP) +// Define PID constants for extruder with PT100 +#define DEFAULT_bedKp 21.70 +#define DEFAULT_bedKi 1.60 +#define DEFAULT_bedKd 73.76 +#else +#define DEFAULT_bedKp 126.13 +#define DEFAULT_bedKi 4.30 +#define DEFAULT_bedKd 924.76 +#endif + +//120v 250W silicone heater into 4mm borosilicate (MendelMax 1.5+) +//from pidautotune +// #define DEFAULT_bedKp 97.1 +// #define DEFAULT_bedKi 1.41 +// #define DEFAULT_bedKd 1675.16 + +// FIND YOUR OWN: "M303 E-1 C8 S90" to run autotune on the bed at 90 degreesC for 8 cycles. +#endif // PIDTEMPBED + + +/*----------------------------------- +PREHEAT SETTINGS +*------------------------------------*/ + +#define FARM_PREHEAT_HOTEND_TEMP 250 +#define FARM_PREHEAT_HPB_TEMP 40 +#define FARM_PREHEAT_FAN_SPEED 0 + +#define PLA_PREHEAT_HOTEND_TEMP 215 +#define PLA_PREHEAT_HPB_TEMP 55 +#define PLA_PREHEAT_FAN_SPEED 0 + +#define ABS_PREHEAT_HOTEND_TEMP 255 +#define ABS_PREHEAT_HPB_TEMP 100 +#define ABS_PREHEAT_FAN_SPEED 0 + +#define HIPS_PREHEAT_HOTEND_TEMP 220 +#define HIPS_PREHEAT_HPB_TEMP 100 +#define HIPS_PREHEAT_FAN_SPEED 0 + +#define PP_PREHEAT_HOTEND_TEMP 254 +#define PP_PREHEAT_HPB_TEMP 100 +#define PP_PREHEAT_FAN_SPEED 0 + +#define PET_PREHEAT_HOTEND_TEMP 240 +#define PET_PREHEAT_HPB_TEMP 90 +#define PET_PREHEAT_FAN_SPEED 0 + +#define FLEX_PREHEAT_HOTEND_TEMP 230 +#define FLEX_PREHEAT_HPB_TEMP 50 +#define FLEX_PREHEAT_FAN_SPEED 0 + +/*------------------------------------ +THERMISTORS SETTINGS +*------------------------------------*/ + +// +//--NORMAL IS 4.7kohm PULLUP!-- 1kohm pullup can be used on hotend sensor, using correct resistor and table +// +//// Temperature sensor settings: +// -2 is thermocouple with MAX6675 (only for sensor 0) +// -1 is thermocouple with AD595 +// 0 is not used +// 1 is 100k thermistor - best choice for EPCOS 100k (4.7k pullup) +// 2 is 200k thermistor - ATC Semitec 204GT-2 (4.7k pullup) +// 3 is Mendel-parts thermistor (4.7k pullup) +// 4 is 10k thermistor !! do not use it for a hotend. It gives bad resolution at high temp. !! +// 5 is 100K thermistor - ATC Semitec 104GT-2 (Used in ParCan & J-Head) (4.7k pullup) +// 6 is 100k EPCOS - Not as accurate as table 1 (created using a fluke thermocouple) (4.7k pullup) +// 7 is 100k Honeywell thermistor 135-104LAG-J01 (4.7k pullup) +// 71 is 100k Honeywell thermistor 135-104LAF-J01 (4.7k pullup) +// 8 is 100k 0603 SMD Vishay NTCS0603E3104FXT (4.7k pullup) +// 9 is 100k GE Sensing AL03006-58.2K-97-G1 (4.7k pullup) +// 10 is 100k RS thermistor 198-961 (4.7k pullup) +// 11 is 100k beta 3950 1% thermistor (4.7k pullup) +// 12 is 100k 0603 SMD Vishay NTCS0603E3104FXT (4.7k pullup) (calibrated for Makibox hot bed) +// 13 is 100k Hisens 3950 1% up to 300°C for hotend "Simple ONE " & "Hotend "All In ONE" +// 20 is the PT100 circuit found in the Ultimainboard V2.x +// 60 is 100k Maker's Tool Works Kapton Bed Thermistor beta=3950 +// +// 1k ohm pullup tables - This is not normal, you would have to have changed out your 4.7k for 1k +// (but gives greater accuracy and more stable PID) +// 51 is 100k thermistor - EPCOS (1k pullup) +// 52 is 200k thermistor - ATC Semitec 204GT-2 (1k pullup) +// 55 is 100k thermistor - ATC Semitec 104GT-2 (Used in ParCan & J-Head) (1k pullup) +// +// 1047 is Pt1000 with 4k7 pullup +// 1010 is Pt1000 with 1k pullup (non standard) +// 147 is Pt100 with 4k7 pullup +// 148 is E3D Pt100 with 4k7 pullup and no PT100 Amplifier on a MiniRambo 1.3a +// 247 is Pt100 with 4k7 pullup and PT100 Amplifier +// 110 is Pt100 with 1k pullup (non standard) + +#if defined(E3D_PT100_EXTRUDER_WITH_AMP) +#define TEMP_SENSOR_0 247 +#elif defined(E3D_PT100_EXTRUDER_NO_AMP) +#define TEMP_SENSOR_0 148 +#else +#define TEMP_SENSOR_0 5 +#endif +#define TEMP_SENSOR_1 0 +#define TEMP_SENSOR_2 0 +#if defined(E3D_PT100_BED_WITH_AMP) +#define TEMP_SENSOR_BED 247 +#elif defined(E3D_PT100_BED_NO_AMP) +#define TEMP_SENSOR_BED 148 +#else +#define TEMP_SENSOR_BED 1 +#endif + +#define STACK_GUARD_TEST_VALUE 0xA2A2 + +#define MAX_BED_TEMP_CALIBRATION 50 +#define MAX_HOTEND_TEMP_CALIBRATION 50 + +#define MAX_E_STEPS_PER_UNIT 250 +#define MIN_E_STEPS_PER_UNIT 100 + +#define Z_BABYSTEP_MIN -3999 +#define Z_BABYSTEP_MAX 0 + +#define PINDA_PREHEAT_X 70 +#define PINDA_PREHEAT_Y -3 +#define PINDA_PREHEAT_Z 1 +#define PINDA_HEAT_T 120 //time in s + +#define PINDA_MIN_T 50 +#define PINDA_STEP_T 10 +#define PINDA_MAX_T 100 + +#define PING_TIME 60 //time in s +#define PING_TIME_LONG 600 //10 min; used when length of commands buffer > 0 to avoid false triggering when dealing with long gcodes +#define PING_ALLERT_PERIOD 60 //time in s + +#define NC_TIME 10 //time in s for periodic important status messages sending which needs reponse from monitoring +#define NC_BUTTON_LONG_PRESS 15 //time in s + +#define LONG_PRESS_TIME 1000 //time in ms for button long press +#define BUTTON_BLANKING_TIME 200 //time in ms for blanking after button release + +#define DEFAULT_PID_TEMP 210 + +#ifdef SNMM +#define DEFAULT_RETRACTION 4 //used for PINDA temp calibration and pause print +#else +#define DEFAULT_RETRACTION 1 //used for PINDA temp calibration and pause print +#endif + +#define END_FILE_SECTION 10000 //number of bytes from end of file used for checking if file is complete + +#define M600_TIMEOUT 600 //seconds + +#ifndef SNMM +#define SUPPORT_VERBOSITY +#endif + +#endif //__CONFIGURATION_PRUSA_H diff --git a/Firmware/variants/1_75mm_MK25-RAMBo13a-E3Dv6full.h b/Firmware/variants/1_75mm_MK25-RAMBo13a-E3Dv6full.h index 18edb0f1..d7cc579d 100644 --- a/Firmware/variants/1_75mm_MK25-RAMBo13a-E3Dv6full.h +++ b/Firmware/variants/1_75mm_MK25-RAMBo13a-E3Dv6full.h @@ -56,7 +56,7 @@ const bool Z_MIN_ENDSTOP_INVERTING = false; // set to true to invert the logic o #define X_MIN_POS 0 #define Y_MAX_POS 210 #define Y_MIN_POS -4 //orig -4 -#define Z_MAX_POS 210 +#define Z_MAX_POS 200 #define Z_MIN_POS 0.15 // Canceled home position @@ -101,7 +101,7 @@ const bool Z_MIN_ENDSTOP_INVERTING = false; // set to true to invert the logic o //#define DEBUG_DISABLE_YMAXLIMIT //y max limit ignored //#define DEBUG_DISABLE_ZMINLIMIT //z min limit ignored //#define DEBUG_DISABLE_ZMAXLIMIT //z max limit ignored -#define DEBUG_DISABLE_STARTMSGS //no startup messages +//#define DEBUG_DISABLE_STARTMSGS //no startup messages //#define DEBUG_DISABLE_MINTEMP //mintemp error ignored //#define DEBUG_DISABLE_SWLIMITS //sw limits ignored //#define DEBUG_DISABLE_LCD_STATUS_LINE //empty four lcd line @@ -112,9 +112,9 @@ const bool Z_MIN_ENDSTOP_INVERTING = false; // set to true to invert the logic o //#define DEBUG_BLINK_ACTIVE //#define DEBUG_DISABLE_FANCHECK //disable fan check (no ISR INT7, check disabled) //#define DEBUG_DISABLE_FSENSORCHECK //disable fsensor check (no ISR INT7, check disabled) -#define DEBUG_DUMP_TO_2ND_SERIAL //dump received characters to 2nd serial line -#define DEBUG_STEPPER_TIMER_MISSED // Stop on stepper timer overflow, beep and display a message. -#define PLANNER_DIAGNOSTICS // Show the planner queue status on printer display. +//#define DEBUG_DUMP_TO_2ND_SERIAL //dump received characters to 2nd serial line +//#define DEBUG_STEPPER_TIMER_MISSED // Stop on stepper timer overflow, beep and display a message. +//#define PLANNER_DIAGNOSTICS // Show the planner queue status on printer display. #endif /* DEBUG_BUILD */ @@ -164,6 +164,9 @@ const bool Z_MIN_ENDSTOP_INVERTING = false; // set to true to invert the logic o #define EXTRUDER_AUTO_FAN_SPEED 255 // == full speed +#define PAT9125 +#define FANCHECK + /*------------------------------------ LOAD/UNLOAD FILAMENT SETTINGS @@ -231,10 +234,12 @@ const bool Z_MIN_ENDSTOP_INVERTING = false; // set to true to invert the logic o #define DIGIPOT_MOTOR_CURRENT_LOUD {135,135,135,135,135} // Motor Current settings for RAMBo mini PWM value = MotorCurrentSetting * 255 / range -#if MOTHERBOARD == 200 || MOTHERBOARD == 203 || MOTHERBOARD == 310 +#if MOTHERBOARD == 203 || MOTHERBOARD == 200 #define MOTOR_CURRENT_PWM_RANGE 2000 -#define DEFAULT_PWM_MOTOR_CURRENT {400, 750, 750} // {XY,Z,E} -#define DEFAULT_PWM_MOTOR_CURRENT_LOUD {400, 750, 750} // {XY,Z,E} +#define DEFAULT_PWM_MOTOR_CURRENT {270, 830, 450} // {XY,Z,E} +#define DEFAULT_PWM_MOTOR_CURRENT_LOUD {540, 830, 500} // {XY,Z,E} +#define Z_SILENT 0 +#define Z_HIGH_POWER 200 #endif /*------------------------------------ @@ -271,7 +276,7 @@ const bool Z_MIN_ENDSTOP_INVERTING = false; // set to true to invert the logic o #define MESH_HOME_Z_SEARCH 5 //Z lift for homing, mesh bed leveling etc. #define X_PROBE_OFFSET_FROM_EXTRUDER 23 // Z probe to nozzle X offset: -left +right -#define Y_PROBE_OFFSET_FROM_EXTRUDER 5 // Z probe to nozzle Y offset: -front +behind +#define Y_PROBE_OFFSET_FROM_EXTRUDER 9 // Z probe to nozzle Y offset: -front +behind #define Z_PROBE_OFFSET_FROM_EXTRUDER -0.4 // Z probe to nozzle Z offset: -below (always!) #endif @@ -461,6 +466,8 @@ const bool Z_MIN_ENDSTOP_INVERTING = false; // set to true to invert the logic o #define M600_TIMEOUT 600 //seconds +#define TACH0PULLUP + //#define SUPPORT_VERBOSITY #endif //__CONFIGURATION_PRUSA_H diff --git a/Firmware/variants/1_75mm_MK3-EINSy10a-E3Dv6full.h b/Firmware/variants/1_75mm_MK3-EINSy10a-E3Dv6full.h index 11ad3dc8..a00ca8f1 100644 --- a/Firmware/variants/1_75mm_MK3-EINSy10a-E3Dv6full.h +++ b/Firmware/variants/1_75mm_MK3-EINSy10a-E3Dv6full.h @@ -213,6 +213,7 @@ const bool Z_MIN_ENDSTOP_INVERTING = false; // set to true to invert the logic o //new settings is possible for vsense = 1, running current value > 31 set vsense to zero and shift both currents by 1 bit right (Z axis only) #define TMC2130_CURRENTS_H {13, 20, 25, 35} // default holding currents for all axes #define TMC2130_CURRENTS_R {13, 20, 25, 35} // default running currents for all axes +#define TMC2130_UNLOAD_CURRENT_R 12 // lowe current for M600 to protect filament sensor //#define TMC2130_DEBUG //#define TMC2130_DEBUG_WR @@ -265,6 +266,9 @@ const bool Z_MIN_ENDSTOP_INVERTING = false; // set to true to invert the logic o #define EXTRUDER_AUTO_FAN_SPEED 255 // == full speed +#define PAT9125 +#define FANCHECK + /*------------------------------------ LOAD/UNLOAD FILAMENT SETTINGS