Moved SLOWDOWN function. (jetty840)
Included AD595 calibration options. (daid)
This commit is contained in:
parent
4fbda5c3f5
commit
018c567abf
|
@ -28,7 +28,7 @@
|
||||||
// Ultimaker = 7
|
// Ultimaker = 7
|
||||||
// Teensylu = 8
|
// Teensylu = 8
|
||||||
// Gen3+ =9
|
// Gen3+ =9
|
||||||
#define MOTHERBOARD 51
|
#define MOTHERBOARD 7
|
||||||
|
|
||||||
//===========================================================================
|
//===========================================================================
|
||||||
//=============================Thermal Settings ============================
|
//=============================Thermal Settings ============================
|
||||||
|
@ -46,13 +46,13 @@
|
||||||
// 6 is EPCOS 100k
|
// 6 is EPCOS 100k
|
||||||
// 7 is 100k Honeywell thermistor 135-104LAG-J01
|
// 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_1 0
|
||||||
#define TEMP_SENSOR_2 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
|
// 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
|
#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
|
// 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 HEATER_2_MAXTEMP 275
|
||||||
#define BED_MAXTEMP 150
|
#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:
|
// PID settings:
|
||||||
// Comment the following line to disable PID and enable bang-bang.
|
// 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
|
#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.
|
// 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 X_ENDSTOPS_INVERTING = true; // 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 Y_ENDSTOPS_INVERTING = true; // 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 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
|
// For Inverting Stepper Enable Pins (Active Low) use 0, Non Inverting (Active High) use 1
|
||||||
#define X_ENABLE_ON 0
|
#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_Z false
|
||||||
#define DISABLE_E false // For all extruders
|
#define DISABLE_E false // For all extruders
|
||||||
|
|
||||||
#define INVERT_X_DIR false // for Mendel set to false, for Orca set to true
|
#define INVERT_X_DIR true // 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_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_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_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
|
#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 Y_HOME_DIR -1
|
||||||
#define Z_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 max_software_endstops true //If true, axis won't move to coordinates greater than the defined lengths below.
|
||||||
#define X_MAX_LENGTH 175
|
#define X_MAX_LENGTH 205
|
||||||
#define Y_MAX_LENGTH 185
|
#define Y_MAX_LENGTH 205
|
||||||
#define Z_MAX_LENGTH 90
|
#define Z_MAX_LENGTH 200
|
||||||
|
|
||||||
// The position of the homing switches. Use MAX_LENGTH * -0.5 if the center should be 0, 0, 0
|
// The position of the homing switches. Use MAX_LENGTH * -0.5 if the center should be 0, 0, 0
|
||||||
#define X_HOME_POS 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
|
//// MOVEMENT SETTINGS
|
||||||
#define NUM_AXIS 4 // The axis order in all axis related arrays is X, Y, Z, E
|
#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
|
// 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_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_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_ACCELERATION 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_RETRACT_ACCELERATION 3000 // X, Y, Z and E max acceleration in mm/s^2 for r retracts
|
||||||
|
|
||||||
//
|
//
|
||||||
#define DEFAULT_XYJERK 20.0 // (mm/sec)
|
#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).
|
// 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.
|
// 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 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:
|
//to disable EEPROM Serial responses and decrease program space by ~1700 byte: comment this out:
|
||||||
// please keep turned on if you can.
|
// please keep turned on if you can.
|
||||||
#define EEPROM_CHITCHAT
|
//#define EEPROM_CHITCHAT
|
||||||
|
|
||||||
//LCD and SD support
|
//LCD and SD support
|
||||||
//#define ULTRA_LCD //general lcd support, also 16x2
|
//#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
|
//#define ULTIPANEL
|
||||||
#ifdef ULTIPANEL
|
#ifdef ULTIPANEL
|
||||||
|
|
|
@ -59,6 +59,11 @@
|
||||||
#define EXTRUDER_RUNOUT_SPEED 1500. //extrusion speed
|
#define EXTRUDER_RUNOUT_SPEED 1500. //extrusion speed
|
||||||
#define EXTRUDER_RUNOUT_EXTRUDE 100
|
#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===========================
|
//=============================Mechanical Settings===========================
|
||||||
//===========================================================================
|
//===========================================================================
|
||||||
|
|
|
@ -529,6 +529,13 @@ void plan_buffer_line(float &x, float &y, float &z, float &e, float feed_rate, u
|
||||||
// Enable all
|
// Enable all
|
||||||
if(block->steps_e != 0) { enable_e0();enable_e1();enable_e2(); }
|
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];
|
float delta_mm[4];
|
||||||
delta_mm[X_AXIS] = (target[X_AXIS]-position[X_AXIS])/axis_steps_per_unit[X_AXIS];
|
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];
|
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<minimumfeedrate) feed_rate=minimumfeedrate;
|
if(feed_rate<minimumfeedrate) feed_rate=minimumfeedrate;
|
||||||
}
|
}
|
||||||
|
|
||||||
// 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
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
// segment time im micro seconds
|
// segment time im micro seconds
|
||||||
long segment_time = lround(1000000.0/inverse_second);
|
long segment_time = lround(1000000.0/inverse_second);
|
||||||
|
|
20
README.md
20
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:
|
WARNING:
|
||||||
--------
|
--------
|
||||||
THIS IS RELEASE CANDIDATE 1 FOR MARLIN 1.0.0
|
THIS IS RELEASE CANDIDATE 1 FOR MARLIN 1.0.0
|
||||||
|
|
Loading…
Reference in a new issue