diff options
Diffstat (limited to 'Sprinter/Configuration.h')
-rw-r--r-- | Sprinter/Configuration.h | 123 |
1 files changed, 104 insertions, 19 deletions
diff --git a/Sprinter/Configuration.h b/Sprinter/Configuration.h index 250a2d2..25b3be6 100644 --- a/Sprinter/Configuration.h +++ b/Sprinter/Configuration.h @@ -14,7 +14,7 @@ // Gen 3 Plus = 21 // gen 3 Monolithic Electronics = 22 // Gen3 PLUS for TechZone Gen3 Remix Motherboard = 23 -#define MOTHERBOARD 3 +#define MOTHERBOARD 3 //// Thermistor settings: // 1 is 100k thermistor @@ -29,12 +29,13 @@ //// Calibration variables // X, Y, Z, E steps per unit - Metric Prusa Mendel with Wade extruder: -float axis_steps_per_unit[] = {80, 80, 3200/1.25,700}; +#define _AXIS_STEP_PER_UNIT {80, 80, 3200/1.25,700} // Metric Prusa Mendel with Makergear geared stepper extruder: -//float axis_steps_per_unit[] = {80,80,3200/1.25,1380}; +//#define _AXIS_STEP_PER_UNIT {80,80,3200/1.25,1380} // MakerGear Hybrid Prusa Mendel: // Z axis value is for .9 stepper(if you have 1.8 steppers for Z, you need to use 2272.7272) -//float axis_steps_per_unit[] = {104.987, 104.987, 4545.4544, 1487}; +//#define _AXIS_STEP_PER_UNIT {104.987, 104.987, 4545.4544, 1487} + //// Endstop Settings #define ENDSTOPPULLUPS // Comment this out (using // at the start of the line) to disable the endstop pullup resistors @@ -47,18 +48,27 @@ const bool Z_ENDSTOP_INVERT = false; // This determines the communication speed of the printer #define BAUDRATE 115200 +//#define BAUDRATE 250000 // Comment out (using // at the start of the line) to disable SD support: #define SDSUPPORT +// Uncomment to make run init.g from SD on boot +//#define SDINITFILE + +//#define SD_FAST_XFER_AKTIV + +//----------------------------------------------------------------------- //// ADVANCED SETTINGS - to tweak parameters +//----------------------------------------------------------------------- #ifdef SDSUPPORT - //Fast transfer chunk size (> 1024 is unstable, change at your own risk). - #define SD_FAST_XFER_CHUNK_SIZE 1024 + #ifdef SD_FAST_XFER_AKTIV + //Fast transfer chunk size (> 1024 is unstable, change at your own risk). + #define SD_FAST_XFER_CHUNK_SIZE 1024 + #endif #endif -#include "thermistortables.h" // For Inverting Stepper Enable Pins (Active Low) use 0, Non Inverting (Active High) use 1 #define X_ENABLE_ON 0 @@ -81,23 +91,28 @@ const bool INVERT_Y_DIR = false; const bool INVERT_Z_DIR = true; const bool INVERT_E_DIR = false; + //// ENDSTOP SETTINGS: // 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 + const bool min_software_endstops = false; //If true, axis won't move to coordinates less than zero. -const bool max_software_endstops = true; //If true, axis won't move to coordinates greater than the defined lengths below. +const bool max_software_endstops = true; //If true, axis won't move to coordinates greater than the defined lengths below. + +//Max Length for Prusa Mendel, check the ways of your axis and set this Values const int X_MAX_LENGTH = 200; const int Y_MAX_LENGTH = 200; const int Z_MAX_LENGTH = 100; //// MOVEMENT SETTINGS const int NUM_AXIS = 4; // The axis order in all axis related arrays is X, Y, Z, E -float max_feedrate[] = {200000, 200000, 240, 500000}; -float homing_feedrate[] = {1500,1500,120}; -bool axis_relative_modes[] = {false, false, false, false}; +#define _MAX_FEEDRATE {200000, 200000, 240, 500000} +#define _HOMING_FEEDRATE {1500,1500,120} +#define _AXIS_RELATIVE_MODES {false, false, false, false} + // Min step delay in microseconds. If you are experiencing missing steps, try to raise the delay microseconds, but be aware this // If you enable this, make sure STEP_DELAY_RATIO is disabled. @@ -119,29 +134,87 @@ long min_time_before_dir_change = 30; //milliseconds //// Acceleration settings #ifdef RAMP_ACCELERATION // 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. -float max_start_speed_units_per_second[] = {25.0,25.0,0.2,10.0}; -long max_acceleration_units_per_sq_second[] = {1000,1000,50,10000}; // X, Y, Z and E max acceleration in mm/s^2 for printing moves or retracts -long max_travel_acceleration_units_per_sq_second[] = {500,500,50,500}; // X, Y, Z max acceleration in mm/s^2 for travel moves +#define _ACCELERATION 2000 // Normal acceleration mm/s^2 +#define _RETRACT_ACCELERATION 7000 // Normal acceleration mm/s^2 +#define _MAX_XY_JERK (20.0*60) +#define _MAX_Z_JERK (0.4*60) +#define _MAX_START_SPEED_UNITS_PER_SECOND {25.0,25.0,0.2,10.0} +#define _MAX_ACCELERATION_UNITS_PER_SQ_SECOND {500,500,50,500} // X, Y, Z and E max acceleration in mm/s^2 for printing moves or retracts +#define _MAX_TRAVEL_ACCELERATION_UNITS_PER_SQ_SECOND {500,500,50,500} // X, Y, Z max acceleration in mm/s^2 for travel moves #endif + // Machine UUID // This may be useful if you have multiple machines and wish to identify them by using the M115 command. // By default we set it to zeros. -char uuid[] = "00000000-0000-0000-0000-000000000000"; +#define _DEF_CHAR_UUID "00000000-0000-0000-0000-000000000000" + +//----------------------------------------------------------------------- +//// Planner buffer Size +//----------------------------------------------------------------------- + +// The number of linear motions that can be in the plan at any give time +// if the SD Card need to much memory reduce the Values for Plannerpuffer (base of 2) +#ifdef SDSUPPORT + #define BLOCK_BUFFER_SIZE 16 + #define BLOCK_BUFFER_MASK 0x0f +#else + #define BLOCK_BUFFER_SIZE 16 + #define BLOCK_BUFFER_MASK 0x0f +#endif + +//----------------------------------------------------------------------- +//// SETTINGS FOR ARC FUNCTION (Command G2/G2) +//----------------------------------------------------------------------- + +// Arc interpretation settings: +//Step to split a cirrcle in small Lines +#define MM_PER_ARC_SEGMENT 1 +//After this count of steps a new SIN / COS caluclation is startet to correct the circle interpolation +#define N_ARC_CORRECTION 25 + +//----------------------------------------------------------------------- +//// HEATERCONTROL AND PID PARAMETERS +//----------------------------------------------------------------------- + +//Testfunction to adjust the Hotend temperatur in case of Printingspeed +//If the Printer print slow the Temp is going to AUTO_TEMP_MIN +//At the moment this Value dont change the targettemp from the Hotend +//The result of this function is only send with the Temperaturerequest to the host +//#define AUTOTEMP +#ifdef AUTOTEMP + #define AUTO_TEMP_MAX 240 + #define AUTO_TEMP_MIN 205 + #define AUTO_TEMP_FACTOR 0.025 + #define AUTOTEMP_OLDWEIGHT 0.98 +#endif + //// AD595 THERMOCOUPLE SUPPORT UNTESTED... USE WITH CAUTION!!!! //// PID settings: // Uncomment the following line to enable PID support. This is untested and could be disastrous. Be careful. -//#define PIDTEMP 1 +#define PIDTEMP 1 #ifdef PIDTEMP +//Sanguinololu 1.2 and above, the PWM Output Hotend Timer 1 is used for the Hardware PWM +//but in this Software use Timer1 for the Stepperfunction so it is not possible to use the "analogWrite" function. +//This Soft PWM use Timer 2 with 400 Hz to drive the PWM for the hotend +#define PID_SOFT_PWM + +//Measure the MIN/MAX Value of the Hotend Temp and show it with +//Command M601 / Command M602 Reset the MIN/MAX Value +//#define DEBUG_HEATER_TEMP + +//PID Controler Settings #define PID_INTEGRAL_DRIVE_MAX 80 // too big, and heater will lag after changing temperature, too small and it might not compensate enough for long-term errors #define PID_PGAIN 2560 //256 is 1.0 // value of X means that error of 1 degree is changing PWM duty by X, probably no need to go over 25 #define PID_IGAIN 64 //256 is 1.0 // value of X (e.g 0.25) means that each degree error over 1 sec (2 measurements) changes duty cycle by 2X (=0.5) units (verify?) #define PID_DGAIN 4096 //256 is 1.0 // value of X means that around reached setpoint, each degree change over one measurement (half second) adjusts PWM by X units to compensate + // magic formula 1, to get approximate "zero error" PWM duty. Take few measurements with low PWM duty and make linear fit to get the formula -#define HEATER_DUTY_FOR_SETPOINT(setpoint) ((int)((187L*(long)setpoint)>>8)-27) // for my makergear hot-end: linear fit {50,10},{60,20},{80,30},{105,50},{176,100},{128,64},{208,128} +// for my makergear hot-end: linear fit {50,10},{60,20},{80,30},{105,50},{176,100},{128,64},{208,128} +#define HEATER_DUTY_FOR_SETPOINT(setpoint) ((int)((187L*(long)setpoint)>>8)-27) // magic formula 2, to make led brightness approximately linear #define LED_PWM_FOR_BRIGHTNESS(brightness) ((64*brightness-1384)/(300-brightness)) #endif @@ -152,12 +225,14 @@ char uuid[] = "00000000-0000-0000-0000-000000000000"; // How often should the heater check for new temp readings, in milliseconds #define HEATER_CHECK_INTERVAL 500 #define BED_CHECK_INTERVAL 5000 + // Comment the following line to enable heat management during acceleration #define DISABLE_CHECK_DURING_ACC #ifndef DISABLE_CHECK_DURING_ACC // Uncomment the following line to disable heat management during moves //#define DISABLE_CHECK_DURING_MOVE #endif + // Uncomment the following line to disable heat management during travel moves (and extruder-only moves, eg: retracts), strongly recommended if you are missing steps mid print. // Probably this should remain commented if are using PID. // It also defines the max milliseconds interval after which a travel move is not considered so for the sake of this feature. @@ -167,6 +242,7 @@ char uuid[] = "00000000-0000-0000-0000-000000000000"; //#define SMOOTHING //#define SMOOTHFACTOR 16 //best to use a power of two here - determines how many values are averaged together by the smoothing algorithm + //// Experimental watchdog and minimal temp // The watchdog waits for the watchperiod in milliseconds whenever an M104 or M109 increases the target temperature // If the temperature has not increased at the end of that period, the target temperature is set to zero. It can be reset with another M104/M109 @@ -200,13 +276,22 @@ char uuid[] = "00000000-0000-0000-0000-000000000000"; //#define CONTROLLERFAN_PIN 23 //Pin used for the fan to cool controller, comment out to disable this function #define CONTROLLERFAN_SEC 60 //How many seconds, after all motors were disabled, the fan should run + +//----------------------------------------------------------------------- +// DEBUGING +//----------------------------------------------------------------------- + + +//Uncomment this to see on the host if a wrong or unknown Command is recived +//Only for Testing !!! +//#define SEND_WRONG_CMD_INFO + // Uncomment the following line to enable debugging. You can better control debugging below the following line //#define DEBUG #ifdef DEBUG //#define DEBUG_PREPARE_MOVE //Enable this to debug prepare_move() function - //#define DEBUG_BRESENHAM //Enable this to debug the Bresenham algorithm //#define DEBUG_RAMP_ACCELERATION //Enable this to debug all constant acceleration info - //#define DEBUG_MOVE_TIME //Enable this to time each move and print the result + //#define DEBUG_MOVE_TIME //Enable this to time each move and print the result //#define DEBUG_HEAT_MGMT //Enable this to debug heat management. WARNING, this will cause axes to jitter! //#define DEBUG_DISABLE_CHECK_DURING_TRAVEL //Debug the namesake feature, see above in this file #endif |