@ -41,6 +41,7 @@
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					// 33 = RAMPS 1.3 / 1.4 (Power outputs: Extruder, Fan, Bed)
 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					// 34 = RAMPS 1.3 / 1.4 (Power outputs: Extruder0, Extruder1, Bed)
 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					// 35 = RAMPS 1.3 / 1.4 (Power outputs: Extruder, Fan, Fan)
 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					// 36 = RAMPS 1.3 / 1.4 (Power outputs: Extruder0, Extruder1, Fan)
 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					// 4  = Duemilanove w/ ATMega328P pin assignment
 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					// 5  = Gen6
 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					// 51 = Gen6 deluxe
 
 
				
			 
			
		
	
	
		
			
				
					
						
						
						
							
								 
							 
						
					 
				
				 
				 
				
					@ -54,12 +55,14 @@
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					// 68 = Azteeg X3 Pro
 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					// 7  = Ultimaker
 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					// 71 = Ultimaker (Older electronics. Pre 1.5.4. This is rare)
 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					// 72 = Ultimainboard 2.x (Uses TEMP_SENSOR 20)
 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					// 77 = 3Drag Controller
 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					// 8  = Teensylu
 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					// 80 = Rumba
 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					// 81 = Printrboard (AT90USB1286)
 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					// 82 = Brainwave (AT90USB646)
 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					// 83 = SAV Mk-I (AT90USB1286)
 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					// 84 = Teensy++2.0 (AT90USB1286) // CLI compile: DEFINES=AT90USBxx_TEENSYPP_ASSIGNMENTS HARDWARE_MOTHERBOARD=84  make
 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					// 9  = Gen3+
 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					// 70 = Megatronics
 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					// 701= Megatronics v2.0
 
 
				
			 
			
		
	
	
		
			
				
					
						
						
						
							
								 
							 
						
					 
				
				 
				 
				
					@ -68,6 +71,8 @@
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					// 91 = Final OMCA board
 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					// 301= Rambo
 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					// 21 = Elefu Ra Board (v3)
 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					// 88 = 5DPrint D8 Driver Board
 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					// 999 = Leapfrog
 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					# ifndef MOTHERBOARD 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					# define MOTHERBOARD 33 
 
				
			 
			
		
	
	
		
			
				
					
						
							
								 
							 
						
						
							
								 
							 
						
						
					 
				
				 
				 
				
					@ -141,7 +146,11 @@
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					// 8 is 100k 0603 SMD Vishay NTCS0603E3104FXT (4.7k pullup)
 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					// 9 is 100k GE Sensing AL03006-58.2K-97-G1 (4.7k pullup)
 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					// 10 is 100k RS thermistor 198-961 (4.7k pullup)
 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					// 60 is 100k Maker's Tool Works Kapton Bed Thermistor
 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					// 11 is 100k beta 3950 1% thermistor (4.7k pullup)
 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					// 12 is 100k 0603 SMD Vishay NTCS0603E3104FXT (4.7k pullup) (calibrated for Makibox hot bed)
 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					// 13 is 100k Hisens 3950  1% up to 300°C for hotend "Simple ONE " & "Hotend "All In ONE" 
 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					// 20 is the PT100 circuit found in the Ultimainboard V2.x
 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					// 60 is 100k Maker's Tool Works Kapton Bed Thermistor beta=3950
 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					//
 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					//    1k ohm pullup tables - This is not normal, you would have to have changed out your 4.7k for 1k
 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					//                          (but gives greater accuracy and more stable PID)
 
 
				
			 
			
		
	
	
		
			
				
					
						
							
								 
							 
						
						
							
								 
							 
						
						
					 
				
				 
				 
				
					@ -205,7 +214,7 @@
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					                                  // 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 K1 0.95  //smoothing factor within the PID
 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					  # define PID_dT (( 16.0 * 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
 
 
				
			 
			
		
	
	
		
			
				
					
						
							
								 
							 
						
						
							
								 
							 
						
						
					 
				
				 
				 
				
					@ -271,6 +280,44 @@
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					# define EXTRUDE_MINTEMP 170 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					# define EXTRUDE_MAXLENGTH (X_MAX_LENGTH+Y_MAX_LENGTH)  //prevent extrusion of very large distances.
 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					/*================== Thermal Runaway Protection ==============================
 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					This  is  a  feature  to  protect  your  printer  from  burn  up  in  flames  if  it  has 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					a  thermistor  coming  off  place  ( this  happened  to  a  friend  of  mine  recently  and 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					motivated  me  writing  this  feature ) . 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					The  issue :  If  a  thermistor  come  off ,  it  will  read  a  lower  temperature  than  actual . 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					The  system  will  turn  the  heater  on  forever ,  burning  up  the  filament  and  anything 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					else  around . 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					After  the  temperature  reaches  the  target  for  the  first  time ,  this  feature  will  
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					start  measuring  for  how  long  the  current  temperature  stays  below  the  target  
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					minus  _HYSTERESIS  ( set_temperature  -  THERMAL_RUNAWAY_PROTECTION_HYSTERESIS ) . 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					If  it  stays  longer  than  _PERIOD ,  it  means  the  thermistor  temperature 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					cannot  catch  up  with  the  target ,  so  something  * may  be *  wrong .  Then ,  to  be  on  the 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					safe  side ,  the  system  will  he  halt . 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					Bear  in  mind  the  count  down  will  just  start  AFTER  the  first  time  the  
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					thermistor  temperature  is  over  the  target ,  so  you  will  have  no  problem  if 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					your  extruder  heater  takes  2  minutes  to  hit  the  target  on  heating . 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					*/ 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					// If you want to enable this feature for all your extruder heaters,
 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					// uncomment the 2 defines below:
 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					// Parameters for all extruder heaters
 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					//#define THERMAL_RUNAWAY_PROTECTION_PERIOD 40 //in seconds
 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					//#define THERMAL_RUNAWAY_PROTECTION_HYSTERESIS 4 // in degree Celsius
 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					// If you want to enable this feature for your bed heater,
 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					// uncomment the 2 defines below:
 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					// Parameters for the bed heater
 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					//#define THERMAL_RUNAWAY_PROTECTION_BED_PERIOD 20 //in seconds
 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					//#define THERMAL_RUNAWAY_PROTECTION_BED_HYSTERESIS 2 // in degree Celsius
 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					//===========================================================================
 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					//===========================================================================
 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					//=============================Mechanical Settings===========================
 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					//===========================================================================
 
 
				
			 
			
		
	
	
		
			
				
					
						
							
								 
							 
						
						
							
								 
							 
						
						
					 
				
				 
				 
				
					@ -326,6 +373,7 @@ const bool Z_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					# define DISABLE_Y false 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					# define DISABLE_Z false 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					# define DISABLE_E false  // For all extruders
 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					# define DISABLE_INACTIVE_EXTRUDER true  //disable only inactive extruders and keep active extruder enabled
 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					# define INVERT_X_DIR false  // DELTA does not invert
 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					# define INVERT_Y_DIR false 
 
				
			 
			
		
	
	
		
			
				
					
						
							
								 
							 
						
						
							
								 
							 
						
						
					 
				
				 
				 
				
					@ -359,14 +407,53 @@ const bool Z_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					//============================= Bed Auto Leveling ===========================
 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					//#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 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					  // these are the positions on the bed to do the probing
 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					  # define LEFT_PROBE_BED_POSITION 15 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					  # define RIGHT_PROBE_BED_POSITION 170 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					  # define BACK_PROBE_BED_POSITION 180 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					  # define FRONT_PROBE_BED_POSITION 20 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					// 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
 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					  # 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
 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    # define LEFT_PROBE_BED_POSITION 15 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    # define RIGHT_PROBE_BED_POSITION 170 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    # define BACK_PROBE_BED_POSITION 180 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    # define FRONT_PROBE_BED_POSITION 20 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					     // set the number of grid points per dimension
 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					     // I wouldn't see a reason to go above 3 (=9 probing points on the bed)
 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    # 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
 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					      # define ABL_PROBE_PT_1_X 15 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					      # define ABL_PROBE_PT_1_Y 180 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					      # define ABL_PROBE_PT_2_X 15 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					      # define ABL_PROBE_PT_2_Y 20 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					      # define ABL_PROBE_PT_3_X 170 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					      # define ABL_PROBE_PT_3_Y 20 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					  # 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 
 
				
			 
			
		
	
	
		
			
				
					
						
						
						
							
								 
							 
						
					 
				
				 
				 
				
					@ -381,6 +468,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.
 
 
				
			 
			
		
	
	
		
			
				
					
						
						
						
							
								 
							 
						
					 
				
				 
				 
				
					@ -406,7 +495,7 @@ const bool Z_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					  # endif 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					# endif 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					# endif  // ENABLE_AUTO_BED_LEVELING
  
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					// The position of the homing switches
 
 
				
			 
			
		
	
	
		
			
				
					
						
							
								 
							 
						
						
							
								 
							 
						
						
					 
				
				 
				 
				
					@ -451,6 +540,15 @@ const bool Z_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					//=============================Additional Features===========================
 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					//===========================================================================
 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					// Custom M code points
 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					# define CUSTOM_M_CODES 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					# ifdef CUSTOM_M_CODES 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					  # define CUSTOM_M_CODE_SET_Z_PROBE_OFFSET 851 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					  # define Z_PROBE_OFFSET_RANGE_MIN -15 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					  # define Z_PROBE_OFFSET_RANGE_MAX -5 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					# endif 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					// EEPROM
 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					// The microcontroller can store settings in the EEPROM, e.g. max velocity...
 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					// M500 - stores parameters in EEPROM
 
 
				
			 
			
		
	
	
		
			
				
					
						
						
						
							
								 
							 
						
					 
				
				 
				 
				
					@ -476,10 +574,13 @@ const bool Z_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					//#define DOGLCD  // Support for SPI LCD 128x64 (Controller ST7565R graphic Display Family)
 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					//#define SDSUPPORT // Enable SD Card Support in Hardware Console
 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					//#define SDSLOW // Use slower SD transfer mode (not normally needed - uncomment if you're getting volume init error)
 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					//#define SD_CHECK_AND_RETRY // Use CRC checks and retries on the SD communication
 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					//#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 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
 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					// The MaKr3d Makr-Panel with graphic controller and SD support
 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					// http://reprap.org/wiki/MaKr3d_MaKrPanel
 
 
				
			 
			
		
	
	
		
			
				
					
						
							
								 
							 
						
						
							
								 
							 
						
						
					 
				
				 
				 
				
					@ -565,6 +666,21 @@ const bool Z_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					  # define LCD_USE_I2C_BUZZER  //comment out to disable buzzer on LCD
 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					  # define NEWPANEL 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					  # define ULTIPANEL 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					  # ifndef ENCODER_PULSES_PER_STEP 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						# define ENCODER_PULSES_PER_STEP 4 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					  # endif 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					  # ifndef ENCODER_STEPS_PER_MENU_ITEM 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						# define ENCODER_STEPS_PER_MENU_ITEM 1 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					  # endif 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					  # ifdef LCD_USE_I2C_BUZZER 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						# define LCD_FEEDBACK_FREQUENCY_HZ 1000 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						# define LCD_FEEDBACK_FREQUENCY_DURATION_MS 100 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					  # endif 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					# endif 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					// Panucatt VIKI LCD with status LEDs, integrated click & L/R/U/P buttons, separate encoder inputs
 
 
				
			 
			
		
	
	
		
			
				
					
						
						
						
							
								 
							 
						
					 
				
				 
				 
				
					@ -587,7 +703,7 @@ const bool Z_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					// 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 SR_LCD_2W_NL     // Non latching 2 wire shift   register
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					   //#define NEWPANEL
 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					# endif 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
	
		
			
				
					
						
							
								 
							 
						
						
							
								 
							 
						
						
					 
				
				 
				 
				
					@ -676,6 +792,35 @@ const bool Z_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					//#define SERVO_ENDSTOPS {-1, -1, 0} // Servo index for X, Y, Z. Disable with -1
 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					//#define SERVO_ENDSTOP_ANGLES {0,0, 0,0, 70,0} // X,Y,Z Axis Extend and Retract angles
 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					/**********************************************************************\
 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					 *  Support  for  a  filament  diameter  sensor 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					 *  Also  allows  adjustment  of  diameter  at  print  time  ( vs   at  slicing ) 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					 *  Single  extruder  only  at  this  point  ( extruder  0 ) 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					 *  
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					 *  Motherboards 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					 *  34  -  RAMPS1 .4  -  uses  Analog  input  5  on  the  AUX2  connector  
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					 *  81  -  Printrboard  -  Uses  Analog  input  2  on  the  Aux  2  connector 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					 *  301  -  Rambo   -  uses  Analog  input  3 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					 *  Note  may  require  analog  pins  to  be  defined  for  different  motherboards 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					# 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 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)
 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					//defines used in the code
 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					# define DEFAULT_MEASURED_FILAMENT_DIA  DEFAULT_NOMINAL_FILAMENT_DIA   //set measured to nominal initially 
 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					# include  "Configuration_adv.h" 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					# include  "thermistortables.h"