Article Placeholder
The example config has this enabled
Not always a critical item, but we define the filament diameter here. Stock is 2.85 if you have not done modifications.
One of the first difference from the Original to the Original+ is the built in PT100 amplifiers which we will set to 20 for the hotend and the bed.
The stock PEEK hotend can be damaged if it approaches/exceeds 248C.
Enable PID for the bed.
Set some initial values which can be fine tuned later on machine:
Not required but this will give you the PID tuning options in the menu:
The filament load on this printer is about 700mm if you do not manually unlatch and push/pull filament. The example config suggests changing EXTRUDE_MAXLENGTH to 705:
Set the endstop hit states. If you are running a probe you will need to also change Z_MIN_PROBE_ENDSTOP_HIT_STATE to match the z min endstop setting. On my machines both would be HIGH:
Lets discuss the example config's acceleration. The original Ultimaker cross gantry will run 9K acceleration easily. But on an 8 bit controller we won't be running input shaper. Nothing wrong with giving yourself the option to go this high in the slicer later:
To Jerk or not to Jerk?
The example config enables classic jerk support setting X and Y to 15. I don't run this as Jerk control is not commonly enabled in slicers anymore. But if you experience tells you to use this instead of junction deviation then trust your own judgement.
Enable S-Curve Acceleration by uncommenting this line:
#define MESH_BED_LEVELING
#define LCD_BED_LEVELING
#define MESH_EDIT_MENU
#define LCD_BED_TRAMMING
Enable EEPROM_SETTINGS on pretty much any build you do:
Preheat Settings
This area is a bit of personal preference. Set your labels and temperatures for your 2 most common filaments. The example bumps the PLA temp from 180 to 200. 200 was a common temperature in the past but a lot of PLA blends these days do well a bit higher.
A prelude to M600
We will want to enable to companying advanced pause in the Configuration_adv.h later but for now uncomment and adjust the desired parking position. This is another area where the Z setting is high in the example. Feel free to bump it from 5 to 10 if you wish:
Optionally enable the print counter statistics. If you do not care about this it will save a little eeprom wear to leave it disable:
Enable SD Card Support:
Optional menu addition:
Enable the Ulticontroller screen:
The Ultimaker 2.1.1 board sets the motor current using PWM_MOTOR_CURRENT
For safety lets enable the hotend timeout not in the example:
Optional but a favorite of mine included in the example config is the LCD Info Menu to check the printer counter among other things:
To enable M600 support we combine the previous setting of Nozzle Parking with Advanced Pause:
Since this is not enabled in the example config lets use the tuned options from the UMO example which seemed to work fairly well. Collapsed into a spoiler for space:
So now lets look at some of the example config items
The example config commented out #define E0_AUTO_FAN_PIN and enabled case light. Neither of these made sense on a stock printer so I am skipping this.
The default config has a Z manual feed rate of 4, the example bumps this to 50. I am setting it to 30 to match prior settings.
Baby stepping is something that I would enable on pretty much every build
CANCEL_OBJECTS on an 8 bit board might not be a good idea, we will test this for the article.
Configuration.h
Code:
#define MOTHERBOARD BOARD_ULTIMAIN_2
The example config has this enabled
Code:
#define BAUD_RATE_GCODE
Not always a critical item, but we define the filament diameter here. Stock is 2.85 if you have not done modifications.
Code:
#define DEFAULT_NOMINAL_FILAMENT_DIA 2.85
One of the first difference from the Original to the Original+ is the built in PT100 amplifiers which we will set to 20 for the hotend and the bed.
Code:
#define TEMP_SENSOR_0 20
#define TEMP_SENSOR_BED 20
The stock PEEK hotend can be damaged if it approaches/exceeds 248C.
Code:
#define HEATER_0_MAXTEMP 240
Enable PID for the bed.
Code:
#define PIDTEMPBED
Code:
#define DEFAULT_bedKp 124.55
#define DEFAULT_bedKi 23.46
#define DEFAULT_bedKd 165.29
Not required but this will give you the PID tuning options in the menu:
Code:
#define PID_EDIT_MENU // Add PID editing to the "Advanced Settings" menu. (~700 bytes of flash)
#define PID_AUTOTUNE_MENU // Add PID auto-tuning to the "Advanced Settings" menu. (~250 bytes of flash)
The filament load on this printer is about 700mm if you do not manually unlatch and push/pull filament. The example config suggests changing EXTRUDE_MAXLENGTH to 705:
Code:
#define EXTRUDE_MAXLENGTH 705
Set the endstop hit states. If you are running a probe you will need to also change Z_MIN_PROBE_ENDSTOP_HIT_STATE to match the z min endstop setting. On my machines both would be HIGH:
Code:
#define X_MIN_ENDSTOP_HIT_STATE LOW
#define X_MAX_ENDSTOP_HIT_STATE LOW
#define Y_MIN_ENDSTOP_HIT_STATE LOW
#define Y_MAX_ENDSTOP_HIT_STATE LOW
#define Z_MIN_ENDSTOP_HIT_STATE LOW
#define Z_MAX_ENDSTOP_HIT_STATE LOW
Code:
#define DEFAULT_AXIS_STEPS_PER_UNIT { 78.7402, 78.7402, 200.0, 760*1.1 }
Code:
#define DEFAULT_MAX_FEEDRATE { 500, 500, 30, 25 }
Lets discuss the example config's acceleration. The original Ultimaker cross gantry will run 9K acceleration easily. But on an 8 bit controller we won't be running input shaper. Nothing wrong with giving yourself the option to go this high in the slicer later:
Code:
#define DEFAULT_MAX_ACCELERATION { 9000,9000,100,10000 } // EXAMPLE CONFIG
To Jerk or not to Jerk?
The example config enables classic jerk support setting X and Y to 15. I don't run this as Jerk control is not commonly enabled in slicers anymore. But if you experience tells you to use this instead of junction deviation then trust your own judgement.
Enable S-Curve Acceleration by uncommenting this line:
Code:
#define S_CURVE_ACCELERATION
Code:
#define INVERT_X_DIR true
#define INVERT_Y_DIR false
#define INVERT_Z_DIR true
Code:
#define Z_AFTER_HOMING
Code:
#define X_BED_SIZE 210
#define Y_BED_SIZE 210
#define Z_MAX_POS 205
#define MESH_BED_LEVELING
#define LCD_BED_LEVELING
#define MESH_EDIT_MENU
#define LCD_BED_TRAMMING
Code:
#define BED_TRAMMING_LEVELING_ORDER { LF, RF }
Code:
#define HOMING_FEEDRATE_MM_M { (50*60), (50*60), (50*60) }
Enable EEPROM_SETTINGS on pretty much any build you do:
Code:
#define EEPROM_SETTINGS
Preheat Settings
This area is a bit of personal preference. Set your labels and temperatures for your 2 most common filaments. The example bumps the PLA temp from 180 to 200. 200 was a common temperature in the past but a lot of PLA blends these days do well a bit higher.
Code:
#define PREHEAT_1_TEMP_HOTEND 210
A prelude to M600
We will want to enable to companying advanced pause in the Configuration_adv.h later but for now uncomment and adjust the desired parking position. This is another area where the Z setting is high in the example. Feel free to bump it from 5 to 10 if you wish:
Code:
#define NOZZLE_PARK_FEATURE
Optionally enable the print counter statistics. If you do not care about this it will save a little eeprom wear to leave it disable:
Code:
#define PRINTCOUNTER
Enable SD Card Support:
Code:
#define SDSUPPORT
Optional menu addition:
Code:
#define INDIVIDUAL_AXIS_HOMING_MENU
Enable the Ulticontroller screen:
Code:
#define ULTIMAKERCONTROLLER
Configuration_adv.h
The example configuration for the UMO+ has several items that are optional, possibly even not relevant to a stock machine. So to begin I will go over the mandatory items and the ones we covered on the UMO.The Ultimaker 2.1.1 board sets the motor current using PWM_MOTOR_CURRENT
Code:
#define PWM_MOTOR_CURRENT { 1000, 1000, 1250 }
For safety lets enable the hotend timeout not in the example:
Code:
#define HOTEND_IDLE_TIMEOUT
Optional but a favorite of mine included in the example config is the LCD Info Menu to check the printer counter among other things:
Code:
#define LCD_INFO_MENU
To enable M600 support we combine the previous setting of Nozzle Parking with Advanced Pause:
Code:
#define ADVANCED_PAUSE_FEATURE
Code:
#define ADVANCED_PAUSE_FEATURE
Code:
#if ENABLED(ADVANCED_PAUSE_FEATURE)
#define PAUSE_PARK_RETRACT_FEEDRATE 1800 // (mm/s) Initial retract feedrate.
#define PAUSE_PARK_RETRACT_LENGTH 50 // (mm) Initial retract.
// This short retract is done immediately, before parking the nozzle.
#define FILAMENT_CHANGE_UNLOAD_FEEDRATE 2500 // (mm/s) Unload filament feedrate. This can be pretty fast.
#define FILAMENT_CHANGE_UNLOAD_ACCEL 25 // (mm/s^2) Lower acceleration may allow a faster feedrate.
#define FILAMENT_CHANGE_UNLOAD_LENGTH 700 // (mm) The length of filament for a complete unload.
// For Bowden, the full length of the tube and nozzle.
// For direct drive, the full length of the nozzle.
// Set to 0 for manual unloading.
#define FILAMENT_CHANGE_SLOW_LOAD_FEEDRATE 6 // (mm/s) Slow move when starting load.
#define FILAMENT_CHANGE_SLOW_LOAD_LENGTH 10 // (mm) Slow length, to allow time to insert material.
// 0 to disable start loading and skip to fast load only
#define FILAMENT_CHANGE_FAST_LOAD_FEEDRATE 1800 // (mm/s) Load filament feedrate. This can be pretty fast.
#define FILAMENT_CHANGE_FAST_LOAD_ACCEL 25 // (mm/s^2) Lower acceleration may allow a faster feedrate.
#define FILAMENT_CHANGE_FAST_LOAD_LENGTH 600 // (mm) Load length of filament, from extruder gear to nozzle.
// For Bowden, the full length of the tube and nozzle.
// For direct drive, the full length of the nozzle.
//#define ADVANCED_PAUSE_CONTINUOUS_PURGE // Purge continuously up to the purge length until interrupted.
#define ADVANCED_PAUSE_PURGE_FEEDRATE 150 // (mm/s) Extrude feedrate (after loading). Should be slower than load feedrate.
#define ADVANCED_PAUSE_PURGE_LENGTH 50 // (mm) Length to extrude after loading.
// Set to 0 for manual extrusion.
// Filament can be extruded repeatedly from the Filament Change menu
// until extrusion is consistent, and to purge old filament.
#define ADVANCED_PAUSE_RESUME_PRIME 20 // (mm) Extra distance to prime nozzle after returning from park.
#define ADVANCED_PAUSE_FANS_PAUSE // Turn off print-cooling fans while the machine is paused.
// Filament Unload does a Retract, Delay, and Purge first:
#define FILAMENT_UNLOAD_PURGE_RETRACT 0 // (mm) Unload initial retract length.
#define FILAMENT_UNLOAD_PURGE_DELAY 2000 // (ms) Delay for the filament to cool after retract.
#define FILAMENT_UNLOAD_PURGE_LENGTH 20 // (mm) An unretract is done, then this length is purged.
#define FILAMENT_UNLOAD_PURGE_FEEDRATE 25 // (mm/s) feedrate to purge before unload
#define PAUSE_PARK_NOZZLE_TIMEOUT 45 // (seconds) Time limit before the nozzle is turned off for safety.
#define FILAMENT_CHANGE_ALERT_BEEPS 10 // Number of alert beeps to play when a response is needed.
#define PAUSE_PARK_NO_STEPPER_TIMEOUT // Enable for XYZ steppers to stay powered on during filament change.
//#define FILAMENT_CHANGE_RESUME_ON_INSERT // Automatically continue / load filament when runout sensor is triggered again.
//#define PAUSE_REHEAT_FAST_RESUME // Reduce number of waits by not prompting again post-timeout before continuing.
#define PARK_HEAD_ON_PAUSE // Park the nozzle during pause and filament change.
//#define HOME_BEFORE_FILAMENT_CHANGE // If needed, home before parking for filament change
#define FILAMENT_LOAD_UNLOAD_GCODES // Add M701/M702 Load/Unload G-codes, plus Load/Unload in the LCD Prepare menu.
//#define FILAMENT_UNLOAD_ALL_EXTRUDERS // Allow M702 to unload all extruders above a minimum target temp (as set by M302)
#define CONFIGURE_FILAMENT_CHANGE // Add M603 G-code and menu items. Requires ~1.3K bytes of flash.
#endif
So now lets look at some of the example config items
Code:
#define SHOW_TEMP_ADC_VALUES
Code:
#define FAST_PWM_FAN
The example config commented out #define E0_AUTO_FAN_PIN and enabled case light. Neither of these made sense on a stock printer so I am skipping this.
The default config has a Z manual feed rate of 4, the example bumps this to 50. I am setting it to 30 to match prior settings.
Code:
#define MANUAL_FEEDRATE { 50*60, 50*60, 30*60, 2*60 }
Baby stepping is something that I would enable on pretty much every build
Code:
#define BABYSTEPPING
CANCEL_OBJECTS on an 8 bit board might not be a good idea, we will test this for the article.
Last edited: