From 018c567abf46ec683b404c841402d6096b775390 Mon Sep 17 00:00:00 2001 From: Erik van der Zalm Date: Sun, 26 Feb 2012 16:23:47 +0100 Subject: [PATCH] Moved SLOWDOWN function. (jetty840) Included AD595 calibration options. (daid) --- Marlin/Configuration.h | 43 +++++++++++++++++--------------------- Marlin/Configuration_adv.h | 5 +++++ Marlin/planner.cpp | 13 ++++++------ README.md | 20 ------------------ 4 files changed, 31 insertions(+), 50 deletions(-) diff --git a/Marlin/Configuration.h b/Marlin/Configuration.h index 0bdcde1e4..16c2e16f2 100644 --- a/Marlin/Configuration.h +++ b/Marlin/Configuration.h @@ -28,7 +28,7 @@ // Ultimaker = 7 // Teensylu = 8 // Gen3+ =9 -#define MOTHERBOARD 51 +#define MOTHERBOARD 7 //=========================================================================== //=============================Thermal Settings ============================ @@ -46,13 +46,13 @@ // 6 is EPCOS 100k // 7 is 100k Honeywell thermistor 135-104LAG-J01 -#define TEMP_SENSOR_0 1 +#define TEMP_SENSOR_0 -1 #define TEMP_SENSOR_1 0 #define TEMP_SENSOR_2 0 -#define TEMP_SENSOR_BED 1 +#define TEMP_SENSOR_BED 0 // Actual temperature must be close to target for this long before M109 returns success -#define TEMP_RESIDENCY_TIME 10 // 30 // (seconds) 30 seconds was too long +#define TEMP_RESIDENCY_TIME 10 // (seconds) #define TEMP_HYSTERESIS 3 // (degC) range of +/- temperatures considered "close" to the target one // The minimal temperature defines the temperature below which the heater will not be enabled It is used @@ -71,11 +71,6 @@ #define HEATER_2_MAXTEMP 275 #define BED_MAXTEMP 150 -//These defines help to calibrate the AD595 sensor in case you get wrong temperature measurements. -//The measured temperature is defined as "actualTemp = (measuredTemp * TEMP_SENSOR_AD595_GAIN) + TEMP_SENSOR_AD595_OFFSET" -#define TEMP_SENSOR_AD595_OFFSET 0.0 -#define TEMP_SENSOR_AD595_GAIN 1.0 - // PID settings: // Comment the following line to disable PID and enable bang-bang. @@ -119,9 +114,9 @@ #define ENDSTOPPULLUPS // Comment this out (using // at the start of the line) to disable the endstop pullup resistors // The pullups are needed if you directly connect a mechanical endswitch between the signal and ground pins. -const bool X_ENDSTOPS_INVERTING = false; // set to true to invert the logic of the endstops. -const bool Y_ENDSTOPS_INVERTING = false; // set to true to invert the logic of the endstops. -const bool Z_ENDSTOPS_INVERTING = false; // set to true to invert the logic of the endstops. +const bool X_ENDSTOPS_INVERTING = true; // set to true to invert the logic of the endstops. +const bool Y_ENDSTOPS_INVERTING = true; // set to true to invert the logic of the endstops. +const bool Z_ENDSTOPS_INVERTING = true; // set to true to invert the logic of the endstops. // For Inverting Stepper Enable Pins (Active Low) use 0, Non Inverting (Active High) use 1 #define X_ENABLE_ON 0 @@ -135,8 +130,8 @@ const bool Z_ENDSTOPS_INVERTING = false; // set to true to invert the logic of t #define DISABLE_Z false #define DISABLE_E false // For all extruders -#define INVERT_X_DIR false // for Mendel set to false, for Orca set to true -#define INVERT_Y_DIR true // for Mendel set to true, for Orca set to false +#define INVERT_X_DIR true // for Mendel set to false, for Orca set to true +#define INVERT_Y_DIR false // for Mendel set to true, for Orca set to false #define INVERT_Z_DIR true // for Mendel set to false, for Orca set to true #define INVERT_E0_DIR false // for direct drive extruder v9 set to true, for geared extruder set to false #define INVERT_E1_DIR false // for direct drive extruder v9 set to true, for geared extruder set to false @@ -148,11 +143,11 @@ const bool Z_ENDSTOPS_INVERTING = false; // set to true to invert the logic of t #define Y_HOME_DIR -1 #define Z_HOME_DIR -1 -#define min_software_endstops false //If true, axis won't move to coordinates less than zero. +#define min_software_endstops true //If true, axis won't move to coordinates less than HOME_POS. #define max_software_endstops true //If true, axis won't move to coordinates greater than the defined lengths below. -#define X_MAX_LENGTH 175 -#define Y_MAX_LENGTH 185 -#define Z_MAX_LENGTH 90 +#define X_MAX_LENGTH 205 +#define Y_MAX_LENGTH 205 +#define Z_MAX_LENGTH 200 // The position of the homing switches. Use MAX_LENGTH * -0.5 if the center should be 0, 0, 0 #define X_HOME_POS 0 @@ -161,7 +156,7 @@ const bool Z_ENDSTOPS_INVERTING = false; // set to true to invert the logic of t //// MOVEMENT SETTINGS #define NUM_AXIS 4 // The axis order in all axis related arrays is X, Y, Z, E -#define HOMING_FEEDRATE {1500, 1500, 80, 0} // {50*60, 50*60, 4*60, 0} // set the homing speeds (mm/min) +#define HOMING_FEEDRATE {50*60, 50*60, 4*60, 0} // set the homing speeds (mm/min) // default settings @@ -169,8 +164,8 @@ const bool Z_ENDSTOPS_INVERTING = false; // set to true to invert the logic of t #define DEFAULT_MAX_FEEDRATE {500, 500, 5, 45} // (mm/sec) #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. -#define DEFAULT_ACCELERATION 1500 // 3000 // X, Y, Z and E max acceleration in mm/s^2 for printing moves -#define DEFAULT_RETRACT_ACCELERATION 1500 // 3000 // X, Y, Z and E max acceleration in mm/s^2 for r retracts +#define DEFAULT_ACCELERATION 3000 // 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 r retracts // #define DEFAULT_XYJERK 20.0 // (mm/sec) @@ -186,14 +181,14 @@ const bool Z_ENDSTOPS_INVERTING = false; // set to true to invert the logic of t // M501 - reads parameters from EEPROM (if you need reset them after you changed them temporarily). // M502 - reverts to the default "factory settings". You still need to store them in EEPROM afterwards if you want to. //define this to enable eeprom support -#define EEPROM_SETTINGS +//#define EEPROM_SETTINGS //to disable EEPROM Serial responses and decrease program space by ~1700 byte: comment this out: // please keep turned on if you can. -#define EEPROM_CHITCHAT +//#define EEPROM_CHITCHAT //LCD and SD support //#define ULTRA_LCD //general lcd support, also 16x2 -//#define SDSUPPORT // Enable SD Card Support in Hardware Console +#define SDSUPPORT // Enable SD Card Support in Hardware Console //#define ULTIPANEL #ifdef ULTIPANEL diff --git a/Marlin/Configuration_adv.h b/Marlin/Configuration_adv.h index d47b9b262..2df655061 100644 --- a/Marlin/Configuration_adv.h +++ b/Marlin/Configuration_adv.h @@ -59,6 +59,11 @@ #define EXTRUDER_RUNOUT_SPEED 1500. //extrusion speed #define EXTRUDER_RUNOUT_EXTRUDE 100 +//These defines help to calibrate the AD595 sensor in case you get wrong temperature measurements. +//The measured temperature is defined as "actualTemp = (measuredTemp * TEMP_SENSOR_AD595_GAIN) + TEMP_SENSOR_AD595_OFFSET" +#define TEMP_SENSOR_AD595_OFFSET 0.0 +#define TEMP_SENSOR_AD595_GAIN 1.0 + //=========================================================================== //=============================Mechanical Settings=========================== //=========================================================================== diff --git a/Marlin/planner.cpp b/Marlin/planner.cpp index ed5b67435..d78e1d999 100644 --- a/Marlin/planner.cpp +++ b/Marlin/planner.cpp @@ -529,6 +529,13 @@ void plan_buffer_line(float &x, float &y, float &z, float &e, float feed_rate, u // Enable all if(block->steps_e != 0) { enable_e0();enable_e1();enable_e2(); } + + // slow down when de buffer starts to empty, rather than wait at the corner for a buffer refill + int moves_queued=(block_buffer_head-block_buffer_tail + BLOCK_BUFFER_SIZE) & (BLOCK_BUFFER_SIZE - 1); + #ifdef SLOWDOWN + if(moves_queued < (BLOCK_BUFFER_SIZE * 0.5) && moves_queued > 1) feed_rate = feed_rate*moves_queued / (BLOCK_BUFFER_SIZE * 0.5); + #endif + float delta_mm[4]; delta_mm[X_AXIS] = (target[X_AXIS]-position[X_AXIS])/axis_steps_per_unit[X_AXIS]; delta_mm[Y_AXIS] = (target[Y_AXIS]-position[Y_AXIS])/axis_steps_per_unit[Y_AXIS]; @@ -554,12 +561,6 @@ void plan_buffer_line(float &x, float &y, float &z, float &e, float feed_rate, u if(feed_rate 1) feed_rate = feed_rate*moves_queued / (BLOCK_BUFFER_SIZE * 0.5); -#endif - /* // segment time im micro seconds long segment_time = lround(1000000.0/inverse_second); diff --git a/README.md b/README.md index 11b4be60f..6f04764c9 100644 --- a/README.md +++ b/README.md @@ -1,23 +1,3 @@ -SCUBA82's fork: ------------------ - -The main goal of my fork is porting the brilliant Marlin firmware to GEN7 Boards. -I'm working on a 16MHz GEN7 board and have only tested with this configuration. -But there were reports about successfully running it at 20 MHz. Expect 25% faster moves and maybe some other issues. - -Using lcd and sdcard support on an ATMega644(P) is not possible cause the sketch is way too big for its memory. -I switched to an ATMega1284P which has double size program memory. Unfortunately it's not supported in Arduino IDE out of the box but expect a tutorial on how to compile for it soon. -For the necessary pin breakouts I used Alfons3 design of GEN7 (https://github.com/Alfons3/Generation_7_Electronics) with an additional breakout for pin A0/D31. -I'll publish my desing as soon as possible. - -You have to use different chip fuses to get Marlin running. -The fuses I'm using are lfuse: 0xF7 hfuse: 0xD4 efuse: 0xFD - -For questions take a look into http://forums.reprap.org/read.php?181,118329 or send me an e-mail: christian_thalhammer@gmx.at - - -Expect this fork to be highly experimental. - WARNING: -------- THIS IS RELEASE CANDIDATE 1 FOR MARLIN 1.0.0