diff --git a/Marlin/Configuration.h b/Marlin/Configuration.h index 076e75c53..f3723de18 100644 --- a/Marlin/Configuration.h +++ b/Marlin/Configuration.h @@ -8,7 +8,7 @@ //=========================================================================== /* Here are some standard links for getting your machine calibrated: - * http://reprap.org/wiki/Calibration + * http://reprap.org/wiki/Calibration * http://youtu.be/wAL9d7FgInk * http://calculator.josefprusa.cz * http://reprap.org/wiki/Triffid_Hunter%27s_Calibration_Guide @@ -295,9 +295,12 @@ your extruder heater takes 2 minutes to hit the target on heating. //============================= Mechanical Settings ========================= //=========================================================================== -// Uncomment the following line to enable CoreXY kinematics +// Uncomment this option to enable CoreXY kinematics // #define COREXY +// Enable this option for Toshiba steppers +// #define CONFIG_STEPPERS_TOSHIBA + // coarse Endstop Settings #define ENDSTOPPULLUPS // Comment this out (using // at the start of the line) to disable the endstop pullup resistors @@ -382,40 +385,38 @@ const bool Z_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of #ifdef ENABLE_AUTO_BED_LEVELING -// There are 2 different ways to pick the X and Y locations to probe: - -// - "grid" mode -// Probe every point in a rectangular grid -// You must specify the rectangle, and the density of sample points -// This mode is preferred because there are more measurements. -// It used to be called ACCURATE_BED_LEVELING but "grid" is more descriptive - -// - "3-point" mode -// Probe 3 arbitrary points on the bed (that aren't colinear) -// You must specify the X & Y coordinates of all 3 points - + // There are 2 different ways to specify probing locations + // + // - "grid" mode + // Probe several points in a rectangular grid. + // You specify the rectangle and the density of sample points. + // This mode is preferred because there are more measurements. + // + // - "3-point" mode + // Probe 3 arbitrary points on the bed (that aren't colinear) + // You specify the XY coordinates of all 3 points. + + // Enable this to sample the bed in a grid (least squares solution) + // Note: this feature generates 10KB extra code size #define AUTO_BED_LEVELING_GRID - // with AUTO_BED_LEVELING_GRID, the bed is sampled in a - // AUTO_BED_LEVELING_GRID_POINTSxAUTO_BED_LEVELING_GRID_POINTS grid - // and least squares solution is calculated - // Note: this feature occupies 10'206 byte + #ifdef AUTO_BED_LEVELING_GRID - // set the rectangle in which to probe + // The edges of the rectangle in which to probe #define LEFT_PROBE_BED_POSITION 15 #define RIGHT_PROBE_BED_POSITION 170 - #define BACK_PROBE_BED_POSITION 180 #define FRONT_PROBE_BED_POSITION 20 + #define BACK_PROBE_BED_POSITION 170 - // set the number of grid points per dimension - // I wouldn't see a reason to go above 3 (=9 probing points on the bed) + // Set the number of grid points per dimension + // You probably don't need more than 3 (squared=9) #define AUTO_BED_LEVELING_GRID_POINTS 2 - #else // not AUTO_BED_LEVELING_GRID - // with no grid, just probe 3 arbitrary points. A simple cross-product - // is used to esimate the plane of the print bed + #else // !AUTO_BED_LEVELING_GRID + // Arbitrary points to probe. A simple cross-product + // is used to estimate the plane of the bed. #define ABL_PROBE_PT_1_X 15 #define ABL_PROBE_PT_1_Y 180 #define ABL_PROBE_PT_2_X 15 @@ -426,7 +427,7 @@ const bool Z_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of #endif // AUTO_BED_LEVELING_GRID - // these are the offsets to the probe relative to the extruder tip (Hotend - Probe) + // Offsets to the probe relative to the extruder tip (Hotend - Probe) // X and Y offsets must be integers #define X_PROBE_OFFSET_FROM_EXTRUDER -25 // -left +right #define Y_PROBE_OFFSET_FROM_EXTRUDER -29 // -front +behind @@ -467,29 +468,6 @@ const bool Z_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of #endif - #ifdef AUTO_BED_LEVELING_GRID // Check if Probe_Offset * Grid Points is greater than Probing Range - #if X_PROBE_OFFSET_FROM_EXTRUDER < 0 - #if (-(X_PROBE_OFFSET_FROM_EXTRUDER * (AUTO_BED_LEVELING_GRID_POINTS-1)) >= (RIGHT_PROBE_BED_POSITION - LEFT_PROBE_BED_POSITION)) - #error "The X axis probing range is not enough to fit all the points defined in AUTO_BED_LEVELING_GRID_POINTS" - #endif - #else - #if ((X_PROBE_OFFSET_FROM_EXTRUDER * (AUTO_BED_LEVELING_GRID_POINTS-1)) >= (RIGHT_PROBE_BED_POSITION - LEFT_PROBE_BED_POSITION)) - #error "The X axis probing range is not enough to fit all the points defined in AUTO_BED_LEVELING_GRID_POINTS" - #endif - #endif - #if Y_PROBE_OFFSET_FROM_EXTRUDER < 0 - #if (-(Y_PROBE_OFFSET_FROM_EXTRUDER * (AUTO_BED_LEVELING_GRID_POINTS-1)) >= (BACK_PROBE_BED_POSITION - FRONT_PROBE_BED_POSITION)) - #error "The Y axis probing range is not enough to fit all the points defined in AUTO_BED_LEVELING_GRID_POINTS" - #endif - #else - #if ((Y_PROBE_OFFSET_FROM_EXTRUDER * (AUTO_BED_LEVELING_GRID_POINTS-1)) >= (BACK_PROBE_BED_POSITION - FRONT_PROBE_BED_POSITION)) - #error "The Y axis probing range is not enough to fit all the points defined in AUTO_BED_LEVELING_GRID_POINTS" - #endif - #endif - - - #endif - #endif // ENABLE_AUTO_BED_LEVELING diff --git a/Marlin/Marlin.h b/Marlin/Marlin.h index f335a338d..2a54ac593 100644 --- a/Marlin/Marlin.h +++ b/Marlin/Marlin.h @@ -23,41 +23,41 @@ #include "pins.h" #ifndef AT90USB -#define HardwareSerial_h // trick to disable the standard HWserial + #define HardwareSerial_h // trick to disable the standard HWserial #endif #if (ARDUINO >= 100) -# include "Arduino.h" + #include "Arduino.h" #else -# include "WProgram.h" + #include "WProgram.h" #endif // Arduino < 1.0.0 does not define this, so we need to do it ourselves #ifndef analogInputToDigitalPin -# define analogInputToDigitalPin(p) ((p) + 0xA0) + #define analogInputToDigitalPin(p) ((p) + 0xA0) #endif #ifdef AT90USB -#include "HardwareSerial.h" + #include "HardwareSerial.h" #endif #include "MarlinSerial.h" #ifndef cbi -#define cbi(sfr, bit) (_SFR_BYTE(sfr) &= ~_BV(bit)) + #define cbi(sfr, bit) (_SFR_BYTE(sfr) &= ~_BV(bit)) #endif #ifndef sbi -#define sbi(sfr, bit) (_SFR_BYTE(sfr) |= _BV(bit)) + #define sbi(sfr, bit) (_SFR_BYTE(sfr) |= _BV(bit)) #endif #include "WString.h" #ifdef AT90USB - #ifdef BTENABLED - #define MYSERIAL bt - #else - #define MYSERIAL Serial - #endif // BTENABLED + #ifdef BTENABLED + #define MYSERIAL bt + #else + #define MYSERIAL Serial + #endif // BTENABLED #else #define MYSERIAL MSerial #endif @@ -86,7 +86,7 @@ extern const char echomagic[] PROGMEM; #define SERIAL_ECHOPAIR(name,value) (serial_echopair_P(PSTR(name),(value))) -#define SERIAL_EOL SERIAL_ECHOLN("") +#define SERIAL_EOL MYSERIAL.write('\n') void serial_echopair_P(const char *s_P, float v); void serial_echopair_P(const char *s_P, double v); diff --git a/Marlin/Marlin_main.cpp b/Marlin/Marlin_main.cpp index ca1af6038..b3c1702a5 100644 --- a/Marlin/Marlin_main.cpp +++ b/Marlin/Marlin_main.cpp @@ -39,6 +39,8 @@ #endif #endif // ENABLE_AUTO_BED_LEVELING +#define SERVO_LEVELING defined(ENABLE_AUTO_BED_LEVELING) && PROBE_SERVO_DEACTIVATION_DELAY > 0 + #include "ultralcd.h" #include "planner.h" #include "stepper.h" @@ -589,9 +591,9 @@ void servo_init() } #endif - #if defined (ENABLE_AUTO_BED_LEVELING) && (PROBE_SERVO_DEACTIVATION_DELAY > 0) - delay(PROBE_SERVO_DEACTIVATION_DELAY); - servos[servo_endstops[Z_AXIS]].detach(); + #if SERVO_LEVELING + delay(PROBE_SERVO_DEACTIVATION_DELAY); + servos[servo_endstops[Z_AXIS]].detach(); #endif } @@ -1182,41 +1184,41 @@ static void clean_up_after_endstop_move() { } static void engage_z_probe() { - // Engage Z Servo endstop if enabled - #ifdef SERVO_ENDSTOPS + // Engage Z Servo endstop if enabled + #ifdef SERVO_ENDSTOPS if (servo_endstops[Z_AXIS] > -1) { -#if defined (ENABLE_AUTO_BED_LEVELING) && (PROBE_SERVO_DEACTIVATION_DELAY > 0) + #if SERVO_LEVELING servos[servo_endstops[Z_AXIS]].attach(0); -#endif - servos[servo_endstops[Z_AXIS]].write(servo_endstop_angles[Z_AXIS * 2]); -#if defined (ENABLE_AUTO_BED_LEVELING) && (PROBE_SERVO_DEACTIVATION_DELAY > 0) + #endif + servos[servo_endstops[Z_AXIS]].write(servo_endstop_angles[Z_AXIS * 2]); + #if SERVO_LEVELING delay(PROBE_SERVO_DEACTIVATION_DELAY); servos[servo_endstops[Z_AXIS]].detach(); -#endif + #endif } - #endif + #endif } static void retract_z_probe() { - // Retract Z Servo endstop if enabled - #ifdef SERVO_ENDSTOPS + // Retract Z Servo endstop if enabled + #ifdef SERVO_ENDSTOPS if (servo_endstops[Z_AXIS] > -1) { -#if defined (ENABLE_AUTO_BED_LEVELING) && (PROBE_SERVO_DEACTIVATION_DELAY > 0) + #if SERVO_LEVELING servos[servo_endstops[Z_AXIS]].attach(0); -#endif - servos[servo_endstops[Z_AXIS]].write(servo_endstop_angles[Z_AXIS * 2 + 1]); -#if defined (ENABLE_AUTO_BED_LEVELING) && (PROBE_SERVO_DEACTIVATION_DELAY > 0) + #endif + servos[servo_endstops[Z_AXIS]].write(servo_endstop_angles[Z_AXIS * 2 + 1]); + #if SERVO_LEVELING delay(PROBE_SERVO_DEACTIVATION_DELAY); servos[servo_endstops[Z_AXIS]].detach(); -#endif + #endif } - #endif + #endif } enum ProbeAction { ProbeStay, ProbeEngage, ProbeRetract, ProbeEngageRetract }; /// Probe bed height at position (x,y), returns the measured z value -static float probe_pt(float x, float y, float z_before, ProbeAction retract_action=ProbeEngageRetract) { +static float probe_pt(float x, float y, float z_before, ProbeAction retract_action=ProbeEngageRetract, int verbose_level=1) { // move to right place do_blocking_move_to(current_position[X_AXIS], current_position[Y_AXIS], z_before); do_blocking_move_to(x - X_PROBE_OFFSET_FROM_EXTRUDER, y - Y_PROBE_OFFSET_FROM_EXTRUDER, current_position[Z_AXIS]); @@ -1232,18 +1234,20 @@ static float probe_pt(float x, float y, float z_before, ProbeAction retract_acti if (retract_action & ProbeRetract) retract_z_probe(); #endif - SERIAL_PROTOCOLPGM(MSG_BED); - SERIAL_PROTOCOLPGM(" x: "); - SERIAL_PROTOCOL(x); - SERIAL_PROTOCOLPGM(" y: "); - SERIAL_PROTOCOL(y); - SERIAL_PROTOCOLPGM(" z: "); - SERIAL_PROTOCOL(measured_z); - SERIAL_PROTOCOLPGM("\n"); + if (verbose_level > 2) { + SERIAL_PROTOCOLPGM(MSG_BED); + SERIAL_PROTOCOLPGM(" X: "); + SERIAL_PROTOCOL(x + 0.0001); + SERIAL_PROTOCOLPGM(" Y: "); + SERIAL_PROTOCOL(y + 0.0001); + SERIAL_PROTOCOLPGM(" Z: "); + SERIAL_PROTOCOL(measured_z + 0.0001); + SERIAL_EOL; + } return measured_z; } -#endif // #ifdef ENABLE_AUTO_BED_LEVELING +#endif // ENABLE_AUTO_BED_LEVELING static void homeaxis(int axis) { #define HOMEAXIS_DO(LETTER) \ @@ -1266,7 +1270,7 @@ static void homeaxis(int axis) { #ifndef Z_PROBE_SLED // Engage Servo endstop if enabled #ifdef SERVO_ENDSTOPS - #if defined (ENABLE_AUTO_BED_LEVELING) && (PROBE_SERVO_DEACTIVATION_DELAY > 0) + #if SERVO_LEVELING if (axis==Z_AXIS) { engage_z_probe(); } @@ -1317,7 +1321,7 @@ static void homeaxis(int axis) { servos[servo_endstops[axis]].write(servo_endstop_angles[axis * 2 + 1]); } #endif -#if defined (ENABLE_AUTO_BED_LEVELING) && (PROBE_SERVO_DEACTIVATION_DELAY > 0) +#if SERVO_LEVELING #ifndef Z_PROBE_SLED if (axis==Z_AXIS) retract_z_probe(); #endif @@ -1744,6 +1748,53 @@ inline void gcode_G28() { #ifdef ENABLE_AUTO_BED_LEVELING + // Define the possible boundaries for probing based on set limits + #define MIN_PROBE_X (max(X_MIN_POS, X_MIN_POS + X_PROBE_OFFSET_FROM_EXTRUDER)) + #define MAX_PROBE_X (min(X_MAX_POS, X_MAX_POS + X_PROBE_OFFSET_FROM_EXTRUDER)) + #define MIN_PROBE_Y (max(Y_MIN_POS, Y_MIN_POS + Y_PROBE_OFFSET_FROM_EXTRUDER)) + #define MAX_PROBE_Y (min(Y_MAX_POS, Y_MAX_POS + Y_PROBE_OFFSET_FROM_EXTRUDER)) + + #ifdef AUTO_BED_LEVELING_GRID + + #define MIN_PROBE_EDGE 20 // The probe square sides can be no smaller than this + + // Make sure probing points are reachable + + #if LEFT_PROBE_BED_POSITION < MIN_PROBE_X + #error The given LEFT_PROBE_BED_POSITION can't be reached by the probe. + #elif RIGHT_PROBE_BED_POSITION > MAX_PROBE_X + #error The given RIGHT_PROBE_BED_POSITION can't be reached by the probe. + #elif FRONT_PROBE_BED_POSITION < MIN_PROBE_Y + #error The given FRONT_PROBE_BED_POSITION can't be reached by the probe. + #elif BACK_PROBE_BED_POSITION > MAX_PROBE_Y + #error The given BACK_PROBE_BED_POSITION can't be reached by the probe. + + // Check if Probe_Offset * Grid Points is greater than Probing Range + + #elif abs(X_PROBE_OFFSET_FROM_EXTRUDER) * (AUTO_BED_LEVELING_GRID_POINTS-1) >= RIGHT_PROBE_BED_POSITION - LEFT_PROBE_BED_POSITION + #error "The X axis probing range is not enough to fit all the points defined in AUTO_BED_LEVELING_GRID_POINTS" + #elif abs(Y_PROBE_OFFSET_FROM_EXTRUDER) * (AUTO_BED_LEVELING_GRID_POINTS-1) >= BACK_PROBE_BED_POSITION - FRONT_PROBE_BED_POSITION + #error "The Y axis probing range is not enough to fit all the points defined in AUTO_BED_LEVELING_GRID_POINTS" + #endif + + #else // !AUTO_BED_LEVELING_GRID + + #if ABL_PROBE_PT_1_X < MIN_PROBE_X || ABL_PROBE_PT_1_X > MAX_PROBE_X + #error The given ABL_PROBE_PT_1_X can't be reached by the probe. + #elif ABL_PROBE_PT_2_X < MIN_PROBE_X || ABL_PROBE_PT_2_X > MAX_PROBE_X + #error The given ABL_PROBE_PT_2_X can't be reached by the probe. + #elif ABL_PROBE_PT_3_X < MIN_PROBE_X || ABL_PROBE_PT_3_X > MAX_PROBE_X + #error The given ABL_PROBE_PT_3_X can't be reached by the probe. + #elif ABL_PROBE_PT_1_Y < MIN_PROBE_Y || ABL_PROBE_PT_1_Y > MAX_PROBE_Y + #error The given ABL_PROBE_PT_1_Y can't be reached by the probe. + #elif ABL_PROBE_PT_2_Y < MIN_PROBE_Y || ABL_PROBE_PT_2_Y > MAX_PROBE_Y + #error The given ABL_PROBE_PT_2_Y can't be reached by the probe. + #elif ABL_PROBE_PT_3_Y < MIN_PROBE_Y || ABL_PROBE_PT_3_Y > MAX_PROBE_Y + #error The given ABL_PROBE_PT_3_Y can't be reached by the probe. + #endif + + #endif // !AUTO_BED_LEVELING_GRID + /** * G29: Detailed Z-Probe, probes the bed at 3 or more points. * Will fail if the printer has not been homed with G28. @@ -1816,48 +1867,36 @@ inline void gcode_G28() { return; } - // Define the possible boundaries for probing based on the set limits. - // Code above (in G28) might have these limits wrong, or I am wrong here. - #define MIN_PROBE_EDGE 10 // Edges of the probe square can be no less - const int min_probe_x = max(X_MIN_POS, X_MIN_POS + X_PROBE_OFFSET_FROM_EXTRUDER), - max_probe_x = min(X_MAX_POS, X_MAX_POS + X_PROBE_OFFSET_FROM_EXTRUDER), - min_probe_y = max(Y_MIN_POS, Y_MIN_POS + Y_PROBE_OFFSET_FROM_EXTRUDER), - max_probe_y = min(Y_MAX_POS, Y_MAX_POS + Y_PROBE_OFFSET_FROM_EXTRUDER); - int left_probe_bed_position = code_seen('L') ? code_value_long() : LEFT_PROBE_BED_POSITION, right_probe_bed_position = code_seen('R') ? code_value_long() : RIGHT_PROBE_BED_POSITION, front_probe_bed_position = code_seen('F') ? code_value_long() : FRONT_PROBE_BED_POSITION, back_probe_bed_position = code_seen('B') ? code_value_long() : BACK_PROBE_BED_POSITION; - bool left_out_l = left_probe_bed_position < min_probe_x, - left_out_r = left_probe_bed_position > right_probe_bed_position - MIN_PROBE_EDGE, - left_out = left_out_l || left_out_r, - right_out_r = right_probe_bed_position > max_probe_x, - right_out_l =right_probe_bed_position < left_probe_bed_position + MIN_PROBE_EDGE, - right_out = right_out_l || right_out_r, - front_out_f = front_probe_bed_position < min_probe_y, - front_out_b = front_probe_bed_position > back_probe_bed_position - MIN_PROBE_EDGE, - front_out = front_out_f || front_out_b, - back_out_b = back_probe_bed_position > max_probe_y, - back_out_f = back_probe_bed_position < front_probe_bed_position + MIN_PROBE_EDGE, - back_out = back_out_f || back_out_b; + bool left_out_l = left_probe_bed_position < MIN_PROBE_X, + left_out = left_out_l || left_probe_bed_position > right_probe_bed_position - MIN_PROBE_EDGE, + right_out_r = right_probe_bed_position > MAX_PROBE_X, + right_out = right_out_r || right_probe_bed_position < left_probe_bed_position + MIN_PROBE_EDGE, + front_out_f = front_probe_bed_position < MIN_PROBE_Y, + front_out = front_out_f || front_probe_bed_position > back_probe_bed_position - MIN_PROBE_EDGE, + back_out_b = back_probe_bed_position > MAX_PROBE_Y, + back_out = back_out_b || back_probe_bed_position < front_probe_bed_position + MIN_PROBE_EDGE; if (left_out || right_out || front_out || back_out) { if (left_out) { SERIAL_PROTOCOLPGM("?Probe (L)eft position out of range.\n"); - left_probe_bed_position = left_out_l ? min_probe_x : right_probe_bed_position - MIN_PROBE_EDGE; + left_probe_bed_position = left_out_l ? MIN_PROBE_X : right_probe_bed_position - MIN_PROBE_EDGE; } if (right_out) { SERIAL_PROTOCOLPGM("?Probe (R)ight position out of range.\n"); - right_probe_bed_position = right_out_r ? max_probe_x : left_probe_bed_position + MIN_PROBE_EDGE; + right_probe_bed_position = right_out_r ? MAX_PROBE_X : left_probe_bed_position + MIN_PROBE_EDGE; } if (front_out) { SERIAL_PROTOCOLPGM("?Probe (F)ront position out of range.\n"); - front_probe_bed_position = front_out_f ? min_probe_y : back_probe_bed_position - MIN_PROBE_EDGE; + front_probe_bed_position = front_out_f ? MIN_PROBE_Y : back_probe_bed_position - MIN_PROBE_EDGE; } if (back_out) { SERIAL_PROTOCOLPGM("?Probe (B)ack position out of range.\n"); - back_probe_bed_position = back_out_b ? max_probe_y : front_probe_bed_position + MIN_PROBE_EDGE; + back_probe_bed_position = back_out_b ? MAX_PROBE_Y : front_probe_bed_position + MIN_PROBE_EDGE; } return; } @@ -1935,7 +1974,7 @@ inline void gcode_G28() { else act = ProbeEngageRetract; - measured_z = probe_pt(xProbe, yProbe, z_before, act); + measured_z = probe_pt(xProbe, yProbe, z_before, act, verbose_level); mean += measured_z; @@ -1960,15 +1999,15 @@ inline void gcode_G28() { if (verbose_level) { SERIAL_PROTOCOLPGM("Eqn coefficients: a: "); - SERIAL_PROTOCOL(plane_equation_coefficients[0]); + SERIAL_PROTOCOL(plane_equation_coefficients[0] + 0.0001); SERIAL_PROTOCOLPGM(" b: "); - SERIAL_PROTOCOL(plane_equation_coefficients[1]); + SERIAL_PROTOCOL(plane_equation_coefficients[1] + 0.0001); SERIAL_PROTOCOLPGM(" d: "); - SERIAL_PROTOCOLLN(plane_equation_coefficients[2]); + SERIAL_PROTOCOLLN(plane_equation_coefficients[2] + 0.0001); if (verbose_level > 2) { SERIAL_PROTOCOLPGM("Mean of sampled points: "); SERIAL_PROTOCOL_F(mean, 6); - SERIAL_PROTOCOLPGM(" \n"); + SERIAL_EOL; } } @@ -2000,14 +2039,14 @@ inline void gcode_G28() { ; float diff = eqnBVector[ind] - mean; if (diff >= 0.0) - SERIAL_PROTOCOLPGM(" +"); // Watch column alignment in Pronterface + SERIAL_PROTOCOLPGM(" +"); // Include + for column alignment else - SERIAL_PROTOCOLPGM(" -"); + SERIAL_PROTOCOLPGM(" "); SERIAL_PROTOCOL_F(diff, 5); } // xx - SERIAL_PROTOCOLPGM("\n"); + SERIAL_EOL; } // yy - SERIAL_PROTOCOLPGM("\n"); + SERIAL_EOL; } //topo_flag @@ -2022,14 +2061,14 @@ inline void gcode_G28() { if (enhanced_g29) { // Basic Enhanced G29 - z_at_pt_1 = probe_pt(ABL_PROBE_PT_1_X, ABL_PROBE_PT_1_Y, Z_RAISE_BEFORE_PROBING, ProbeEngage); - z_at_pt_2 = probe_pt(ABL_PROBE_PT_2_X, ABL_PROBE_PT_2_Y, current_position[Z_AXIS] + Z_RAISE_BETWEEN_PROBINGS, ProbeStay); - z_at_pt_3 = probe_pt(ABL_PROBE_PT_3_X, ABL_PROBE_PT_3_Y, current_position[Z_AXIS] + Z_RAISE_BETWEEN_PROBINGS, ProbeRetract); + z_at_pt_1 = probe_pt(ABL_PROBE_PT_1_X, ABL_PROBE_PT_1_Y, Z_RAISE_BEFORE_PROBING, ProbeEngage, verbose_level); + z_at_pt_2 = probe_pt(ABL_PROBE_PT_2_X, ABL_PROBE_PT_2_Y, current_position[Z_AXIS] + Z_RAISE_BETWEEN_PROBINGS, ProbeStay, verbose_level); + z_at_pt_3 = probe_pt(ABL_PROBE_PT_3_X, ABL_PROBE_PT_3_Y, current_position[Z_AXIS] + Z_RAISE_BETWEEN_PROBINGS, ProbeRetract, verbose_level); } else { - z_at_pt_1 = probe_pt(ABL_PROBE_PT_1_X, ABL_PROBE_PT_1_Y, Z_RAISE_BEFORE_PROBING); - z_at_pt_2 = probe_pt(ABL_PROBE_PT_2_X, ABL_PROBE_PT_2_Y, current_position[Z_AXIS] + Z_RAISE_BETWEEN_PROBINGS); - z_at_pt_3 = probe_pt(ABL_PROBE_PT_3_X, ABL_PROBE_PT_3_Y, current_position[Z_AXIS] + Z_RAISE_BETWEEN_PROBINGS); + z_at_pt_1 = probe_pt(ABL_PROBE_PT_1_X, ABL_PROBE_PT_1_Y, Z_RAISE_BEFORE_PROBING, verbose_level); + z_at_pt_2 = probe_pt(ABL_PROBE_PT_2_X, ABL_PROBE_PT_2_Y, current_position[Z_AXIS] + Z_RAISE_BETWEEN_PROBINGS, verbose_level); + z_at_pt_3 = probe_pt(ABL_PROBE_PT_3_X, ABL_PROBE_PT_3_Y, current_position[Z_AXIS] + Z_RAISE_BETWEEN_PROBINGS, verbose_level); } clean_up_after_endstop_move(); set_bed_level_equation_3pts(z_at_pt_1, z_at_pt_2, z_at_pt_3); @@ -2041,7 +2080,7 @@ inline void gcode_G28() { if (verbose_level > 0) plan_bed_level_matrix.debug(" \n\nBed Level Correction Matrix:"); - // The following code correct the Z height difference from z-probe position and hotend tip position. + // Correct the Z height difference from z-probe position and hotend tip position. // The Z height on homing is measured by Z-Probe, but the probe is quite far from the hotend. // When the bed is uneven, this height must be corrected. real_z = float(st_get_position(Z_AXIS)) / axis_steps_per_unit[Z_AXIS]; //get the real Z (since the auto bed leveling is already correcting the plane) @@ -2071,12 +2110,12 @@ inline void gcode_G28() { run_z_probe(); SERIAL_PROTOCOLPGM(MSG_BED); SERIAL_PROTOCOLPGM(" X: "); - SERIAL_PROTOCOL(current_position[X_AXIS]); + SERIAL_PROTOCOL(current_position[X_AXIS] + 0.0001); SERIAL_PROTOCOLPGM(" Y: "); - SERIAL_PROTOCOL(current_position[Y_AXIS]); + SERIAL_PROTOCOL(current_position[Y_AXIS] + 0.0001); SERIAL_PROTOCOLPGM(" Z: "); - SERIAL_PROTOCOL(current_position[Z_AXIS]); - SERIAL_PROTOCOLPGM("\n"); + SERIAL_PROTOCOL(current_position[Z_AXIS] + 0.0001); + SERIAL_EOL; clean_up_after_endstop_move(); retract_z_probe(); // Retract Z Servo endstop if available @@ -2603,8 +2642,7 @@ inline void gcode_M42() { SERIAL_PROTOCOL_F(sigma,6); } - if (verbose_level > 0) - SERIAL_PROTOCOLPGM("\n"); + if (verbose_level > 0) SERIAL_EOL; plan_buffer_line(X_probe_location, Y_probe_location, Z_start_location, current_position[E_AXIS], homing_feedrate[Z_AXIS]/60, active_extruder); @@ -2626,12 +2664,12 @@ inline void gcode_M42() { if (verbose_level > 0) { SERIAL_PROTOCOLPGM("Mean: "); SERIAL_PROTOCOL_F(mean, 6); - SERIAL_PROTOCOLPGM("\n"); + SERIAL_EOL; } SERIAL_PROTOCOLPGM("Standard Deviation: "); SERIAL_PROTOCOL_F(sigma, 6); - SERIAL_PROTOCOLPGM("\n\n"); + SERIAL_EOL; SERIAL_EOL; } #endif // ENABLE_AUTO_BED_LEVELING && Z_PROBE_REPEATABILITY_TEST @@ -3438,11 +3476,11 @@ inline void gcode_M226() { if (code_seen('S')) { servo_position = code_value(); if ((servo_index >= 0) && (servo_index < NUM_SERVOS)) { - #if defined(ENABLE_AUTO_BED_LEVELING) && PROBE_SERVO_DEACTIVATION_DELAY > 0 + #if SERVO_LEVELING servos[servo_index].attach(0); #endif servos[servo_index].write(servo_position); - #if defined (ENABLE_AUTO_BED_LEVELING) && (PROBE_SERVO_DEACTIVATION_DELAY > 0) + #if SERVO_LEVELING delay(PROBE_SERVO_DEACTIVATION_DELAY); servos[servo_index].detach(); #endif diff --git a/Marlin/example_configurations/Hephestos/Configuration.h b/Marlin/example_configurations/Hephestos/Configuration.h index c1bb413aa..57d0753d9 100644 --- a/Marlin/example_configurations/Hephestos/Configuration.h +++ b/Marlin/example_configurations/Hephestos/Configuration.h @@ -82,7 +82,7 @@ Here are some standard links for getting your machine calibrated: // #define PS_DEFAULT_OFF //=========================================================================== -//============================= Thermal Settings ============================ +//============================= Thermal Settings ============================ //=========================================================================== // //--NORMAL IS 4.7kohm PULLUP!-- 1kohm pullup can be used on hotend sensor, using correct resistor and table @@ -118,6 +118,10 @@ Here are some standard links for getting your machine calibrated: // 1010 is Pt1000 with 1k pullup (non standard) // 147 is Pt100 with 4k7 pullup // 110 is Pt100 with 1k pullup (non standard) +// 998 and 999 are Dummy Tables. They will ALWAYS read 25°C or the temperature defined below. +// Use it for Testing or Development purposes. NEVER for production machine. +// #define DUMMY_THERMISTOR_998_VALUE 25 +// #define DUMMY_THERMISTOR_999_VALUE 100 #define TEMP_SENSOR_0 1 #define TEMP_SENSOR_1 0 @@ -297,9 +301,12 @@ your extruder heater takes 2 minutes to hit the target on heating. //============================= Mechanical Settings ========================= //=========================================================================== -// Uncomment the following line to enable CoreXY kinematics +// Uncomment this option to enable CoreXY kinematics // #define COREXY +// Enable this option for Toshiba steppers +// #define CONFIG_STEPPERS_TOSHIBA + // coarse Endstop Settings #define ENDSTOPPULLUPS // Comment this out (using // at the start of the line) to disable the endstop pullup resistors @@ -332,11 +339,6 @@ const bool Z_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of //#define DISABLE_MAX_ENDSTOPS //#define DISABLE_MIN_ENDSTOPS -// Disable max endstops for compatibility with endstop checking routine -#if defined(COREXY) && !defined(DISABLE_MAX_ENDSTOPS) - #define DISABLE_MAX_ENDSTOPS -#endif - // For Inverting Stepper Enable Pins (Active Low) use 0, Non Inverting (Active High) use 1 #define X_ENABLE_ON 0 #define Y_ENABLE_ON 0 @@ -389,40 +391,38 @@ const bool Z_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of #ifdef ENABLE_AUTO_BED_LEVELING -// There are 2 different ways to pick the X and Y locations to probe: - -// - "grid" mode -// Probe every point in a rectangular grid -// You must specify the rectangle, and the density of sample points -// This mode is preferred because there are more measurements. -// It used to be called ACCURATE_BED_LEVELING but "grid" is more descriptive - -// - "3-point" mode -// Probe 3 arbitrary points on the bed (that aren't colinear) -// You must specify the X & Y coordinates of all 3 points - + // There are 2 different ways to specify probing locations + // + // - "grid" mode + // Probe several points in a rectangular grid. + // You specify the rectangle and the density of sample points. + // This mode is preferred because there are more measurements. + // + // - "3-point" mode + // Probe 3 arbitrary points on the bed (that aren't colinear) + // You specify the XY coordinates of all 3 points. + + // Enable this to sample the bed in a grid (least squares solution) + // Note: this feature generates 10KB extra code size #define AUTO_BED_LEVELING_GRID - // with AUTO_BED_LEVELING_GRID, the bed is sampled in a - // AUTO_BED_LEVELING_GRID_POINTSxAUTO_BED_LEVELING_GRID_POINTS grid - // and least squares solution is calculated - // Note: this feature occupies 10'206 byte + #ifdef AUTO_BED_LEVELING_GRID - // set the rectangle in which to probe + // The edges of the rectangle in which to probe #define LEFT_PROBE_BED_POSITION 15 #define RIGHT_PROBE_BED_POSITION 170 - #define BACK_PROBE_BED_POSITION 180 #define FRONT_PROBE_BED_POSITION 20 + #define BACK_PROBE_BED_POSITION 170 - // set the number of grid points per dimension - // I wouldn't see a reason to go above 3 (=9 probing points on the bed) + // Set the number of grid points per dimension + // You probably don't need more than 3 (squared=9) #define AUTO_BED_LEVELING_GRID_POINTS 2 - #else // not AUTO_BED_LEVELING_GRID - // with no grid, just probe 3 arbitrary points. A simple cross-product - // is used to esimate the plane of the print bed + #else // !AUTO_BED_LEVELING_GRID + // Arbitrary points to probe. A simple cross-product + // is used to estimate the plane of the bed. #define ABL_PROBE_PT_1_X 15 #define ABL_PROBE_PT_1_Y 180 #define ABL_PROBE_PT_2_X 15 @@ -433,11 +433,11 @@ const bool Z_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of #endif // AUTO_BED_LEVELING_GRID - // these are the offsets to the probe relative to the extruder tip (Hotend - Probe) + // Offsets to the probe relative to the extruder tip (Hotend - Probe) // X and Y offsets must be integers - #define X_PROBE_OFFSET_FROM_EXTRUDER -25 - #define Y_PROBE_OFFSET_FROM_EXTRUDER -29 - #define Z_PROBE_OFFSET_FROM_EXTRUDER -12.35 + #define X_PROBE_OFFSET_FROM_EXTRUDER -25 // -left +right + #define Y_PROBE_OFFSET_FROM_EXTRUDER -29 // -front +behind + #define Z_PROBE_OFFSET_FROM_EXTRUDER -12.35 // -below (always!) #define Z_RAISE_BEFORE_HOMING 4 // (in mm) Raise Z before homing (G28) for Probe Clearance. // Be sure you have this distance over your Z_MAX_POS in case @@ -474,29 +474,6 @@ const bool Z_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of #endif - #ifdef AUTO_BED_LEVELING_GRID // Check if Probe_Offset * Grid Points is greater than Probing Range - #if X_PROBE_OFFSET_FROM_EXTRUDER < 0 - #if (-(X_PROBE_OFFSET_FROM_EXTRUDER * (AUTO_BED_LEVELING_GRID_POINTS-1)) >= (RIGHT_PROBE_BED_POSITION - LEFT_PROBE_BED_POSITION)) - #error "The X axis probing range is not enough to fit all the points defined in AUTO_BED_LEVELING_GRID_POINTS" - #endif - #else - #if ((X_PROBE_OFFSET_FROM_EXTRUDER * (AUTO_BED_LEVELING_GRID_POINTS-1)) >= (RIGHT_PROBE_BED_POSITION - LEFT_PROBE_BED_POSITION)) - #error "The X axis probing range is not enough to fit all the points defined in AUTO_BED_LEVELING_GRID_POINTS" - #endif - #endif - #if Y_PROBE_OFFSET_FROM_EXTRUDER < 0 - #if (-(Y_PROBE_OFFSET_FROM_EXTRUDER * (AUTO_BED_LEVELING_GRID_POINTS-1)) >= (BACK_PROBE_BED_POSITION - FRONT_PROBE_BED_POSITION)) - #error "The Y axis probing range is not enough to fit all the points defined in AUTO_BED_LEVELING_GRID_POINTS" - #endif - #else - #if ((Y_PROBE_OFFSET_FROM_EXTRUDER * (AUTO_BED_LEVELING_GRID_POINTS-1)) >= (BACK_PROBE_BED_POSITION - FRONT_PROBE_BED_POSITION)) - #error "The Y axis probing range is not enough to fit all the points defined in AUTO_BED_LEVELING_GRID_POINTS" - #endif - #endif - - - #endif - #endif // ENABLE_AUTO_BED_LEVELING @@ -536,9 +513,9 @@ const bool Z_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of #define DEFAULT_EJERK 5.0 // (mm/sec) -//=========================================================================== -//============================= Additional Features ========================= -//=========================================================================== +//============================================================================= +//============================= Additional Features =========================== +//============================================================================= // Custom M code points #define CUSTOM_M_CODES @@ -569,7 +546,12 @@ const bool Z_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of #define ABS_PREHEAT_HPB_TEMP 100 #define ABS_PREHEAT_FAN_SPEED 255 // Insert Value between 0 and 255 -//LCD and SD support +//==============================LCD and SD support============================= + +// Define your display language below. Replace (en) with your language code and uncomment. +// en, pl, fr, de, es, ru, it, pt, pt-br, fi, an, nl, ca, eu +// See also language.h +//#define LANGUAGE_INCLUDE GENERATE_LANGUAGE_INCLUDE(en) // Character based displays can have different extended charsets. #define DISPLAY_CHARSET_HD44780_JAPAN // "ääööüüß23°" @@ -583,7 +565,7 @@ const bool Z_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of //#define ENCODER_PULSES_PER_STEP 1 // Increase if you have a high resolution encoder //#define ENCODER_STEPS_PER_MENU_ITEM 5 // Set according to ENCODER_PULSES_PER_STEP or your liking //#define ULTIMAKERCONTROLLER //as available from the Ultimaker online store. -#define ULTIPANEL //the UltiPanel as on Thingiverse +//#define ULTIPANEL //the UltiPanel as on Thingiverse //#define LCD_FEEDBACK_FREQUENCY_HZ 1000 // this is the tone frequency the buzzer plays when on UI feedback. ie Screen Click //#define LCD_FEEDBACK_FREQUENCY_DURATION_MS 100 // the duration the buzzer plays the UI feedback sound. ie Screen Click @@ -750,7 +732,7 @@ const bool Z_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of #define SDSUPPORT #define ULTRA_LCD #ifdef DOGLCD // Change number of lines to match the DOG graphic display - #define LCD_WIDTH 20 + #define LCD_WIDTH 22 #define LCD_HEIGHT 5 #else #define LCD_WIDTH 20 @@ -759,7 +741,7 @@ const bool Z_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of #else //no panel but just LCD #ifdef ULTRA_LCD #ifdef DOGLCD // Change number of lines to match the 128x64 graphics display - #define LCD_WIDTH 20 + #define LCD_WIDTH 22 #define LCD_HEIGHT 5 #else #define LCD_WIDTH 16 diff --git a/Marlin/example_configurations/K8200/Configuration.h b/Marlin/example_configurations/K8200/Configuration.h index b56e05301..de0764269 100644 --- a/Marlin/example_configurations/K8200/Configuration.h +++ b/Marlin/example_configurations/K8200/Configuration.h @@ -3,13 +3,12 @@ #include "boards.h" - //=========================================================================== //============================= Getting Started ============================= //=========================================================================== /* Here are some standard links for getting your machine calibrated: - * http://reprap.org/wiki/Calibration + * http://reprap.org/wiki/Calibration * http://youtu.be/wAL9d7FgInk * http://calculator.josefprusa.cz * http://reprap.org/wiki/Triffid_Hunter%27s_Calibration_Guide @@ -39,7 +38,7 @@ Here are some standard links for getting your machine calibrated: // User-specified version info of this build to display in [Pronterface, etc] terminal window during // startup. Implementation of an idea by Prof Braino to inform user that any changes made to this // build by the user have been successfully uploaded into firmware. -#define STRING_VERSION "v1.0.2" +#define STRING_VERSION "1.0.2" #define STRING_URL "reprap.org" #define STRING_VERSION_CONFIG_H __DATE__ " " __TIME__ // build date and time #define STRING_CONFIG_H_AUTHOR "(K8200, CONSULitAS)" // Who made the changes. @@ -82,7 +81,6 @@ Here are some standard links for getting your machine calibrated: // Define this to have the electronics keep the power supply off on startup. If you don't know what this is leave it. // #define PS_DEFAULT_OFF - //=========================================================================== //============================= Thermal Settings ============================ //=========================================================================== @@ -120,6 +118,10 @@ Here are some standard links for getting your machine calibrated: // 1010 is Pt1000 with 1k pullup (non standard) // 147 is Pt100 with 4k7 pullup // 110 is Pt100 with 1k pullup (non standard) +// 998 and 999 are Dummy Tables. They will ALWAYS read 25°C or the temperature defined below. +// Use it for Testing or Development purposes. NEVER for production machine. +// #define DUMMY_THERMISTOR_998_VALUE 25 +// #define DUMMY_THERMISTOR_999_VALUE 100 #define TEMP_SENSOR_0 5 #define TEMP_SENSOR_1 0 @@ -260,7 +262,6 @@ Here are some standard links for getting your machine calibrated: #define EXTRUDE_MINTEMP 170 #define EXTRUDE_MAXLENGTH (X_MAX_LENGTH+Y_MAX_LENGTH) //prevent extrusion of very large distances. - //=========================================================================== //============================= Thermal Runaway Protection ================== //=========================================================================== @@ -305,9 +306,12 @@ your extruder heater takes 2 minutes to hit the target on heating. //============================= Mechanical Settings ========================= //=========================================================================== -// Uncomment the following line to enable CoreXY kinematics +// Uncomment this option to enable CoreXY kinematics // #define COREXY +// Enable this option for Toshiba steppers +// #define CONFIG_STEPPERS_TOSHIBA + // coarse Endstop Settings #define ENDSTOPPULLUPS // Comment this out (using // at the start of the line) to disable the endstop pullup resistors @@ -340,11 +344,6 @@ const bool Z_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of #define DISABLE_MAX_ENDSTOPS //#define DISABLE_MIN_ENDSTOPS -// Disable max endstops for compatibility with endstop checking routine -#if defined(COREXY) && !defined(DISABLE_MAX_ENDSTOPS) - #define DISABLE_MAX_ENDSTOPS -#endif - // For Inverting Stepper Enable Pins (Active Low) use 0, Non Inverting (Active High) use 1 #define X_ENABLE_ON 0 #define Y_ENABLE_ON 0 @@ -397,40 +396,38 @@ const bool Z_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of #ifdef ENABLE_AUTO_BED_LEVELING -// There are 2 different ways to pick the X and Y locations to probe: - -// - "grid" mode -// Probe every point in a rectangular grid -// You must specify the rectangle, and the density of sample points -// This mode is preferred because there are more measurements. -// It used to be called ACCURATE_BED_LEVELING but "grid" is more descriptive - -// - "3-point" mode -// Probe 3 arbitrary points on the bed (that aren't colinear) -// You must specify the X & Y coordinates of all 3 points - + // There are 2 different ways to specify probing locations + // + // - "grid" mode + // Probe several points in a rectangular grid. + // You specify the rectangle and the density of sample points. + // This mode is preferred because there are more measurements. + // + // - "3-point" mode + // Probe 3 arbitrary points on the bed (that aren't colinear) + // You specify the XY coordinates of all 3 points. + + // Enable this to sample the bed in a grid (least squares solution) + // Note: this feature generates 10KB extra code size #define AUTO_BED_LEVELING_GRID - // with AUTO_BED_LEVELING_GRID, the bed is sampled in a - // AUTO_BED_LEVELING_GRID_POINTSxAUTO_BED_LEVELING_GRID_POINTS grid - // and least squares solution is calculated - // Note: this feature occupies 10'206 byte + #ifdef AUTO_BED_LEVELING_GRID - // set the rectangle in which to probe + // The edges of the rectangle in which to probe #define LEFT_PROBE_BED_POSITION 15 #define RIGHT_PROBE_BED_POSITION 170 - #define BACK_PROBE_BED_POSITION 180 #define FRONT_PROBE_BED_POSITION 20 + #define BACK_PROBE_BED_POSITION 170 - // set the number of grid points per dimension - // I wouldn't see a reason to go above 3 (=9 probing points on the bed) + // Set the number of grid points per dimension + // You probably don't need more than 3 (squared=9) #define AUTO_BED_LEVELING_GRID_POINTS 2 - #else // not AUTO_BED_LEVELING_GRID - // with no grid, just probe 3 arbitrary points. A simple cross-product - // is used to esimate the plane of the print bed + #else // !AUTO_BED_LEVELING_GRID + // Arbitrary points to probe. A simple cross-product + // is used to estimate the plane of the bed. #define ABL_PROBE_PT_1_X 15 #define ABL_PROBE_PT_1_Y 180 #define ABL_PROBE_PT_2_X 15 @@ -441,11 +438,11 @@ const bool Z_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of #endif // AUTO_BED_LEVELING_GRID - // these are the offsets to the probe relative to the extruder tip (Hotend - Probe) + // Offsets to the probe relative to the extruder tip (Hotend - Probe) // X and Y offsets must be integers - #define X_PROBE_OFFSET_FROM_EXTRUDER -25 - #define Y_PROBE_OFFSET_FROM_EXTRUDER -29 - #define Z_PROBE_OFFSET_FROM_EXTRUDER -12.35 + #define X_PROBE_OFFSET_FROM_EXTRUDER -25 // -left +right + #define Y_PROBE_OFFSET_FROM_EXTRUDER -29 // -front +behind + #define Z_PROBE_OFFSET_FROM_EXTRUDER -12.35 // -below (always!) #define Z_RAISE_BEFORE_HOMING 4 // (in mm) Raise Z before homing (G28) for Probe Clearance. // Be sure you have this distance over your Z_MAX_POS in case @@ -482,29 +479,6 @@ const bool Z_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of #endif - #ifdef AUTO_BED_LEVELING_GRID // Check if Probe_Offset * Grid Points is greater than Probing Range - #if X_PROBE_OFFSET_FROM_EXTRUDER < 0 - #if (-(X_PROBE_OFFSET_FROM_EXTRUDER * (AUTO_BED_LEVELING_GRID_POINTS-1)) >= (RIGHT_PROBE_BED_POSITION - LEFT_PROBE_BED_POSITION)) - #error "The X axis probing range is not enough to fit all the points defined in AUTO_BED_LEVELING_GRID_POINTS" - #endif - #else - #if ((X_PROBE_OFFSET_FROM_EXTRUDER * (AUTO_BED_LEVELING_GRID_POINTS-1)) >= (RIGHT_PROBE_BED_POSITION - LEFT_PROBE_BED_POSITION)) - #error "The X axis probing range is not enough to fit all the points defined in AUTO_BED_LEVELING_GRID_POINTS" - #endif - #endif - #if Y_PROBE_OFFSET_FROM_EXTRUDER < 0 - #if (-(Y_PROBE_OFFSET_FROM_EXTRUDER * (AUTO_BED_LEVELING_GRID_POINTS-1)) >= (BACK_PROBE_BED_POSITION - FRONT_PROBE_BED_POSITION)) - #error "The Y axis probing range is not enough to fit all the points defined in AUTO_BED_LEVELING_GRID_POINTS" - #endif - #else - #if ((Y_PROBE_OFFSET_FROM_EXTRUDER * (AUTO_BED_LEVELING_GRID_POINTS-1)) >= (BACK_PROBE_BED_POSITION - FRONT_PROBE_BED_POSITION)) - #error "The Y axis probing range is not enough to fit all the points defined in AUTO_BED_LEVELING_GRID_POINTS" - #endif - #endif - - - #endif - #endif // ENABLE_AUTO_BED_LEVELING @@ -544,9 +518,9 @@ const bool Z_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of #define DEFAULT_EJERK 5.0 // (mm/sec) -//=========================================================================== -//============================= Additional Features ========================= -//=========================================================================== +//============================================================================= +//============================= Additional Features =========================== +//============================================================================= // Custom M code points #define CUSTOM_M_CODES @@ -577,9 +551,12 @@ const bool Z_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of #define ABS_PREHEAT_HPB_TEMP 60 #define ABS_PREHEAT_FAN_SPEED 0 // Insert Value between 0 and 255 -//LCD and SD support +//==============================LCD and SD support============================= -// VM8201 (LCD Option for K8200) uses "DISPLAY_CHARSET_HD44870_JAPAN" and "ULTIMAKERCONTROLLER" +// Define your display language below. Replace (en) with your language code and uncomment. +// en, pl, fr, de, es, ru, it, pt, pt-br, fi, an, nl, ca, eu +// See also language.h +//#define LANGUAGE_INCLUDE GENERATE_LANGUAGE_INCLUDE(en) // Character based displays can have different extended charsets. #define DISPLAY_CHARSET_HD44780_JAPAN // "ääööüüß23°" @@ -760,7 +737,7 @@ const bool Z_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of #define SDSUPPORT #define ULTRA_LCD #ifdef DOGLCD // Change number of lines to match the DOG graphic display - #define LCD_WIDTH 20 + #define LCD_WIDTH 22 #define LCD_HEIGHT 5 #else #define LCD_WIDTH 20 @@ -769,7 +746,7 @@ const bool Z_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of #else //no panel but just LCD #ifdef ULTRA_LCD #ifdef DOGLCD // Change number of lines to match the 128x64 graphics display - #define LCD_WIDTH 20 + #define LCD_WIDTH 22 #define LCD_HEIGHT 5 #else #define LCD_WIDTH 16 diff --git a/Marlin/example_configurations/SCARA/Configuration.h b/Marlin/example_configurations/SCARA/Configuration.h index 45584c162..f29a9103d 100644 --- a/Marlin/example_configurations/SCARA/Configuration.h +++ b/Marlin/example_configurations/SCARA/Configuration.h @@ -3,13 +3,12 @@ #include "boards.h" - //=========================================================================== //============================= Getting Started ============================= //=========================================================================== /* Here are some standard links for getting your machine calibrated: - * http://reprap.org/wiki/Calibration + * http://reprap.org/wiki/Calibration * http://youtu.be/wAL9d7FgInk * http://calculator.josefprusa.cz * http://reprap.org/wiki/Triffid_Hunter%27s_Calibration_Guide @@ -18,7 +17,6 @@ Here are some standard links for getting your machine calibrated: * http://www.thingiverse.com/thing:298812 */ - // This configuration file contains the basic settings. // Advanced settings can be found in Configuration_adv.h // BASIC SETTINGS: select your board type, temperature sensor type, axis scaling, and endstop configuration @@ -52,7 +50,7 @@ Here are some standard links for getting your machine calibrated: #define L2_2 sq(Linkage_2) // do not change //=========================================================================== -//========================= SCARA Settings end ================================== +//========================= SCARA Settings end ============================== //=========================================================================== // User-specified version info of this build to display in [Pronterface, etc] terminal window during @@ -70,7 +68,6 @@ Here are some standard links for getting your machine calibrated: // Serial port 0 is still used by the Arduino bootloader regardless of this setting. #define SERIAL_PORT 0 -// This determines the communication speed of the printer // This determines the communication speed of the printer #define BAUDRATE 250000 @@ -125,6 +122,7 @@ Here are some standard links for getting your machine calibrated: // 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 // @@ -138,6 +136,10 @@ Here are some standard links for getting your machine calibrated: // 1010 is Pt1000 with 1k pullup (non standard) // 147 is Pt100 with 4k7 pullup // 110 is Pt100 with 1k pullup (non standard) +// 998 and 999 are Dummy Tables. They will ALWAYS read 25°C or the temperature defined below. +// Use it for Testing or Development purposes. NEVER for production machine. +// #define DUMMY_THERMISTOR_998_VALUE 25 +// #define DUMMY_THERMISTOR_999_VALUE 100 #define TEMP_SENSOR_0 1 #define TEMP_SENSOR_1 0 @@ -189,31 +191,24 @@ Here are some standard links for getting your machine calibrated: // Comment the following line to disable PID and enable bang-bang. #define PIDTEMP #define BANG_MAX 255 // limits current to nozzle while in bang-bang mode; 255=full current -#define PID_MAX 255 // limits current to nozzle while PID is active (see PID_FUNCTIONAL_RANGE below); 255=full current +#define PID_MAX BANG_MAX // limits current to nozzle while PID is active (see PID_FUNCTIONAL_RANGE below); 255=full current #ifdef PIDTEMP //#define PID_DEBUG // Sends debug data to the serial port. //#define PID_OPENLOOP 1 // Puts PID in open loop. M104/M140 sets the output power from 0 to PID_MAX + //#define SLOW_PWM_HEATERS // PWM with very low frequency (roughly 0.125Hz=8s) and minimum state time of approximately 1s useful for heaters driven by a relay + //#define PID_PARAMS_PER_EXTRUDER // Uses separate PID parameters for each extruder (useful for mismatched extruders) + // Set/get with gcode: M301 E[extruder number, 0-2] #define PID_FUNCTIONAL_RANGE 20 // If the temperature difference between the target temperature and the actual temperature // is more then PID_FUNCTIONAL_RANGE then the PID will be shut off and the heater will be set to min/max. - #define PID_INTEGRAL_DRIVE_MAX 255 //limit for the integral term + #define PID_INTEGRAL_DRIVE_MAX PID_MAX //limit for the integral term #define K1 0.95 //smoothing factor within the PID - #define PID_dT ((OVERSAMPLENR * 8.0)/(F_CPU / 64.0 / 256.0)) //sampling period of the temperature routine + #define PID_dT ((OVERSAMPLENR * 10.0)/(F_CPU / 64.0 / 256.0)) //sampling period of the temperature routine // If you are using a pre-configured hotend then you can use one of the value sets by uncommenting it // Ultimaker - // #define DEFAULT_Kp 22.2 - // #define DEFAULT_Ki 1.08 - // #define DEFAULT_Kd 114 - - // Jhead MK5: From Autotune - // #define DEFAULT_Kp 20.92 - // #define DEFAULT_Ki 1.51 - // #define DEFAULT_Kd 72.34 - - //Merlin Hotend: From Autotune - #define DEFAULT_Kp 24.5 - #define DEFAULT_Ki 1.72 - #define DEFAULT_Kd 87.73 +// #define DEFAULT_Kp 22.2 +// #define DEFAULT_Ki 1.08 +// #define DEFAULT_Kd 114 // MakerGear // #define DEFAULT_Kp 7.0 @@ -221,9 +216,20 @@ Here are some standard links for getting your machine calibrated: // #define DEFAULT_Kd 12 // Mendel Parts V9 on 12V - // #define DEFAULT_Kp 63.0 - // #define DEFAULT_Ki 2.25 - // #define DEFAULT_Kd 440 +// #define DEFAULT_Kp 63.0 +// #define DEFAULT_Ki 2.25 +// #define DEFAULT_Kd 440 + +// Jhead MK5: From Autotune +// #define DEFAULT_Kp 20.92 +// #define DEFAULT_Ki 1.51 +// #define DEFAULT_Kd 72.34 + +// Merlin Hotend: From Autotune + #define DEFAULT_Kp 24.5 + #define DEFAULT_Ki 1.72 + #define DEFAULT_Kd 87.73 + #endif // PIDTEMP //=========================================================================== @@ -251,9 +257,9 @@ Here are some standard links for getting your machine calibrated: #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) - // #define DEFAULT_bedKp 10.00 - // #define DEFAULT_bedKi .023 - // #define DEFAULT_bedKd 305.4 +// #define DEFAULT_bedKp 10.00 +// #define DEFAULT_bedKi .023 +// #define DEFAULT_bedKd 305.4 //120v 250W silicone heater into 4mm borosilicate (MendelMax 1.5+) //from pidautotune @@ -271,7 +277,6 @@ Here are some standard links for getting your machine calibrated: #endif // PIDTEMPBED - //this prevents dangerous Extruder moves, i.e. if the temperature is under the limit //can be software-disabled for whatever purposes by //#define PREVENT_DANGEROUS_EXTRUDE @@ -281,7 +286,6 @@ Here are some standard links for getting your machine calibrated: #define EXTRUDE_MINTEMP 150 #define EXTRUDE_MAXLENGTH (X_MAX_LENGTH+Y_MAX_LENGTH) //prevent extrusion of very large distances. - //=========================================================================== //============================= Thermal Runaway Protection ================== //=========================================================================== @@ -323,12 +327,15 @@ your extruder heater takes 2 minutes to hit the target on heating. //=========================================================================== -//============================ Mechanical Settings ========================== +//============================= Mechanical Settings ========================= //=========================================================================== -// Uncomment the following line to enable CoreXY kinematics +// Uncomment this option to enable CoreXY kinematics // #define COREXY +// Enable this option for Toshiba steppers +// #define CONFIG_STEPPERS_TOSHIBA + // coarse Endstop Settings //#define ENDSTOPPULLUPS // Comment this out (using // at the start of the line) to disable the endstop pullup resistors @@ -361,11 +368,6 @@ const bool Z_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of //#define DISABLE_MAX_ENDSTOPS //#define DISABLE_MIN_ENDSTOPS -// Disable max endstops for compatibility with endstop checking routine -#if defined(COREXY) && !defined(DISABLE_MAX_ENDSTOPS) - #define DISABLE_MAX_ENDSTOPS -#endif - // For Inverting Stepper Enable Pins (Active Low) use 0, Non Inverting (Active High) use 1 #define X_ENABLE_ON 0 #define Y_ENABLE_ON 0 @@ -388,7 +390,7 @@ const bool Z_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of #define INVERT_E3_DIR false // for direct drive extruder v9 set to true, for geared extruder set to false // ENDSTOP SETTINGS: -// Sets direction of endstop s when homing; 1=MAX, -1=MIN +// Sets direction of endstops when homing; 1=MAX, -1=MIN #define X_HOME_DIR 1 #define Y_HOME_DIR 1 #define Z_HOME_DIR -1 @@ -414,43 +416,42 @@ const bool Z_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of //=========================================================================== //#define ENABLE_AUTO_BED_LEVELING // Delete the comment to enable (remove // at the start of the line) +#define Z_PROBE_REPEATABILITY_TEST // If not commented out, Z-Probe Repeatability test will be included if Auto Bed Leveling is Enabled. #ifdef ENABLE_AUTO_BED_LEVELING -// There are 2 different ways to pick the X and Y locations to probe: - -// - "grid" mode -// Probe every point in a rectangular grid -// You must specify the rectangle, and the density of sample points -// This mode is preferred because there are more measurements. -// It used to be called ACCURATE_BED_LEVELING but "grid" is more descriptive - -// - "3-point" mode -// Probe 3 arbitrary points on the bed (that aren't colinear) -// You must specify the X & Y coordinates of all 3 points - + // There are 2 different ways to specify probing locations + // + // - "grid" mode + // Probe several points in a rectangular grid. + // You specify the rectangle and the density of sample points. + // This mode is preferred because there are more measurements. + // + // - "3-point" mode + // Probe 3 arbitrary points on the bed (that aren't colinear) + // You specify the XY coordinates of all 3 points. + + // Enable this to sample the bed in a grid (least squares solution) + // Note: this feature generates 10KB extra code size #define AUTO_BED_LEVELING_GRID - // with AUTO_BED_LEVELING_GRID, the bed is sampled in a - // AUTO_BED_LEVELING_GRID_POINTSxAUTO_BED_LEVELING_GRID_POINTS grid - // and least squares solution is calculated - // Note: this feature occupies 10'206 byte + #ifdef AUTO_BED_LEVELING_GRID - // set the rectangle in which to probe + // The edges of the rectangle in which to probe #define LEFT_PROBE_BED_POSITION 15 #define RIGHT_PROBE_BED_POSITION 170 - #define BACK_PROBE_BED_POSITION 180 #define FRONT_PROBE_BED_POSITION 20 + #define BACK_PROBE_BED_POSITION 170 - // set the number of grid points per dimension - // I wouldn't see a reason to go above 3 (=9 probing points on the bed) + // Set the number of grid points per dimension + // You probably don't need more than 3 (squared=9) #define AUTO_BED_LEVELING_GRID_POINTS 2 - #else // not AUTO_BED_LEVELING_GRID - // with no grid, just probe 3 arbitrary points. A simple cross-product - // is used to esimate the plane of the print bed + #else // !AUTO_BED_LEVELING_GRID + // Arbitrary points to probe. A simple cross-product + // is used to estimate the plane of the bed. #define ABL_PROBE_PT_1_X 15 #define ABL_PROBE_PT_1_Y 180 #define ABL_PROBE_PT_2_X 15 @@ -461,10 +462,11 @@ const bool Z_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of #endif // AUTO_BED_LEVELING_GRID - // these are the offsets to the probe relative to the extruder tip (Hotend - Probe) - #define X_PROBE_OFFSET_FROM_EXTRUDER -25 - #define Y_PROBE_OFFSET_FROM_EXTRUDER -29 - #define Z_PROBE_OFFSET_FROM_EXTRUDER -12.35 + // Offsets to the probe relative to the extruder tip (Hotend - Probe) + // X and Y offsets must be integers + #define X_PROBE_OFFSET_FROM_EXTRUDER -25 // -left +right + #define Y_PROBE_OFFSET_FROM_EXTRUDER -29 // -front +behind + #define Z_PROBE_OFFSET_FROM_EXTRUDER -12.35 // -below (always!) //#define Z_RAISE_BEFORE_HOMING 4 // (in mm) Raise Z before homing (G28) for Probe Clearance. // Be sure you have this distance over your Z_MAX_POS in case @@ -474,6 +476,8 @@ const bool Z_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of #define Z_RAISE_BEFORE_PROBING 15 //How much the extruder will be raised before traveling to the first probing point. #define Z_RAISE_BETWEEN_PROBINGS 5 //How much the extruder will be raised when traveling from between next probing points + //#define Z_PROBE_SLED // turn on if you have a z-probe mounted on a sled like those designed by Charles Bell + //#define SLED_DOCKING_OFFSET 5 // the extra distance the X axis must travel to pickup the sled. 0 should be fine but you can push it further if you'd like. //If defined, the Probe servo will be turned on only during movement and then turned off to avoid jerk //The value is the delay to turn the servo off after powered on - depends on the servo speed; 300ms is good value, but you can try lower it. @@ -528,7 +532,7 @@ const bool Z_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of #define DEFAULT_RETRACT_ACCELERATION 2000 // X, Y, Z and E max acceleration in mm/s^2 for retracts // Offset of the extruders (uncomment if using more than one and relying on firmware to position when changing). -// The offset has to be X=0, Y=0 for extruder 0 hotend (default extruder). +// The offset has to be X=0, Y=0 for the extruder 0 hotend (default extruder). // For the other hotends it is their distance from the extruder 0 hotend. // #define EXTRUDER_OFFSET_X {0.0, 20.00} // (in mm) for each extruder, offset of the hotend on the X axis // #define EXTRUDER_OFFSET_Y {0.0, 5.00} // (in mm) for each extruder, offset of the hotend on the Y axis @@ -539,9 +543,9 @@ const bool Z_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of #define DEFAULT_EJERK 3 // (mm/sec) -//=========================================================================== -//============================= Additional Features ========================= -//=========================================================================== +//============================================================================= +//============================= Additional Features =========================== +//============================================================================= // Custom M code points //#define CUSTOM_M_CODES @@ -572,7 +576,12 @@ const bool Z_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of #define ABS_PREHEAT_HPB_TEMP 100 #define ABS_PREHEAT_FAN_SPEED 255 // Insert Value between 0 and 255 -//LCD and SD support +//==============================LCD and SD support============================= + +// Define your display language below. Replace (en) with your language code and uncomment. +// en, pl, fr, de, es, ru, it, pt, pt-br, fi, an, nl, ca, eu +// See also language.h +//#define LANGUAGE_INCLUDE GENERATE_LANGUAGE_INCLUDE(en) // Character based displays can have different extended charsets. #define DISPLAY_CHARSET_HD44780_JAPAN // "ääööüüß23°" @@ -738,11 +747,13 @@ const bool Z_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of // Shift register panels // --------------------- // 2 wire Non-latching LCD SR from: -// https://bitbucket.org/fmalpartida/new-liquidcrystal/wiki/schematics#!shiftregister-connection -//#define SR_LCD -#ifdef SR_LCD - #define SR_LCD_2W_NL // Non latching 2 wire shift register - //#define NEWPANEL +// https://bitbucket.org/fmalpartida/new-liquidcrystal/wiki/schematics#!shiftregister-connection + +//#define SAV_3DLCD +#ifdef SAV_3DLCD + #define SR_LCD_2W_NL // Non latching 2 wire shiftregister + #define NEWPANEL + #define ULTIPANEL #endif @@ -751,7 +762,7 @@ const bool Z_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of #define SDSUPPORT #define ULTRA_LCD #ifdef DOGLCD // Change number of lines to match the DOG graphic display - #define LCD_WIDTH 20 + #define LCD_WIDTH 22 #define LCD_HEIGHT 5 #else #define LCD_WIDTH 20 @@ -760,7 +771,7 @@ const bool Z_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of #else //no panel but just LCD #ifdef ULTRA_LCD #ifdef DOGLCD // Change number of lines to match the 128x64 graphics display - #define LCD_WIDTH 20 + #define LCD_WIDTH 22 #define LCD_HEIGHT 5 #else #define LCD_WIDTH 16 @@ -844,13 +855,13 @@ const bool Z_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of // Uncomment below to enable //#define FILAMENT_SENSOR -#define FILAMENT_SENSOR_EXTRUDER_NUM 0 //The number of the extruder that has the filament sensor (0,1,2) -#define MEASUREMENT_DELAY_CM 14 //measurement delay in cm. This is the distance from filament sensor to middle of barrel +#define FILAMENT_SENSOR_EXTRUDER_NUM 0 //The number of the extruder that has the filament sensor (0,1,2) +#define MEASUREMENT_DELAY_CM 14 //measurement delay in cm. This is the distance from filament sensor to middle of barrel #define DEFAULT_NOMINAL_FILAMENT_DIA 3.0 //Enter the diameter (in mm) of the filament generally used (3.0 mm or 1.75 mm) - this is then used in the slicer software. Used for sensor reading validation #define MEASURED_UPPER_LIMIT 3.30 //upper limit factor used for sensor reading validation in mm #define MEASURED_LOWER_LIMIT 1.90 //lower limit factor for sensor reading validation in mm -#define MAX_MEASUREMENT_DELAY 20 //delay buffer size in bytes (1 byte = 1cm)- limits maximum measurement delay allowable (must be larger than MEASUREMENT_DELAY_CM and lower number saves RAM) +#define MAX_MEASUREMENT_DELAY 20 //delay buffer size in bytes (1 byte = 1cm)- limits maximum measurement delay allowable (must be larger than MEASUREMENT_DELAY_CM and lower number saves RAM) //defines used in the code #define DEFAULT_MEASURED_FILAMENT_DIA DEFAULT_NOMINAL_FILAMENT_DIA //set measured to nominal initially diff --git a/Marlin/example_configurations/WITBOX/Configuration.h b/Marlin/example_configurations/WITBOX/Configuration.h index e240abfed..4e9c748c8 100644 --- a/Marlin/example_configurations/WITBOX/Configuration.h +++ b/Marlin/example_configurations/WITBOX/Configuration.h @@ -3,13 +3,12 @@ #include "boards.h" - //=========================================================================== //============================= Getting Started ============================= //=========================================================================== /* Here are some standard links for getting your machine calibrated: - * http://reprap.org/wiki/Calibration + * http://reprap.org/wiki/Calibration * http://youtu.be/wAL9d7FgInk * http://calculator.josefprusa.cz * http://reprap.org/wiki/Triffid_Hunter%27s_Calibration_Guide @@ -18,7 +17,6 @@ Here are some standard links for getting your machine calibrated: * http://www.thingiverse.com/thing:298812 */ - // This configuration file contains the basic settings. // Advanced settings can be found in Configuration_adv.h // BASIC SETTINGS: select your board type, temperature sensor type, axis scaling, and endstop configuration @@ -83,7 +81,6 @@ Here are some standard links for getting your machine calibrated: // Define this to have the electronics keep the power supply off on startup. If you don't know what this is leave it. // #define PS_DEFAULT_OFF - //=========================================================================== //============================= Thermal Settings ============================ //=========================================================================== @@ -121,6 +118,10 @@ Here are some standard links for getting your machine calibrated: // 1010 is Pt1000 with 1k pullup (non standard) // 147 is Pt100 with 4k7 pullup // 110 is Pt100 with 1k pullup (non standard) +// 998 and 999 are Dummy Tables. They will ALWAYS read 25°C or the temperature defined below. +// Use it for Testing or Development purposes. NEVER for production machine. +// #define DUMMY_THERMISTOR_998_VALUE 25 +// #define DUMMY_THERMISTOR_999_VALUE 100 #define TEMP_SENSOR_0 1 #define TEMP_SENSOR_1 0 @@ -164,7 +165,6 @@ Here are some standard links for getting your machine calibrated: //#define EXTRUDER_WATTS (12.0*12.0/6.7) // P=I^2/R //#define BED_WATTS (12.0*12.0/1.1) // P=I^2/R - //=========================================================================== //============================= PID Settings ================================ //=========================================================================== @@ -184,7 +184,7 @@ Here are some standard links for getting your machine calibrated: // is more then PID_FUNCTIONAL_RANGE then the PID will be shut off and the heater will be set to min/max. #define PID_INTEGRAL_DRIVE_MAX PID_MAX //limit for the integral term #define K1 0.95 //smoothing factor within the PID - #define PID_dT ((OVERSAMPLENR * 8.0)/(F_CPU / 64.0 / 256.0)) //sampling period of the temperature routine + #define PID_dT ((OVERSAMPLENR * 10.0)/(F_CPU / 64.0 / 256.0)) //sampling period of the temperature routine // If you are using a pre-configured hotend then you can use one of the value sets by uncommenting it // Ultimaker @@ -256,7 +256,6 @@ Here are some standard links for getting your machine calibrated: #define EXTRUDE_MINTEMP 170 #define EXTRUDE_MAXLENGTH (X_MAX_LENGTH+Y_MAX_LENGTH) //prevent extrusion of very large distances. - //=========================================================================== //============================= Thermal Runaway Protection ================== //=========================================================================== @@ -301,9 +300,12 @@ your extruder heater takes 2 minutes to hit the target on heating. //============================= Mechanical Settings ========================= //=========================================================================== -// Uncomment the following line to enable CoreXY kinematics +// Uncomment this option to enable CoreXY kinematics // #define COREXY +// Enable this option for Toshiba steppers +// #define CONFIG_STEPPERS_TOSHIBA + // coarse Endstop Settings #define ENDSTOPPULLUPS // Comment this out (using // at the start of the line) to disable the endstop pullup resistors @@ -336,11 +338,6 @@ const bool Z_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of //#define DISABLE_MAX_ENDSTOPS //#define DISABLE_MIN_ENDSTOPS -// Disable max endstops for compatibility with endstop checking routine -#if defined(COREXY) && !defined(DISABLE_MAX_ENDSTOPS) - #define DISABLE_MAX_ENDSTOPS -#endif - // For Inverting Stepper Enable Pins (Active Low) use 0, Non Inverting (Active High) use 1 #define X_ENABLE_ON 0 #define Y_ENABLE_ON 0 @@ -393,40 +390,38 @@ const bool Z_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of #ifdef ENABLE_AUTO_BED_LEVELING -// There are 2 different ways to pick the X and Y locations to probe: - -// - "grid" mode -// Probe every point in a rectangular grid -// You must specify the rectangle, and the density of sample points -// This mode is preferred because there are more measurements. -// It used to be called ACCURATE_BED_LEVELING but "grid" is more descriptive - -// - "3-point" mode -// Probe 3 arbitrary points on the bed (that aren't colinear) -// You must specify the X & Y coordinates of all 3 points - + // There are 2 different ways to specify probing locations + // + // - "grid" mode + // Probe several points in a rectangular grid. + // You specify the rectangle and the density of sample points. + // This mode is preferred because there are more measurements. + // + // - "3-point" mode + // Probe 3 arbitrary points on the bed (that aren't colinear) + // You specify the XY coordinates of all 3 points. + + // Enable this to sample the bed in a grid (least squares solution) + // Note: this feature generates 10KB extra code size #define AUTO_BED_LEVELING_GRID - // with AUTO_BED_LEVELING_GRID, the bed is sampled in a - // AUTO_BED_LEVELING_GRID_POINTSxAUTO_BED_LEVELING_GRID_POINTS grid - // and least squares solution is calculated - // Note: this feature occupies 10'206 byte + #ifdef AUTO_BED_LEVELING_GRID - // set the rectangle in which to probe + // The edges of the rectangle in which to probe #define LEFT_PROBE_BED_POSITION 15 #define RIGHT_PROBE_BED_POSITION 170 - #define BACK_PROBE_BED_POSITION 180 #define FRONT_PROBE_BED_POSITION 20 + #define BACK_PROBE_BED_POSITION 170 - // set the number of grid points per dimension - // I wouldn't see a reason to go above 3 (=9 probing points on the bed) + // Set the number of grid points per dimension + // You probably don't need more than 3 (squared=9) #define AUTO_BED_LEVELING_GRID_POINTS 2 - #else // not AUTO_BED_LEVELING_GRID - // with no grid, just probe 3 arbitrary points. A simple cross-product - // is used to esimate the plane of the print bed + #else // !AUTO_BED_LEVELING_GRID + // Arbitrary points to probe. A simple cross-product + // is used to estimate the plane of the bed. #define ABL_PROBE_PT_1_X 15 #define ABL_PROBE_PT_1_Y 180 #define ABL_PROBE_PT_2_X 15 @@ -437,11 +432,11 @@ const bool Z_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of #endif // AUTO_BED_LEVELING_GRID - // these are the offsets to the probe relative to the extruder tip (Hotend - Probe) + // Offsets to the probe relative to the extruder tip (Hotend - Probe) // X and Y offsets must be integers - #define X_PROBE_OFFSET_FROM_EXTRUDER -25 - #define Y_PROBE_OFFSET_FROM_EXTRUDER -29 - #define Z_PROBE_OFFSET_FROM_EXTRUDER -12.35 + #define X_PROBE_OFFSET_FROM_EXTRUDER -25 // -left +right + #define Y_PROBE_OFFSET_FROM_EXTRUDER -29 // -front +behind + #define Z_PROBE_OFFSET_FROM_EXTRUDER -12.35 // -below (always!) #define Z_RAISE_BEFORE_HOMING 4 // (in mm) Raise Z before homing (G28) for Probe Clearance. // Be sure you have this distance over your Z_MAX_POS in case @@ -478,29 +473,6 @@ const bool Z_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of #endif - #ifdef AUTO_BED_LEVELING_GRID // Check if Probe_Offset * Grid Points is greater than Probing Range - #if X_PROBE_OFFSET_FROM_EXTRUDER < 0 - #if (-(X_PROBE_OFFSET_FROM_EXTRUDER * (AUTO_BED_LEVELING_GRID_POINTS-1)) >= (RIGHT_PROBE_BED_POSITION - LEFT_PROBE_BED_POSITION)) - #error "The X axis probing range is not enough to fit all the points defined in AUTO_BED_LEVELING_GRID_POINTS" - #endif - #else - #if ((X_PROBE_OFFSET_FROM_EXTRUDER * (AUTO_BED_LEVELING_GRID_POINTS-1)) >= (RIGHT_PROBE_BED_POSITION - LEFT_PROBE_BED_POSITION)) - #error "The X axis probing range is not enough to fit all the points defined in AUTO_BED_LEVELING_GRID_POINTS" - #endif - #endif - #if Y_PROBE_OFFSET_FROM_EXTRUDER < 0 - #if (-(Y_PROBE_OFFSET_FROM_EXTRUDER * (AUTO_BED_LEVELING_GRID_POINTS-1)) >= (BACK_PROBE_BED_POSITION - FRONT_PROBE_BED_POSITION)) - #error "The Y axis probing range is not enough to fit all the points defined in AUTO_BED_LEVELING_GRID_POINTS" - #endif - #else - #if ((Y_PROBE_OFFSET_FROM_EXTRUDER * (AUTO_BED_LEVELING_GRID_POINTS-1)) >= (BACK_PROBE_BED_POSITION - FRONT_PROBE_BED_POSITION)) - #error "The Y axis probing range is not enough to fit all the points defined in AUTO_BED_LEVELING_GRID_POINTS" - #endif - #endif - - - #endif - #endif // ENABLE_AUTO_BED_LEVELING @@ -540,9 +512,9 @@ const bool Z_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of #define DEFAULT_EJERK 5.0 // (mm/sec) -//=========================================================================== -//============================ Additional Features ========================== -//=========================================================================== +//============================================================================= +//============================= Additional Features =========================== +//============================================================================= // Custom M code points #define CUSTOM_M_CODES @@ -573,7 +545,12 @@ const bool Z_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of #define ABS_PREHEAT_HPB_TEMP 100 #define ABS_PREHEAT_FAN_SPEED 255 // Insert Value between 0 and 255 -//LCD and SD support +//==============================LCD and SD support============================= + +// Define your display language below. Replace (en) with your language code and uncomment. +// en, pl, fr, de, es, ru, it, pt, pt-br, fi, an, nl, ca, eu +// See also language.h +//#define LANGUAGE_INCLUDE GENERATE_LANGUAGE_INCLUDE(en) // Character based displays can have different extended charsets. #define DISPLAY_CHARSET_HD44780_JAPAN // "ääööüüß23°" @@ -587,7 +564,7 @@ const bool Z_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of //#define ENCODER_PULSES_PER_STEP 1 // Increase if you have a high resolution encoder //#define ENCODER_STEPS_PER_MENU_ITEM 5 // Set according to ENCODER_PULSES_PER_STEP or your liking //#define ULTIMAKERCONTROLLER //as available from the Ultimaker online store. -#define ULTIPANEL //the UltiPanel as on Thingiverse +//#define ULTIPANEL //the UltiPanel as on Thingiverse //#define LCD_FEEDBACK_FREQUENCY_HZ 1000 // this is the tone frequency the buzzer plays when on UI feedback. ie Screen Click //#define LCD_FEEDBACK_FREQUENCY_DURATION_MS 100 // the duration the buzzer plays the UI feedback sound. ie Screen Click @@ -754,7 +731,7 @@ const bool Z_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of #define SDSUPPORT #define ULTRA_LCD #ifdef DOGLCD // Change number of lines to match the DOG graphic display - #define LCD_WIDTH 20 + #define LCD_WIDTH 22 #define LCD_HEIGHT 5 #else #define LCD_WIDTH 20 @@ -763,7 +740,7 @@ const bool Z_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of #else //no panel but just LCD #ifdef ULTRA_LCD #ifdef DOGLCD // Change number of lines to match the 128x64 graphics display - #define LCD_WIDTH 20 + #define LCD_WIDTH 22 #define LCD_HEIGHT 5 #else #define LCD_WIDTH 16 diff --git a/Marlin/example_configurations/delta/Configuration.h b/Marlin/example_configurations/delta/Configuration.h index e880f8a2d..35f7e81b2 100644 --- a/Marlin/example_configurations/delta/Configuration.h +++ b/Marlin/example_configurations/delta/Configuration.h @@ -3,13 +3,12 @@ #include "boards.h" - //=========================================================================== //============================= Getting Started ============================= //=========================================================================== /* Here are some standard links for getting your machine calibrated: - * http://reprap.org/wiki/Calibration + * http://reprap.org/wiki/Calibration * http://youtu.be/wAL9d7FgInk * http://calculator.josefprusa.cz * http://reprap.org/wiki/Triffid_Hunter%27s_Calibration_Guide @@ -22,7 +21,6 @@ Here are some standard links for getting your machine calibrated: // Advanced settings can be found in Configuration_adv.h // BASIC SETTINGS: select your board type, temperature sensor type, axis scaling, and endstop configuration - //=========================================================================== //============================= DELTA Printer =============================== //=========================================================================== @@ -30,6 +28,13 @@ Here are some standard links for getting your machine calibrated: // example_configurations/delta directory. // +//=========================================================================== +//============================= SCARA Printer =============================== +//=========================================================================== +// For a Delta printer replace the configuration files with the files in the +// example_configurations/SCARA directory. +// + // User-specified version info of this build to display in [Pronterface, etc] terminal window during // startup. Implementation of an idea by Prof Braino to inform user that any changes made to this // build by the user have been successfully uploaded into firmware. @@ -143,6 +148,10 @@ Here are some standard links for getting your machine calibrated: // 1010 is Pt1000 with 1k pullup (non standard) // 147 is Pt100 with 4k7 pullup // 110 is Pt100 with 1k pullup (non standard) +// 998 and 999 are Dummy Tables. They will ALWAYS read 25°C or the temperature defined below. +// Use it for Testing or Development purposes. NEVER for production machine. +// #define DUMMY_THERMISTOR_998_VALUE 25 +// #define DUMMY_THERMISTOR_999_VALUE 100 #define TEMP_SENSOR_0 -1 #define TEMP_SENSOR_1 -1 @@ -186,7 +195,6 @@ Here are some standard links for getting your machine calibrated: //#define EXTRUDER_WATTS (12.0*12.0/6.7) // P=I^2/R //#define BED_WATTS (12.0*12.0/1.1) // P=I^2/R - //=========================================================================== //============================= PID Settings ================================ //=========================================================================== @@ -195,13 +203,16 @@ Here are some standard links for getting your machine calibrated: // Comment the following line to disable PID and enable bang-bang. #define PIDTEMP #define BANG_MAX 255 // limits current to nozzle while in bang-bang mode; 255=full current -#define PID_MAX 255 // limits current to nozzle while PID is active (see PID_FUNCTIONAL_RANGE below); 255=full current +#define PID_MAX BANG_MAX // limits current to nozzle while PID is active (see PID_FUNCTIONAL_RANGE below); 255=full current #ifdef PIDTEMP //#define PID_DEBUG // Sends debug data to the serial port. //#define PID_OPENLOOP 1 // Puts PID in open loop. M104/M140 sets the output power from 0 to PID_MAX + //#define SLOW_PWM_HEATERS // PWM with very low frequency (roughly 0.125Hz=8s) and minimum state time of approximately 1s useful for heaters driven by a relay + //#define PID_PARAMS_PER_EXTRUDER // Uses separate PID parameters for each extruder (useful for mismatched extruders) + // Set/get with gcode: M301 E[extruder number, 0-2] #define PID_FUNCTIONAL_RANGE 10 // If the temperature difference between the target temperature and the actual temperature // is more then PID_FUNCTIONAL_RANGE then the PID will be shut off and the heater will be set to min/max. - #define PID_INTEGRAL_DRIVE_MAX 255 //limit for the integral term + #define PID_INTEGRAL_DRIVE_MAX PID_MAX //limit for the integral term #define K1 0.95 //smoothing factor within the PID #define PID_dT ((OVERSAMPLENR * 10.0)/(F_CPU / 64.0 / 256.0)) //sampling period of the temperature routine @@ -222,7 +233,6 @@ Here are some standard links for getting your machine calibrated: // #define DEFAULT_Kd 440 #endif // PIDTEMP - //=========================================================================== //============================= PID > Bed Temperature Control =============== //=========================================================================== @@ -271,7 +281,6 @@ Here are some standard links for getting your machine calibrated: #define EXTRUDE_MINTEMP 170 #define EXTRUDE_MAXLENGTH (X_MAX_LENGTH+Y_MAX_LENGTH) //prevent extrusion of very large distances. - //=========================================================================== //============================= Thermal Runaway Protection ================== //=========================================================================== @@ -316,6 +325,12 @@ your extruder heater takes 2 minutes to hit the target on heating. //============================= Mechanical Settings ========================= //=========================================================================== +// Uncomment this option to enable CoreXY kinematics +// #define COREXY + +// Enable this option for Toshiba steppers +// #define CONFIG_STEPPERS_TOSHIBA + // coarse Endstop Settings #define ENDSTOPPULLUPS // Comment this out (using // at the start of the line) to disable the endstop pullup resistors @@ -348,10 +363,6 @@ const bool Z_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of //#define DISABLE_MAX_ENDSTOPS // Deltas never have min endstops #define DISABLE_MIN_ENDSTOPS -// Disable max endstops for compatibility with endstop checking routine -#if defined(COREXY) && !defined(DISABLE_MAX_ENDSTOPS) - #define DISABLE_MAX_ENDSTOPS -#endif // For Inverting Stepper Enable Pins (Active Low) use 0, Non Inverting (Active High) use 1 #define X_ENABLE_ON 0 @@ -397,6 +408,7 @@ const bool Z_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of #define Y_MAX_LENGTH (Y_MAX_POS - Y_MIN_POS) #define Z_MAX_LENGTH (Z_MAX_POS - Z_MIN_POS) + //=========================================================================== //============================= Bed Auto Leveling =========================== //=========================================================================== @@ -407,12 +419,10 @@ const bool Z_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of // The position of the homing switches -//#define MANUAL_HOME_POSITIONS // If defined, MANUAL_*_HOME_POS below will be used +#define MANUAL_HOME_POSITIONS // If defined, MANUAL_*_HOME_POS below will be used //#define BED_CENTER_AT_0_0 // If defined, the center of the bed is at (X=0, Y=0) //Manual homing switch locations: - -#define MANUAL_HOME_POSITIONS // MANUAL_*_HOME_POS below will be used // For deltabots this means top and center of the Cartesian print volume. #define MANUAL_X_HOME_POS 0 #define MANUAL_Y_HOME_POS 0 @@ -444,9 +454,10 @@ const bool Z_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of #define DEFAULT_ZJERK 20.0 // (mm/sec) Must be same as XY for delta #define DEFAULT_EJERK 5.0 // (mm/sec) -//=========================================================================== -//============================= Additional Features ========================= -//=========================================================================== + +//============================================================================= +//============================= Additional Features =========================== +//============================================================================= // Custom M code points #define CUSTOM_M_CODES @@ -477,7 +488,12 @@ const bool Z_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of #define ABS_PREHEAT_HPB_TEMP 100 #define ABS_PREHEAT_FAN_SPEED 255 // Insert Value between 0 and 255 -//LCD and SD support +//==============================LCD and SD support============================= + +// Define your display language below. Replace (en) with your language code and uncomment. +// en, pl, fr, de, es, ru, it, pt, pt-br, fi, an, nl, ca, eu +// See also language.h +//#define LANGUAGE_INCLUDE GENERATE_LANGUAGE_INCLUDE(en) // Character based displays can have different extended charsets. #define DISPLAY_CHARSET_HD44780_JAPAN // "ääööüüß23°" @@ -650,11 +666,13 @@ const bool Z_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of // Shift register panels // --------------------- // 2 wire Non-latching LCD SR from: -// https://bitbucket.org/fmalpartida/new-liquidcrystal/wiki/schematics#!shiftregister-connection -//#define SR_LCD -#ifdef SR_LCD - #define SR_LCD_2W_NL // Non latching 2 wire shift register - //#define NEWPANEL +// https://bitbucket.org/fmalpartida/new-liquidcrystal/wiki/schematics#!shiftregister-connection + +//#define SAV_3DLCD +#ifdef SAV_3DLCD + #define SR_LCD_2W_NL // Non latching 2 wire shiftregister + #define NEWPANEL + #define ULTIPANEL #endif @@ -663,7 +681,7 @@ const bool Z_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of #define SDSUPPORT #define ULTRA_LCD #ifdef DOGLCD // Change number of lines to match the DOG graphic display - #define LCD_WIDTH 20 + #define LCD_WIDTH 22 #define LCD_HEIGHT 5 #else #define LCD_WIDTH 20 @@ -672,7 +690,7 @@ const bool Z_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of #else //no panel but just LCD #ifdef ULTRA_LCD #ifdef DOGLCD // Change number of lines to match the 128x64 graphics display - #define LCD_WIDTH 20 + #define LCD_WIDTH 22 #define LCD_HEIGHT 5 #else #define LCD_WIDTH 16 @@ -756,13 +774,13 @@ const bool Z_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of // Uncomment below to enable //#define FILAMENT_SENSOR -#define FILAMENT_SENSOR_EXTRUDER_NUM 0 //The number of the extruder that has the filament sensor (0,1,2) -#define MEASUREMENT_DELAY_CM 14 //measurement delay in cm. This is the distance from filament sensor to middle of barrel +#define FILAMENT_SENSOR_EXTRUDER_NUM 0 //The number of the extruder that has the filament sensor (0,1,2) +#define MEASUREMENT_DELAY_CM 14 //measurement delay in cm. This is the distance from filament sensor to middle of barrel #define DEFAULT_NOMINAL_FILAMENT_DIA 3.0 //Enter the diameter (in mm) of the filament generally used (3.0 mm or 1.75 mm) - this is then used in the slicer software. Used for sensor reading validation #define MEASURED_UPPER_LIMIT 3.30 //upper limit factor used for sensor reading validation in mm #define MEASURED_LOWER_LIMIT 1.90 //lower limit factor for sensor reading validation in mm -#define MAX_MEASUREMENT_DELAY 20 //delay buffer size in bytes (1 byte = 1cm)- limits maximum measurement delay allowable (must be larger than MEASUREMENT_DELAY_CM and lower number saves RAM) +#define MAX_MEASUREMENT_DELAY 20 //delay buffer size in bytes (1 byte = 1cm)- limits maximum measurement delay allowable (must be larger than MEASUREMENT_DELAY_CM and lower number saves RAM) //defines used in the code #define DEFAULT_MEASURED_FILAMENT_DIA DEFAULT_NOMINAL_FILAMENT_DIA //set measured to nominal initially @@ -775,7 +793,6 @@ const bool Z_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of - #include "Configuration_adv.h" #include "thermistortables.h" diff --git a/Marlin/example_configurations/makibox/Configuration.h b/Marlin/example_configurations/makibox/Configuration.h index d17f3867e..5fd92f439 100644 --- a/Marlin/example_configurations/makibox/Configuration.h +++ b/Marlin/example_configurations/makibox/Configuration.h @@ -3,13 +3,12 @@ #include "boards.h" - //=========================================================================== //============================= Getting Started ============================= //=========================================================================== /* Here are some standard links for getting your machine calibrated: - * http://reprap.org/wiki/Calibration + * http://reprap.org/wiki/Calibration * http://youtu.be/wAL9d7FgInk * http://calculator.josefprusa.cz * http://reprap.org/wiki/Triffid_Hunter%27s_Calibration_Guide @@ -18,12 +17,10 @@ Here are some standard links for getting your machine calibrated: * http://www.thingiverse.com/thing:298812 */ - // This configuration file contains the basic settings. // Advanced settings can be found in Configuration_adv.h // BASIC SETTINGS: select your board type, temperature sensor type, axis scaling, and endstop configuration - //=========================================================================== //============================= DELTA Printer =============================== //=========================================================================== @@ -31,7 +28,6 @@ Here are some standard links for getting your machine calibrated: // example_configurations/delta directory. // - //=========================================================================== //============================= SCARA Printer =============================== //=========================================================================== @@ -85,7 +81,6 @@ Here are some standard links for getting your machine calibrated: // Define this to have the electronics keep the power supply off on startup. If you don't know what this is leave it. // #define PS_DEFAULT_OFF - //=========================================================================== //============================= Thermal Settings ============================ //=========================================================================== @@ -123,6 +118,10 @@ Here are some standard links for getting your machine calibrated: // 1010 is Pt1000 with 1k pullup (non standard) // 147 is Pt100 with 4k7 pullup // 110 is Pt100 with 1k pullup (non standard) +// 998 and 999 are Dummy Tables. They will ALWAYS read 25°C or the temperature defined below. +// Use it for Testing or Development purposes. NEVER for production machine. +// #define DUMMY_THERMISTOR_998_VALUE 25 +// #define DUMMY_THERMISTOR_999_VALUE 100 #define TEMP_SENSOR_0 1 #define TEMP_SENSOR_1 0 @@ -166,7 +165,6 @@ Here are some standard links for getting your machine calibrated: //#define EXTRUDER_WATTS (12.0*12.0/6.7) // P=I^2/R //#define BED_WATTS (12.0*12.0/1.1) // P=I^2/R - //=========================================================================== //============================= PID Settings ================================ //=========================================================================== @@ -175,13 +173,16 @@ Here are some standard links for getting your machine calibrated: // Comment the following line to disable PID and enable bang-bang. #define PIDTEMP #define BANG_MAX 255 // limits current to nozzle while in bang-bang mode; 255=full current -#define PID_MAX 255 // limits current to nozzle while PID is active (see PID_FUNCTIONAL_RANGE below); 255=full current +#define PID_MAX BANG_MAX // limits current to nozzle while PID is active (see PID_FUNCTIONAL_RANGE below); 255=full current #ifdef PIDTEMP //#define PID_DEBUG // Sends debug data to the serial port. //#define PID_OPENLOOP 1 // Puts PID in open loop. M104/M140 sets the output power from 0 to PID_MAX + //#define SLOW_PWM_HEATERS // PWM with very low frequency (roughly 0.125Hz=8s) and minimum state time of approximately 1s useful for heaters driven by a relay + //#define PID_PARAMS_PER_EXTRUDER // Uses separate PID parameters for each extruder (useful for mismatched extruders) + // Set/get with gcode: M301 E[extruder number, 0-2] #define PID_FUNCTIONAL_RANGE 10 // If the temperature difference between the target temperature and the actual temperature // is more then PID_FUNCTIONAL_RANGE then the PID will be shut off and the heater will be set to min/max. - #define PID_INTEGRAL_DRIVE_MAX 255 //limit for the integral term + #define PID_INTEGRAL_DRIVE_MAX PID_MAX //limit for the integral term #define K1 0.95 //smoothing factor within the PID #define PID_dT ((OVERSAMPLENR * 10.0)/(F_CPU / 64.0 / 256.0)) //sampling period of the temperature routine @@ -202,7 +203,6 @@ Here are some standard links for getting your machine calibrated: // #define DEFAULT_Kd 440 #endif // PIDTEMP - //=========================================================================== //============================= PID > Bed Temperature Control =============== //=========================================================================== @@ -254,7 +254,6 @@ Here are some standard links for getting your machine calibrated: #define EXTRUDE_MINTEMP 170 #define EXTRUDE_MAXLENGTH (X_MAX_LENGTH+Y_MAX_LENGTH) //prevent extrusion of very large distances. - //=========================================================================== //============================= Thermal Runaway Protection ================== //=========================================================================== @@ -296,12 +295,15 @@ your extruder heater takes 2 minutes to hit the target on heating. //=========================================================================== -//============================ Mechanical Settings ========================== +//============================= Mechanical Settings ========================= //=========================================================================== -// Uncomment the following line to enable CoreXY kinematics +// Uncomment this option to enable CoreXY kinematics // #define COREXY +// Enable this option for Toshiba steppers +// #define CONFIG_STEPPERS_TOSHIBA + // coarse Endstop Settings #define ENDSTOPPULLUPS // Comment this out (using // at the start of the line) to disable the endstop pullup resistors @@ -334,11 +336,6 @@ const bool Z_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of //#define DISABLE_MAX_ENDSTOPS //#define DISABLE_MIN_ENDSTOPS -// Disable max endstops for compatibility with endstop checking routine -#if defined(COREXY) && !defined(DISABLE_MAX_ENDSTOPS) - #define DISABLE_MAX_ENDSTOPS -#endif - // For Inverting Stepper Enable Pins (Active Low) use 0, Non Inverting (Active High) use 1 #define X_ENABLE_ON 0 #define Y_ENABLE_ON 0 @@ -391,40 +388,38 @@ const bool Z_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of #ifdef ENABLE_AUTO_BED_LEVELING -// There are 2 different ways to pick the X and Y locations to probe: - -// - "grid" mode -// Probe every point in a rectangular grid -// You must specify the rectangle, and the density of sample points -// This mode is preferred because there are more measurements. -// It used to be called ACCURATE_BED_LEVELING but "grid" is more descriptive - -// - "3-point" mode -// Probe 3 arbitrary points on the bed (that aren't colinear) -// You must specify the X & Y coordinates of all 3 points - + // There are 2 different ways to specify probing locations + // + // - "grid" mode + // Probe several points in a rectangular grid. + // You specify the rectangle and the density of sample points. + // This mode is preferred because there are more measurements. + // + // - "3-point" mode + // Probe 3 arbitrary points on the bed (that aren't colinear) + // You specify the XY coordinates of all 3 points. + + // Enable this to sample the bed in a grid (least squares solution) + // Note: this feature generates 10KB extra code size #define AUTO_BED_LEVELING_GRID - // with AUTO_BED_LEVELING_GRID, the bed is sampled in a - // AUTO_BED_LEVELING_GRID_POINTSxAUTO_BED_LEVELING_GRID_POINTS grid - // and least squares solution is calculated - // Note: this feature occupies 10'206 byte + #ifdef AUTO_BED_LEVELING_GRID - // set the rectangle in which to probe + // The edges of the rectangle in which to probe #define LEFT_PROBE_BED_POSITION 15 #define RIGHT_PROBE_BED_POSITION 170 - #define BACK_PROBE_BED_POSITION 180 #define FRONT_PROBE_BED_POSITION 20 + #define BACK_PROBE_BED_POSITION 170 - // set the number of grid points per dimension - // I wouldn't see a reason to go above 3 (=9 probing points on the bed) + // Set the number of grid points per dimension + // You probably don't need more than 3 (squared=9) #define AUTO_BED_LEVELING_GRID_POINTS 2 - #else // not AUTO_BED_LEVELING_GRID - // with no grid, just probe 3 arbitrary points. A simple cross-product - // is used to esimate the plane of the print bed + #else // !AUTO_BED_LEVELING_GRID + // Arbitrary points to probe. A simple cross-product + // is used to estimate the plane of the bed. #define ABL_PROBE_PT_1_X 15 #define ABL_PROBE_PT_1_Y 180 #define ABL_PROBE_PT_2_X 15 @@ -435,10 +430,11 @@ const bool Z_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of #endif // AUTO_BED_LEVELING_GRID - // these are the offsets to the probe relative to the extruder tip (Hotend - Probe) - #define X_PROBE_OFFSET_FROM_EXTRUDER -25 - #define Y_PROBE_OFFSET_FROM_EXTRUDER -29 - #define Z_PROBE_OFFSET_FROM_EXTRUDER -12.35 + // Offsets to the probe relative to the extruder tip (Hotend - Probe) + // X and Y offsets must be integers + #define X_PROBE_OFFSET_FROM_EXTRUDER -25 // -left +right + #define Y_PROBE_OFFSET_FROM_EXTRUDER -29 // -front +behind + #define Z_PROBE_OFFSET_FROM_EXTRUDER -12.35 // -below (always!) #define Z_RAISE_BEFORE_HOMING 4 // (in mm) Raise Z before homing (G28) for Probe Clearance. // Be sure you have this distance over your Z_MAX_POS in case @@ -514,9 +510,9 @@ const bool Z_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of #define DEFAULT_EJERK 5.0 // (mm/sec) -//=========================================================================== -//============================ Additional Features ========================== -//=========================================================================== +//============================================================================= +//============================= Additional Features =========================== +//============================================================================= // Custom M code points #define CUSTOM_M_CODES @@ -547,7 +543,12 @@ const bool Z_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of #define ABS_PREHEAT_HPB_TEMP 100 #define ABS_PREHEAT_FAN_SPEED 255 // Insert Value between 0 and 255 -//LCD and SD support +//==============================LCD and SD support============================= + +// Define your display language below. Replace (en) with your language code and uncomment. +// en, pl, fr, de, es, ru, it, pt, pt-br, fi, an, nl, ca, eu +// See also language.h +//#define LANGUAGE_INCLUDE GENERATE_LANGUAGE_INCLUDE(en) // Character based displays can have different extended charsets. #define DISPLAY_CHARSET_HD44780_JAPAN // "ääööüüß23°" @@ -713,11 +714,13 @@ const bool Z_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of // Shift register panels // --------------------- // 2 wire Non-latching LCD SR from: -// https://bitbucket.org/fmalpartida/new-liquidcrystal/wiki/schematics#!shiftregister-connection -//#define SR_LCD -#ifdef SR_LCD - #define SR_LCD_2W_NL // Non latching 2 wire shift register - //#define NEWPANEL +// https://bitbucket.org/fmalpartida/new-liquidcrystal/wiki/schematics#!shiftregister-connection + +//#define SAV_3DLCD +#ifdef SAV_3DLCD + #define SR_LCD_2W_NL // Non latching 2 wire shiftregister + #define NEWPANEL + #define ULTIPANEL #endif @@ -726,7 +729,7 @@ const bool Z_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of #define SDSUPPORT #define ULTRA_LCD #ifdef DOGLCD // Change number of lines to match the DOG graphic display - #define LCD_WIDTH 20 + #define LCD_WIDTH 22 #define LCD_HEIGHT 5 #else #define LCD_WIDTH 20 @@ -735,7 +738,7 @@ const bool Z_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of #else //no panel but just LCD #ifdef ULTRA_LCD #ifdef DOGLCD // Change number of lines to match the 128x64 graphics display - #define LCD_WIDTH 20 + #define LCD_WIDTH 22 #define LCD_HEIGHT 5 #else #define LCD_WIDTH 16 diff --git a/Marlin/example_configurations/tvrrug/Round2/Configuration.h b/Marlin/example_configurations/tvrrug/Round2/Configuration.h index 2a18c1e8c..21c589d71 100644 --- a/Marlin/example_configurations/tvrrug/Round2/Configuration.h +++ b/Marlin/example_configurations/tvrrug/Round2/Configuration.h @@ -8,7 +8,7 @@ //=========================================================================== /* Here are some standard links for getting your machine calibrated: - * http://reprap.org/wiki/Calibration + * http://reprap.org/wiki/Calibration * http://youtu.be/wAL9d7FgInk * http://calculator.josefprusa.cz * http://reprap.org/wiki/Triffid_Hunter%27s_Calibration_Guide @@ -17,12 +17,10 @@ Here are some standard links for getting your machine calibrated: * http://www.thingiverse.com/thing:298812 */ - // This configuration file contains the basic settings. // Advanced settings can be found in Configuration_adv.h // BASIC SETTINGS: select your board type, temperature sensor type, axis scaling, and endstop configuration - //=========================================================================== //============================= DELTA Printer =============================== //=========================================================================== @@ -30,7 +28,6 @@ Here are some standard links for getting your machine calibrated: // example_configurations/delta directory. // - //=========================================================================== //============================= SCARA Printer =============================== //=========================================================================== @@ -84,7 +81,6 @@ Here are some standard links for getting your machine calibrated: // Define this to have the electronics keep the power supply off on startup. If you don't know what this is leave it. // #define PS_DEFAULT_OFF - //=========================================================================== //============================= Thermal Settings ============================ //=========================================================================== @@ -122,6 +118,10 @@ Here are some standard links for getting your machine calibrated: // 1010 is Pt1000 with 1k pullup (non standard) // 147 is Pt100 with 4k7 pullup // 110 is Pt100 with 1k pullup (non standard) +// 998 and 999 are Dummy Tables. They will ALWAYS read 25°C or the temperature defined below. +// Use it for Testing or Development purposes. NEVER for production machine. +// #define DUMMY_THERMISTOR_998_VALUE 25 +// #define DUMMY_THERMISTOR_999_VALUE 100 #define TEMP_SENSOR_0 5 #define TEMP_SENSOR_1 0 @@ -156,8 +156,6 @@ Here are some standard links for getting your machine calibrated: #define HEATER_3_MAXTEMP 275 #define BED_MAXTEMP 150 -#define CONFIG_STEPPERS_TOSHIBA 1 - // If your bed has low resistance e.g. .6 ohm and throws the fuse you can duty cycle it to reduce the // average current. The value should be an integer and the heat bed will be turned on for 1 interval of // HEATER_BED_DUTY_CYCLE_DIVIDER intervals. @@ -167,7 +165,6 @@ Here are some standard links for getting your machine calibrated: //#define EXTRUDER_WATTS (12.0*12.0/6.7) // P=I^2/R //#define BED_WATTS (12.0*12.0/1.1) // P=I^2/R - //=========================================================================== //============================= PID Settings ================================ //=========================================================================== @@ -176,13 +173,16 @@ Here are some standard links for getting your machine calibrated: // Comment the following line to disable PID and enable bang-bang. #define PIDTEMP #define BANG_MAX 255 // limits current to nozzle while in bang-bang mode; 255=full current -#define PID_MAX 255 // limits current to nozzle while PID is active (see PID_FUNCTIONAL_RANGE below); 255=full current +#define PID_MAX BANG_MAX // limits current to nozzle while PID is active (see PID_FUNCTIONAL_RANGE below); 255=full current #ifdef PIDTEMP //#define PID_DEBUG // Sends debug data to the serial port. //#define PID_OPENLOOP 1 // Puts PID in open loop. M104/M140 sets the output power from 0 to PID_MAX + //#define SLOW_PWM_HEATERS // PWM with very low frequency (roughly 0.125Hz=8s) and minimum state time of approximately 1s useful for heaters driven by a relay + //#define PID_PARAMS_PER_EXTRUDER // Uses separate PID parameters for each extruder (useful for mismatched extruders) + // Set/get with gcode: M301 E[extruder number, 0-2] #define PID_FUNCTIONAL_RANGE 10 // If the temperature difference between the target temperature and the actual temperature // is more then PID_FUNCTIONAL_RANGE then the PID will be shut off and the heater will be set to min/max. - #define PID_INTEGRAL_DRIVE_MAX 255 //limit for the integral term + #define PID_INTEGRAL_DRIVE_MAX PID_MAX //limit for the integral term #define K1 0.95 //smoothing factor within the PID #define PID_dT ((OVERSAMPLENR * 10.0)/(F_CPU / 64.0 / 256.0)) //sampling period of the temperature routine @@ -208,7 +208,6 @@ Here are some standard links for getting your machine calibrated: // #define DEFAULT_Kd 440 #endif // PIDTEMP - //=========================================================================== //============================= PID > Bed Temperature Control =============== //=========================================================================== @@ -257,7 +256,6 @@ Here are some standard links for getting your machine calibrated: #define EXTRUDE_MINTEMP 170 #define EXTRUDE_MAXLENGTH (X_MAX_LENGTH+Y_MAX_LENGTH) //prevent extrusion of very large distances. - //=========================================================================== //============================= Thermal Runaway Protection ================== //=========================================================================== @@ -299,12 +297,15 @@ your extruder heater takes 2 minutes to hit the target on heating. //=========================================================================== -//============================ Mechanical Settings ========================== +//============================= Mechanical Settings ========================= //=========================================================================== -// Uncomment the following line to enable CoreXY kinematics +// Uncomment this option to enable CoreXY kinematics // #define COREXY +// Enable this option for Toshiba steppers +#define CONFIG_STEPPERS_TOSHIBA + // coarse Endstop Settings #define ENDSTOPPULLUPS // Comment this out (using // at the start of the line) to disable the endstop pullup resistors @@ -337,11 +338,6 @@ const bool Z_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of //#define DISABLE_MAX_ENDSTOPS //#define DISABLE_MIN_ENDSTOPS -// Disable max endstops for compatibility with endstop checking routine -#if defined(COREXY) && !defined(DISABLE_MAX_ENDSTOPS) - #define DISABLE_MAX_ENDSTOPS -#endif - // For Inverting Stepper Enable Pins (Active Low) use 0, Non Inverting (Active High) use 1 #define X_ENABLE_ON 1 #define Y_ENABLE_ON 1 @@ -394,40 +390,38 @@ const bool Z_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of #ifdef ENABLE_AUTO_BED_LEVELING -// There are 2 different ways to pick the X and Y locations to probe: - -// - "grid" mode -// Probe every point in a rectangular grid -// You must specify the rectangle, and the density of sample points -// This mode is preferred because there are more measurements. -// It used to be called ACCURATE_BED_LEVELING but "grid" is more descriptive - -// - "3-point" mode -// Probe 3 arbitrary points on the bed (that aren't colinear) -// You must specify the X & Y coordinates of all 3 points - + // There are 2 different ways to specify probing locations + // + // - "grid" mode + // Probe several points in a rectangular grid. + // You specify the rectangle and the density of sample points. + // This mode is preferred because there are more measurements. + // + // - "3-point" mode + // Probe 3 arbitrary points on the bed (that aren't colinear) + // You specify the XY coordinates of all 3 points. + + // Enable this to sample the bed in a grid (least squares solution) + // Note: this feature generates 10KB extra code size #define AUTO_BED_LEVELING_GRID - // with AUTO_BED_LEVELING_GRID, the bed is sampled in a - // AUTO_BED_LEVELING_GRID_POINTSxAUTO_BED_LEVELING_GRID_POINTS grid - // and least squares solution is calculated - // Note: this feature occupies 10'206 byte + #ifdef AUTO_BED_LEVELING_GRID - // set the rectangle in which to probe + // The edges of the rectangle in which to probe #define LEFT_PROBE_BED_POSITION 15 #define RIGHT_PROBE_BED_POSITION 170 - #define BACK_PROBE_BED_POSITION 180 #define FRONT_PROBE_BED_POSITION 20 + #define BACK_PROBE_BED_POSITION 170 - // set the number of grid points per dimension - // I wouldn't see a reason to go above 3 (=9 probing points on the bed) + // Set the number of grid points per dimension + // You probably don't need more than 3 (squared=9) #define AUTO_BED_LEVELING_GRID_POINTS 2 - #else // not AUTO_BED_LEVELING_GRID - // with no grid, just probe 3 arbitrary points. A simple cross-product - // is used to esimate the plane of the print bed + #else // !AUTO_BED_LEVELING_GRID + // Arbitrary points to probe. A simple cross-product + // is used to estimate the plane of the bed. #define ABL_PROBE_PT_1_X 15 #define ABL_PROBE_PT_1_Y 180 #define ABL_PROBE_PT_2_X 15 @@ -438,10 +432,11 @@ const bool Z_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of #endif // AUTO_BED_LEVELING_GRID - // these are the offsets to the probe relative to the extruder tip (Hotend - Probe) - #define X_PROBE_OFFSET_FROM_EXTRUDER -25 - #define Y_PROBE_OFFSET_FROM_EXTRUDER -29 - #define Z_PROBE_OFFSET_FROM_EXTRUDER -12.35 + // Offsets to the probe relative to the extruder tip (Hotend - Probe) + // X and Y offsets must be integers + #define X_PROBE_OFFSET_FROM_EXTRUDER -25 // -left +right + #define Y_PROBE_OFFSET_FROM_EXTRUDER -29 // -front +behind + #define Z_PROBE_OFFSET_FROM_EXTRUDER -12.35 // -below (always!) #define Z_RAISE_BEFORE_HOMING 4 // (in mm) Raise Z before homing (G28) for Probe Clearance. // Be sure you have this distance over your Z_MAX_POS in case @@ -498,21 +493,15 @@ const bool Z_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of // default settings -//#define DEFAULT_AXIS_STEPS_PER_UNIT {78.7402,78.7402,200.0*8/3,760*1.1} // default steps per unit for Ultimaker -//#define //DEFAULT_AXIS_STEPS_PER_UNIT {79.87, 79.87, 2566, 563,78} // Al's TVRR +//#define DEFAULT_AXIS_STEPS_PER_UNIT {79.87, 79.87, 2566, 563,78} // Al's TVRR //#define DEFAULT_AXIS_STEPS_PER_UNIT {81.26, 80.01, 2561, 599.14} // Michel TVRR old //#define DEFAULT_AXIS_STEPS_PER_UNIT {71.1, 71.1, 2560, 739.65} // Michel TVRR #define DEFAULT_AXIS_STEPS_PER_UNIT {71.1, 71.1, 2560, 600} // David TVRR - - - -//#define DEFAULT_MAX_FEEDRATE {500, 500, 5, 25} // (mm/sec) default #define DEFAULT_MAX_FEEDRATE {500, 500, 5, 45} // (mm/sec) David TVRR #define DEFAULT_MAX_ACCELERATION {9000,9000,100,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. /* MICHEL: This has an impact on the "ripples" in print walls */ -#define DEFAULT_ACCELERATION 500 // X, Y, Z and E max acceleration in mm/s^2 for printing moves -//#define DEFAULT_ACCELERATION 3000 // X, Y, Z and E max acceleration in mm/s^2 for printing moves +#define DEFAULT_ACCELERATION 500 // X, Y, Z and E max acceleration in mm/s^2 for printing moves #define DEFAULT_RETRACT_ACCELERATION 3000 // X, Y, Z and E max acceleration in mm/s^2 for retracts // Offset of the extruders (uncomment if using more than one and relying on firmware to position when changing). @@ -527,9 +516,9 @@ const bool Z_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of #define DEFAULT_EJERK 5.0 // (mm/sec) -//=========================================================================== -//============================ Additional Features ========================== -//=========================================================================== +//============================================================================= +//============================= Additional Features =========================== +//============================================================================= // Custom M code points #define CUSTOM_M_CODES @@ -560,7 +549,12 @@ const bool Z_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of #define ABS_PREHEAT_HPB_TEMP 100 #define ABS_PREHEAT_FAN_SPEED 255 // Insert Value between 0 and 255 -//LCD and SD support +//==============================LCD and SD support============================= + +// Define your display language below. Replace (en) with your language code and uncomment. +// en, pl, fr, de, es, ru, it, pt, pt-br, fi, an, nl, ca, eu +// See also language.h +//#define LANGUAGE_INCLUDE GENERATE_LANGUAGE_INCLUDE(en) // Character based displays can have different extended charsets. #define DISPLAY_CHARSET_HD44780_JAPAN // "ääööüüß23°" @@ -726,11 +720,13 @@ const bool Z_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of // Shift register panels // --------------------- // 2 wire Non-latching LCD SR from: -// https://bitbucket.org/fmalpartida/new-liquidcrystal/wiki/schematics#!shiftregister-connection -//#define SR_LCD -#ifdef SR_LCD - #define SR_LCD_2W_NL // Non latching 2 wire shift register - //#define NEWPANEL +// https://bitbucket.org/fmalpartida/new-liquidcrystal/wiki/schematics#!shiftregister-connection + +//#define SAV_3DLCD +#ifdef SAV_3DLCD + #define SR_LCD_2W_NL // Non latching 2 wire shiftregister + #define NEWPANEL + #define ULTIPANEL #endif @@ -739,7 +735,7 @@ const bool Z_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of #define SDSUPPORT #define ULTRA_LCD #ifdef DOGLCD // Change number of lines to match the DOG graphic display - #define LCD_WIDTH 20 + #define LCD_WIDTH 22 #define LCD_HEIGHT 5 #else #define LCD_WIDTH 20 @@ -748,7 +744,7 @@ const bool Z_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of #else //no panel but just LCD #ifdef ULTRA_LCD #ifdef DOGLCD // Change number of lines to match the 128x64 graphics display - #define LCD_WIDTH 20 + #define LCD_WIDTH 22 #define LCD_HEIGHT 5 #else #define LCD_WIDTH 16 @@ -832,13 +828,13 @@ const bool Z_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of // Uncomment below to enable //#define FILAMENT_SENSOR -#define FILAMENT_SENSOR_EXTRUDER_NUM 0 //The number of the extruder that has the filament sensor (0,1,2) -#define MEASUREMENT_DELAY_CM 14 //measurement delay in cm. This is the distance from filament sensor to middle of barrel +#define FILAMENT_SENSOR_EXTRUDER_NUM 0 //The number of the extruder that has the filament sensor (0,1,2) +#define MEASUREMENT_DELAY_CM 14 //measurement delay in cm. This is the distance from filament sensor to middle of barrel #define DEFAULT_NOMINAL_FILAMENT_DIA 3.0 //Enter the diameter (in mm) of the filament generally used (3.0 mm or 1.75 mm) - this is then used in the slicer software. Used for sensor reading validation #define MEASURED_UPPER_LIMIT 3.30 //upper limit factor used for sensor reading validation in mm #define MEASURED_LOWER_LIMIT 1.90 //lower limit factor for sensor reading validation in mm -#define MAX_MEASUREMENT_DELAY 20 //delay buffer size in bytes (1 byte = 1cm)- limits maximum measurement delay allowable (must be larger than MEASUREMENT_DELAY_CM and lower number saves RAM) +#define MAX_MEASUREMENT_DELAY 20 //delay buffer size in bytes (1 byte = 1cm)- limits maximum measurement delay allowable (must be larger than MEASUREMENT_DELAY_CM and lower number saves RAM) //defines used in the code #define DEFAULT_MEASURED_FILAMENT_DIA DEFAULT_NOMINAL_FILAMENT_DIA //set measured to nominal initially diff --git a/Marlin/stepper.cpp b/Marlin/stepper.cpp index 375a86f82..9b8027bfd 100644 --- a/Marlin/stepper.cpp +++ b/Marlin/stepper.cpp @@ -554,54 +554,48 @@ ISR(TIMER1_COMPA_vect) #endif //ADVANCE counter_x += current_block->steps_x; + #ifdef CONFIG_STEPPERS_TOSHIBA - /* The toshiba stepper controller require much longer pulses - * tjerfore we 'stage' decompose the pulses between high, and - * low instead of doing each in turn. The extra tests add enough - * lag to allow it work with without needing NOPs */ - if (counter_x > 0) { - WRITE(X_STEP_PIN, HIGH); - } + /* The Toshiba stepper controller require much longer pulses. + * So we 'stage' decompose the pulses between high and low + * instead of doing each in turn. The extra tests add enough + * lag to allow it work with without needing NOPs + */ + if (counter_x > 0) WRITE(X_STEP_PIN, HIGH); counter_y += current_block->steps_y; - if (counter_y > 0) { - WRITE(Y_STEP_PIN, HIGH); - } + if (counter_y > 0) WRITE(Y_STEP_PIN, HIGH); counter_z += current_block->steps_z; - if (counter_z > 0) { - WRITE(Z_STEP_PIN, HIGH); - } + if (counter_z > 0) WRITE(Z_STEP_PIN, HIGH); #ifndef ADVANCE counter_e += current_block->steps_e; - if (counter_e > 0) { - WRITE_E_STEP(HIGH); - } + if (counter_e > 0) WRITE_E_STEP(HIGH); #endif //!ADVANCE if (counter_x > 0) { counter_x -= current_block->step_event_count; - count_position[X_AXIS]+=count_direction[X_AXIS]; + count_position[X_AXIS] += count_direction[X_AXIS]; WRITE(X_STEP_PIN, LOW); } if (counter_y > 0) { counter_y -= current_block->step_event_count; - count_position[Y_AXIS]+=count_direction[Y_AXIS]; + count_position[Y_AXIS] += count_direction[Y_AXIS]; WRITE(Y_STEP_PIN, LOW); } if (counter_z > 0) { counter_z -= current_block->step_event_count; - count_position[Z_AXIS]+=count_direction[Z_AXIS]; + count_position[Z_AXIS] += count_direction[Z_AXIS]; WRITE(Z_STEP_PIN, LOW); } #ifndef ADVANCE if (counter_e > 0) { counter_e -= current_block->step_event_count; - count_position[E_AXIS]+=count_direction[E_AXIS]; + count_position[E_AXIS] += count_direction[E_AXIS]; WRITE_E_STEP(LOW); } #endif //!ADVANCE @@ -622,7 +616,7 @@ ISR(TIMER1_COMPA_vect) WRITE(X_STEP_PIN, !INVERT_X_STEP_PIN); #endif counter_x -= current_block->step_event_count; - count_position[X_AXIS]+=count_direction[X_AXIS]; + count_position[X_AXIS] += count_direction[X_AXIS]; #ifdef DUAL_X_CARRIAGE if (extruder_duplication_enabled){ WRITE(X_STEP_PIN, INVERT_X_STEP_PIN); @@ -648,7 +642,7 @@ ISR(TIMER1_COMPA_vect) #endif counter_y -= current_block->step_event_count; - count_position[Y_AXIS]+=count_direction[Y_AXIS]; + count_position[Y_AXIS] += count_direction[Y_AXIS]; WRITE(Y_STEP_PIN, INVERT_Y_STEP_PIN); #ifdef Y_DUAL_STEPPER_DRIVERS @@ -659,15 +653,14 @@ ISR(TIMER1_COMPA_vect) counter_z += current_block->steps_z; if (counter_z > 0) { WRITE(Z_STEP_PIN, !INVERT_Z_STEP_PIN); - #ifdef Z_DUAL_STEPPER_DRIVERS WRITE(Z2_STEP_PIN, !INVERT_Z_STEP_PIN); #endif counter_z -= current_block->step_event_count; - count_position[Z_AXIS]+=count_direction[Z_AXIS]; + count_position[Z_AXIS] += count_direction[Z_AXIS]; WRITE(Z_STEP_PIN, INVERT_Z_STEP_PIN); - + #ifdef Z_DUAL_STEPPER_DRIVERS WRITE(Z2_STEP_PIN, INVERT_Z_STEP_PIN); #endif @@ -678,7 +671,7 @@ ISR(TIMER1_COMPA_vect) if (counter_e > 0) { WRITE_E_STEP(!INVERT_E_STEP_PIN); counter_e -= current_block->step_event_count; - count_position[E_AXIS]+=count_direction[E_AXIS]; + count_position[E_AXIS] += count_direction[E_AXIS]; WRITE_E_STEP(INVERT_E_STEP_PIN); } #endif //!ADVANCE diff --git a/Marlin/vector_3.cpp b/Marlin/vector_3.cpp index 5f1c294ed..58f3b577f 100644 --- a/Marlin/vector_3.cpp +++ b/Marlin/vector_3.cpp @@ -84,7 +84,7 @@ void vector_3::debug(char* title) SERIAL_PROTOCOL(y); SERIAL_PROTOCOLPGM(" z: "); SERIAL_PROTOCOL(z); - SERIAL_PROTOCOLPGM("\n"); + SERIAL_EOL; } void apply_rotation_xyz(matrix_3x3 matrix, float &x, float& y, float& z) @@ -145,22 +145,17 @@ matrix_3x3 matrix_3x3::transpose(matrix_3x3 original) return new_matrix; } -void matrix_3x3::debug(char* title) -{ - SERIAL_PROTOCOL(title); - SERIAL_PROTOCOL("\n"); - int count = 0; - for(int i=0; i<3; i++) - { - for(int j=0; j<3; j++) - { - SERIAL_PROTOCOL(matrix[count]); - SERIAL_PROTOCOLPGM(" "); - count++; - } - - SERIAL_PROTOCOLPGM("\n"); - } +void matrix_3x3::debug(char* title) { + SERIAL_PROTOCOLLN(title); + int count = 0; + for(int i=0; i<3; i++) { + for(int j=0; j<3; j++) { + SERIAL_PROTOCOL(matrix[count] + 0.0001); + SERIAL_PROTOCOLPGM(" "); + count++; + } + SERIAL_EOL; + } } #endif // #ifdef ENABLE_AUTO_BED_LEVELING