|
@@ -41,6 +41,7 @@
|
41
|
41
|
// 33 = RAMPS 1.3 / 1.4 (Power outputs: Extruder, Fan, Bed)
|
42
|
42
|
// 34 = RAMPS 1.3 / 1.4 (Power outputs: Extruder0, Extruder1, Bed)
|
43
|
43
|
// 35 = RAMPS 1.3 / 1.4 (Power outputs: Extruder, Fan, Fan)
|
|
44
|
+// 36 = RAMPS 1.3 / 1.4 (Power outputs: Extruder0, Extruder1, Fan)
|
44
|
45
|
// 4 = Duemilanove w/ ATMega328P pin assignment
|
45
|
46
|
// 5 = Gen6
|
46
|
47
|
// 51 = Gen6 deluxe
|
|
@@ -54,12 +55,14 @@
|
54
|
55
|
// 68 = Azteeg X3 Pro
|
55
|
56
|
// 7 = Ultimaker
|
56
|
57
|
// 71 = Ultimaker (Older electronics. Pre 1.5.4. This is rare)
|
|
58
|
+// 72 = Ultimainboard 2.x (Uses TEMP_SENSOR 20)
|
57
|
59
|
// 77 = 3Drag Controller
|
58
|
60
|
// 8 = Teensylu
|
59
|
61
|
// 80 = Rumba
|
60
|
62
|
// 81 = Printrboard (AT90USB1286)
|
61
|
63
|
// 82 = Brainwave (AT90USB646)
|
62
|
64
|
// 83 = SAV Mk-I (AT90USB1286)
|
|
65
|
+// 84 = Teensy++2.0 (AT90USB1286) // CLI compile: DEFINES=AT90USBxx_TEENSYPP_ASSIGNMENTS HARDWARE_MOTHERBOARD=84 make
|
63
|
66
|
// 9 = Gen3+
|
64
|
67
|
// 70 = Megatronics
|
65
|
68
|
// 701= Megatronics v2.0
|
|
@@ -68,6 +71,8 @@
|
68
|
71
|
// 91 = Final OMCA board
|
69
|
72
|
// 301= Rambo
|
70
|
73
|
// 21 = Elefu Ra Board (v3)
|
|
74
|
+// 88 = 5DPrint D8 Driver Board
|
|
75
|
+// 999 = Leapfrog
|
71
|
76
|
|
72
|
77
|
#ifndef MOTHERBOARD
|
73
|
78
|
#define MOTHERBOARD 33
|
|
@@ -141,7 +146,11 @@
|
141
|
146
|
// 8 is 100k 0603 SMD Vishay NTCS0603E3104FXT (4.7k pullup)
|
142
|
147
|
// 9 is 100k GE Sensing AL03006-58.2K-97-G1 (4.7k pullup)
|
143
|
148
|
// 10 is 100k RS thermistor 198-961 (4.7k pullup)
|
144
|
|
-// 60 is 100k Maker's Tool Works Kapton Bed Thermistor
|
|
149
|
+// 11 is 100k beta 3950 1% thermistor (4.7k pullup)
|
|
150
|
+// 12 is 100k 0603 SMD Vishay NTCS0603E3104FXT (4.7k pullup) (calibrated for Makibox hot bed)
|
|
151
|
+// 13 is 100k Hisens 3950 1% up to 300°C for hotend "Simple ONE " & "Hotend "All In ONE"
|
|
152
|
+// 20 is the PT100 circuit found in the Ultimainboard V2.x
|
|
153
|
+// 60 is 100k Maker's Tool Works Kapton Bed Thermistor beta=3950
|
145
|
154
|
//
|
146
|
155
|
// 1k ohm pullup tables - This is not normal, you would have to have changed out your 4.7k for 1k
|
147
|
156
|
// (but gives greater accuracy and more stable PID)
|
|
@@ -205,7 +214,7 @@
|
205
|
214
|
// is more then PID_FUNCTIONAL_RANGE then the PID will be shut off and the heater will be set to min/max.
|
206
|
215
|
#define PID_INTEGRAL_DRIVE_MAX 255 //limit for the integral term
|
207
|
216
|
#define K1 0.95 //smoothing factor within the PID
|
208
|
|
- #define PID_dT ((16.0 * 8.0)/(F_CPU / 64.0 / 256.0)) //sampling period of the temperature routine
|
|
217
|
+ #define PID_dT ((OVERSAMPLENR * 10.0)/(F_CPU / 64.0 / 256.0)) //sampling period of the temperature routine
|
209
|
218
|
|
210
|
219
|
// If you are using a pre-configured hotend then you can use one of the value sets by uncommenting it
|
211
|
220
|
// Ultimaker
|
|
@@ -271,6 +280,44 @@
|
271
|
280
|
#define EXTRUDE_MINTEMP 170
|
272
|
281
|
#define EXTRUDE_MAXLENGTH (X_MAX_LENGTH+Y_MAX_LENGTH) //prevent extrusion of very large distances.
|
273
|
282
|
|
|
283
|
+/*================== Thermal Runaway Protection ==============================
|
|
284
|
+This is a feature to protect your printer from burn up in flames if it has
|
|
285
|
+a thermistor coming off place (this happened to a friend of mine recently and
|
|
286
|
+motivated me writing this feature).
|
|
287
|
+
|
|
288
|
+The issue: If a thermistor come off, it will read a lower temperature than actual.
|
|
289
|
+The system will turn the heater on forever, burning up the filament and anything
|
|
290
|
+else around.
|
|
291
|
+
|
|
292
|
+After the temperature reaches the target for the first time, this feature will
|
|
293
|
+start measuring for how long the current temperature stays below the target
|
|
294
|
+minus _HYSTERESIS (set_temperature - THERMAL_RUNAWAY_PROTECTION_HYSTERESIS).
|
|
295
|
+
|
|
296
|
+If it stays longer than _PERIOD, it means the thermistor temperature
|
|
297
|
+cannot catch up with the target, so something *may be* wrong. Then, to be on the
|
|
298
|
+safe side, the system will he halt.
|
|
299
|
+
|
|
300
|
+Bear in mind the count down will just start AFTER the first time the
|
|
301
|
+thermistor temperature is over the target, so you will have no problem if
|
|
302
|
+your extruder heater takes 2 minutes to hit the target on heating.
|
|
303
|
+
|
|
304
|
+*/
|
|
305
|
+// If you want to enable this feature for all your extruder heaters,
|
|
306
|
+// uncomment the 2 defines below:
|
|
307
|
+
|
|
308
|
+// Parameters for all extruder heaters
|
|
309
|
+//#define THERMAL_RUNAWAY_PROTECTION_PERIOD 40 //in seconds
|
|
310
|
+//#define THERMAL_RUNAWAY_PROTECTION_HYSTERESIS 4 // in degree Celsius
|
|
311
|
+
|
|
312
|
+// If you want to enable this feature for your bed heater,
|
|
313
|
+// uncomment the 2 defines below:
|
|
314
|
+
|
|
315
|
+// Parameters for the bed heater
|
|
316
|
+//#define THERMAL_RUNAWAY_PROTECTION_BED_PERIOD 20 //in seconds
|
|
317
|
+//#define THERMAL_RUNAWAY_PROTECTION_BED_HYSTERESIS 2 // in degree Celsius
|
|
318
|
+//===========================================================================
|
|
319
|
+
|
|
320
|
+
|
274
|
321
|
//===========================================================================
|
275
|
322
|
//=============================Mechanical Settings===========================
|
276
|
323
|
//===========================================================================
|
|
@@ -326,6 +373,7 @@ const bool Z_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of
|
326
|
373
|
#define DISABLE_Y false
|
327
|
374
|
#define DISABLE_Z false
|
328
|
375
|
#define DISABLE_E false // For all extruders
|
|
376
|
+#define DISABLE_INACTIVE_EXTRUDER true //disable only inactive extruders and keep active extruder enabled
|
329
|
377
|
|
330
|
378
|
#define INVERT_X_DIR false // DELTA does not invert
|
331
|
379
|
#define INVERT_Y_DIR false
|
|
@@ -359,14 +407,53 @@ const bool Z_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of
|
359
|
407
|
//============================= Bed Auto Leveling ===========================
|
360
|
408
|
|
361
|
409
|
//#define ENABLE_AUTO_BED_LEVELING // Delete the comment to enable (remove // at the start of the line)
|
|
410
|
+#define Z_PROBE_REPEATABILITY_TEST // If not commented out, Z-Probe Repeatability test will be included if Auto Bed Leveling is Enabled.
|
362
|
411
|
|
363
|
412
|
#ifdef ENABLE_AUTO_BED_LEVELING
|
364
|
413
|
|
365
|
|
- // these are the positions on the bed to do the probing
|
366
|
|
- #define LEFT_PROBE_BED_POSITION 15
|
367
|
|
- #define RIGHT_PROBE_BED_POSITION 170
|
368
|
|
- #define BACK_PROBE_BED_POSITION 180
|
369
|
|
- #define FRONT_PROBE_BED_POSITION 20
|
|
414
|
+// There are 2 different ways to pick the X and Y locations to probe:
|
|
415
|
+
|
|
416
|
+// - "grid" mode
|
|
417
|
+// Probe every point in a rectangular grid
|
|
418
|
+// You must specify the rectangle, and the density of sample points
|
|
419
|
+// This mode is preferred because there are more measurements.
|
|
420
|
+// It used to be called ACCURATE_BED_LEVELING but "grid" is more descriptive
|
|
421
|
+
|
|
422
|
+// - "3-point" mode
|
|
423
|
+// Probe 3 arbitrary points on the bed (that aren't colinear)
|
|
424
|
+// You must specify the X & Y coordinates of all 3 points
|
|
425
|
+
|
|
426
|
+ #define AUTO_BED_LEVELING_GRID
|
|
427
|
+ // with AUTO_BED_LEVELING_GRID, the bed is sampled in a
|
|
428
|
+ // AUTO_BED_LEVELING_GRID_POINTSxAUTO_BED_LEVELING_GRID_POINTS grid
|
|
429
|
+ // and least squares solution is calculated
|
|
430
|
+ // Note: this feature occupies 10'206 byte
|
|
431
|
+ #ifdef AUTO_BED_LEVELING_GRID
|
|
432
|
+
|
|
433
|
+ // set the rectangle in which to probe
|
|
434
|
+ #define LEFT_PROBE_BED_POSITION 15
|
|
435
|
+ #define RIGHT_PROBE_BED_POSITION 170
|
|
436
|
+ #define BACK_PROBE_BED_POSITION 180
|
|
437
|
+ #define FRONT_PROBE_BED_POSITION 20
|
|
438
|
+
|
|
439
|
+ // set the number of grid points per dimension
|
|
440
|
+ // I wouldn't see a reason to go above 3 (=9 probing points on the bed)
|
|
441
|
+ #define AUTO_BED_LEVELING_GRID_POINTS 2
|
|
442
|
+
|
|
443
|
+
|
|
444
|
+ #else // not AUTO_BED_LEVELING_GRID
|
|
445
|
+ // with no grid, just probe 3 arbitrary points. A simple cross-product
|
|
446
|
+ // is used to esimate the plane of the print bed
|
|
447
|
+
|
|
448
|
+ #define ABL_PROBE_PT_1_X 15
|
|
449
|
+ #define ABL_PROBE_PT_1_Y 180
|
|
450
|
+ #define ABL_PROBE_PT_2_X 15
|
|
451
|
+ #define ABL_PROBE_PT_2_Y 20
|
|
452
|
+ #define ABL_PROBE_PT_3_X 170
|
|
453
|
+ #define ABL_PROBE_PT_3_Y 20
|
|
454
|
+
|
|
455
|
+ #endif // AUTO_BED_LEVELING_GRID
|
|
456
|
+
|
370
|
457
|
|
371
|
458
|
// these are the offsets to the probe relative to the extruder tip (Hotend - Probe)
|
372
|
459
|
#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
|
381
|
468
|
#define Z_RAISE_BEFORE_PROBING 15 //How much the extruder will be raised before traveling to the first probing point.
|
382
|
469
|
#define Z_RAISE_BETWEEN_PROBINGS 5 //How much the extruder will be raised when traveling from between next probing points
|
383
|
470
|
|
|
471
|
+ //#define Z_PROBE_SLED // turn on if you have a z-probe mounted on a sled like those designed by Charles Bell
|
|
472
|
+ //#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.
|
384
|
473
|
|
385
|
474
|
//If defined, the Probe servo will be turned on only during movement and then turned off to avoid jerk
|
386
|
475
|
//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
|
406
|
495
|
|
407
|
496
|
#endif
|
408
|
497
|
|
409
|
|
-#endif
|
|
498
|
+#endif // ENABLE_AUTO_BED_LEVELING
|
410
|
499
|
|
411
|
500
|
|
412
|
501
|
// 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
|
451
|
540
|
//=============================Additional Features===========================
|
452
|
541
|
//===========================================================================
|
453
|
542
|
|
|
543
|
+// Custom M code points
|
|
544
|
+#define CUSTOM_M_CODES
|
|
545
|
+#ifdef CUSTOM_M_CODES
|
|
546
|
+ #define CUSTOM_M_CODE_SET_Z_PROBE_OFFSET 851
|
|
547
|
+ #define Z_PROBE_OFFSET_RANGE_MIN -15
|
|
548
|
+ #define Z_PROBE_OFFSET_RANGE_MAX -5
|
|
549
|
+#endif
|
|
550
|
+
|
|
551
|
+
|
454
|
552
|
// EEPROM
|
455
|
553
|
// The microcontroller can store settings in the EEPROM, e.g. max velocity...
|
456
|
554
|
// M500 - stores parameters in EEPROM
|
|
@@ -476,10 +574,13 @@ const bool Z_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of
|
476
|
574
|
//#define DOGLCD // Support for SPI LCD 128x64 (Controller ST7565R graphic Display Family)
|
477
|
575
|
//#define SDSUPPORT // Enable SD Card Support in Hardware Console
|
478
|
576
|
//#define SDSLOW // Use slower SD transfer mode (not normally needed - uncomment if you're getting volume init error)
|
|
577
|
+//#define SD_CHECK_AND_RETRY // Use CRC checks and retries on the SD communication
|
479
|
578
|
//#define ENCODER_PULSES_PER_STEP 1 // Increase if you have a high resolution encoder
|
480
|
579
|
//#define ENCODER_STEPS_PER_MENU_ITEM 5 // Set according to ENCODER_PULSES_PER_STEP or your liking
|
481
|
580
|
//#define ULTIMAKERCONTROLLER //as available from the Ultimaker online store.
|
482
|
581
|
//#define ULTIPANEL //the UltiPanel as on Thingiverse
|
|
582
|
+//#define LCD_FEEDBACK_FREQUENCY_HZ 1000 // this is the tone frequency the buzzer plays when on UI feedback. ie Screen Click
|
|
583
|
+//#define LCD_FEEDBACK_FREQUENCY_DURATION_MS 100 // the duration the buzzer plays the UI feedback sound. ie Screen Click
|
483
|
584
|
|
484
|
585
|
// The MaKr3d Makr-Panel with graphic controller and SD support
|
485
|
586
|
// 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
|
565
|
666
|
#define LCD_USE_I2C_BUZZER //comment out to disable buzzer on LCD
|
566
|
667
|
#define NEWPANEL
|
567
|
668
|
#define ULTIPANEL
|
|
669
|
+
|
|
670
|
+ #ifndef ENCODER_PULSES_PER_STEP
|
|
671
|
+ #define ENCODER_PULSES_PER_STEP 4
|
|
672
|
+ #endif
|
|
673
|
+
|
|
674
|
+ #ifndef ENCODER_STEPS_PER_MENU_ITEM
|
|
675
|
+ #define ENCODER_STEPS_PER_MENU_ITEM 1
|
|
676
|
+ #endif
|
|
677
|
+
|
|
678
|
+
|
|
679
|
+ #ifdef LCD_USE_I2C_BUZZER
|
|
680
|
+ #define LCD_FEEDBACK_FREQUENCY_HZ 1000
|
|
681
|
+ #define LCD_FEEDBACK_FREQUENCY_DURATION_MS 100
|
|
682
|
+ #endif
|
|
683
|
+
|
568
|
684
|
#endif
|
569
|
685
|
|
570
|
686
|
// 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
|
587
|
703
|
// https://bitbucket.org/fmalpartida/new-liquidcrystal/wiki/schematics#!shiftregister-connection
|
588
|
704
|
//#define SR_LCD
|
589
|
705
|
#ifdef SR_LCD
|
590
|
|
- #define SR_LCD_2W_NL // Non latching 2 wire shiftregister
|
|
706
|
+ #define SR_LCD_2W_NL // Non latching 2 wire shift register
|
591
|
707
|
//#define NEWPANEL
|
592
|
708
|
#endif
|
593
|
709
|
|
|
@@ -676,6 +792,35 @@ const bool Z_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of
|
676
|
792
|
//#define SERVO_ENDSTOPS {-1, -1, 0} // Servo index for X, Y, Z. Disable with -1
|
677
|
793
|
//#define SERVO_ENDSTOP_ANGLES {0,0, 0,0, 70,0} // X,Y,Z Axis Extend and Retract angles
|
678
|
794
|
|
|
795
|
+/**********************************************************************\
|
|
796
|
+ * Support for a filament diameter sensor
|
|
797
|
+ * Also allows adjustment of diameter at print time (vs at slicing)
|
|
798
|
+ * Single extruder only at this point (extruder 0)
|
|
799
|
+ *
|
|
800
|
+ * Motherboards
|
|
801
|
+ * 34 - RAMPS1.4 - uses Analog input 5 on the AUX2 connector
|
|
802
|
+ * 81 - Printrboard - Uses Analog input 2 on the Aux 2 connector
|
|
803
|
+ * 301 - Rambo - uses Analog input 3
|
|
804
|
+ * Note may require analog pins to be defined for different motherboards
|
|
805
|
+ **********************************************************************/
|
|
806
|
+#define FILAMENT_SENSOR
|
|
807
|
+#define FILAMENT_SENSOR_EXTRUDER_NUM 0 //The number of the extruder that has the filament sensor (0,1,2)
|
|
808
|
+#define MEASUREMENT_DELAY_CM 14 //measurement delay in cm. This is the distance from filament sensor to middle of barrel
|
|
809
|
+
|
|
810
|
+#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
|
|
811
|
+#define MEASURED_UPPER_LIMIT 3.30 //upper limit factor used for sensor reading validation in mm
|
|
812
|
+#define MEASURED_LOWER_LIMIT 1.90 //lower limit factor for sensor reading validation in mm
|
|
813
|
+#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)
|
|
814
|
+
|
|
815
|
+//defines used in the code
|
|
816
|
+#define DEFAULT_MEASURED_FILAMENT_DIA DEFAULT_NOMINAL_FILAMENT_DIA //set measured to nominal initially
|
|
817
|
+
|
|
818
|
+
|
|
819
|
+
|
|
820
|
+
|
|
821
|
+
|
|
822
|
+
|
|
823
|
+
|
679
|
824
|
#include "Configuration_adv.h"
|
680
|
825
|
#include "thermistortables.h"
|
681
|
826
|
|