├── marlin ├── README.md ├── mks_config_tft32_marlin.txt ├── Configuration_adv.h └── Configuration.h ├── smoothieware ├── README.md ├── mks_config_tft32_smoothie.txt └── config.txt ├── duetwifi ├── cancel.g ├── tfree0.g ├── tpre0.g ├── sleep.g ├── stop.g ├── tpost0.g ├── bed.g ├── resume.g ├── pause.g ├── homex.g ├── homey.g ├── homedelta.g ├── homez.g ├── homeall.g └── config.g ├── README.md └── mks-tft32 └── mks_config.txt /marlin/README.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /smoothieware/README.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /duetwifi/cancel.g: -------------------------------------------------------------------------------- 1 | ; stop.g 2 | ; called when a print is cancelled after a pause. 3 | -------------------------------------------------------------------------------- /duetwifi/tfree0.g: -------------------------------------------------------------------------------- 1 | ; tfree0.g 2 | ; called when tool 0 is freed 3 | ; 4 | ; generated by RepRapFirmware Configuration Tool on Mon Apr 16 2018 20:44:39 GMT+0200 (CEST) -------------------------------------------------------------------------------- /duetwifi/tpre0.g: -------------------------------------------------------------------------------- 1 | ; tpre0.g 2 | ; called before tool 0 is selected 3 | ; 4 | ; generated by RepRapFirmware Configuration Tool on Mon Apr 16 2018 20:44:39 GMT+0200 (CEST) -------------------------------------------------------------------------------- /duetwifi/sleep.g: -------------------------------------------------------------------------------- 1 | ; sleep.g 2 | ; called when M1 (Sleep) is being processed 3 | ; 4 | ; generated by RepRapFirmware Configuration Tool on Mon Apr 16 2018 20:44:39 GMT+0200 (CEST) -------------------------------------------------------------------------------- /duetwifi/stop.g: -------------------------------------------------------------------------------- 1 | ; stop.g 2 | ; called when M0 (Stop) is run (e.g. when a print from SD card is cancelled) 3 | ; 4 | ; generated by RepRapFirmware Configuration Tool on Mon Apr 16 2018 20:44:39 GMT+0200 (CEST) -------------------------------------------------------------------------------- /duetwifi/tpost0.g: -------------------------------------------------------------------------------- 1 | ; tpost0.g 2 | ; called after tool 0 has been selected 3 | ; 4 | ; generated by RepRapFirmware Configuration Tool on Mon Apr 16 2018 20:44:39 GMT+0200 (CEST) 5 | ; Wait for set temperatures to be reached 6 | M116 P0 -------------------------------------------------------------------------------- /duetwifi/bed.g: -------------------------------------------------------------------------------- 1 | ; bed.g 2 | ; called to perform automatic bed compensation via G32 3 | ; 4 | ; generated by RepRapFirmware Configuration Tool on Mon Apr 16 2018 20:44:39 GMT+0200 (CEST) 5 | M561 ; clear any bed transform 6 | G28 ; home all axes 7 | ; Probe the bed at 4 points 8 | G30 P0 X15 Y15 H0 Z-99999 9 | G30 P1 X15 Y195 H0 Z-99999 10 | G30 P2 X235 Y195 H0 Z-99999 11 | G30 P3 X235 Y15 H0 Z-99999 S -------------------------------------------------------------------------------- /duetwifi/resume.g: -------------------------------------------------------------------------------- 1 | ; resume.g 2 | ; called before a print from SD card is resumed 3 | ; 4 | ; generated by RepRapFirmware Configuration Tool on Mon Apr 16 2018 20:44:39 GMT+0200 (CEST) 5 | G1 R1 X0 Y0 Z5 F6000 ; go to 5mm above position of the last print move 6 | G1 R1 X0 Y0 ; go back to the last print move 7 | M83 ; relative extruder moves 8 | G1 E10 F3600 ; extrude 10mm of filament -------------------------------------------------------------------------------- /duetwifi/pause.g: -------------------------------------------------------------------------------- 1 | ; pause.g 2 | ; called when a print from SD card is paused 3 | ; 4 | ; generated by RepRapFirmware Configuration Tool on Mon Apr 16 2018 20:44:39 GMT+0200 (CEST) 5 | M83 ; relative extruder moves 6 | G1 E-10 F3600 ; retract 10mm of filament 7 | G91 ; relative positioning 8 | G1 Z5 F360 ; lift Z by 5mm 9 | G90 ; absolute positioning 10 | G1 X0 Y0 F6000 ; go to X=0 Y=0 -------------------------------------------------------------------------------- /duetwifi/homex.g: -------------------------------------------------------------------------------- 1 | ; homex.g 2 | ; called to home the X axis 3 | ; 4 | ; generated by RepRapFirmware Configuration Tool on Mon Apr 16 2018 20:44:39 GMT+0200 (CEST) 5 | G91 ; relative positioning 6 | G1 Z5 F7200 S2 ; lift Z relative to current position 7 | G1 S1 X-297 F3600 ; move quickly to X axis endstop and stop there (first pass) 8 | G1 X5 F7200 ; go back a few mm 9 | G1 S1 X-297 F360 ; move slowly to X axis endstop once more (second pass) 10 | G1 Z-5 F7200 S2 ; lower Z again 11 | G90 ; absolute positioning -------------------------------------------------------------------------------- /duetwifi/homey.g: -------------------------------------------------------------------------------- 1 | ; homey.g 2 | ; called to home the Y axis 3 | ; 4 | ; generated by RepRapFirmware Configuration Tool on Mon Apr 16 2018 20:44:39 GMT+0200 (CEST) 5 | G91 ; relative positioning 6 | G1 Z5 F7200 S2 ; lift Z relative to current position 7 | G1 S1 Y-389 F3600 ; move quickly to Y axis endstop and stop there (first pass) 8 | G1 Y5 F7200 ; go back a few mm 9 | G1 S1 Y-389 F360 ; move slowly to Y axis endstop once more (second pass) 10 | G1 Z-5 F7200 S2 ; lower Z again 11 | G90 ; absolute positioning -------------------------------------------------------------------------------- /duetwifi/homedelta.g: -------------------------------------------------------------------------------- 1 | ; Example Homing file for RepRapFirmware on delta printer 2 | 3 | M117 Use https://configurator.reprapfirmware.org/ to set up your printer config 4 | 5 | ;G91 ; use relative positioning 6 | ;******* Change F250 in the following line to F2500 when you are finished commissioning 7 | ;******* Change 320 in the following to a higher value if your Kossel has taller towers 8 | ;G1 S1 X320 Y320 Z320 F2500 ; move all carriages up 320mm, stopping at the endstops 9 | ;G1 S2 X-3 Y-3 Z-3 ; move all carriages down 3mm 10 | ;G1 S1 X6 Y6 Z6 F250 ; move carriages slowly up 6mm, stopping at the endstops 11 | ;G1 Z-5 F2000 ; down a few mm so that we can centre the head 12 | ;G90 ; back to absolute positioning 13 | ;G1 X0 Y0 F2000 ; centre the head and set a reasonable feed rate 14 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # zHevo 2 | My Hypercube Evolution 300x300x300 build with Prusa MK42 heated bed 3 | 4 | ## BoM 5 | ### Frame 6 | - 3030 extrusion frame 7 | - 2020 extrusion bed support 8 | 9 | ### Mechanical 10 | - Linear rods: 11 | - X: 2 x 8mm hardened steel 12 | - Y: 2 x 10mm hardened steel 13 | - Z: 4 x 12mm hardened steel 14 | - Bearings: all LMUU type 15 | 16 | ### Electronics 17 | - Board: MKS SBase 1.3 18 | - Endstops: 19 | - XY min/max optical endstops 20 | - Z min mechanical endstop 21 | - TODO Z-probe: Inductive Finglai LJ8A3-2-Z/BX-5V NO NPN 22 | 23 | ### Motors 24 | - Z - 2 x integrated leadscrew, Busheng 42BYGH403, 1.65A, 25 | - X, Y, E - Wantai 42BYGHW609, 1.8A, 26 | 27 | ### Printed parts 28 | - Base: standard Scott3D HEVO parts 29 | 30 | 31 | ## Configuration 32 | config.txt - always up to date Smoothieware configuration for MKS SBase 1.3 33 | -------------------------------------------------------------------------------- /duetwifi/homez.g: -------------------------------------------------------------------------------- 1 | ; homez.g 2 | ; called to home the Z axis 3 | ; 4 | ; generated by RepRapFirmware Configuration Tool on Mon Apr 16 2018 20:44:39 GMT+0200 (CEST) 5 | ;G91 ; relative positioning 6 | ;G1 Z5 F7200 S2 ; lift Z relative to current position 7 | ;G90 ; absolute positioning 8 | ;G1 X42.25 Y15 F7200 ; go to first probe point 9 | ;G30 ; home Z by probing the bed 10 | 11 | ; Uncomment the following lines to lift Z after probing 12 | ;G91 ; relative positioning 13 | ;G1 Z5 F120 S2 ; lift Z relative to current position 14 | ;G90 ; absolute positioning 15 | 16 | G91 ; relative mode 17 | G1 Z4 F200 S2 ; raise head 4mm to ensure it is above the switch trigger height 18 | G90 ; back to absolute mode 19 | ;G1 X-5 Y-5 S2 F2000 ; put the head wherever you want it to be when you home Z (omit this line if it doesn't matter) 20 | G91 ; relative mode 21 | G1 Z-200 S1 F400 ; move Z down until the switch triggers 22 | G1 Z2 F400 23 | G1 Z-200 S1 F40 24 | G90 ; back to absolute mode 25 | G92 Z0.0 S2 ; tell the firmware that we are at Z=0.3mm -------------------------------------------------------------------------------- /duetwifi/homeall.g: -------------------------------------------------------------------------------- 1 | ; homeall.g 2 | ; called to home all axes 3 | ; 4 | ; generated by RepRapFirmware Configuration Tool on Mon Apr 16 2018 20:44:39 GMT+0200 (CEST) 5 | G91 ; relative positioning 6 | G1 Z5 F7200 S2 ; lift Z relative to current position 7 | G1 S1 X-255 Y-215 F3600 ; move quickly to X or Y endstop and stop there (first pass) 8 | G1 S1 X-255 ; home X axis 9 | G1 S1 Y-215 ; home Y axis 10 | G1 X5 Y5 F7200 ; go back a few mm 11 | G1 S1 X-255 F360 ; move slowly to X axis endstop once more (second pass) 12 | G1 S1 Y-215 ; then move slowly to Y axis endstop 13 | ;G90 ; absolute positioning 14 | ;G1 X42.25 Y15 F7200 ; go to first bed probe point and home Z 15 | ;G30 ; home Z by probing the bed 16 | ;G1 Z5 F120 S2 ; uncomment this line to lift the nozzle after homing 17 | 18 | G1 Z-200 S1 F400 ; move Z down until the switch triggers 19 | G1 Z2 F400 20 | G1 Z-200 S1 F40 ; move Z down until the switch triggers 21 | G90 ; back to absolute mode 22 | G92 Z0.0 S2 ; tell the firmware that we are at Z=0.3mm 23 | -------------------------------------------------------------------------------- /duetwifi/config.g: -------------------------------------------------------------------------------- 1 | ; Configuration file for Duet WiFi (firmware version 1.20 or newer) 2 | ; executed by the firmware on start-up 3 | ; 4 | ; generated by RepRapFirmware Configuration Tool on Mon Apr 16 2018 20:44:39 GMT+0200 (CEST) 5 | 6 | ; General preferences 7 | G90 ; Send absolute coordinates... 8 | M83 ; ...but relative extruder moves 9 | 10 | M667 S1 ; Select CoreXY mode 11 | 12 | ; Network 13 | M550 PzHEVO ; Set machine name 14 | M552 S1 ; Enable network 15 | M586 P0 S1 ; Enable HTTP 16 | M586 P1 S1 ; Enable FTP 17 | M586 P2 S0 ; Disable Telnet 18 | 19 | ; Drives 20 | M569 P0 S0 ; Drive 0 goes backwards 21 | M569 P1 S0 ; Drive 1 goes backwards 22 | M569 P2 S1 ; Drive 2 goes forwards 23 | M569 P3 S1 ; Drive 3 goes forwards 24 | M350 X16 Y16 Z16 E16 I1 ; Configure microstepping with interpolation 25 | M92 X80 Y80 Z400 E403 ; Set steps per mm 26 | M566 X800 Y800 Z12 E800 ; Set maximum instantaneous speed changes (mm/min) 27 | M203 X12000 Y12000 Z400 E9000 ; Set maximum speeds (mm/min) 28 | M201 X800 Y800 Z250 E800 ; Set accelerations (mm/s^2) 29 | M906 X1000 Y1000 Z1000 E1200 I30 ; Set motor currents (mA) and motor idle factor in per cent 30 | M84 S30 ; Set idle timeout 31 | 32 | ; Axis Limits 33 | M208 X-21 Y-87 Z0 S1 ; Set axis minima 34 | M208 X250 Y210 Z300 S0 ; Set axis maxima 35 | 36 | ; Endstops 37 | M574 X1 Y1 S1 ; Set active high endstops 38 | M574 Z1 S0 39 | 40 | ; Z-Probe 41 | M558 P0 42 | ;M558 P0 H5 F120 T7200 ; Disable Z probe but set dive height, probe speed and travel speed 43 | ;M557 X15:285 Y50:285 S20 ; Define mesh grid 44 | 45 | ; Heaters 46 | M301 H0 S1.00 P10 I0.1 D200 T0.4 W180 B30 ; Use PID on bed heater (may require further tuning) 47 | M305 P0 T100000 B3950 C0 R4700 ; Set thermistor + ADC parameters for heater 0 48 | M143 H0 S120 ; Set temperature limit for heater 0 to 120C 49 | M305 P1 T100000 B3950 C0 R4700 ; Set thermistor + ADC parameters for heater 1 50 | M143 H1 S280 ; Set temperature limit for heater 1 to 230C 51 | 52 | M307 H0 A80.0 C233.2 D15.9 S1 B0 ; PID autotuning BED 53 | M307 H1 A694.4 C155.0 D 4.6S1 ; PID autotuning Tool 1 54 | 55 | ; Fans 56 | M106 P0 S0 I0 F500 H-1 ; Set fan 0 value, PWM signal inversion and frequency. Thermostatic control is turned off 57 | M106 P1 S1 I0 F500 H1 T50 ; Set fan 1 value, PWM signal inversion and frequency. Thermostatic control is turned on 58 | ;M106 P2 S1 I0 F500 H-1 ; Set fan 2 value, PWM signal inversion and frequency. Thermostatic control is turned off 59 | 60 | ; Tools 61 | M563 P0 D0 H1 F0 ; Define tool 0: extruder 0, heater 1 fan 0 62 | G10 P0 X0 Y0 Z0 ; Set tool 0 axis offsets 63 | G10 P0 R0 S0 ; Set initial tool 0 active and standby temperatures to 0C 64 | M572 D0 S0.1 ; Enable pressure advance (linear) 65 | 66 | ; Automatic saving after power loss is not enabled 67 | 68 | ; Custom settings are not configured 69 | 70 | ; Miscellaneous 71 | T0 ; Select first tool -------------------------------------------------------------------------------- /mks-tft32/mks_config.txt: -------------------------------------------------------------------------------- 1 | #-------------------------------------------------------------------- 2 | ######### Printer type setting ################################## 3 | 4 | #mainboard firmware setting(marlin:1; repetier:2; smoothie:3) 5 | >cfg_firmware_type:1 6 | 7 | #machine setting (Normal:1; Delta:2) 8 | >cfg_machine_type:1 9 | 10 | #baud rate (9600:1; 57600:2; 115200:3; 250000:4) 11 | >cfg_baud_rate:4 12 | 13 | #multi-language(enable:1, disable:0) 14 | >cfg_multiple_language:0 15 | 16 | #languages setting 17 | #(simplified Chinese:1; traditional Chinese:2; English:3; Russian:4; Spanish:5). This configuration is valid when "cfg_multiple_language" is disabled. 18 | >cfg_language_type:3 19 | 20 | #extruder number(one:1; dual:2) 21 | >cfg_sprayer_counter:1 22 | 23 | #enable heated bed(yes:1; no: 0) 24 | >cfg_custom_bed_flag:1 25 | 26 | #the max target temp of extruder and heated bed 27 | >cfg_max_sprayer_temperature:270 28 | >cfg_max_hotbed_temperature:110 29 | 30 | #pause position (-1 is invalid; Z-axis is relative position) 31 | >cfg_XPOS:-1 32 | >cfg_YPOS:-1 33 | >cfg_ZADD:10 34 | 35 | #----------------------------------------------------------------------- 36 | ######### Advanced Function Option ################################## 37 | 38 | #enable UPS?(yes:1; no:0) 39 | >cfg_have_ups_device:0 40 | 41 | #enable power detecting module(mks 220det:1; mks pwc:0) 42 | >cfg_insert_det_module:0 43 | 44 | #enable auto off after print finish function (no:0; Yes:1) 45 | >cfg_print_finish_close_Machine:0 46 | 47 | #set PB0 signal when use it for sencond nozzle (high level:1; low level:0) 48 | >cfg_PB0_trigger_Level:0 49 | 50 | #set PB1 signal (high level:1; low level:0) 51 | >cfg_PB1_trigger_Level:0 52 | 53 | #set error range of Z-axis on breakpoints recovery 54 | >cfg_breakpoint_z_error:0.2 55 | 56 | #--------------------------------------------------------------------------- 57 | 58 | ######### Filament Change Function ############################## 59 | 60 | #the speed to extrude filament(mm/min) 61 | >cfg_filament_load_speed:1200 62 | #the lenght to extrude filament (mm) 63 | >cfg_filament_load_length:200 64 | 65 | #the speed to retract filament(mm/min) 66 | >cfg_filament_unload_speed:1200 67 | #the lenght to retract filament(mm) 68 | >cfg_filament_unload_length:200 69 | 70 | #It is the minimum temperature for filament change. 71 | It will auto heat up if the current temp doesn't reach the target. 72 | >cfg_filament_load_limit_temperature:200 73 | 74 | 75 | #--------------------------------------------------------------------------- 76 | 77 | ############ Leveling Function ######################################## 78 | 79 | #leveling mode(manual:0; auto:1; conceal leveling button:2) 80 | >cfg_leveling_mode:0 81 | 82 | #the command of auto leveling (G29 is available for Marlin.While G32 is for Repetier and Smoothieware) 83 | >cfg_auto_leveling_cmd:G28;G29; 84 | 85 | #the point number of manual leveling:(3,4,5 point available) 86 | >cfg_point_number:5 87 | 88 | #the coordinates of 5 point on manual leveling 89 | >cfg_point1:0,0 90 | >cfg_point2:250,0 91 | >cfg_point3:250,210 92 | >cfg_point4:0,210 93 | >cfg_point5:125,110 94 | 95 | #the travel speed of leveling(mm/min) 96 | >cfg_leveling_z_speed:1500 97 | >cfg_leveling_xy_speed:3000 98 | 99 | #When the XY axis is moved manually, the height of the z-axis of the extruded Z axis from the origin (mm) 100 | 101 | #normally only needs to be reconfigured when the z axis is zero to the maximum under the smoothware firmware. 102 | > cfg_leveling_z_high: 10 103 | 104 | #--------------------------------------------------------------------------- 105 | 106 | ############# WIFI Function ########################################## 107 | 108 | #wifi model(MKS WIFI TFT:0; MKS HLK-WIFI:1) 109 | >cfg_wifi_type:0 110 | 111 | #wifi mode(0:sta;1:ap) 112 | >cfg_wifi_mode:0 113 | 114 | #wifi name and password 115 | >cfg_wifi_ap_name:MKS_wifi 116 | >cfg_wifi_key_code:makerbase 117 | 118 | #0:disable cloud service 1:enable cloud service 119 | >cfg_cloud_enable:0 120 | #cloud service adress 121 | >cfg_wifi_cloud_host:www.baizhongyun.cn 122 | #cloud service port 123 | >cfg_cloud_port:10086 124 | 125 | #Dynamic access IP 126 | >cfg_ip_dhcp_flag:1 127 | 128 | #IP/mask/gateway 129 | >cfg_ip_address:192.168.3.100 130 | >cfg_ip_mask:255.255.255.0 131 | >cfg_ip_gate:192.168.3.1 132 | 133 | #-------------------------------------------------------------------------------- 134 | 135 | ############## Function Customization ####################################### 136 | 137 | #user-defined function1 and 2.(display this button . disable: 0; enable: 1) 138 | >cfg_function_btn1_display:1 139 | 140 | 141 | #command of user-defined function 142 | >function_btn1_cmd:M84; 143 | 144 | 145 | #set number of "More" button 146 | >moreitem_pic_cnt:0 147 | 148 | #edit command for 1~7 "More" button,each command must be separated by semicolon ";" 149 | >moreitem_button1_cmd:G28 X0; 150 | 151 | >moreitem_button2_cmd:G28 X0; 152 | 153 | >moreitem_button3_cmd:G28 Y0; 154 | 155 | >moreitem_button4_cmd:G28 Y0; 156 | 157 | >moreitem_button5_cmd:G28 Z0; 158 | 159 | >moreitem_button6_cmd:G28 Z0; 160 | 161 | >moreitem_button7_cmd:G28; 162 | 163 | #how many "More" button display on screen interface 164 | >morefunc_cnt:0 165 | 166 | #command setting on button1~6 167 | >morefunc1_cmd:G28; 168 | >morefunc2_cmd:G28; 169 | >morefunc3_cmd:G28; 170 | >morefunc4_cmd:G28; 171 | >morefunc5_cmd:G28; 172 | >morefunc6_cmd:G28; 173 | 174 | #--------------------------------------------------------------------------------- 175 | ##### Display Customization(button and logo customized see User's Manual) ####### 176 | 177 | #the color of screen background 178 | >cfg_background_color:0x494949 179 | 180 | #the color of title text 181 | >cfg_title_color:0xFFFFFF 182 | 183 | #the color of temperature,fan,(etc) background 184 | >cfg_state_background_color:0x494949 185 | 186 | #the color of temprature,fan,(etc) text 187 | >cfg_state_text_color:0xFFFFFF 188 | 189 | #the color of file button 190 | >cfg_filename_background_color:0x494949 191 | 192 | #the color of file text 193 | >cfg_filename_color:0xFFFFFF 194 | 195 | #the color of background in printing 196 | >cfg_printingstat_word_background_color:0x494949 197 | 198 | #the color of text in printing status 199 | >cfg_printingstat_word_color:0xFFFFFF 200 | 201 | #3D effects setting (disable: 0; enable: 1) 202 | >cfg_BUTTON_3D_effects:0 203 | 204 | #屏幕翻转180°(0:不翻转,1:翻转) 205 | >cfg_OVERTURN_180:0 -------------------------------------------------------------------------------- /marlin/mks_config_tft32_marlin.txt: -------------------------------------------------------------------------------- 1 | #-------------------------------------------------------------------- 2 | ######### Printer type setting ################################## 3 | 4 | #mainboard firmware setting(marlin:1; repetier:2; smoothie:3) 5 | >cfg_firmware_type:1 6 | 7 | #machine setting (Normal:1; Delta:2) 8 | >cfg_machine_type:1 9 | 10 | #baud rate (9600:1; 57600:2; 115200:3; 250000:4) 11 | >cfg_baud_rate:4 12 | 13 | #multi-language(enable:1, disable:0) 14 | >cfg_multiple_language:0 15 | 16 | #languages setting 17 | #(simplified Chinese:1; traditional Chinese:2; English:3; Russian:4; Spanish:5). This configuration is valid when "cfg_multiple_language" is disabled. 18 | >cfg_language_type:3 19 | 20 | #extruder number(one:1; dual:2) 21 | >cfg_sprayer_counter:1 22 | 23 | #enable heated bed(yes:1; no: 0) 24 | >cfg_custom_bed_flag:1 25 | 26 | #the max target temp of extruder and heated bed 27 | >cfg_max_sprayer_temperature:270 28 | >cfg_max_hotbed_temperature:110 29 | 30 | #pause position (-1 is invalid; Z-axis is relative position) 31 | >cfg_XPOS:-1 32 | >cfg_YPOS:-1 33 | >cfg_ZADD:10 34 | 35 | #----------------------------------------------------------------------- 36 | ######### Advanced Function Option ################################## 37 | 38 | #enable UPS?(yes:1; no:0) 39 | >cfg_have_ups_device:0 40 | 41 | #enable power detecting module(mks 220det:1; mks pwc:0) 42 | >cfg_insert_det_module:0 43 | 44 | #enable auto off after print finish function (no:0; Yes:1) 45 | >cfg_print_finish_close_Machine:0 46 | 47 | #set PB0 signal when use it for sencond nozzle (high level:1; low level:0) 48 | >cfg_PB0_trigger_Level:0 49 | 50 | #set PB1 signal (high level:1; low level:0) 51 | >cfg_PB1_trigger_Level:0 52 | 53 | #set error range of Z-axis on breakpoints recovery 54 | >cfg_breakpoint_z_error:0.2 55 | 56 | #--------------------------------------------------------------------------- 57 | 58 | ######### Filament Change Function ############################## 59 | 60 | #the speed to extrude filament(mm/min) 61 | >cfg_filament_load_speed:1200 62 | #the lenght to extrude filament (mm) 63 | >cfg_filament_load_length:200 64 | 65 | #the speed to retract filament(mm/min) 66 | >cfg_filament_unload_speed:1200 67 | #the lenght to retract filament(mm) 68 | >cfg_filament_unload_length:200 69 | 70 | #It is the minimum temperature for filament change. 71 | It will auto heat up if the current temp doesn't reach the target. 72 | >cfg_filament_load_limit_temperature:200 73 | 74 | 75 | #--------------------------------------------------------------------------- 76 | 77 | ############ Leveling Function ######################################## 78 | 79 | #leveling mode(manual:0; auto:1; conceal leveling button:2) 80 | >cfg_leveling_mode:0 81 | 82 | #the command of auto leveling (G29 is available for Marlin.While G32 is for Repetier and Smoothieware) 83 | >cfg_auto_leveling_cmd:G28;G29; 84 | 85 | #the point number of manual leveling:(3,4,5 point available) 86 | >cfg_point_number:5 87 | 88 | #the coordinates of 5 point on manual leveling 89 | >cfg_point1:0,0 90 | >cfg_point2:250,0 91 | >cfg_point3:250,210 92 | >cfg_point4:0,210 93 | >cfg_point5:125,110 94 | 95 | #the travel speed of leveling(mm/min) 96 | >cfg_leveling_z_speed:1500 97 | >cfg_leveling_xy_speed:3000 98 | 99 | #When the XY axis is moved manually, the height of the z-axis of the extruded Z axis from the origin (mm) 100 | 101 | #normally only needs to be reconfigured when the z axis is zero to the maximum under the smoothware firmware. 102 | > cfg_leveling_z_high: 10 103 | 104 | #--------------------------------------------------------------------------- 105 | 106 | ############# WIFI Function ########################################## 107 | 108 | #wifi model(MKS WIFI TFT:0; MKS HLK-WIFI:1) 109 | >cfg_wifi_type:0 110 | 111 | #wifi mode(0:sta;1:ap) 112 | >cfg_wifi_mode:0 113 | 114 | #wifi name and password 115 | >cfg_wifi_ap_name:MKS_wifi 116 | >cfg_wifi_key_code:makerbase 117 | 118 | #0:disable cloud service 1:enable cloud service 119 | >cfg_cloud_enable:0 120 | #cloud service adress 121 | >cfg_wifi_cloud_host:www.baizhongyun.cn 122 | #cloud service port 123 | >cfg_cloud_port:10086 124 | 125 | #Dynamic access IP 126 | >cfg_ip_dhcp_flag:1 127 | 128 | #IP/mask/gateway 129 | >cfg_ip_address:192.168.3.100 130 | >cfg_ip_mask:255.255.255.0 131 | >cfg_ip_gate:192.168.3.1 132 | 133 | #-------------------------------------------------------------------------------- 134 | 135 | ############## Function Customization ####################################### 136 | 137 | #user-defined function1 and 2.(display this button . disable: 0; enable: 1) 138 | >cfg_function_btn1_display:1 139 | 140 | 141 | #command of user-defined function 142 | >function_btn1_cmd:M84; 143 | 144 | 145 | #set number of "More" button 146 | >moreitem_pic_cnt:0 147 | 148 | #edit command for 1~7 "More" button,each command must be separated by semicolon ";" 149 | >moreitem_button1_cmd:G28 X0; 150 | 151 | >moreitem_button2_cmd:G28 X0; 152 | 153 | >moreitem_button3_cmd:G28 Y0; 154 | 155 | >moreitem_button4_cmd:G28 Y0; 156 | 157 | >moreitem_button5_cmd:G28 Z0; 158 | 159 | >moreitem_button6_cmd:G28 Z0; 160 | 161 | >moreitem_button7_cmd:G28; 162 | 163 | #how many "More" button display on screen interface 164 | >morefunc_cnt:0 165 | 166 | #command setting on button1~6 167 | >morefunc1_cmd:G28; 168 | >morefunc2_cmd:G28; 169 | >morefunc3_cmd:G28; 170 | >morefunc4_cmd:G28; 171 | >morefunc5_cmd:G28; 172 | >morefunc6_cmd:G28; 173 | 174 | #--------------------------------------------------------------------------------- 175 | ##### Display Customization(button and logo customized see User's Manual) ####### 176 | 177 | #the color of screen background 178 | >cfg_background_color:0x494949 179 | 180 | #the color of title text 181 | >cfg_title_color:0xFFFFFF 182 | 183 | #the color of temperature,fan,(etc) background 184 | >cfg_state_background_color:0x494949 185 | 186 | #the color of temprature,fan,(etc) text 187 | >cfg_state_text_color:0xFFFFFF 188 | 189 | #the color of file button 190 | >cfg_filename_background_color:0x494949 191 | 192 | #the color of file text 193 | >cfg_filename_color:0xFFFFFF 194 | 195 | #the color of background in printing 196 | >cfg_printingstat_word_background_color:0x494949 197 | 198 | #the color of text in printing status 199 | >cfg_printingstat_word_color:0xFFFFFF 200 | 201 | #3D effects setting (disable: 0; enable: 1) 202 | >cfg_BUTTON_3D_effects:0 203 | 204 | #屏幕翻转180°(0:不翻转,1:翻转) 205 | >cfg_OVERTURN_180:0 -------------------------------------------------------------------------------- /smoothieware/mks_config_tft32_smoothie.txt: -------------------------------------------------------------------------------- 1 | #-------------------------------------------------------------------- 2 | ######### Printer type setting ################################## 3 | 4 | #mainboard firmware setting(marlin:1; repetier:2; smoothie:3) 5 | >cfg_firmware_type:3 6 | 7 | #machine setting (Normal:1; Delta:2) 8 | >cfg_machine_type:1 9 | 10 | #baud rate (9600:1; 57600:2; 115200:3; 250000:4) 11 | >cfg_baud_rate:4 12 | 13 | #multi-language(enable:1, disable:0) 14 | >cfg_multiple_language:0 15 | 16 | #languages setting 17 | #(simplified Chinese:1; traditional Chinese:2; English:3; Russian:4; Spanish:5). This configuration is valid when "cfg_multiple_language" is disabled. 18 | >cfg_language_type:3 19 | 20 | #extruder number(one:1; dual:2) 21 | >cfg_sprayer_counter:1 22 | 23 | #enable heated bed(yes:1; no: 0) 24 | >cfg_custom_bed_flag:1 25 | 26 | #the max target temp of extruder and heated bed 27 | >cfg_max_sprayer_temperature:270 28 | >cfg_max_hotbed_temperature:110 29 | 30 | #pause position (-1 is invalid; Z-axis is relative position) 31 | >cfg_XPOS:-1 32 | >cfg_YPOS:-1 33 | >cfg_ZADD:10 34 | 35 | #----------------------------------------------------------------------- 36 | ######### Advanced Function Option ################################## 37 | 38 | #enable UPS?(yes:1; no:0) 39 | >cfg_have_ups_device:0 40 | 41 | #enable power detecting module(mks 220det:1; mks pwc:0) 42 | >cfg_insert_det_module:0 43 | 44 | #enable auto off after print finish function (no:0; Yes:1) 45 | >cfg_print_finish_close_Machine:0 46 | 47 | #set PB0 signal when use it for sencond nozzle (high level:1; low level:0) 48 | >cfg_PB0_trigger_Level:0 49 | 50 | #set PB1 signal (high level:1; low level:0) 51 | >cfg_PB1_trigger_Level:0 52 | 53 | #set error range of Z-axis on breakpoints recovery 54 | >cfg_breakpoint_z_error:0.2 55 | 56 | #--------------------------------------------------------------------------- 57 | 58 | ######### Filament Change Function ############################## 59 | 60 | #the speed to extrude filament(mm/min) 61 | >cfg_filament_load_speed:1200 62 | #the lenght to extrude filament (mm) 63 | >cfg_filament_load_length:200 64 | 65 | #the speed to retract filament(mm/min) 66 | >cfg_filament_unload_speed:1200 67 | #the lenght to retract filament(mm) 68 | >cfg_filament_unload_length:200 69 | 70 | #It is the minimum temperature for filament change. 71 | It will auto heat up if the current temp doesn't reach the target. 72 | >cfg_filament_load_limit_temperature:220 73 | 74 | 75 | #--------------------------------------------------------------------------- 76 | 77 | ############ Leveling Function ######################################## 78 | 79 | #leveling mode(manual:0; auto:1; conceal leveling button:2) 80 | >cfg_leveling_mode:0 81 | 82 | #the command of auto leveling (G29 is available for Marlin.While G32 is for Repetier and Smoothieware) 83 | >cfg_auto_leveling_cmd:G28;G29; 84 | 85 | #the point number of manual leveling:(3,4,5 point available) 86 | >cfg_point_number:5 87 | 88 | #the coordinates of 5 point on manual leveling 89 | >cfg_point1:0,0 90 | >cfg_point2:250,0 91 | >cfg_point3:250,210 92 | >cfg_point4:0,210 93 | >cfg_point5:125,110 94 | 95 | #the travel speed of leveling(mm/min) 96 | >cfg_leveling_z_speed:1500 97 | >cfg_leveling_xy_speed:3000 98 | 99 | #When the XY axis is moved manually, the height of the z-axis of the extruded Z axis from the origin (mm) 100 | 101 | #normally only needs to be reconfigured when the z axis is zero to the maximum under the smoothware firmware. 102 | > cfg_leveling_z_high: 5 103 | 104 | #--------------------------------------------------------------------------- 105 | 106 | ############# WIFI Function ########################################## 107 | 108 | #wifi model(MKS WIFI TFT:0; MKS HLK-WIFI:1) 109 | >cfg_wifi_type:0 110 | 111 | #wifi mode(0:sta;1:ap) 112 | >cfg_wifi_mode:0 113 | 114 | #wifi name and password 115 | >cfg_wifi_ap_name:MKS_wifi 116 | >cfg_wifi_key_code:makerbase 117 | 118 | #0:disable cloud service 1:enable cloud service 119 | >cfg_cloud_enable:0 120 | #cloud service adress 121 | >cfg_wifi_cloud_host:www.baizhongyun.cn 122 | #cloud service port 123 | >cfg_cloud_port:10086 124 | 125 | #Dynamic access IP 126 | >cfg_ip_dhcp_flag:1 127 | 128 | #IP/mask/gateway 129 | >cfg_ip_address:192.168.0.170 130 | >cfg_ip_mask:255.255.255.0 131 | >cfg_ip_gate:192.168.0.1 132 | 133 | #-------------------------------------------------------------------------------- 134 | 135 | ############## Function Customization ####################################### 136 | 137 | #user-defined function1 and 2.(display this button . disable: 0; enable: 1) 138 | >cfg_function_btn1_display:1 139 | 140 | 141 | #command of user-defined function 142 | >function_btn1_cmd:M84; 143 | 144 | 145 | #set number of "More" button 146 | >moreitem_pic_cnt:0 147 | 148 | #edit command for 1~7 "More" button,each command must be separated by semicolon ";" 149 | >moreitem_button1_cmd:G28 X0; 150 | 151 | >moreitem_button2_cmd:G28 X0; 152 | 153 | >moreitem_button3_cmd:G28 Y0; 154 | 155 | >moreitem_button4_cmd:G28 Y0; 156 | 157 | >moreitem_button5_cmd:G28 Z0; 158 | 159 | >moreitem_button6_cmd:G28 Z0; 160 | 161 | >moreitem_button7_cmd:G28; 162 | 163 | #how many "More" button display on screen interface 164 | >morefunc_cnt:0 165 | 166 | #command setting on button1~6 167 | >morefunc1_cmd:G28; 168 | >morefunc2_cmd:G28; 169 | >morefunc3_cmd:G28; 170 | >morefunc4_cmd:G28; 171 | >morefunc5_cmd:G28; 172 | >morefunc6_cmd:G28; 173 | 174 | #--------------------------------------------------------------------------------- 175 | ##### Display Customization(button and logo customized see User's Manual) ####### 176 | 177 | #the color of screen background 178 | >cfg_background_color:0x494949 179 | 180 | #the color of title text 181 | >cfg_title_color:0xFFFFFF 182 | 183 | #the color of temperature,fan,(etc) background 184 | >cfg_state_background_color:0x494949 185 | 186 | #the color of temprature,fan,(etc) text 187 | >cfg_state_text_color:0xFFFFFF 188 | 189 | #the color of file button 190 | >cfg_filename_background_color:0x494949 191 | 192 | #the color of file text 193 | >cfg_filename_color:0xFFFFFF 194 | 195 | #the color of background in printing 196 | >cfg_printingstat_word_background_color:0x494949 197 | 198 | #the color of text in printing status 199 | >cfg_printingstat_word_color:0xFFFFFF 200 | 201 | #3D effects setting (disable: 0; enable: 1) 202 | >cfg_BUTTON_3D_effects:0 203 | 204 | #屏幕翻转180°(0:不翻转,1:翻转) 205 | >cfg_OVERTURN_180:0 -------------------------------------------------------------------------------- /smoothieware/config.txt: -------------------------------------------------------------------------------- 1 | # Main source https://raw.githubusercontent.com/mcuadros/hevo-config/master/config.txt 2 | # Smoothieboard configuration file, see http://smoothieware.org/configuring-smoothie 3 | # NOTE Lines must not exceed 132 characters, and '#' characters mean what follows is ignored 4 | ## Robot module configurations : general handling of movement G-codes and slicing into moves 5 | 6 | # Basic motion configuration 7 | default_feed_rate 4000 # Default speed (mm/minute) for G1/G2/G3 moves 8 | default_seek_rate 6000 # Default speed (mm/minute) for G0 moves 9 | mm_per_arc_segment 0.0 # Fixed length for line segments that divide arcs, 0 to disable 10 | #mm_per_line_segment 5 # Cut lines into segments this size 11 | mm_max_arc_error 0.01 # The maximum error for line segments that divide arcs 0 to disable 12 | # note it is invalid for both the above be 0 13 | # if both are used, will use largest segment length based on radius 14 | 15 | #planner_queue_size 32 16 | 17 | # Arm solution should be configured as corexy (since hevo is corexy), the suggested changes at 18 | # http://smoothieware.org/hbot has been made a cross the config file. 19 | arm_solution corexy 20 | 21 | # Arm solution configuration. Translates mm positions into stepper positions 22 | # See http://smoothieware.org/stepper-motors 23 | 24 | # MKS SBASE 1.3 microsteps configuration: 32 25 | # https://www.prusaprinters.org/calculator/ 26 | # Result Resolution Teeth Step angle Stepping Belt 27 | # 160.00 6.25micron 20 1.8° 1/32th 2mm 28 | 29 | alpha_steps_per_mm 160 # Steps per mm for alpha ( X ) stepper 30 | beta_steps_per_mm 160 # Steps per mm for beta ( Y ) stepper 31 | 32 | # For Z axis there is T8x2 integrated leadscrew (standard leadscrew) 33 | 34 | gamma_steps_per_mm 800 # Steps per mm for gamma ( Z ) stepper 35 | 36 | # Planner module configuration : Look-ahead and acceleration configuration 37 | # See http://smoothieware.org/motion-control 38 | acceleration 3000 # Acceleration in mm/second/second. 39 | z_acceleration 120 # Acceleration for Z only moves in mm/s^2, 0 uses acceleration which is the default. DO NOT SET ON A DELTA 40 | #acceleration_ticks_per_second 1000 # Warham Smith https://pastebin.com/ZD8TZuVa 41 | junction_deviation 0.05 # See http://smoothieware.org/motion-control#junction-deviation 42 | #z_junction_deviation 0.0 # For Z only moves, -1 uses junction_deviation, zero disables junction_deviation on z moves DO NOT SET ON A DELTA 43 | 44 | # Stepper module configuration 45 | # Warham Smith https://pastebin.com/ZD8TZuVa 46 | #microseconds_per_step_pulse 1 # Duration of step pulses to stepper drivers, in microseconds 47 | #base_stepping_frequency 100000 # Base frequency for stepping, higher gives smoother movement 48 | 49 | # Cartesian axis speed limits 50 | x_axis_max_speed 10000 # Maximum speed in mm/min 51 | y_axis_max_speed 10000 # Maximum speed in mm/min 52 | z_axis_max_speed 500 # Maximum speed in mm/min 53 | 54 | # Stepper module configuration 55 | # Pins are defined as ports, and pin numbers, appending "!" to the number will invert a pin 56 | # See http://smoothieware.org/pin-configuration and http://smoothieware.org/pinout 57 | alpha_step_pin 2.0 # Pin for alpha stepper step signal 58 | alpha_dir_pin 0.5! # Pin for alpha stepper direction, add '!' to reverse direction 59 | alpha_en_pin 0.4 # Pin for alpha enable pin 60 | alpha_current 1.2 # X stepper motor current 61 | alpha_max_rate 10000.0 # Maximum rate in mm/min 62 | 63 | beta_step_pin 2.1 # Pin for beta stepper step signal 64 | beta_dir_pin 0.11! # Pin for beta stepper direction, add '!' to reverse direction 65 | beta_en_pin 0.10 # Pin for beta enable 66 | beta_current 1.2 # Y stepper motor current 67 | beta_max_rate 10000.0 # Maxmimum rate in mm/min 68 | 69 | gamma_step_pin 2.2 # Pin for gamma stepper step signal 70 | gamma_dir_pin 0.20 # Pin for gamma stepper direction, add '!' to reverse direction 71 | gamma_en_pin 0.19 # Pin for gamma enable 72 | gamma_current 1.2 # Z stepper motor current 73 | gamma_max_rate 500.0 # Maximum rate in mm/min 74 | 75 | ## Extruder module configuration 76 | # See http://smoothieware.org/extruder 77 | 78 | # steps_per_mm for MK8 Full Metal Extruder based on https://reprapchampion.com/pages/mk8-extruder 79 | # https://www.aliexpress.com/item/Improved-Version-Printer-Parts-Reprap-Makerbot-MK8-Full-Metal-Aluminum-Alloy-Bowden-Extruder-for-1-75MM/32473855114.html 80 | # Hob diameter: 12mm 81 | # Steps: 200 82 | # Microstep: 32 83 | # steps_per_mm = (motor_steps_per_rev * driver_microstep) / (hob_effective_diameter * pi) 84 | # steps_per_mm = (200 * 32) / (12 * 3.1415) = 6400 / 37,698 = 85 | # Calibration formula: 86 | # new_e_steps = old_e_steps * (100 / distance_actually_moved) 87 | 88 | extruder.hotend.enable true # Whether to activate the extruder module at all. All configuration is ignored if false 89 | # MK8 90 | #extruder.hotend.steps_per_mm 175 # Steps per mm for extruder stepper 91 | # Titan 92 | extruder.hotend.steps_per_mm 807 # Steps per mm for extruder stepper 93 | extruder.hotend.default_feed_rate 600 # Default rate ( mm/minute ) for moves where only the extruder moves 94 | extruder.hotend.acceleration 500 # Acceleration for the stepper motor mm/sec² 95 | extruder.hotend.max_speed 100 # Maximum speed in mm/s 96 | 97 | extruder.hotend.step_pin 2.3 # Pin for extruder step signal 98 | # MK8 99 | extruder.hotend.dir_pin 0.22! # Pin for extruder dir signal ( add '!' to reverse direction ) 100 | # Titan 101 | extruder.hotend.dir_pin 0.22 # Pin for extruder dir signal ( add '!' to reverse direction ) 102 | extruder.hotend.en_pin 0.21 # Pin for extruder enable signal 103 | 104 | delta_current 1.2 # First extruder stepper motor current 105 | 106 | # Extruder offset 107 | #extruder.hotend.x_offset 0 # X offset from origin in mm 108 | #extruder.hotend.y_offset 0 # Y offset from origin in mm 109 | #extruder.hotend.z_offset 0 # Z offset from origin in mm 110 | 111 | # Firmware retract settings when using G10/G11, these are the defaults if not defined, must be defined for each extruder if not using the defaults 112 | #extruder.hotend.retract_length 3 # Retract length in mm 113 | #extruder.hotend.retract_feedrate 45 # Retract feedrate in mm/sec 114 | #extruder.hotend.retract_recover_length 0 # Additional length for recover 115 | #extruder.hotend.retract_recover_feedrate 8 # Recover feedrate in mm/sec (should be less than retract feedrate) 116 | #extruder.hotend.retract_zlift_length 0 # Z-lift on retract in mm, 0 disables 117 | #extruder.hotend.retract_zlift_feedrate 6000 # Z-lift feedrate in mm/min (Note mm/min NOT mm/sec) 118 | 119 | ## Temperature control configuration 120 | # See http://smoothieware.org/temperaturecontrol 121 | 122 | ## HEATED BED 123 | 124 | temperature_control.bed.enable true # Whether to activate this ( "bed" ) module at all. 125 | temperature_control.bed.thermistor_pin 0.23 # Pin for the thermistor to read 126 | temperature_control.bed.heater_pin 2.5 # Pin that controls the heater 127 | temperature_control.bed.thermistor RRRF100K # See http://smoothieware.org/temperaturecontrol#thermistor 128 | #temperature_control.bed.beta 3974 # Or set the beta value 129 | temperature_control.bed.set_m_code 140 # M-code to set the temperature for this module 130 | temperature_control.bed.set_and_wait_m_code 190 # M-code to set-and-wait for this module 131 | temperature_control.bed.designator B # Designator letter for this module 132 | temperature_control.bed.max_temp 110 # Set maximum temperature - Will prevent heating above 100 by default 133 | temperature_control.bed.min_temp 18 # Set minimum temperature - Will prevent heating below if set 134 | 135 | # Bang-bang ( simplified ) control 136 | # See http://smoothieware.org/temperaturecontrol#bang-bang 137 | #temperature_control.bed.bang_bang false # Set to true to use bang bang control rather than PID 138 | #temperature_control.bed.hysteresis 2.0 # Set to the temperature in degrees C to use as hysteresis 139 | 140 | 141 | # PID autotune. MK42 bed clone 142 | # Cycle 4: max: 61.8829, min: 57.9178, avg separation: 0.105118 143 | # Ku: 163.769, Pu: 70.3 144 | # Trying: 145 | # Kp: 98.3 146 | # Ki: 2.795 147 | # Kd: 863 148 | 149 | temperature_control.bed.p_factor 98.3 # P ( proportional ) factor 150 | temperature_control.bed.i_factor 2.795 # I ( integral ) factor 151 | temperature_control.bed.d_factor 863 # D ( derivative ) factor 152 | 153 | # First hotend configuration 154 | temperature_control.hotend.enable true # Whether to activate this ( "hotend" ) module at all. 155 | temperature_control.hotend.thermistor_pin 0.24 # Pin for the thermistor to read 156 | temperature_control.hotend.heater_pin 2.7 # Pin that controls the heater, set to nc if a readonly thermistor is being defined 157 | temperature_control.hotend.thermistor EPCOS100K # See http://smoothieware.org/temperaturecontrol#toc5 158 | ## zen: We have Semitec-104NT4 159 | ##temperature_control.hotend.thermistor Semitec # See http://smoothieware.org/temperaturecontrol#toc5 160 | #temperature_control.hotend.beta 4066 # Or set the beta value 161 | temperature_control.hotend.set_m_code 104 # M-code to set the temperature for this module 162 | temperature_control.hotend.set_and_wait_m_code 109 # M-code to set-and-wait for this module 163 | temperature_control.hotend.designator T # Designator letter for this module 164 | temperature_control.hotend.max_temp 300 # Set maximum temperature - Will prevent heating above 300 by default 165 | temperature_control.hotend.min_temp 0 # Set minimum temperature - Will prevent heating below if set 166 | 167 | ## Temperatureswitch for hotend cooling on demand 168 | # See http://smoothieware.org/temperatureswitch 169 | 170 | switch.hotendfan.enable true # true/false 171 | switch.hotendfan.input_on_command M106 # 172 | switch.hotendfan.input_off_command M107 # 173 | switch.hotendfan.subcode 2 # 174 | switch.hotendfan.output_pin 2.6 # Heater2 terminal 175 | switch.hotendfan.output_type pwm # digital would be on/off 176 | switch.hotendfan.max_pwm 255 # default is 255 177 | switch.hotendfan.fail_safe_set_to 1 # CRASH or HALT. 0 or 1 178 | 179 | # Control hotend cooling at >50c 180 | temperatureswitch.hotend.enable true # 181 | temperatureswitch.hotend.designator T # first character of the temperature control designator to use as the temperature sensor to monitor 182 | temperatureswitch.hotend.switch hotendfan # select which switch to use, matches the name of the defined switch 183 | temperatureswitch.hotend.threshold_temp 50.0 # temperature to turn on (if rising) or off the switch 184 | temperatureswitch.hotend.heatup_poll 2 # poll heatup at 15 sec intervals 185 | temperatureswitch.hotend.cooldown_poll 10 # poll cooldown at 60 sec intervals 186 | 187 | # Safety control is enabled by default and can be overidden here, the values show the defaults 188 | # See http://smoothieware.org/temperaturecontrol#runaway 189 | temperature_control.hotend.runaway_heating_timeout 120 # How long it can take to heat up, max is 2040 seconds. 190 | temperature_control.hotend.runaway_cooling_timeout 180 # How long it can take to cool down if temp is set lower, max is 2040 seconds 191 | temperature_control.hotend.runaway_range 10 # How far from the set temperature it can wander, max setting is 63°C 192 | 193 | # PID configuration 194 | # See http://smoothieware.org/temperaturecontrol#pid 195 | # E3D clone, 0.4 nozzle, original blue hotend fan, heater block silicon sock 196 | # Cycle 4: max: 241.923, min: 232.241, avg separation: 0.0365906 197 | # Ku: 67.0646, Pu: 20.75 198 | # Trying: 199 | # Kp: 40.2 200 | # Ki: 3.878 201 | # Kd: 104 202 | 203 | temperature_control.hotend.p_factor 40.2 # P ( proportional ) factor 204 | temperature_control.hotend.i_factor 3.878 # I ( integral ) factor 205 | temperature_control.hotend.d_factor 104 # D ( derivative ) factor 206 | 207 | #temperature_control.hotend.max_pwm 64 # Max pwm, 64 is a good value if driving a 12v resistor with 24v. 208 | 209 | ## Switch modules 210 | # See http://smoothieware.org/switch 211 | 212 | # Switch module for print fan control 213 | switch.printfan.enable true # Enable this module 214 | switch.printfan.input_on_command M106 # Command that will turn this switch on 215 | switch.printfan.input_off_command M107 # Command that will turn this switch off 216 | switch.printfan.output_pin 2.4 # Pin this module controls 217 | switch.printfan.output_type pwm # PWM output settable with S parameter in the input_on_comand 218 | #switch.printfan.max_pwm 255 # Set max pwm for the pin default is 255 219 | 220 | ## Endstops 221 | # See http://smoothieware.org/endstops 222 | endstops_enable true # The endstop module is enabled by default and can be disabled here 223 | corexy_homing true # Set to true if homing on a hbot or corexy 224 | alpha_min_endstop 1.24^ # Pin to read min endstop, add a ! to invert if endstop is NO connected to ground 225 | alpha_max_endstop 1.25^ # Pin to read max endstop, uncomment this and comment the above if using max endstops 226 | alpha_homing_direction home_to_min # Or set to home_to_max and set alpha_max and uncomment the alpha_max_endstop 227 | alpha_min -21 # This gets loaded as the current position after homing when home_to_min is set 228 | alpha_max 250 # This gets loaded as the current position after homing when home_to_max is set 229 | beta_min_endstop 1.26^ # Pin to read min endstop, add a ! to invert if endstop is NO connected to ground 230 | beta_max_endstop 1.27^ # Pin to read max endstop, uncomment this and comment the above if using max endstops 231 | beta_homing_direction home_to_min # Or set to home_to_max and set alpha_max and uncomment the alpha_max_endstop 232 | beta_min -87 # This gets loaded as the current position after homing when home_to_min is set 233 | beta_max 210 # This gets loaded as the current position after homing when home_to_max is set 234 | gamma_min_endstop 1.28^! # Pin to read min endstop, add a ! to invert if endstop is NO connected to ground 235 | gamma_max_endstop nc # Pin to read max endstop, uncomment this and comment the above if using max endstops 236 | #gamma_max_endstop 1.29^ # Pin to read max endstop, uncomment this and comment the above if using max endstops 237 | gamma_homing_direction home_to_min # Or set to home_to_max and set alpha_max and uncomment the alpha_max_endstop 238 | gamma_min 0 # This gets loaded as the current position after homing when home_to_min is set 239 | gamma_max 300 # This gets loaded as the current position after homing when home_to_max is set 240 | 241 | alpha_max_travel 300 # Max travel in mm for alpha/X axis when homing 242 | beta_max_travel 300 # Max travel in mm for beta/Y axis when homing 243 | 244 | ## TODO measure max Z axis lenght 245 | gamma_max_travel 255 # Max travel in mm for gamma/Z axis when homing 246 | 247 | # Optional enable limit switches, actions will stop if any enabled limit switch is triggered 248 | alpha_limit_enable true # Set to true to enable X min and max limit switches 249 | beta_limit_enable true # Set to true to enable Y min and max limit switches 250 | gamma_limit_enable false # Set to true to enable Z min and max limit switches 251 | 252 | # Endstops home at their fast feedrate first, then once the endstop is found they home again at their slow feedrate for accuracy 253 | alpha_fast_homing_rate_mm_s 50 # Alpha/X fast homing feedrate in mm/second 254 | alpha_slow_homing_rate_mm_s 25 # Alpha/X slow homing feedrate in mm/second 255 | beta_fast_homing_rate_mm_s 50 # Beta/Y fast homing feedrate in mm/second 256 | beta_slow_homing_rate_mm_s 25 # Beta/Y slow homing feedrate in mm/second 257 | gamma_fast_homing_rate_mm_s 4 # Gamma/Z fast homing feedrate in mm/second 258 | gamma_slow_homing_rate_mm_s 2 # Gamma/Z slow homing feedrate in mm/second 259 | 260 | alpha_homing_retract_mm 5 # Distance to retract from the endstop after it is hit for alpha/X 261 | beta_homing_retract_mm 5 # Distance to retract from the endstop after it is hit for beta/Y 262 | gamma_homing_retract_mm 1 # Distance to retract from the endstop after it is hit for gamma/Z 263 | 264 | # Optional order in which axis will home, default is they all home at the same time, 265 | # If this is set it will force each axis to home one at a time in the specified order 266 | homing_order YXZ # X axis followed by Y then Z last 267 | move_to_origin_after_home false # Move XY to 0,0 after homing 268 | #endstop_debounce_count 100 # Uncomment if you get noise on your endstops, default is 100 269 | #endstop_debounce_ms 1 # Uncomment if you get noise on your endstops, default is 1 millisecond debounce 270 | #home_z_first true # Uncomment and set to true to home the Z first, otherwise Z homes after XY 271 | 272 | # End of endstop config 273 | # Delete the above endstop section and uncomment next line and copy and edit Snippets/abc-endstop.config file to enable endstops for ABC axis 274 | #include abc-endstop.config 275 | 276 | ## Z-probe 277 | # See http://smoothieware.org/zprobe 278 | zprobe.enable false # Set to true to enable a zprobe 279 | #zprobe.probe_pin 1.28!^ # Pin probe is attached to, if NC remove the ! 280 | #zprobe.slow_feedrate 5 # Mm/sec probe feed rate 281 | #zprobe.debounce_count 100 # Set if noisy 282 | #zprobe.fast_feedrate 100 # Move feedrate mm/sec 283 | #zprobe.probe_height 5 # How much above bed to start probe 284 | #gamma_min_endstop nc # Normally 1.28. Change to nc to prevent conflict, 285 | 286 | # Levelling strategy 287 | # Example for 3-point levelling strategy, see wiki documentation for other strategies 288 | #leveling-strategy.three-point-leveling.enable true # a leveling strategy that probes three points to define a plane and keeps the Z parallel to that plane 289 | #leveling-strategy.three-point-leveling.point1 100.0,0.0 # the first probe point (x,y) optional may be defined with M557 290 | #leveling-strategy.three-point-leveling.point2 200.0,200.0 # the second probe point (x,y) 291 | #leveling-strategy.three-point-leveling.point3 0.0,200.0 # the third probe point (x,y) 292 | #leveling-strategy.three-point-leveling.home_first true # home the XY axis before probing 293 | #leveling-strategy.three-point-leveling.tolerance 0.03 # the probe tolerance in mm, anything less that this will be ignored, default is 0.03mm 294 | #leveling-strategy.three-point-leveling.probe_offsets 0,0,0 # the probe offsets from nozzle, must be x,y,z, default is no offset 295 | #leveling-strategy.three-point-leveling.save_plane false # set to true to allow the bed plane to be saved with M500 default is false 296 | 297 | ## Panel 298 | # See http://smoothieware.org/panel 299 | # Please find your panel on the wiki and copy/paste the right configuration here 300 | panel.enable false # Set to true to enable the panel code 301 | 302 | # Example for reprap discount GLCD 303 | # on glcd EXP1 is to left and EXP2 is to right, pin 1 is bottom left, pin 2 is top left etc. 304 | # +5v is EXP1 pin 10, Gnd is EXP1 pin 9 305 | #panel.lcd reprap_discount_glcd # 306 | #panel.spi_channel 0 # SPI channel to use ; GLCD EXP1 Pins 3,5 (MOSI, SCLK) 307 | #panel.spi_cs_pin 0.16 # SPI chip select ; GLCD EXP1 Pin 4 308 | #panel.encoder_a_pin 3.25!^ # Encoder pin ; GLCD EXP2 Pin 3 309 | #panel.encoder_b_pin 3.26!^ # Encoder pin ; GLCD EXP2 Pin 5 310 | #panel.click_button_pin 1.30!^ # Click button ; GLCD EXP1 Pin 2 311 | #panel.buzz_pin 1.31 # Pin for buzzer ; GLCD EXP1 Pin 1 312 | #panel.back_button_pin 2.11!^ # Back button ; GLCD EXP2 Pin 8 313 | 314 | panel.menu_offset 0 # Some panels will need 1 here 315 | 316 | panel.alpha_jog_feedrate 6000 # X jogging feedrate in mm/min 317 | panel.beta_jog_feedrate 6000 # Y jogging feedrate in mm/min 318 | panel.gamma_jog_feedrate 200 # Z jogging feedrate in mm/min 319 | 320 | panel.hotend_temperature 185 # Temp to set hotend when preheat is selected 321 | panel.bed_temperature 60 # Temp to set bed when preheat is selected 322 | 323 | ## Custom menus : Example of a custom menu entry, which will show up in the Custom entry. 324 | # NOTE _ gets converted to space in the menu and commands, | is used to separate multiple commands 325 | custom_menu.power_on.enable true # 326 | custom_menu.power_on.name Power_on # 327 | custom_menu.power_on.command M80 # 328 | 329 | custom_menu.power_off.enable true # 330 | custom_menu.power_off.name Power_off # 331 | custom_menu.power_off.command M81 # 332 | 333 | 334 | ## Network settings 335 | # See http://smoothieware.org/network 336 | network.enable true # Enable the ethernet network services 337 | network.webserver.enable true # Enable the webserver 338 | network.telnet.enable true # Enable the telnet server 339 | #network.ip_address auto # Use dhcp to get ip address 340 | # Uncomment the 3 below to manually setup ip address 341 | network.ip_address 192.168.0.180 # The IP address 342 | network.ip_mask 255.255.255.0 # The ip mask 343 | network.ip_gateway 192.168.0.1 # The gateway address 344 | #network.mac_override xx.xx.xx.xx.xx.xx # Override the mac address, only do this if you have a conflict 345 | 346 | ## System configuration 347 | # Serial communications configuration ( baud rate defaults to 9600 if undefined ) 348 | # For communication over the UART port, *not* the USB/Serial port 349 | uart0.baud_rate 250000 # Baud rate for the default hardware ( UART ) serial port 350 | 351 | second_usb_serial_enable true # This enables a second USB serial port 352 | #leds_disable true # Disable using leds after config loaded 353 | #play_led_disable true # Disable the play led 354 | 355 | # Kill button maybe assigned to a different pin, set to the onboard pin by default 356 | # See http://smoothieware.org/killbutton 357 | kill_button_enable false # Set to true to enable a kill button 358 | kill_button_pin 2.12 # Kill button pin. default is same as pause button 2.12 (2.11 is another good choice) 359 | 360 | #msd_disable false # Disable the MSD (USB SDCARD), see http://smoothieware.org/troubleshooting#disable-msd 361 | #dfu_enable false # For linux developers, set to true to enable DFU 362 | 363 | # Only needed on a smoothieboard 364 | # See http://smoothieware.org/currentcontrol 365 | currentcontrol_module_enable true # Control stepper motor current via the configuration file -------------------------------------------------------------------------------- /marlin/Configuration_adv.h: -------------------------------------------------------------------------------- 1 | /** 2 | * Marlin 3D Printer Firmware 3 | * Copyright (C) 2016 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] 4 | * 5 | * Based on Sprinter and grbl. 6 | * Copyright (C) 2011 Camiel Gubbels / Erik van der Zalm 7 | * 8 | * This program is free software: you can redistribute it and/or modify 9 | * it under the terms of the GNU General Public License as published by 10 | * the Free Software Foundation, either version 3 of the License, or 11 | * (at your option) any later version. 12 | * 13 | * This program is distributed in the hope that it will be useful, 14 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 15 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 16 | * GNU General Public License for more details. 17 | * 18 | * You should have received a copy of the GNU General Public License 19 | * along with this program. If not, see . 20 | * 21 | */ 22 | 23 | /** 24 | * Configuration_adv.h 25 | * 26 | * Advanced settings. 27 | * Only change these if you know exactly what you're doing. 28 | * Some of these settings can damage your printer if improperly set! 29 | * 30 | * Basic settings can be found in Configuration.h 31 | * 32 | */ 33 | #ifndef CONFIGURATION_ADV_H 34 | #define CONFIGURATION_ADV_H 35 | #define CONFIGURATION_ADV_H_VERSION 020000 36 | 37 | // @section temperature 38 | 39 | //=========================================================================== 40 | //=============================Thermal Settings ============================ 41 | //=========================================================================== 42 | 43 | #if DISABLED(PIDTEMPBED) 44 | #define BED_CHECK_INTERVAL 5000 // ms between checks in bang-bang control 45 | #if ENABLED(BED_LIMIT_SWITCHING) 46 | #define BED_HYSTERESIS 2 // Only disable heating if T>target+BED_HYSTERESIS and enable heating if T>target-BED_HYSTERESIS 47 | #endif 48 | #endif 49 | 50 | /** 51 | * Thermal Protection provides additional protection to your printer from damage 52 | * and fire. Marlin always includes safe min and max temperature ranges which 53 | * protect against a broken or disconnected thermistor wire. 54 | * 55 | * The issue: If a thermistor falls out, it will report the much lower 56 | * temperature of the air in the room, and the the firmware will keep 57 | * the heater on. 58 | * 59 | * The solution: Once the temperature reaches the target, start observing. 60 | * If the temperature stays too far below the target (hysteresis) for too 61 | * long (period), the firmware will halt the machine as a safety precaution. 62 | * 63 | * If you get false positives for "Thermal Runaway", increase 64 | * THERMAL_PROTECTION_HYSTERESIS and/or THERMAL_PROTECTION_PERIOD 65 | */ 66 | #if ENABLED(THERMAL_PROTECTION_HOTENDS) 67 | #define THERMAL_PROTECTION_PERIOD 60 // Seconds 68 | #define THERMAL_PROTECTION_HYSTERESIS 6 // Degrees Celsius 69 | 70 | /** 71 | * Whenever an M104, M109, or M303 increases the target temperature, the 72 | * firmware will wait for the WATCH_TEMP_PERIOD to expire. If the temperature 73 | * hasn't increased by WATCH_TEMP_INCREASE degrees, the machine is halted and 74 | * requires a hard reset. This test restarts with any M104/M109/M303, but only 75 | * if the current temperature is far enough below the target for a reliable 76 | * test. 77 | * 78 | * If you get false positives for "Heating failed", increase WATCH_TEMP_PERIOD 79 | * and/or decrease WATCH_TEMP_INCREASE. WATCH_TEMP_INCREASE should not be set 80 | * below 2. 81 | */ 82 | #define WATCH_TEMP_PERIOD 60 // Seconds 83 | #define WATCH_TEMP_INCREASE 2 // Degrees Celsius 84 | #endif 85 | 86 | /** 87 | * Thermal Protection parameters for the bed are just as above for hotends. 88 | */ 89 | #if ENABLED(THERMAL_PROTECTION_BED) 90 | #define THERMAL_PROTECTION_BED_PERIOD 120 // Seconds 91 | #define THERMAL_PROTECTION_BED_HYSTERESIS 4 // Degrees Celsius 92 | 93 | /** 94 | * As described above, except for the bed (M140/M190/M303). 95 | */ 96 | #define WATCH_BED_TEMP_PERIOD 120 // Seconds 97 | #define WATCH_BED_TEMP_INCREASE 2 // Degrees Celsius 98 | #endif 99 | 100 | #if ENABLED(PIDTEMP) 101 | // this adds an experimental additional term to the heating power, proportional to the extrusion speed. 102 | // if Kc is chosen well, the additional required power due to increased melting should be compensated. 103 | //#define PID_EXTRUSION_SCALING 104 | #if ENABLED(PID_EXTRUSION_SCALING) 105 | #define DEFAULT_Kc (100) //heating power=Kc*(e_speed) 106 | #define LPQ_MAX_LEN 50 107 | #endif 108 | #endif 109 | 110 | /** 111 | * Automatic Temperature: 112 | * The hotend target temperature is calculated by all the buffered lines of gcode. 113 | * The maximum buffered steps/sec of the extruder motor is called "se". 114 | * Start autotemp mode with M109 S B F 115 | * The target temperature is set to mintemp+factor*se[steps/sec] and is limited by 116 | * mintemp and maxtemp. Turn this off by executing M109 without F* 117 | * Also, if the temperature is set to a value below mintemp, it will not be changed by autotemp. 118 | * On an Ultimaker, some initial testing worked with M109 S215 B260 F1 in the start.gcode 119 | */ 120 | #define AUTOTEMP 121 | #if ENABLED(AUTOTEMP) 122 | #define AUTOTEMP_OLDWEIGHT 0.98 123 | #endif 124 | 125 | // Show extra position information in M114 126 | //#define M114_DETAIL 127 | 128 | // Show Temperature ADC value 129 | // Enable for M105 to include ADC values read from temperature sensors. 130 | //#define SHOW_TEMP_ADC_VALUES 131 | 132 | /** 133 | * High Temperature Thermistor Support 134 | * 135 | * Thermistors able to support high temperature tend to have a hard time getting 136 | * good readings at room and lower temperatures. This means HEATER_X_RAW_LO_TEMP 137 | * will probably be caught when the heating element first turns on during the 138 | * preheating process, which will trigger a min_temp_error as a safety measure 139 | * and force stop everything. 140 | * To circumvent this limitation, we allow for a preheat time (during which, 141 | * min_temp_error won't be triggered) and add a min_temp buffer to handle 142 | * aberrant readings. 143 | * 144 | * If you want to enable this feature for your hotend thermistor(s) 145 | * uncomment and set values > 0 in the constants below 146 | */ 147 | 148 | // The number of consecutive low temperature errors that can occur 149 | // before a min_temp_error is triggered. (Shouldn't be more than 10.) 150 | //#define MAX_CONSECUTIVE_LOW_TEMPERATURE_ERROR_ALLOWED 0 151 | 152 | // The number of milliseconds a hotend will preheat before starting to check 153 | // the temperature. This value should NOT be set to the time it takes the 154 | // hot end to reach the target temperature, but the time it takes to reach 155 | // the minimum temperature your thermistor can read. The lower the better/safer. 156 | // This shouldn't need to be more than 30 seconds (30000) 157 | //#define MILLISECONDS_PREHEAT_TIME 0 158 | 159 | // @section extruder 160 | 161 | // Extruder runout prevention. 162 | // If the machine is idle and the temperature over MINTEMP 163 | // then extrude some filament every couple of SECONDS. 164 | //#define EXTRUDER_RUNOUT_PREVENT 165 | #if ENABLED(EXTRUDER_RUNOUT_PREVENT) 166 | #define EXTRUDER_RUNOUT_MINTEMP 190 167 | #define EXTRUDER_RUNOUT_SECONDS 30 168 | #define EXTRUDER_RUNOUT_SPEED 1500 // mm/m 169 | #define EXTRUDER_RUNOUT_EXTRUDE 5 // mm 170 | #endif 171 | 172 | // @section temperature 173 | 174 | //These defines help to calibrate the AD595 sensor in case you get wrong temperature measurements. 175 | //The measured temperature is defined as "actualTemp = (measuredTemp * TEMP_SENSOR_AD595_GAIN) + TEMP_SENSOR_AD595_OFFSET" 176 | #define TEMP_SENSOR_AD595_OFFSET 0.0 177 | #define TEMP_SENSOR_AD595_GAIN 1.0 178 | 179 | /** 180 | * Controller Fan 181 | * To cool down the stepper drivers and MOSFETs. 182 | * 183 | * The fan will turn on automatically whenever any stepper is enabled 184 | * and turn off after a set period after all steppers are turned off. 185 | */ 186 | //#define USE_CONTROLLER_FAN 187 | #if ENABLED(USE_CONTROLLER_FAN) 188 | //#define CONTROLLER_FAN_PIN FAN1_PIN // Set a custom pin for the controller fan 189 | #define CONTROLLERFAN_SECS 60 // Duration in seconds for the fan to run after all motors are disabled 190 | #define CONTROLLERFAN_SPEED 255 // 255 == full speed 191 | #endif 192 | 193 | // When first starting the main fan, run it at full speed for the 194 | // given number of milliseconds. This gets the fan spinning reliably 195 | // before setting a PWM value. (Does not work with software PWM for fan on Sanguinololu) 196 | //#define FAN_KICKSTART_TIME 100 197 | 198 | // This defines the minimal speed for the main fan, run in PWM mode 199 | // to enable uncomment and set minimal PWM speed for reliable running (1-255) 200 | // if fan speed is [1 - (FAN_MIN_PWM-1)] it is set to FAN_MIN_PWM 201 | //#define FAN_MIN_PWM 50 202 | 203 | // @section extruder 204 | 205 | /** 206 | * Extruder cooling fans 207 | * 208 | * Extruder auto fans automatically turn on when their extruders' 209 | * temperatures go above EXTRUDER_AUTO_FAN_TEMPERATURE. 210 | * 211 | * Your board's pins file specifies the recommended pins. Override those here 212 | * or set to -1 to disable completely. 213 | * 214 | * Multiple extruders can be assigned to the same pin in which case 215 | * the fan will turn on when any selected extruder is above the threshold. 216 | */ 217 | #define E0_AUTO_FAN_PIN P2_06 218 | #define E1_AUTO_FAN_PIN -1 219 | #define E2_AUTO_FAN_PIN -1 220 | #define E3_AUTO_FAN_PIN -1 221 | #define E4_AUTO_FAN_PIN -1 222 | #define EXTRUDER_AUTO_FAN_TEMPERATURE 50 223 | #define EXTRUDER_AUTO_FAN_SPEED 255 // == full speed 224 | 225 | /** 226 | * Part-Cooling Fan Multiplexer 227 | * 228 | * This feature allows you to digitally multiplex the fan output. 229 | * The multiplexer is automatically switched at tool-change. 230 | * Set FANMUX[012]_PINs below for up to 2, 4, or 8 multiplexed fans. 231 | */ 232 | #define FANMUX0_PIN -1 233 | #define FANMUX1_PIN -1 234 | #define FANMUX2_PIN -1 235 | 236 | /** 237 | * M355 Case Light on-off / brightness 238 | */ 239 | //#define CASE_LIGHT_ENABLE 240 | #if ENABLED(CASE_LIGHT_ENABLE) 241 | //#define CASE_LIGHT_PIN 4 // Override the default pin if needed 242 | #define INVERT_CASE_LIGHT false // Set true if Case Light is ON when pin is LOW 243 | #define CASE_LIGHT_DEFAULT_ON true // Set default power-up state on 244 | #define CASE_LIGHT_DEFAULT_BRIGHTNESS 105 // Set default power-up brightness (0-255, requires PWM pin) 245 | //#define MENU_ITEM_CASE_LIGHT // Add a Case Light option to the LCD main menu 246 | #endif 247 | 248 | //=========================================================================== 249 | //============================ Mechanical Settings ========================== 250 | //=========================================================================== 251 | 252 | // @section homing 253 | 254 | // If you want endstops to stay on (by default) even when not homing 255 | // enable this option. Override at any time with M120, M121. 256 | //#define ENDSTOPS_ALWAYS_ON_DEFAULT 257 | 258 | // @section extras 259 | 260 | //#define Z_LATE_ENABLE // Enable Z the last moment. Needed if your Z driver overheats. 261 | 262 | /** 263 | * Dual Steppers / Dual Endstops 264 | * 265 | * This section will allow you to use extra E drivers to drive a second motor for X, Y, or Z axes. 266 | * 267 | * For example, set X_DUAL_STEPPER_DRIVERS setting to use a second motor. If the motors need to 268 | * spin in opposite directions set INVERT_X2_VS_X_DIR. If the second motor needs its own endstop 269 | * set X_DUAL_ENDSTOPS. This can adjust for "racking." Use X2_USE_ENDSTOP to set the endstop plug 270 | * that should be used for the second endstop. Extra endstops will appear in the output of 'M119'. 271 | * 272 | * Use X_DUAL_ENDSTOP_ADJUSTMENT to adjust for mechanical imperfection. After homing both motors 273 | * this offset is applied to the X2 motor. To find the offset home the X axis, and measure the error 274 | * in X2. Dual endstop offsets can be set at runtime with 'M666 X Y Z'. 275 | */ 276 | 277 | //#define X_DUAL_STEPPER_DRIVERS 278 | #if ENABLED(X_DUAL_STEPPER_DRIVERS) 279 | #define INVERT_X2_VS_X_DIR true // Set 'true' if X motors should rotate in opposite directions 280 | //#define X_DUAL_ENDSTOPS 281 | #if ENABLED(X_DUAL_ENDSTOPS) 282 | #define X2_USE_ENDSTOP _XMAX_ 283 | #define X_DUAL_ENDSTOPS_ADJUSTMENT 0 284 | #endif 285 | #endif 286 | 287 | //#define Y_DUAL_STEPPER_DRIVERS 288 | #if ENABLED(Y_DUAL_STEPPER_DRIVERS) 289 | #define INVERT_Y2_VS_Y_DIR true // Set 'true' if Y motors should rotate in opposite directions 290 | //#define Y_DUAL_ENDSTOPS 291 | #if ENABLED(Y_DUAL_ENDSTOPS) 292 | #define Y2_USE_ENDSTOP _YMAX_ 293 | #define Y_DUAL_ENDSTOPS_ADJUSTMENT 0 294 | #endif 295 | #endif 296 | 297 | //#define Z_DUAL_STEPPER_DRIVERS 298 | #if ENABLED(Z_DUAL_STEPPER_DRIVERS) 299 | //#define Z_DUAL_ENDSTOPS 300 | #if ENABLED(Z_DUAL_ENDSTOPS) 301 | #define Z2_USE_ENDSTOP _XMAX_ 302 | #define Z_DUAL_ENDSTOPS_ADJUSTMENT 0 303 | #endif 304 | #endif 305 | 306 | // Enable this for dual x-carriage printers. 307 | // A dual x-carriage design has the advantage that the inactive extruder can be parked which 308 | // prevents hot-end ooze contaminating the print. It also reduces the weight of each x-carriage 309 | // allowing faster printing speeds. Connect your X2 stepper to the first unused E plug. 310 | //#define DUAL_X_CARRIAGE 311 | #if ENABLED(DUAL_X_CARRIAGE) 312 | // Configuration for second X-carriage 313 | // Note: the first x-carriage is defined as the x-carriage which homes to the minimum endstop; 314 | // the second x-carriage always homes to the maximum endstop. 315 | #define X2_MIN_POS 80 // set minimum to ensure second x-carriage doesn't hit the parked first X-carriage 316 | #define X2_MAX_POS 353 // set maximum to the distance between toolheads when both heads are homed 317 | #define X2_HOME_DIR 1 // the second X-carriage always homes to the maximum endstop position 318 | #define X2_HOME_POS X2_MAX_POS // default home position is the maximum carriage position 319 | // However: In this mode the HOTEND_OFFSET_X value for the second extruder provides a software 320 | // override for X2_HOME_POS. This also allow recalibration of the distance between the two endstops 321 | // without modifying the firmware (through the "M218 T1 X???" command). 322 | // Remember: you should set the second extruder x-offset to 0 in your slicer. 323 | 324 | // There are a few selectable movement modes for dual x-carriages using M605 S 325 | // Mode 0 (DXC_FULL_CONTROL_MODE): Full control. The slicer has full control over both x-carriages and can achieve optimal travel results 326 | // as long as it supports dual x-carriages. (M605 S0) 327 | // Mode 1 (DXC_AUTO_PARK_MODE) : Auto-park mode. The firmware will automatically park and unpark the x-carriages on tool changes so 328 | // that additional slicer support is not required. (M605 S1) 329 | // Mode 2 (DXC_DUPLICATION_MODE) : Duplication mode. The firmware will transparently make the second x-carriage and extruder copy all 330 | // actions of the first x-carriage. This allows the printer to print 2 arbitrary items at 331 | // once. (2nd extruder x offset and temp offset are set using: M605 S2 [Xnnn] [Rmmm]) 332 | 333 | // This is the default power-up mode which can be later using M605. 334 | #define DEFAULT_DUAL_X_CARRIAGE_MODE DXC_FULL_CONTROL_MODE 335 | 336 | // Default settings in "Auto-park Mode" 337 | #define TOOLCHANGE_PARK_ZLIFT 0.2 // the distance to raise Z axis when parking an extruder 338 | #define TOOLCHANGE_UNPARK_ZLIFT 1 // the distance to raise Z axis when unparking an extruder 339 | 340 | // Default x offset in duplication mode (typically set to half print bed width) 341 | #define DEFAULT_DUPLICATION_X_OFFSET 100 342 | 343 | #endif // DUAL_X_CARRIAGE 344 | 345 | // Activate a solenoid on the active extruder with M380. Disable all with M381. 346 | // Define SOL0_PIN, SOL1_PIN, etc., for each extruder that has a solenoid. 347 | //#define EXT_SOLENOID 348 | 349 | // @section homing 350 | 351 | // Homing hits each endstop, retracts by these distances, then does a slower bump. 352 | #define X_HOME_BUMP_MM 5 353 | #define Y_HOME_BUMP_MM 5 354 | #define Z_HOME_BUMP_MM 2 355 | #define HOMING_BUMP_DIVISOR { 2, 2, 4 } // Re-Bump Speed Divisor (Divides the Homing Feedrate) 356 | //#define QUICK_HOME // If homing includes X and Y, do a diagonal move initially 357 | 358 | // When G28 is called, this option will make Y home before X 359 | //#define HOME_Y_BEFORE_X 360 | 361 | // @section machine 362 | 363 | #define AXIS_RELATIVE_MODES {false, false, false, false} 364 | 365 | // Allow duplication mode with a basic dual-nozzle extruder 366 | //#define DUAL_NOZZLE_DUPLICATION_MODE 367 | 368 | // By default pololu step drivers require an active high signal. However, some high power drivers require an active low signal as step. 369 | #define INVERT_X_STEP_PIN false 370 | #define INVERT_Y_STEP_PIN false 371 | #define INVERT_Z_STEP_PIN false 372 | #define INVERT_E_STEP_PIN false 373 | 374 | // Default stepper release if idle. Set to 0 to deactivate. 375 | // Steppers will shut down DEFAULT_STEPPER_DEACTIVE_TIME seconds after the last move when DISABLE_INACTIVE_? is true. 376 | // Time can be set by M18 and M84. 377 | #define DEFAULT_STEPPER_DEACTIVE_TIME 120 378 | #define DISABLE_INACTIVE_X true 379 | #define DISABLE_INACTIVE_Y true 380 | #define DISABLE_INACTIVE_Z true // set to false if the nozzle will fall down on your printed part when print has finished. 381 | #define DISABLE_INACTIVE_E true 382 | 383 | #define DEFAULT_MINIMUMFEEDRATE 0.0 // minimum feedrate 384 | #define DEFAULT_MINTRAVELFEEDRATE 0.0 385 | 386 | //#define HOME_AFTER_DEACTIVATE // Require rehoming after steppers are deactivated 387 | 388 | // @section lcd 389 | 390 | #if ENABLED(ULTIPANEL) 391 | #define MANUAL_FEEDRATE {50*60, 50*60, 4*60, 60} // Feedrates for manual moves along X, Y, Z, E from panel 392 | #define ULTIPANEL_FEEDMULTIPLY // Comment to disable setting feedrate multiplier via encoder 393 | #endif 394 | 395 | // @section extras 396 | 397 | // minimum time in microseconds that a movement needs to take if the buffer is emptied. 398 | #define DEFAULT_MINSEGMENTTIME 20000 399 | 400 | // If defined the movements slow down when the look ahead buffer is only half full 401 | #define SLOWDOWN 402 | 403 | // Frequency limit 404 | // See nophead's blog for more info 405 | // Not working O 406 | //#define XY_FREQUENCY_LIMIT 15 407 | 408 | // Minimum planner junction speed. Sets the default minimum speed the planner plans for at the end 409 | // of the buffer and all stops. This should not be much greater than zero and should only be changed 410 | // if unwanted behavior is observed on a user's machine when running at very slow speeds. 411 | #define MINIMUM_PLANNER_SPEED 0.05 // (mm/sec) 412 | 413 | // Microstep setting (Only functional when stepper driver microstep pins are connected to MCU. 414 | #define MICROSTEP_MODES {16,16,16,16,16} // [1,2,4,8,16] 415 | 416 | /** 417 | * @section stepper motor current 418 | * 419 | * Some boards have a means of setting the stepper motor current via firmware. 420 | * 421 | * The power on motor currents are set by: 422 | * PWM_MOTOR_CURRENT - used by MINIRAMBO & ULTIMAIN_2 423 | * known compatible chips: A4982 424 | * DIGIPOT_MOTOR_CURRENT - used by BQ_ZUM_MEGA_3D, RAMBO & SCOOVO_X9H 425 | * known compatible chips: AD5206 426 | * DAC_MOTOR_CURRENT_DEFAULT - used by PRINTRBOARD_REVF & RIGIDBOARD_V2 427 | * known compatible chips: MCP4728 428 | * DIGIPOT_I2C_MOTOR_CURRENTS - used by 5DPRINT, AZTEEG_X3_PRO, MIGHTYBOARD_REVE 429 | * known compatible chips: MCP4451, MCP4018 430 | * 431 | * Motor currents can also be set by M907 - M910 and by the LCD. 432 | * M907 - applies to all. 433 | * M908 - BQ_ZUM_MEGA_3D, RAMBO, PRINTRBOARD_REVF, RIGIDBOARD_V2 & SCOOVO_X9H 434 | * M909, M910 & LCD - only PRINTRBOARD_REVF & RIGIDBOARD_V2 435 | */ 436 | //#define PWM_MOTOR_CURRENT { 1300, 1300, 1250 } // Values in milliamps 437 | #define DIGIPOT_MOTOR_CURRENT { 135,135,135,135,135 } // Values 0-255 (RAMBO 135 = ~0.75A, 185 = ~1A) 438 | //#define DAC_MOTOR_CURRENT_DEFAULT { 70, 80, 90, 80 } // Default drive percent - X, Y, Z, E axis 439 | 440 | // Uncomment to enable an I2C based DIGIPOT like on the Azteeg X3 Pro 441 | #define DIGIPOT_I2C 442 | 443 | #if ENABLED(DIGIPOT_I2C) && !defined(DIGIPOT_I2C_ADDRESS_A) // Default to settings in pins_XXXX.h files 444 | /** 445 | * Common slave addresses: 446 | * 447 | * A (A shifted) B (B shifted) IC 448 | * Smoothie 0x2C (0x58) 0x2D (0x5A) MCP4451 449 | * AZTEEG_X3_PRO 0x2C (0x58) 0x2E (0x5C) MCP4451 450 | * MIGHTYBOARD_REVE 0x2F (0x5E) MCP4018 451 | */ 452 | #define DIGIPOT_I2C_ADDRESS_A 0x2C // unshifted slave address for first DIGIPOT 453 | #define DIGIPOT_I2C_ADDRESS_B 0x2D // unshifted slave address for second DIGIPOT 454 | #endif 455 | 456 | //#define DIGIPOT_MCP4018 // Requires library from https://github.com/stawel/SlowSoftI2CMaster 457 | #define DIGIPOT_I2C_NUM_CHANNELS 5 // 5DPRINT: 4 AZTEEG_X3_PRO: 8 MKS SBASE: 5 458 | // Actual motor currents in Amps, need as many here as DIGIPOT_I2C_NUM_CHANNELS 459 | #define DIGIPOT_I2C_MOTOR_CURRENTS { 1.2, 1.2, 1.2, 1.2, 1.2 } // MKS SBASE: 5 460 | 461 | //=========================================================================== 462 | //=============================Additional Features=========================== 463 | //=========================================================================== 464 | 465 | #define ENCODER_RATE_MULTIPLIER // If defined, certain menu edit operations automatically multiply the steps when the encoder is moved quickly 466 | #define ENCODER_10X_STEPS_PER_SEC 75 // If the encoder steps per sec exceeds this value, multiply steps moved x10 to quickly advance the value 467 | #define ENCODER_100X_STEPS_PER_SEC 160 // If the encoder steps per sec exceeds this value, multiply steps moved x100 to really quickly advance the value 468 | 469 | //#define CHDK 4 //Pin for triggering CHDK to take a picture see how to use it here http://captain-slow.dk/2014/03/09/3d-printing-timelapses/ 470 | #define CHDK_DELAY 50 //How long in ms the pin should stay HIGH before going LOW again 471 | 472 | // @section lcd 473 | 474 | // Include a page of printer information in the LCD Main Menu 475 | //#define LCD_INFO_MENU 476 | 477 | // Leave out seldom-used LCD menu items to recover some Program Memory 478 | //#define SLIM_LCD_MENUS 479 | 480 | // Scroll a longer status message into view 481 | //#define STATUS_MESSAGE_SCROLLING 482 | 483 | // On the Info Screen, display XY with one decimal place when possible 484 | //#define LCD_DECIMAL_SMALL_XY 485 | 486 | // The timeout (in ms) to return to the status screen from sub-menus 487 | //#define LCD_TIMEOUT_TO_STATUS 15000 488 | 489 | /** 490 | * LED Control Menu 491 | * Enable this feature to add LED Control to the LCD menu 492 | */ 493 | //#define LED_CONTROL_MENU 494 | #if ENABLED(LED_CONTROL_MENU) 495 | #define LED_COLOR_PRESETS // Enable the Preset Color menu option 496 | #if ENABLED(LED_COLOR_PRESETS) 497 | #define LED_USER_PRESET_RED 255 // User defined RED value 498 | #define LED_USER_PRESET_GREEN 128 // User defined GREEN value 499 | #define LED_USER_PRESET_BLUE 0 // User defined BLUE value 500 | #define LED_USER_PRESET_WHITE 255 // User defined WHITE value 501 | #define LED_USER_PRESET_BRIGHTNESS 255 // User defined intensity 502 | //#define LED_USER_PRESET_STARTUP // Have the printer display the user preset color on startup 503 | #endif 504 | #endif // LED_CONTROL_MENU 505 | 506 | #if ENABLED(SDSUPPORT) 507 | 508 | // Some RAMPS and other boards don't detect when an SD card is inserted. You can work 509 | // around this by connecting a push button or single throw switch to the pin defined 510 | // as SD_DETECT_PIN in your board's pins definitions. 511 | // This setting should be disabled unless you are using a push button, pulling the pin to ground. 512 | // Note: This is always disabled for ULTIPANEL (except ELB_FULL_GRAPHIC_CONTROLLER). 513 | #define SD_DETECT_INVERTED 514 | 515 | #define SD_FINISHED_STEPPERRELEASE true // Disable steppers when SD Print is finished 516 | #define SD_FINISHED_RELEASECOMMAND "M84 X Y Z E" // You might want to keep the z enabled so your bed stays in place. 517 | 518 | // Reverse SD sort to show "more recent" files first, according to the card's FAT. 519 | // Since the FAT gets out of order with usage, SDCARD_SORT_ALPHA is recommended. 520 | #define SDCARD_RATHERRECENTFIRST 521 | 522 | // Add an option in the menu to run all auto#.g files 523 | //#define MENU_ADDAUTOSTART 524 | 525 | /** 526 | * Sort SD file listings in alphabetical order. 527 | * 528 | * With this option enabled, items on SD cards will be sorted 529 | * by name for easier navigation. 530 | * 531 | * By default... 532 | * 533 | * - Use the slowest -but safest- method for sorting. 534 | * - Folders are sorted to the top. 535 | * - The sort key is statically allocated. 536 | * - No added G-code (M34) support. 537 | * - 40 item sorting limit. (Items after the first 40 are unsorted.) 538 | * 539 | * SD sorting uses static allocation (as set by SDSORT_LIMIT), allowing the 540 | * compiler to calculate the worst-case usage and throw an error if the SRAM 541 | * limit is exceeded. 542 | * 543 | * - SDSORT_USES_RAM provides faster sorting via a static directory buffer. 544 | * - SDSORT_USES_STACK does the same, but uses a local stack-based buffer. 545 | * - SDSORT_CACHE_NAMES will retain the sorted file listing in RAM. (Expensive!) 546 | * - SDSORT_DYNAMIC_RAM only uses RAM when the SD menu is visible. (Use with caution!) 547 | */ 548 | //#define SDCARD_SORT_ALPHA 549 | 550 | // SD Card Sorting options 551 | #if ENABLED(SDCARD_SORT_ALPHA) 552 | #define SDSORT_LIMIT 40 // Maximum number of sorted items (10-256). Costs 27 bytes each. 553 | #define FOLDER_SORTING -1 // -1=above 0=none 1=below 554 | #define SDSORT_GCODE false // Allow turning sorting on/off with LCD and M34 g-code. 555 | #define SDSORT_USES_RAM false // Pre-allocate a static array for faster pre-sorting. 556 | #define SDSORT_USES_STACK false // Prefer the stack for pre-sorting to give back some SRAM. (Negated by next 2 options.) 557 | #define SDSORT_CACHE_NAMES false // Keep sorted items in RAM longer for speedy performance. Most expensive option. 558 | #define SDSORT_DYNAMIC_RAM false // Use dynamic allocation (within SD menus). Least expensive option. Set SDSORT_LIMIT before use! 559 | #define SDSORT_CACHE_VFATS 2 // Maximum number of 13-byte VFAT entries to use for sorting. 560 | // Note: Only affects SCROLL_LONG_FILENAMES with SDSORT_CACHE_NAMES but not SDSORT_DYNAMIC_RAM. 561 | #endif 562 | 563 | // Show a progress bar on HD44780 LCDs for SD printing 564 | //#define LCD_PROGRESS_BAR 565 | 566 | #if ENABLED(LCD_PROGRESS_BAR) 567 | // Amount of time (ms) to show the bar 568 | #define PROGRESS_BAR_BAR_TIME 2000 569 | // Amount of time (ms) to show the status message 570 | #define PROGRESS_BAR_MSG_TIME 3000 571 | // Amount of time (ms) to retain the status message (0=forever) 572 | #define PROGRESS_MSG_EXPIRE 0 573 | // Enable this to show messages for MSG_TIME then hide them 574 | //#define PROGRESS_MSG_ONCE 575 | // Add a menu item to test the progress bar: 576 | //#define LCD_PROGRESS_BAR_TEST 577 | #endif 578 | 579 | // Add an 'M73' G-code to set the current percentage 580 | //#define LCD_SET_PROGRESS_MANUALLY 581 | 582 | // This allows hosts to request long names for files and folders with M33 583 | //#define LONG_FILENAME_HOST_SUPPORT 584 | 585 | // Enable this option to scroll long filenames in the SD card menu 586 | //#define SCROLL_LONG_FILENAMES 587 | 588 | /** 589 | * This option allows you to abort SD printing when any endstop is triggered. 590 | * This feature must be enabled with "M540 S1" or from the LCD menu. 591 | * To have any effect, endstops must be enabled during SD printing. 592 | */ 593 | //#define ABORT_ON_ENDSTOP_HIT_FEATURE_ENABLED 594 | 595 | /** 596 | * This option makes it easier to print the same SD Card file again. 597 | * On print completion the LCD Menu will open with the file selected. 598 | * You can just click to start the print, or navigate elsewhere. 599 | */ 600 | //#define SD_REPRINT_LAST_SELECTED_FILE 601 | 602 | #endif // SDSUPPORT 603 | 604 | /** 605 | * Additional options for Graphical Displays 606 | * 607 | * Use the optimizations here to improve printing performance, 608 | * which can be adversely affected by graphical display drawing, 609 | * especially when doing several short moves, and when printing 610 | * on DELTA and SCARA machines. 611 | * 612 | * Some of these options may result in the display lagging behind 613 | * controller events, as there is a trade-off between reliable 614 | * printing performance versus fast display updates. 615 | */ 616 | #if ENABLED(DOGLCD) 617 | // Enable to save many cycles by drawing a hollow frame on the Info Screen 618 | #define XYZ_HOLLOW_FRAME 619 | 620 | // Enable to save many cycles by drawing a hollow frame on Menu Screens 621 | #define MENU_HOLLOW_FRAME 622 | 623 | // A bigger font is available for edit items. Costs 3120 bytes of PROGMEM. 624 | // Western only. Not available for Cyrillic, Kana, Turkish, Greek, or Chinese. 625 | //#define USE_BIG_EDIT_FONT 626 | 627 | // A smaller font may be used on the Info Screen. Costs 2300 bytes of PROGMEM. 628 | // Western only. Not available for Cyrillic, Kana, Turkish, Greek, or Chinese. 629 | //#define USE_SMALL_INFOFONT 630 | 631 | // Enable this option and reduce the value to optimize screen updates. 632 | // The normal delay is 10µs. Use the lowest value that still gives a reliable display. 633 | //#define DOGM_SPI_DELAY_US 5 634 | 635 | // Swap the CW/CCW indicators in the graphics overlay 636 | //#define OVERLAY_GFX_REVERSE 637 | 638 | 639 | // VIKI2 and miniVIKI require DOGLCD_SCK and DOGLCD_MOSI to be defined. 640 | #if ENABLED(VIKI2) || ENABLED(miniVIKI) 641 | #define DOGLCD_SCK SCK_PIN 642 | #define DOGLCD_MOSI MOSI_PIN 643 | #endif 644 | 645 | #endif // DOGLCD 646 | 647 | // @section safety 648 | 649 | // The hardware watchdog should reset the microcontroller disabling all outputs, 650 | // in case the firmware gets stuck and doesn't do temperature regulation. 651 | #define USE_WATCHDOG 652 | 653 | #if ENABLED(USE_WATCHDOG) 654 | // If you have a watchdog reboot in an ArduinoMega2560 then the device will hang forever, as a watchdog reset will leave the watchdog on. 655 | // The "WATCHDOG_RESET_MANUAL" goes around this by not using the hardware reset. 656 | // However, THIS FEATURE IS UNSAFE!, as it will only work if interrupts are disabled. And the code could hang in an interrupt routine with interrupts disabled. 657 | //#define WATCHDOG_RESET_MANUAL 658 | #endif 659 | 660 | // @section lcd 661 | 662 | /** 663 | * Babystepping enables movement of the axes by tiny increments without changing 664 | * the current position values. This feature is used primarily to adjust the Z 665 | * axis in the first layer of a print in real-time. 666 | * 667 | * Warning: Does not respect endstops! 668 | */ 669 | //#define BABYSTEPPING 670 | #if ENABLED(BABYSTEPPING) 671 | //#define BABYSTEP_XY // Also enable X/Y Babystepping. Not supported on DELTA! 672 | #define BABYSTEP_INVERT_Z false // Change if Z babysteps should go the other way 673 | #define BABYSTEP_MULTIPLICATOR 1 // Babysteps are very small. Increase for faster motion. 674 | //#define BABYSTEP_ZPROBE_OFFSET // Enable to combine M851 and Babystepping 675 | //#define DOUBLECLICK_FOR_Z_BABYSTEPPING // Double-click on the Status Screen for Z Babystepping. 676 | #define DOUBLECLICK_MAX_INTERVAL 1250 // Maximum interval between clicks, in milliseconds. 677 | // Note: Extra time may be added to mitigate controller latency. 678 | //#define BABYSTEP_ZPROBE_GFX_OVERLAY // Enable graphical overlay on Z-offset editor 679 | #endif 680 | 681 | // @section extruder 682 | 683 | /** 684 | * Implementation of linear pressure control 685 | * 686 | * Assumption: advance = k * (delta velocity) 687 | * K=0 means advance disabled. 688 | * See Marlin documentation for calibration instructions. 689 | */ 690 | #define LIN_ADVANCE 691 | 692 | #if ENABLED(LIN_ADVANCE) 693 | #define LIN_ADVANCE_K 100 694 | 695 | /** 696 | * Some Slicers produce Gcode with randomly jumping extrusion widths occasionally. 697 | * For example within a 0.4mm perimeter it may produce a single segment of 0.05mm width. 698 | * While this is harmless for normal printing (the fluid nature of the filament will 699 | * close this very, very tiny gap), it throws off the LIN_ADVANCE pressure adaption. 700 | * 701 | * For this case LIN_ADVANCE_E_D_RATIO can be used to set the extrusion:distance ratio 702 | * to a fixed value. Note that using a fixed ratio will lead to wrong nozzle pressures 703 | * if the slicer is using variable widths or layer heights within one print! 704 | * 705 | * This option sets the default E:D ratio at startup. Use `M900` to override this value. 706 | * 707 | * Example: `M900 W0.4 H0.2 D1.75`, where: 708 | * - W is the extrusion width in mm 709 | * - H is the layer height in mm 710 | * - D is the filament diameter in mm 711 | * 712 | * Example: `M900 R0.0458` to set the ratio directly. 713 | * 714 | * Set to 0 to auto-detect the ratio based on given Gcode G1 print moves. 715 | * 716 | * Slic3r (including Průša Control) produces Gcode compatible with the automatic mode. 717 | * Cura (as of this writing) may produce Gcode incompatible with the automatic mode. 718 | */ 719 | #define LIN_ADVANCE_E_D_RATIO 0 // The calculated ratio (or 0) according to the formula W * H / ((D / 2) ^ 2 * PI) 720 | // Example: 0.4 * 0.2 / ((1.75 / 2) ^ 2 * PI) = 0.033260135 721 | #endif 722 | 723 | // @section leveling 724 | 725 | #if ENABLED(DELTA) && !defined(DELTA_PROBEABLE_RADIUS) 726 | #define DELTA_PROBEABLE_RADIUS DELTA_PRINTABLE_RADIUS 727 | #elif IS_SCARA && !defined(SCARA_PRINTABLE_RADIUS) 728 | #define SCARA_PRINTABLE_RADIUS (SCARA_LINKAGE_1 + SCARA_LINKAGE_2) 729 | #endif 730 | 731 | #if ENABLED(MESH_BED_LEVELING) || ENABLED(AUTO_BED_LEVELING_UBL) 732 | // Override the mesh area if the automatic (max) area is too large 733 | //#define MESH_MIN_X MESH_INSET 734 | //#define MESH_MIN_Y MESH_INSET 735 | //#define MESH_MAX_X X_BED_SIZE - (MESH_INSET) 736 | //#define MESH_MAX_Y Y_BED_SIZE - (MESH_INSET) 737 | #endif 738 | 739 | // @section extras 740 | 741 | // 742 | // G2/G3 Arc Support 743 | // 744 | #define ARC_SUPPORT // Disable this feature to save ~3226 bytes 745 | #if ENABLED(ARC_SUPPORT) 746 | #define MM_PER_ARC_SEGMENT 1 // Length of each arc segment 747 | #define N_ARC_CORRECTION 25 // Number of intertpolated segments between corrections 748 | //#define ARC_P_CIRCLES // Enable the 'P' parameter to specify complete circles 749 | //#define CNC_WORKSPACE_PLANES // Allow G2/G3 to operate in XY, ZX, or YZ planes 750 | #endif 751 | 752 | // Support for G5 with XYZE destination and IJPQ offsets. Requires ~2666 bytes. 753 | //#define BEZIER_CURVE_SUPPORT 754 | 755 | // G38.2 and G38.3 Probe Target 756 | // Set MULTIPLE_PROBING if you want G38 to double touch 757 | //#define G38_PROBE_TARGET 758 | #if ENABLED(G38_PROBE_TARGET) 759 | #define G38_MINIMUM_MOVE 0.0275 // minimum distance in mm that will produce a move (determined using the print statement in check_move) 760 | #endif 761 | 762 | // Moves (or segments) with fewer steps than this will be joined with the next move 763 | #define MIN_STEPS_PER_SEGMENT 6 764 | 765 | // The minimum pulse width (in µs) for stepping a stepper. 766 | // Set this if you find stepping unreliable, or if using a very fast CPU. 767 | #define MINIMUM_STEPPER_PULSE 4 // (µs) The smallest stepper pulse allowed 768 | 769 | // @section temperature 770 | 771 | // Control heater 0 and heater 1 in parallel. 772 | //#define HEATERS_PARALLEL 773 | 774 | //=========================================================================== 775 | //================================= Buffers ================================= 776 | //=========================================================================== 777 | 778 | // @section hidden 779 | 780 | // The number of linear motions that can be in the plan at any give time. 781 | // THE BLOCK_BUFFER_SIZE NEEDS TO BE A POWER OF 2 (e.g. 8, 16, 32) because shifts and ors are used to do the ring-buffering. 782 | #if ENABLED(SDSUPPORT) 783 | #define BLOCK_BUFFER_SIZE 16 // SD,LCD,Buttons take more memory, block buffer needs to be smaller 784 | #else 785 | #define BLOCK_BUFFER_SIZE 16 // maximize block buffer 786 | #endif 787 | 788 | // @section serial 789 | 790 | // The ASCII buffer for serial input 791 | #define MAX_CMD_SIZE 96 792 | #define BUFSIZE 4 793 | 794 | // Transmission to Host Buffer Size 795 | // To save 386 bytes of PROGMEM (and TX_BUFFER_SIZE+3 bytes of RAM) set to 0. 796 | // To buffer a simple "ok" you need 4 bytes. 797 | // For ADVANCED_OK (M105) you need 32 bytes. 798 | // For debug-echo: 128 bytes for the optimal speed. 799 | // Other output doesn't need to be that speedy. 800 | // :[0, 2, 4, 8, 16, 32, 64, 128, 256] 801 | #define TX_BUFFER_SIZE 0 802 | 803 | // Host Receive Buffer Size 804 | // Without XON/XOFF flow control (see SERIAL_XON_XOFF below) 32 bytes should be enough. 805 | // To use flow control, set this buffer size to at least 1024 bytes. 806 | // :[0, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024, 2048] 807 | //#define RX_BUFFER_SIZE 1024 808 | 809 | #if RX_BUFFER_SIZE >= 1024 810 | // Enable to have the controller send XON/XOFF control characters to 811 | // the host to signal the RX buffer is becoming full. 812 | //#define SERIAL_XON_XOFF 813 | #endif 814 | 815 | #if ENABLED(SDSUPPORT) 816 | // Enable this option to collect and display the maximum 817 | // RX queue usage after transferring a file to SD. 818 | //#define SERIAL_STATS_MAX_RX_QUEUED 819 | 820 | // Enable this option to collect and display the number 821 | // of dropped bytes after a file transfer to SD. 822 | //#define SERIAL_STATS_DROPPED_RX 823 | #endif 824 | 825 | // Enable an emergency-command parser to intercept certain commands as they 826 | // enter the serial receive buffer, so they cannot be blocked. 827 | // Currently handles M108, M112, M410 828 | // Does not work on boards using AT90USB (USBCON) processors! 829 | //#define EMERGENCY_PARSER 830 | 831 | // Bad Serial-connections can miss a received command by sending an 'ok' 832 | // Therefore some clients abort after 30 seconds in a timeout. 833 | // Some other clients start sending commands while receiving a 'wait'. 834 | // This "wait" is only sent when the buffer is empty. 1 second is a good value here. 835 | //#define NO_TIMEOUTS 1000 // Milliseconds 836 | 837 | // Some clients will have this feature soon. This could make the NO_TIMEOUTS unnecessary. 838 | //#define ADVANCED_OK 839 | 840 | // @section extras 841 | 842 | /** 843 | * Firmware-based and LCD-controlled retract 844 | * 845 | * Add G10 / G11 commands for automatic firmware-based retract / recover. 846 | * Use M207 and M208 to define parameters for retract / recover. 847 | * 848 | * Use M209 to enable or disable auto-retract. 849 | * With auto-retract enabled, all G1 E moves within the set range 850 | * will be converted to firmware-based retract/recover moves. 851 | * 852 | * Be sure to turn off auto-retract during filament change. 853 | * 854 | * Note that M207 / M208 / M209 settings are saved to EEPROM. 855 | * 856 | */ 857 | //#define FWRETRACT // ONLY PARTIALLY TESTED 858 | #if ENABLED(FWRETRACT) 859 | #define MIN_AUTORETRACT 0.1 // When auto-retract is on, convert E moves of this length and over 860 | #define MAX_AUTORETRACT 10.0 // Upper limit for auto-retract conversion 861 | #define RETRACT_LENGTH 3 // Default retract length (positive mm) 862 | #define RETRACT_LENGTH_SWAP 13 // Default swap retract length (positive mm), for extruder change 863 | #define RETRACT_FEEDRATE 45 // Default feedrate for retracting (mm/s) 864 | #define RETRACT_ZLIFT 0 // Default retract Z-lift 865 | #define RETRACT_RECOVER_LENGTH 0 // Default additional recover length (mm, added to retract length when recovering) 866 | #define RETRACT_RECOVER_LENGTH_SWAP 0 // Default additional swap recover length (mm, added to retract length when recovering from extruder change) 867 | #define RETRACT_RECOVER_FEEDRATE 8 // Default feedrate for recovering from retraction (mm/s) 868 | #define RETRACT_RECOVER_FEEDRATE_SWAP 8 // Default feedrate for recovering from swap retraction (mm/s) 869 | #endif 870 | 871 | /** 872 | * Extra Fan Speed 873 | * Adds a secondary fan speed for each print-cooling fan. 874 | * 'M106 P T3-255' : Set a secondary speed for 875 | * 'M106 P T2' : Use the set secondary speed 876 | * 'M106 P T1' : Restore the previous fan speed 877 | */ 878 | //#define EXTRA_FAN_SPEED 879 | 880 | /** 881 | * Advanced Pause 882 | * Experimental feature for filament change support and for parking the nozzle when paused. 883 | * Adds the GCode M600 for initiating filament change. 884 | * If PARK_HEAD_ON_PAUSE enabled, adds the GCode M125 to pause printing and park the nozzle. 885 | * 886 | * Requires an LCD display. 887 | * Requires NOZZLE_PARK_FEATURE. 888 | * This feature is required for the default FILAMENT_RUNOUT_SCRIPT. 889 | */ 890 | //#define ADVANCED_PAUSE_FEATURE 891 | #if ENABLED(ADVANCED_PAUSE_FEATURE) 892 | #define PAUSE_PARK_RETRACT_FEEDRATE 60 // Initial retract feedrate in mm/s 893 | #define PAUSE_PARK_RETRACT_LENGTH 2 // Initial retract in mm 894 | // It is a short retract used immediately after print interrupt before move to filament exchange position 895 | #define FILAMENT_CHANGE_UNLOAD_FEEDRATE 10 // Unload filament feedrate in mm/s - filament unloading can be fast 896 | #define FILAMENT_CHANGE_UNLOAD_LENGTH 100 // Unload filament length from hotend in mm 897 | // Longer length for bowden printers to unload filament from whole bowden tube, 898 | // shorter length for printers without bowden to unload filament from extruder only, 899 | // 0 to disable unloading for manual unloading 900 | #define FILAMENT_CHANGE_LOAD_FEEDRATE 6 // Load filament feedrate in mm/s - filament loading into the bowden tube can be fast 901 | #define FILAMENT_CHANGE_LOAD_LENGTH 0 // Load filament length over hotend in mm 902 | // Longer length for bowden printers to fast load filament into whole bowden tube over the hotend, 903 | // Short or zero length for printers without bowden where loading is not used 904 | #define ADVANCED_PAUSE_EXTRUDE_FEEDRATE 3 // Extrude filament feedrate in mm/s - must be slower than load feedrate 905 | #define ADVANCED_PAUSE_EXTRUDE_LENGTH 50 // Extrude filament length in mm after filament is loaded over the hotend, 906 | // 0 to disable for manual extrusion 907 | // Filament can be extruded repeatedly from the filament exchange menu to fill the hotend, 908 | // or until outcoming filament color is not clear for filament color change 909 | #define PAUSE_PARK_NOZZLE_TIMEOUT 45 // Turn off nozzle if user doesn't change filament within this time limit in seconds 910 | #define FILAMENT_CHANGE_NUMBER_OF_ALERT_BEEPS 5 // Number of alert beeps before printer goes quiet 911 | #define PAUSE_PARK_NO_STEPPER_TIMEOUT // Enable to have stepper motors hold position during filament change 912 | // even if it takes longer than DEFAULT_STEPPER_DEACTIVE_TIME. 913 | //#define PARK_HEAD_ON_PAUSE // Go to filament change position on pause, return to print position on resume 914 | //#define HOME_BEFORE_FILAMENT_CHANGE // Ensure homing has been completed prior to parking for filament change 915 | #endif 916 | 917 | // @section tmc 918 | 919 | /** 920 | * Enable this section if you have TMC26X motor drivers. 921 | * You will need to import the TMC26XStepper library into the Arduino IDE for this 922 | * (https://github.com/trinamic/TMC26XStepper.git) 923 | */ 924 | //#define HAVE_TMCDRIVER 925 | 926 | #if ENABLED(HAVE_TMCDRIVER) 927 | 928 | //#define X_IS_TMC 929 | //#define X2_IS_TMC 930 | //#define Y_IS_TMC 931 | //#define Y2_IS_TMC 932 | //#define Z_IS_TMC 933 | //#define Z2_IS_TMC 934 | //#define E0_IS_TMC 935 | //#define E1_IS_TMC 936 | //#define E2_IS_TMC 937 | //#define E3_IS_TMC 938 | //#define E4_IS_TMC 939 | 940 | #define X_MAX_CURRENT 1000 // in mA 941 | #define X_SENSE_RESISTOR 91 // in mOhms 942 | #define X_MICROSTEPS 16 // number of microsteps 943 | 944 | #define X2_MAX_CURRENT 1000 945 | #define X2_SENSE_RESISTOR 91 946 | #define X2_MICROSTEPS 16 947 | 948 | #define Y_MAX_CURRENT 1000 949 | #define Y_SENSE_RESISTOR 91 950 | #define Y_MICROSTEPS 16 951 | 952 | #define Y2_MAX_CURRENT 1000 953 | #define Y2_SENSE_RESISTOR 91 954 | #define Y2_MICROSTEPS 16 955 | 956 | #define Z_MAX_CURRENT 1000 957 | #define Z_SENSE_RESISTOR 91 958 | #define Z_MICROSTEPS 16 959 | 960 | #define Z2_MAX_CURRENT 1000 961 | #define Z2_SENSE_RESISTOR 91 962 | #define Z2_MICROSTEPS 16 963 | 964 | #define E0_MAX_CURRENT 1000 965 | #define E0_SENSE_RESISTOR 91 966 | #define E0_MICROSTEPS 16 967 | 968 | #define E1_MAX_CURRENT 1000 969 | #define E1_SENSE_RESISTOR 91 970 | #define E1_MICROSTEPS 16 971 | 972 | #define E2_MAX_CURRENT 1000 973 | #define E2_SENSE_RESISTOR 91 974 | #define E2_MICROSTEPS 16 975 | 976 | #define E3_MAX_CURRENT 1000 977 | #define E3_SENSE_RESISTOR 91 978 | #define E3_MICROSTEPS 16 979 | 980 | #define E4_MAX_CURRENT 1000 981 | #define E4_SENSE_RESISTOR 91 982 | #define E4_MICROSTEPS 16 983 | 984 | #endif 985 | 986 | // @section TMC2130, TMC2208 987 | 988 | /** 989 | * Enable this for SilentStepStick Trinamic TMC2130 SPI-configurable stepper drivers. 990 | * 991 | * You'll also need the TMC2130Stepper Arduino library 992 | * (https://github.com/teemuatlut/TMC2130Stepper). 993 | * 994 | * To use TMC2130 stepper drivers in SPI mode connect your SPI2130 pins to 995 | * the hardware SPI interface on your board and define the required CS pins 996 | * in your `pins_MYBOARD.h` file. (e.g., RAMPS 1.4 uses AUX3 pins `X_CS_PIN 53`, `Y_CS_PIN 49`, etc.). 997 | */ 998 | //#define HAVE_TMC2130 999 | 1000 | /** 1001 | * Enable this for SilentStepStick Trinamic TMC2208 UART-configurable stepper drivers. 1002 | * Connect #_SERIAL_TX_PIN to the driver side PDN_UART pin. 1003 | * To use the reading capabilities, also connect #_SERIAL_RX_PIN 1004 | * to #_SERIAL_TX_PIN with a 1K resistor. 1005 | * The drivers can also be used with hardware serial. 1006 | * 1007 | * You'll also need the TMC2208Stepper Arduino library 1008 | * (https://github.com/teemuatlut/TMC2208Stepper). 1009 | */ 1010 | //#define HAVE_TMC2208 1011 | 1012 | #if ENABLED(HAVE_TMC2130) || ENABLED(HAVE_TMC2208) 1013 | 1014 | // CHOOSE YOUR MOTORS HERE, THIS IS MANDATORY 1015 | //#define X_IS_TMC2130 1016 | //#define X2_IS_TMC2130 1017 | //#define Y_IS_TMC2130 1018 | //#define Y2_IS_TMC2130 1019 | //#define Z_IS_TMC2130 1020 | //#define Z2_IS_TMC2130 1021 | //#define E0_IS_TMC2130 1022 | //#define E1_IS_TMC2130 1023 | //#define E2_IS_TMC2130 1024 | //#define E3_IS_TMC2130 1025 | //#define E4_IS_TMC2130 1026 | 1027 | //#define X_IS_TMC2208 1028 | //#define X2_IS_TMC2208 1029 | //#define Y_IS_TMC2208 1030 | //#define Y2_IS_TMC2208 1031 | //#define Z_IS_TMC2208 1032 | //#define Z2_IS_TMC2208 1033 | //#define E0_IS_TMC2208 1034 | //#define E1_IS_TMC2208 1035 | //#define E2_IS_TMC2208 1036 | //#define E3_IS_TMC2208 1037 | //#define E4_IS_TMC2208 1038 | 1039 | /** 1040 | * Stepper driver settings 1041 | */ 1042 | 1043 | #define R_SENSE 0.11 // R_sense resistor for SilentStepStick2130 1044 | #define HOLD_MULTIPLIER 0.5 // Scales down the holding current from run current 1045 | #define INTERPOLATE true // Interpolate X/Y/Z_MICROSTEPS to 256 1046 | 1047 | #define X_CURRENT 800 // rms current in mA. Multiply by 1.41 for peak current. 1048 | #define X_MICROSTEPS 16 // 0..256 1049 | 1050 | #define Y_CURRENT 800 1051 | #define Y_MICROSTEPS 16 1052 | 1053 | #define Z_CURRENT 800 1054 | #define Z_MICROSTEPS 16 1055 | 1056 | #define X2_CURRENT 800 1057 | #define X2_MICROSTEPS 16 1058 | 1059 | #define Y2_CURRENT 800 1060 | #define Y2_MICROSTEPS 16 1061 | 1062 | #define Z2_CURRENT 800 1063 | #define Z2_MICROSTEPS 16 1064 | 1065 | #define E0_CURRENT 800 1066 | #define E0_MICROSTEPS 16 1067 | 1068 | #define E1_CURRENT 800 1069 | #define E1_MICROSTEPS 16 1070 | 1071 | #define E2_CURRENT 800 1072 | #define E2_MICROSTEPS 16 1073 | 1074 | #define E3_CURRENT 800 1075 | #define E3_MICROSTEPS 16 1076 | 1077 | #define E4_CURRENT 800 1078 | #define E4_MICROSTEPS 16 1079 | 1080 | /** 1081 | * Use Trinamic's ultra quiet stepping mode. 1082 | * When disabled, Marlin will use spreadCycle stepping mode. 1083 | */ 1084 | #define STEALTHCHOP 1085 | 1086 | /** 1087 | * Monitor Trinamic TMC2130 and TMC2208 drivers for error conditions, 1088 | * like overtemperature and short to ground. TMC2208 requires hardware serial. 1089 | * In the case of overtemperature Marlin can decrease the driver current until error condition clears. 1090 | * Other detected conditions can be used to stop the current print. 1091 | * Relevant g-codes: 1092 | * M906 - Set or get motor current in milliamps using axis codes X, Y, Z, E. Report values if no axis codes given. 1093 | * M911 - Report stepper driver overtemperature pre-warn condition. 1094 | * M912 - Clear stepper driver overtemperature pre-warn condition flag. 1095 | * M122 S0/1 - Report driver parameters (Requires TMC_DEBUG) 1096 | */ 1097 | //#define MONITOR_DRIVER_STATUS 1098 | 1099 | #if ENABLED(MONITOR_DRIVER_STATUS) 1100 | #define CURRENT_STEP_DOWN 50 // [mA] 1101 | #define REPORT_CURRENT_CHANGE 1102 | #define STOP_ON_ERROR 1103 | #endif 1104 | 1105 | /** 1106 | * The driver will switch to spreadCycle when stepper speed is over HYBRID_THRESHOLD. 1107 | * This mode allows for faster movements at the expense of higher noise levels. 1108 | * STEALTHCHOP needs to be enabled. 1109 | * M913 X/Y/Z/E to live tune the setting 1110 | */ 1111 | //#define HYBRID_THRESHOLD 1112 | 1113 | #define X_HYBRID_THRESHOLD 100 // [mm/s] 1114 | #define X2_HYBRID_THRESHOLD 100 1115 | #define Y_HYBRID_THRESHOLD 100 1116 | #define Y2_HYBRID_THRESHOLD 100 1117 | #define Z_HYBRID_THRESHOLD 3 1118 | #define Z2_HYBRID_THRESHOLD 3 1119 | #define E0_HYBRID_THRESHOLD 30 1120 | #define E1_HYBRID_THRESHOLD 30 1121 | #define E2_HYBRID_THRESHOLD 30 1122 | #define E3_HYBRID_THRESHOLD 30 1123 | #define E4_HYBRID_THRESHOLD 30 1124 | 1125 | /** 1126 | * Use stallGuard2 to sense an obstacle and trigger an endstop. 1127 | * You need to place a wire from the driver's DIAG1 pin to the X/Y endstop pin. 1128 | * X and Y homing will always be done in spreadCycle mode. 1129 | * 1130 | * X/Y_HOMING_SENSITIVITY is used for tuning the trigger sensitivity. 1131 | * Higher values make the system LESS sensitive. 1132 | * Lower value make the system MORE sensitive. 1133 | * Too low values can lead to false positives, while too high values will collide the axis without triggering. 1134 | * It is advised to set X/Y_HOME_BUMP_MM to 0. 1135 | * M914 X/Y to live tune the setting 1136 | */ 1137 | //#define SENSORLESS_HOMING // TMC2130 only 1138 | 1139 | #if ENABLED(SENSORLESS_HOMING) 1140 | #define X_HOMING_SENSITIVITY 8 1141 | #define Y_HOMING_SENSITIVITY 8 1142 | #endif 1143 | 1144 | /** 1145 | * Enable M122 debugging command for TMC stepper drivers. 1146 | * M122 S0/1 will enable continous reporting. 1147 | */ 1148 | //#define TMC_DEBUG 1149 | 1150 | /** 1151 | * You can set your own advanced settings by filling in predefined functions. 1152 | * A list of available functions can be found on the library github page 1153 | * https://github.com/teemuatlut/TMC2130Stepper 1154 | * https://github.com/teemuatlut/TMC2208Stepper 1155 | * 1156 | * Example: 1157 | * #define TMC_ADV() { \ 1158 | * stepperX.diag0_temp_prewarn(1); \ 1159 | * stepperY.interpolate(0); \ 1160 | * } 1161 | */ 1162 | #define TMC_ADV() { } 1163 | 1164 | #endif // TMC2130 || TMC2208 1165 | 1166 | // @section L6470 1167 | 1168 | /** 1169 | * Enable this section if you have L6470 motor drivers. 1170 | * You need to import the L6470 library into the Arduino IDE for this. 1171 | * (https://github.com/ameyer/Arduino-L6470) 1172 | */ 1173 | 1174 | //#define HAVE_L6470DRIVER 1175 | #if ENABLED(HAVE_L6470DRIVER) 1176 | 1177 | //#define X_IS_L6470 1178 | //#define X2_IS_L6470 1179 | //#define Y_IS_L6470 1180 | //#define Y2_IS_L6470 1181 | //#define Z_IS_L6470 1182 | //#define Z2_IS_L6470 1183 | //#define E0_IS_L6470 1184 | //#define E1_IS_L6470 1185 | //#define E2_IS_L6470 1186 | //#define E3_IS_L6470 1187 | //#define E4_IS_L6470 1188 | 1189 | #define X_MICROSTEPS 16 // number of microsteps 1190 | #define X_OVERCURRENT 2000 // maxc current in mA. If the current goes over this value, the driver will switch off 1191 | #define X_STALLCURRENT 1500 // current in mA where the driver will detect a stall 1192 | 1193 | #define X2_MICROSTEPS 16 1194 | #define X2_OVERCURRENT 2000 1195 | #define X2_STALLCURRENT 1500 1196 | 1197 | #define Y_MICROSTEPS 16 1198 | #define Y_OVERCURRENT 2000 1199 | #define Y_STALLCURRENT 1500 1200 | 1201 | #define Y2_MICROSTEPS 16 1202 | #define Y2_OVERCURRENT 2000 1203 | #define Y2_STALLCURRENT 1500 1204 | 1205 | #define Z_MICROSTEPS 16 1206 | #define Z_OVERCURRENT 2000 1207 | #define Z_STALLCURRENT 1500 1208 | 1209 | #define Z2_MICROSTEPS 16 1210 | #define Z2_OVERCURRENT 2000 1211 | #define Z2_STALLCURRENT 1500 1212 | 1213 | #define E0_MICROSTEPS 16 1214 | #define E0_OVERCURRENT 2000 1215 | #define E0_STALLCURRENT 1500 1216 | 1217 | #define E1_MICROSTEPS 16 1218 | #define E1_OVERCURRENT 2000 1219 | #define E1_STALLCURRENT 1500 1220 | 1221 | #define E2_MICROSTEPS 16 1222 | #define E2_OVERCURRENT 2000 1223 | #define E2_STALLCURRENT 1500 1224 | 1225 | #define E3_MICROSTEPS 16 1226 | #define E3_OVERCURRENT 2000 1227 | #define E3_STALLCURRENT 1500 1228 | 1229 | #define E4_MICROSTEPS 16 1230 | #define E4_OVERCURRENT 2000 1231 | #define E4_STALLCURRENT 1500 1232 | 1233 | #endif 1234 | 1235 | /** 1236 | * TWI/I2C BUS 1237 | * 1238 | * This feature is an EXPERIMENTAL feature so it shall not be used on production 1239 | * machines. Enabling this will allow you to send and receive I2C data from slave 1240 | * devices on the bus. 1241 | * 1242 | * ; Example #1 1243 | * ; This macro send the string "Marlin" to the slave device with address 0x63 (99) 1244 | * ; It uses multiple M260 commands with one B arg 1245 | * M260 A99 ; Target slave address 1246 | * M260 B77 ; M 1247 | * M260 B97 ; a 1248 | * M260 B114 ; r 1249 | * M260 B108 ; l 1250 | * M260 B105 ; i 1251 | * M260 B110 ; n 1252 | * M260 S1 ; Send the current buffer 1253 | * 1254 | * ; Example #2 1255 | * ; Request 6 bytes from slave device with address 0x63 (99) 1256 | * M261 A99 B5 1257 | * 1258 | * ; Example #3 1259 | * ; Example serial output of a M261 request 1260 | * echo:i2c-reply: from:99 bytes:5 data:hello 1261 | */ 1262 | 1263 | // @section i2cbus 1264 | 1265 | //#define EXPERIMENTAL_I2CBUS 1266 | #define I2C_SLAVE_ADDRESS 0 // Set a value from 8 to 127 to act as a slave 1267 | 1268 | // @section extras 1269 | 1270 | /** 1271 | * Spindle & Laser control 1272 | * 1273 | * Add the M3, M4, and M5 commands to turn the spindle/laser on and off, and 1274 | * to set spindle speed, spindle direction, and laser power. 1275 | * 1276 | * SuperPid is a router/spindle speed controller used in the CNC milling community. 1277 | * Marlin can be used to turn the spindle on and off. It can also be used to set 1278 | * the spindle speed from 5,000 to 30,000 RPM. 1279 | * 1280 | * You'll need to select a pin for the ON/OFF function and optionally choose a 0-5V 1281 | * hardware PWM pin for the speed control and a pin for the rotation direction. 1282 | * 1283 | * See http://marlinfw.org/docs/configuration/laser_spindle.html for more config details. 1284 | */ 1285 | //#define SPINDLE_LASER_ENABLE 1286 | #if ENABLED(SPINDLE_LASER_ENABLE) 1287 | 1288 | #define SPINDLE_LASER_ENABLE_INVERT false // set to "true" if the on/off function is reversed 1289 | #define SPINDLE_LASER_PWM true // set to true if your controller supports setting the speed/power 1290 | #define SPINDLE_LASER_PWM_INVERT true // set to "true" if the speed/power goes up when you want it to go slower 1291 | #define SPINDLE_LASER_POWERUP_DELAY 5000 // delay in milliseconds to allow the spindle/laser to come up to speed/power 1292 | #define SPINDLE_LASER_POWERDOWN_DELAY 5000 // delay in milliseconds to allow the spindle to stop 1293 | #define SPINDLE_DIR_CHANGE true // set to true if your spindle controller supports changing spindle direction 1294 | #define SPINDLE_INVERT_DIR false 1295 | #define SPINDLE_STOP_ON_DIR_CHANGE true // set to true if Marlin should stop the spindle before changing rotation direction 1296 | 1297 | /** 1298 | * The M3 & M4 commands use the following equation to convert PWM duty cycle to speed/power 1299 | * 1300 | * SPEED/POWER = PWM duty cycle * SPEED_POWER_SLOPE + SPEED_POWER_INTERCEPT 1301 | * where PWM duty cycle varies from 0 to 255 1302 | * 1303 | * set the following for your controller (ALL MUST BE SET) 1304 | */ 1305 | 1306 | #define SPEED_POWER_SLOPE 118.4 1307 | #define SPEED_POWER_INTERCEPT 0 1308 | #define SPEED_POWER_MIN 5000 1309 | #define SPEED_POWER_MAX 30000 // SuperPID router controller 0 - 30,000 RPM 1310 | 1311 | //#define SPEED_POWER_SLOPE 0.3922 1312 | //#define SPEED_POWER_INTERCEPT 0 1313 | //#define SPEED_POWER_MIN 10 1314 | //#define SPEED_POWER_MAX 100 // 0-100% 1315 | #endif 1316 | 1317 | /** 1318 | * Filament Width Sensor 1319 | * 1320 | * Measures the filament width in real-time and adjusts 1321 | * flow rate to compensate for any irregularities. 1322 | * 1323 | * Also allows the measured filament diameter to set the 1324 | * extrusion rate, so the slicer only has to specify the 1325 | * volume. 1326 | * 1327 | * Only a single extruder is supported at this time. 1328 | * 1329 | * 34 RAMPS_14 : Analog input 5 on the AUX2 connector 1330 | * 81 PRINTRBOARD : Analog input 2 on the Exp1 connector (version B,C,D,E) 1331 | * 301 RAMBO : Analog input 3 1332 | * 1333 | * Note: May require analog pins to be defined for other boards. 1334 | */ 1335 | //#define FILAMENT_WIDTH_SENSOR 1336 | 1337 | #if ENABLED(FILAMENT_WIDTH_SENSOR) 1338 | #define FILAMENT_SENSOR_EXTRUDER_NUM 0 // Index of the extruder that has the filament sensor. :[0,1,2,3,4] 1339 | #define MEASUREMENT_DELAY_CM 14 // (cm) The distance from the filament sensor to the melting chamber 1340 | 1341 | #define FILWIDTH_ERROR_MARGIN 1.0 // (mm) If a measurement differs too much from nominal width ignore it 1342 | #define MAX_MEASUREMENT_DELAY 20 // (bytes) Buffer size for stored measurements (1 byte per cm). Must be larger than MEASUREMENT_DELAY_CM. 1343 | 1344 | #define DEFAULT_MEASURED_FILAMENT_DIA DEFAULT_NOMINAL_FILAMENT_DIA // Set measured to nominal initially 1345 | 1346 | // Display filament width on the LCD status line. Status messages will expire after 5 seconds. 1347 | //#define FILAMENT_LCD_DISPLAY 1348 | #endif 1349 | 1350 | /** 1351 | * CNC Coordinate Systems 1352 | * 1353 | * Enables G53 and G54-G59.3 commands to select coordinate systems 1354 | * and G92.1 to reset the workspace to native machine space. 1355 | */ 1356 | //#define CNC_COORDINATE_SYSTEMS 1357 | 1358 | /** 1359 | * M43 - display pin status, watch pins for changes, watch endstops & toggle LED, Z servo probe test, toggle pins 1360 | */ 1361 | //#define PINS_DEBUGGING 1362 | 1363 | /** 1364 | * Auto-report temperatures with M155 S 1365 | */ 1366 | #define AUTO_REPORT_TEMPERATURES 1367 | 1368 | /** 1369 | * Include capabilities in M115 output 1370 | */ 1371 | #define EXTENDED_CAPABILITIES_REPORT 1372 | 1373 | /** 1374 | * Disable all Volumetric extrusion options 1375 | */ 1376 | //#define NO_VOLUMETRICS 1377 | 1378 | #if DISABLED(NO_VOLUMETRICS) 1379 | /** 1380 | * Volumetric extrusion default state 1381 | * Activate to make volumetric extrusion the default method, 1382 | * with DEFAULT_NOMINAL_FILAMENT_DIA as the default diameter. 1383 | * 1384 | * M200 D0 to disable, M200 Dn to set a new diameter. 1385 | */ 1386 | //#define VOLUMETRIC_DEFAULT_ON 1387 | #endif 1388 | 1389 | /** 1390 | * Enable this option for a leaner build of Marlin that removes all 1391 | * workspace offsets, simplifying coordinate transformations, leveling, etc. 1392 | * 1393 | * - M206 and M428 are disabled. 1394 | * - G92 will revert to its behavior from Marlin 1.0. 1395 | */ 1396 | //#define NO_WORKSPACE_OFFSETS 1397 | 1398 | /** 1399 | * Set the number of proportional font spaces required to fill up a typical character space. 1400 | * This can help to better align the output of commands like `G29 O` Mesh Output. 1401 | * 1402 | * For clients that use a fixed-width font (like OctoPrint), leave this set to 1.0. 1403 | * Otherwise, adjust according to your client and font. 1404 | */ 1405 | #define PROPORTIONAL_FONT_RATIO 1.0 1406 | 1407 | /** 1408 | * Spend 28 bytes of SRAM to optimize the GCode parser 1409 | */ 1410 | #define FASTER_GCODE_PARSER 1411 | 1412 | /** 1413 | * User-defined menu items that execute custom GCode 1414 | */ 1415 | //#define CUSTOM_USER_MENUS 1416 | #if ENABLED(CUSTOM_USER_MENUS) 1417 | #define USER_SCRIPT_DONE "M117 User Script Done" 1418 | #define USER_SCRIPT_AUDIBLE_FEEDBACK 1419 | //#define USER_SCRIPT_RETURN // Return to status screen after a script 1420 | 1421 | #define USER_DESC_1 "Home & UBL Info" 1422 | #define USER_GCODE_1 "G28\nG29 W" 1423 | 1424 | #define USER_DESC_2 "Preheat for PLA" 1425 | #define USER_GCODE_2 "M140 S" STRINGIFY(PREHEAT_1_TEMP_BED) "\nM104 S" STRINGIFY(PREHEAT_1_TEMP_HOTEND) 1426 | 1427 | #define USER_DESC_3 "Preheat for ABS" 1428 | #define USER_GCODE_3 "M140 S" STRINGIFY(PREHEAT_2_TEMP_BED) "\nM104 S" STRINGIFY(PREHEAT_2_TEMP_HOTEND) 1429 | 1430 | #define USER_DESC_4 "Heat Bed/Home/Level" 1431 | #define USER_GCODE_4 "M140 S" STRINGIFY(PREHEAT_2_TEMP_BED) "\nG28\nG29" 1432 | 1433 | #define USER_DESC_5 "Home & Info" 1434 | #define USER_GCODE_5 "G28\nM503" 1435 | #endif 1436 | 1437 | /** 1438 | * Specify an action command to send to the host when the printer is killed. 1439 | * Will be sent in the form '//action:ACTION_ON_KILL', e.g. '//action:poweroff'. 1440 | * The host must be configured to handle the action command. 1441 | */ 1442 | //#define ACTION_ON_KILL "poweroff" 1443 | 1444 | /** 1445 | * Specify an action command to send to the host on pause and resume. 1446 | * Will be sent in the form '//action:ACTION_ON_PAUSE', e.g. '//action:pause'. 1447 | * The host must be configured to handle the action command. 1448 | */ 1449 | //#define ACTION_ON_PAUSE "pause" 1450 | //#define ACTION_ON_RESUME "resume" 1451 | 1452 | //=========================================================================== 1453 | //====================== I2C Position Encoder Settings ====================== 1454 | //=========================================================================== 1455 | 1456 | /** 1457 | * I2C position encoders for closed loop control. 1458 | * Developed by Chris Barr at Aus3D. 1459 | * 1460 | * Wiki: http://wiki.aus3d.com.au/Magnetic_Encoder 1461 | * Github: https://github.com/Aus3D/MagneticEncoder 1462 | * 1463 | * Supplier: http://aus3d.com.au/magnetic-encoder-module 1464 | * Alternative Supplier: http://reliabuild3d.com/ 1465 | * 1466 | * Reilabuild encoders have been modified to improve reliability. 1467 | */ 1468 | 1469 | //#define I2C_POSITION_ENCODERS 1470 | #if ENABLED(I2C_POSITION_ENCODERS) 1471 | 1472 | #define I2CPE_ENCODER_CNT 1 // The number of encoders installed; max of 5 1473 | // encoders supported currently. 1474 | 1475 | #define I2CPE_ENC_1_ADDR I2CPE_PRESET_ADDR_X // I2C address of the encoder. 30-200. 1476 | #define I2CPE_ENC_1_AXIS X_AXIS // Axis the encoder module is installed on. _AXIS. 1477 | #define I2CPE_ENC_1_TYPE I2CPE_ENC_TYPE_LINEAR // Type of encoder: I2CPE_ENC_TYPE_LINEAR -or- 1478 | // I2CPE_ENC_TYPE_ROTARY. 1479 | #define I2CPE_ENC_1_TICKS_UNIT 2048 // 1024 for magnetic strips with 2mm poles; 2048 for 1480 | // 1mm poles. For linear encoders this is ticks / mm, 1481 | // for rotary encoders this is ticks / revolution. 1482 | //#define I2CPE_ENC_1_TICKS_REV (16 * 200) // Only needed for rotary encoders; number of stepper 1483 | // steps per full revolution (motor steps/rev * microstepping) 1484 | //#define I2CPE_ENC_1_INVERT // Invert the direction of axis travel. 1485 | #define I2CPE_ENC_1_EC_METHOD I2CPE_ECM_NONE // Type of error error correction. 1486 | #define I2CPE_ENC_1_EC_THRESH 0.10 // Threshold size for error (in mm) above which the 1487 | // printer will attempt to correct the error; errors 1488 | // smaller than this are ignored to minimize effects of 1489 | // measurement noise / latency (filter). 1490 | 1491 | #define I2CPE_ENC_2_ADDR I2CPE_PRESET_ADDR_Y // Same as above, but for encoder 2. 1492 | #define I2CPE_ENC_2_AXIS Y_AXIS 1493 | #define I2CPE_ENC_2_TYPE I2CPE_ENC_TYPE_LINEAR 1494 | #define I2CPE_ENC_2_TICKS_UNIT 2048 1495 | //#define I2CPE_ENC_2_TICKS_REV (16 * 200) 1496 | //#define I2CPE_ENC_2_INVERT 1497 | #define I2CPE_ENC_2_EC_METHOD I2CPE_ECM_NONE 1498 | #define I2CPE_ENC_2_EC_THRESH 0.10 1499 | 1500 | #define I2CPE_ENC_3_ADDR I2CPE_PRESET_ADDR_Z // Encoder 3. Add additional configuration options 1501 | #define I2CPE_ENC_3_AXIS Z_AXIS // as above, or use defaults below. 1502 | 1503 | #define I2CPE_ENC_4_ADDR I2CPE_PRESET_ADDR_E // Encoder 4. 1504 | #define I2CPE_ENC_4_AXIS E_AXIS 1505 | 1506 | #define I2CPE_ENC_5_ADDR 34 // Encoder 5. 1507 | #define I2CPE_ENC_5_AXIS E_AXIS 1508 | 1509 | // Default settings for encoders which are enabled, but without settings configured above. 1510 | #define I2CPE_DEF_TYPE I2CPE_ENC_TYPE_LINEAR 1511 | #define I2CPE_DEF_ENC_TICKS_UNIT 2048 1512 | #define I2CPE_DEF_TICKS_REV (16 * 200) 1513 | #define I2CPE_DEF_EC_METHOD I2CPE_ECM_NONE 1514 | #define I2CPE_DEF_EC_THRESH 0.1 1515 | 1516 | //#define I2CPE_ERR_THRESH_ABORT 100.0 // Threshold size for error (in mm) error on any given 1517 | // axis after which the printer will abort. Comment out to 1518 | // disable abort behaviour. 1519 | 1520 | #define I2CPE_TIME_TRUSTED 10000 // After an encoder fault, there must be no further fault 1521 | // for this amount of time (in ms) before the encoder 1522 | // is trusted again. 1523 | 1524 | /** 1525 | * Position is checked every time a new command is executed from the buffer but during long moves, 1526 | * this setting determines the minimum update time between checks. A value of 100 works well with 1527 | * error rolling average when attempting to correct only for skips and not for vibration. 1528 | */ 1529 | #define I2CPE_MIN_UPD_TIME_MS 100 // Minimum time in miliseconds between encoder checks. 1530 | 1531 | // Use a rolling average to identify persistant errors that indicate skips, as opposed to vibration and noise. 1532 | #define I2CPE_ERR_ROLLING_AVERAGE 1533 | 1534 | #endif // I2C_POSITION_ENCODERS 1535 | 1536 | /** 1537 | * MAX7219 Debug Matrix 1538 | * 1539 | * Add support for a low-cost 8x8 LED Matrix based on the Max7219 chip, which can be used as a status 1540 | * display. Requires 3 signal wires. Some useful debug options are included to demonstrate its usage. 1541 | * 1542 | * Fully assembled MAX7219 boards can be found on the internet for under $2(US). 1543 | * For example, see https://www.ebay.com/sch/i.html?_nkw=332349290049 1544 | */ 1545 | //#define MAX7219_DEBUG 1546 | #if ENABLED(MAX7219_DEBUG) 1547 | #define MAX7219_CLK_PIN 64 // 77 on Re-ARM // Configuration of the 3 pins to control the display 1548 | #define MAX7219_DIN_PIN 57 // 78 on Re-ARM 1549 | #define MAX7219_LOAD_PIN 44 // 79 on Re-ARM 1550 | 1551 | /** 1552 | * Sample debug features 1553 | * If you add more debug displays, be careful to avoid conflicts! 1554 | */ 1555 | #define MAX7219_DEBUG_PRINTER_ALIVE // Blink corner LED of 8x8 matrix to show that the firmware is functioning 1556 | #define MAX7219_DEBUG_STEPPER_HEAD 3 // Show the stepper queue head position on this and the next LED matrix row 1557 | #define MAX7219_DEBUG_STEPPER_TAIL 5 // Show the stepper queue tail position on this and the next LED matrix row 1558 | 1559 | #define MAX7219_DEBUG_STEPPER_QUEUE 0 // Show the current stepper queue depth on this and the next LED matrix row 1560 | // If you experience stuttering, reboots, etc. this option can reveal how 1561 | // tweaks made to the configuration are affecting the printer in real-time. 1562 | #endif 1563 | 1564 | /** 1565 | * NanoDLP Sync support 1566 | * 1567 | * Add support for Synchronized Z moves when using with NanoDLP. G0/G1 axis moves will output "Z_move_comp" 1568 | * string to enable synchronization with DLP projector exposure. This change will allow to use 1569 | * [[WaitForDoneMessage]] instead of populating your gcode with M400 commands 1570 | */ 1571 | //#define NANODLP_Z_SYNC 1572 | #if ENABLED(NANODLP_Z_SYNC) 1573 | //#define NANODLP_ALL_AXIS // Enables "Z_move_comp" output on any axis move. 1574 | // Default behaviour is limited to Z axis only. 1575 | #endif 1576 | 1577 | #endif // CONFIGURATION_ADV_H 1578 | -------------------------------------------------------------------------------- /marlin/Configuration.h: -------------------------------------------------------------------------------- 1 | /** 2 | * Marlin 3D Printer Firmware 3 | * Copyright (C) 2016 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] 4 | * 5 | * Based on Sprinter and grbl. 6 | * Copyright (C) 2011 Camiel Gubbels / Erik van der Zalm 7 | * 8 | * This program is free software: you can redistribute it and/or modify 9 | * it under the terms of the GNU General Public License as published by 10 | * the Free Software Foundation, either version 3 of the License, or 11 | * (at your option) any later version. 12 | * 13 | * This program is distributed in the hope that it will be useful, 14 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 15 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 16 | * GNU General Public License for more details. 17 | * 18 | * You should have received a copy of the GNU General Public License 19 | * along with this program. If not, see . 20 | * 21 | */ 22 | 23 | /** 24 | * Configuration.h 25 | * 26 | * Basic settings such as: 27 | * 28 | * - Type of electronics 29 | * - Type of temperature sensor 30 | * - Printer geometry 31 | * - Endstop configuration 32 | * - LCD controller 33 | * - Extra features 34 | * 35 | * Advanced settings can be found in Configuration_adv.h 36 | * 37 | */ 38 | #ifndef CONFIGURATION_H 39 | #define CONFIGURATION_H 40 | #define CONFIGURATION_H_VERSION 020000 41 | 42 | //=========================================================================== 43 | //============================= Getting Started ============================= 44 | //=========================================================================== 45 | 46 | /** 47 | * Here are some standard links for getting your machine calibrated: 48 | * 49 | * http://reprap.org/wiki/Calibration 50 | * http://youtu.be/wAL9d7FgInk 51 | * http://calculator.josefprusa.cz 52 | * http://reprap.org/wiki/Triffid_Hunter%27s_Calibration_Guide 53 | * http://www.thingiverse.com/thing:5573 54 | * https://sites.google.com/site/repraplogphase/calibration-of-your-reprap 55 | * http://www.thingiverse.com/thing:298812 56 | */ 57 | 58 | //=========================================================================== 59 | //============================= DELTA Printer =============================== 60 | //=========================================================================== 61 | // For a Delta printer start with one of the configuration files in the 62 | // config/examples/delta directory and customize for your machine. 63 | // 64 | 65 | //=========================================================================== 66 | //============================= SCARA Printer =============================== 67 | //=========================================================================== 68 | // For a SCARA printer start with the configuration files in 69 | // config/examples/SCARA and customize for your machine. 70 | // 71 | 72 | // @section info 73 | 74 | // User-specified version info of this build to display in [Pronterface, etc] terminal window during 75 | // startup. Implementation of an idea by Prof Braino to inform user that any changes made to this 76 | // build by the user have been successfully uploaded into firmware. 77 | #define STRING_CONFIG_H_AUTHOR "Tomasz 'Zen' Napierala" // Who made the changes. 78 | #define SHOW_BOOTSCREEN 79 | #define STRING_SPLASH_LINE1 HyperCube 3D printer // will be shown during bootup in line 1 80 | #define STRING_SPLASH_LINE2 WEBSITE_URL // will be shown during bootup in line 2 81 | 82 | // 83 | // *** VENDORS PLEASE READ ***************************************************** 84 | // 85 | // Marlin now allow you to have a vendor boot image to be displayed on machine 86 | // start. When SHOW_CUSTOM_BOOTSCREEN is defined Marlin will first show your 87 | // custom boot image and then the default Marlin boot image is shown. 88 | // 89 | // We suggest for you to take advantage of this new feature and keep the Marlin 90 | // boot image unmodified. For an example have a look at the bq Hephestos 2 91 | // example configuration folder. 92 | // 93 | //#define SHOW_CUSTOM_BOOTSCREEN 94 | 95 | // @section machine 96 | 97 | /** 98 | * Select the serial port on the board to use for communication with the host. 99 | * This allows the connection of wireless adapters (for instance) to non-default port pins. 100 | * Note: The first serial port (-1 or 0) will always be used by the Arduino bootloader. 101 | * 102 | * :[-1, 0, 1, 2, 3, 4, 5, 6, 7] 103 | */ 104 | #define SERIAL_PORT 1 105 | 106 | /** 107 | * This setting determines the communication speed of the printer. 108 | * 109 | * 250000 works in most cases, but you might try a lower speed if 110 | * you commonly experience drop-outs during host printing. 111 | * You may try up to 1000000 to speed up SD file transfer. 112 | * 113 | * :[2400, 9600, 19200, 38400, 57600, 115200, 250000, 500000, 1000000] 114 | */ 115 | #define BAUDRATE 250000 116 | 117 | // Enable the Bluetooth serial interface on AT90USB devices 118 | //#define BLUETOOTH 119 | 120 | // The following define selects which electronics board you have. 121 | // Please choose the name from boards.h that matches your setup 122 | #ifndef MOTHERBOARD 123 | #define MOTHERBOARD BOARD_MKS_SBASE 124 | #endif 125 | 126 | // Optional custom name for your RepStrap or other custom machine 127 | // Displayed in the LCD "Ready" message 128 | //#define CUSTOM_MACHINE_NAME "zHEVO" 129 | 130 | // Define this to set a unique identifier for this printer, (Used by some programs to differentiate between machines) 131 | // You can use an online service to generate a random UUID. (eg http://www.uuidgenerator.net/version4) 132 | //#define MACHINE_UUID "00000000-0000-0000-0000-000000000000" 133 | 134 | // @section extruder 135 | 136 | // This defines the number of extruders 137 | // :[1, 2, 3, 4, 5] 138 | #define EXTRUDERS 1 139 | 140 | // Generally expected filament diameter (1.75, 2.85, 3.0, ...). Used for Volumetric, Filament Width Sensor, etc. 141 | #define DEFAULT_NOMINAL_FILAMENT_DIA 1.75 142 | 143 | // For Cyclops or any "multi-extruder" that shares a single nozzle. 144 | //#define SINGLENOZZLE 145 | 146 | /** 147 | * Průša MK2 Single Nozzle Multi-Material Multiplexer, and variants. 148 | * 149 | * This device allows one stepper driver on a control board to drive 150 | * two to eight stepper motors, one at a time, in a manner suitable 151 | * for extruders. 152 | * 153 | * This option only allows the multiplexer to switch on tool-change. 154 | * Additional options to configure custom E moves are pending. 155 | */ 156 | //#define MK2_MULTIPLEXER 157 | #if ENABLED(MK2_MULTIPLEXER) 158 | // Override the default DIO selector pins here, if needed. 159 | // Some pins files may provide defaults for these pins. 160 | //#define E_MUX0_PIN 40 // Always Required 161 | //#define E_MUX1_PIN 42 // Needed for 3 to 8 steppers 162 | //#define E_MUX2_PIN 44 // Needed for 5 to 8 steppers 163 | #endif 164 | 165 | // A dual extruder that uses a single stepper motor 166 | //#define SWITCHING_EXTRUDER 167 | #if ENABLED(SWITCHING_EXTRUDER) 168 | #define SWITCHING_EXTRUDER_SERVO_NR 0 169 | #define SWITCHING_EXTRUDER_SERVO_ANGLES { 0, 90 } // Angles for E0, E1[, E2, E3] 170 | #if EXTRUDERS > 3 171 | #define SWITCHING_EXTRUDER_E23_SERVO_NR 1 172 | #endif 173 | #endif 174 | 175 | // A dual-nozzle that uses a servomotor to raise/lower one of the nozzles 176 | //#define SWITCHING_NOZZLE 177 | #if ENABLED(SWITCHING_NOZZLE) 178 | #define SWITCHING_NOZZLE_SERVO_NR 0 179 | #define SWITCHING_NOZZLE_SERVO_ANGLES { 0, 90 } // Angles for E0, E1 180 | //#define HOTEND_OFFSET_Z { 0.0, 0.0 } 181 | #endif 182 | 183 | /** 184 | * Two separate X-carriages with extruders that connect to a moving part 185 | * via a magnetic docking mechanism. Requires SOL1_PIN and SOL2_PIN. 186 | */ 187 | //#define PARKING_EXTRUDER 188 | #if ENABLED(PARKING_EXTRUDER) 189 | #define PARKING_EXTRUDER_SOLENOIDS_INVERT // If enabled, the solenoid is NOT magnetized with applied voltage 190 | #define PARKING_EXTRUDER_SOLENOIDS_PINS_ACTIVE LOW // LOW or HIGH pin signal energizes the coil 191 | #define PARKING_EXTRUDER_SOLENOIDS_DELAY 250 // Delay (ms) for magnetic field. No delay if 0 or not defined. 192 | #define PARKING_EXTRUDER_PARKING_X { -78, 184 } // X positions for parking the extruders 193 | #define PARKING_EXTRUDER_GRAB_DISTANCE 1 // mm to move beyond the parking point to grab the extruder 194 | #define PARKING_EXTRUDER_SECURITY_RAISE 5 // Z-raise before parking 195 | #define HOTEND_OFFSET_Z { 0.0, 1.3 } // Z-offsets of the two hotends. The first must be 0. 196 | #endif 197 | 198 | /** 199 | * "Mixing Extruder" 200 | * - Adds a new code, M165, to set the current mix factors. 201 | * - Extends the stepping routines to move multiple steppers in proportion to the mix. 202 | * - Optional support for Repetier Firmware M163, M164, and virtual extruder. 203 | * - This implementation supports only a single extruder. 204 | * - Enable DIRECT_MIXING_IN_G1 for Pia Taubert's reference implementation 205 | */ 206 | //#define MIXING_EXTRUDER 207 | #if ENABLED(MIXING_EXTRUDER) 208 | #define MIXING_STEPPERS 2 // Number of steppers in your mixing extruder 209 | #define MIXING_VIRTUAL_TOOLS 16 // Use the Virtual Tool method with M163 and M164 210 | //#define DIRECT_MIXING_IN_G1 // Allow ABCDHI mix factors in G1 movement commands 211 | #endif 212 | 213 | // Offset of the extruders (uncomment if using more than one and relying on firmware to position when changing). 214 | // The offset has to be X=0, Y=0 for the extruder 0 hotend (default extruder). 215 | // For the other hotends it is their distance from the extruder 0 hotend. 216 | //#define HOTEND_OFFSET_X {0.0, 20.00} // (in mm) for each extruder, offset of the hotend on the X axis 217 | //#define HOTEND_OFFSET_Y {0.0, 5.00} // (in mm) for each extruder, offset of the hotend on the Y axis 218 | 219 | // @section machine 220 | 221 | /** 222 | * Select your power supply here. Use 0 if you haven't connected the PS_ON_PIN 223 | * 224 | * 0 = No Power Switch 225 | * 1 = ATX 226 | * 2 = X-Box 360 203Watts (the blue wire connected to PS_ON and the red wire to VCC) 227 | * 228 | * :{ 0:'No power switch', 1:'ATX', 2:'X-Box 360' } 229 | */ 230 | #define POWER_SUPPLY 1 231 | 232 | #if POWER_SUPPLY > 0 233 | // Enable this option to leave the PSU off at startup. 234 | // Power to steppers and heaters will need to be turned on with M80. 235 | #define PS_DEFAULT_OFF 236 | #endif 237 | 238 | // @section temperature 239 | 240 | //=========================================================================== 241 | //============================= Thermal Settings ============================ 242 | //=========================================================================== 243 | 244 | /** 245 | * --NORMAL IS 4.7kohm PULLUP!-- 1kohm pullup can be used on hotend sensor, using correct resistor and table 246 | * 247 | * Temperature sensors available: 248 | * 249 | * -3 : thermocouple with MAX31855 (only for sensor 0) 250 | * -2 : thermocouple with MAX6675 (only for sensor 0) 251 | * -1 : thermocouple with AD595 252 | * 0 : not used 253 | * 1 : 100k thermistor - best choice for EPCOS 100k (4.7k pullup) 254 | * 2 : 200k thermistor - ATC Semitec 204GT-2 (4.7k pullup) 255 | * 3 : Mendel-parts thermistor (4.7k pullup) 256 | * 4 : 10k thermistor !! do not use it for a hotend. It gives bad resolution at high temp. !! 257 | * 5 : 100K thermistor - ATC Semitec 104GT-2 (Used in ParCan & J-Head) (4.7k pullup) 258 | * 6 : 100k EPCOS - Not as accurate as table 1 (created using a fluke thermocouple) (4.7k pullup) 259 | * 7 : 100k Honeywell thermistor 135-104LAG-J01 (4.7k pullup) 260 | * 71 : 100k Honeywell thermistor 135-104LAF-J01 (4.7k pullup) 261 | * 8 : 100k 0603 SMD Vishay NTCS0603E3104FXT (4.7k pullup) 262 | * 9 : 100k GE Sensing AL03006-58.2K-97-G1 (4.7k pullup) 263 | * 10 : 100k RS thermistor 198-961 (4.7k pullup) 264 | * 11 : 100k beta 3950 1% thermistor (4.7k pullup) 265 | * 12 : 100k 0603 SMD Vishay NTCS0603E3104FXT (4.7k pullup) (calibrated for Makibox hot bed) 266 | * 13 : 100k Hisens 3950 1% up to 300°C for hotend "Simple ONE " & "Hotend "All In ONE" 267 | * 20 : the PT100 circuit found in the Ultimainboard V2.x 268 | * 60 : 100k Maker's Tool Works Kapton Bed Thermistor beta=3950 269 | * 66 : 4.7M High Temperature thermistor from Dyze Design 270 | * 70 : the 100K thermistor found in the bq Hephestos 2 271 | * 75 : 100k Generic Silicon Heat Pad with NTC 100K MGB18-104F39050L32 thermistor 272 | * 273 | * 1k ohm pullup tables - This is atypical, and requires changing out the 4.7k pullup for 1k. 274 | * (but gives greater accuracy and more stable PID) 275 | * 51 : 100k thermistor - EPCOS (1k pullup) 276 | * 52 : 200k thermistor - ATC Semitec 204GT-2 (1k pullup) 277 | * 55 : 100k thermistor - ATC Semitec 104GT-2 (Used in ParCan & J-Head) (1k pullup) 278 | * 279 | * 1047 : Pt1000 with 4k7 pullup 280 | * 1010 : Pt1000 with 1k pullup (non standard) 281 | * 147 : Pt100 with 4k7 pullup 282 | * 110 : Pt100 with 1k pullup (non standard) 283 | * 284 | * Use these for Testing or Development purposes. NEVER for production machine. 285 | * 998 : Dummy Table that ALWAYS reads 25°C or the temperature defined below. 286 | * 999 : Dummy Table that ALWAYS reads 100°C or the temperature defined below. 287 | * 288 | * :{ '0': "Not used", '1':"100k / 4.7k - EPCOS", '2':"200k / 4.7k - ATC Semitec 204GT-2", '3':"Mendel-parts / 4.7k", '4':"10k !! do not use for a hotend. Bad resolution at high temp. !!", '5':"100K / 4.7k - ATC Semitec 104GT-2 (Used in ParCan & J-Head)", '6':"100k / 4.7k EPCOS - Not as accurate as Table 1", '7':"100k / 4.7k Honeywell 135-104LAG-J01", '8':"100k / 4.7k 0603 SMD Vishay NTCS0603E3104FXT", '9':"100k / 4.7k GE Sensing AL03006-58.2K-97-G1", '10':"100k / 4.7k RS 198-961", '11':"100k / 4.7k beta 3950 1%", '12':"100k / 4.7k 0603 SMD Vishay NTCS0603E3104FXT (calibrated for Makibox hot bed)", '13':"100k Hisens 3950 1% up to 300°C for hotend 'Simple ONE ' & hotend 'All In ONE'", '20':"PT100 (Ultimainboard V2.x)", '51':"100k / 1k - EPCOS", '52':"200k / 1k - ATC Semitec 204GT-2", '55':"100k / 1k - ATC Semitec 104GT-2 (Used in ParCan & J-Head)", '60':"100k Maker's Tool Works Kapton Bed Thermistor beta=3950", '66':"Dyze Design 4.7M High Temperature thermistor", '70':"the 100K thermistor found in the bq Hephestos 2", '71':"100k / 4.7k Honeywell 135-104LAF-J01", '147':"Pt100 / 4.7k", '1047':"Pt1000 / 4.7k", '110':"Pt100 / 1k (non-standard)", '1010':"Pt1000 / 1k (non standard)", '-3':"Thermocouple + MAX31855 (only for sensor 0)", '-2':"Thermocouple + MAX6675 (only for sensor 0)", '-1':"Thermocouple + AD595",'998':"Dummy 1", '999':"Dummy 2" } 289 | */ 290 | #define TEMP_SENSOR_0 5 291 | #define TEMP_SENSOR_1 0 292 | #define TEMP_SENSOR_2 0 293 | #define TEMP_SENSOR_3 0 294 | #define TEMP_SENSOR_4 0 295 | #define TEMP_SENSOR_BED 5 296 | 297 | // Dummy thermistor constant temperature readings, for use with 998 and 999 298 | #define DUMMY_THERMISTOR_998_VALUE 25 299 | #define DUMMY_THERMISTOR_999_VALUE 100 300 | 301 | // Use temp sensor 1 as a redundant sensor with sensor 0. If the readings 302 | // from the two sensors differ too much the print will be aborted. 303 | //#define TEMP_SENSOR_1_AS_REDUNDANT 304 | #define MAX_REDUNDANT_TEMP_SENSOR_DIFF 10 305 | 306 | // Extruder temperature must be close to target for this long before M109 returns success 307 | #define TEMP_RESIDENCY_TIME 10 // (seconds) 308 | #define TEMP_HYSTERESIS 3 // (degC) range of +/- temperatures considered "close" to the target one 309 | #define TEMP_WINDOW 1 // (degC) Window around target to start the residency timer x degC early. 310 | 311 | // Bed temperature must be close to target for this long before M190 returns success 312 | #define TEMP_BED_RESIDENCY_TIME 10 // (seconds) 313 | #define TEMP_BED_HYSTERESIS 3 // (degC) range of +/- temperatures considered "close" to the target one 314 | #define TEMP_BED_WINDOW 1 // (degC) Window around target to start the residency timer x degC early. 315 | 316 | // The minimal temperature defines the temperature below which the heater will not be enabled It is used 317 | // to check that the wiring to the thermistor is not broken. 318 | // Otherwise this would lead to the heater being powered on all the time. 319 | #define HEATER_0_MINTEMP 5 320 | #define HEATER_1_MINTEMP 5 321 | #define HEATER_2_MINTEMP 5 322 | #define HEATER_3_MINTEMP 5 323 | #define HEATER_4_MINTEMP 5 324 | #define BED_MINTEMP 5 325 | 326 | // When temperature exceeds max temp, your heater will be switched off. 327 | // This feature exists to protect your hotend from overheating accidentally, but *NOT* from thermistor short/failure! 328 | // You should use MINTEMP for thermistor short/failure protection. 329 | #define HEATER_0_MAXTEMP 275 330 | #define HEATER_1_MAXTEMP 275 331 | #define HEATER_2_MAXTEMP 275 332 | #define HEATER_3_MAXTEMP 275 333 | #define HEATER_4_MAXTEMP 275 334 | #define BED_MAXTEMP 110 335 | 336 | //=========================================================================== 337 | //============================= PID Settings ================================ 338 | //=========================================================================== 339 | // PID Tuning Guide here: http://reprap.org/wiki/PID_Tuning 340 | 341 | // Comment the following line to disable PID and enable bang-bang. 342 | #define PIDTEMP 343 | #define BANG_MAX 255 // Limits current to nozzle while in bang-bang mode; 255=full current 344 | #define PID_MAX BANG_MAX // Limits current to nozzle while PID is active (see PID_FUNCTIONAL_RANGE below); 255=full current 345 | #define PID_K1 0.95 // Smoothing factor within any PID loop 346 | #if ENABLED(PIDTEMP) 347 | //#define PID_AUTOTUNE_MENU // Add PID Autotune to the LCD "Temperature" menu to run M303 and apply the result. 348 | //#define PID_DEBUG // Sends debug data to the serial port. 349 | //#define PID_OPENLOOP 1 // Puts PID in open loop. M104/M140 sets the output power from 0 to PID_MAX 350 | //#define SLOW_PWM_HEATERS // PWM with very low frequency (roughly 0.125Hz=8s) and minimum state time of approximately 1s useful for heaters driven by a relay 351 | //#define PID_PARAMS_PER_HOTEND // Uses separate PID parameters for each extruder (useful for mismatched extruders) 352 | // Set/get with gcode: M301 E[extruder number, 0-2] 353 | #define PID_FUNCTIONAL_RANGE 10 // If the temperature difference between the target temperature and the actual temperature 354 | // is more than PID_FUNCTIONAL_RANGE then the PID will be shut off and the heater will be set to min/max. 355 | 356 | // If you are using a pre-configured hotend then you can use one of the value sets by uncommenting it 357 | 358 | // Ultimaker 359 | #define DEFAULT_Kp 40.2 360 | #define DEFAULT_Ki 3.878 361 | #define DEFAULT_Kd 104 362 | 363 | // MakerGear 364 | //#define DEFAULT_Kp 7.0 365 | //#define DEFAULT_Ki 0.1 366 | //#define DEFAULT_Kd 12 367 | 368 | // Mendel Parts V9 on 12V 369 | //#define DEFAULT_Kp 63.0 370 | //#define DEFAULT_Ki 2.25 371 | //#define DEFAULT_Kd 440 372 | 373 | #endif // PIDTEMP 374 | 375 | //=========================================================================== 376 | //============================= PID > Bed Temperature Control =============== 377 | //=========================================================================== 378 | // Select PID or bang-bang with PIDTEMPBED. If bang-bang, BED_LIMIT_SWITCHING will enable hysteresis 379 | // 380 | // Uncomment this to enable PID on the bed. It uses the same frequency PWM as the extruder. 381 | // If your PID_dT is the default, and correct for your hardware/configuration, that means 7.689Hz, 382 | // which is fine for driving a square wave into a resistive load and does not significantly impact you FET heating. 383 | // This also works fine on a Fotek SSR-10DA Solid State Relay into a 250W heater. 384 | // If your configuration is significantly different than this and you don't understand the issues involved, you probably 385 | // shouldn't use bed PID until someone else verifies your hardware works. 386 | // If this is enabled, find your own PID constants below. 387 | #define PIDTEMPBED 388 | 389 | //#define BED_LIMIT_SWITCHING 390 | 391 | // This sets the max power delivered to the bed, and replaces the HEATER_BED_DUTY_CYCLE_DIVIDER option. 392 | // all forms of bed control obey this (PID, bang-bang, bang-bang with hysteresis) 393 | // setting this to anything other than 255 enables a form of PWM to the bed just like HEATER_BED_DUTY_CYCLE_DIVIDER did, 394 | // so you shouldn't use it unless you are OK with PWM on your bed. (see the comment on enabling PIDTEMPBED) 395 | #define MAX_BED_POWER 255 // limits duty cycle to bed; 255=full current 396 | 397 | #if ENABLED(PIDTEMPBED) 398 | 399 | //#define PID_BED_DEBUG // Sends debug data to the serial port. 400 | 401 | //120V 250W silicone heater into 4mm borosilicate (MendelMax 1.5+) 402 | //from FOPDT model - kp=.39 Tp=405 Tdead=66, Tc set to 79.2, aggressive factor of .15 (vs .1, 1, 10) 403 | #define DEFAULT_bedKp 98.3 404 | #define DEFAULT_bedKi 2.795 405 | #define DEFAULT_bedKd 863 406 | 407 | //120V 250W silicone heater into 4mm borosilicate (MendelMax 1.5+) 408 | //from pidautotune 409 | //#define DEFAULT_bedKp 97.1 410 | //#define DEFAULT_bedKi 1.41 411 | //#define DEFAULT_bedKd 1675.16 412 | 413 | // FIND YOUR OWN: "M303 E-1 C8 S90" to run autotune on the bed at 90 degreesC for 8 cycles. 414 | #endif // PIDTEMPBED 415 | 416 | // @section extruder 417 | 418 | // This option prevents extrusion if the temperature is below EXTRUDE_MINTEMP. 419 | // It also enables the M302 command to set the minimum extrusion temperature 420 | // or to allow moving the extruder regardless of the hotend temperature. 421 | // *** IT IS HIGHLY RECOMMENDED TO LEAVE THIS OPTION ENABLED! *** 422 | #define PREVENT_COLD_EXTRUSION 423 | #define EXTRUDE_MINTEMP 170 424 | 425 | // This option prevents a single extrusion longer than EXTRUDE_MAXLENGTH. 426 | // Note that for Bowden Extruders a too-small value here may prevent loading. 427 | //#define PREVENT_LENGTHY_EXTRUDE 428 | #define EXTRUDE_MAXLENGTH 200 429 | 430 | //=========================================================================== 431 | //======================== Thermal Runaway Protection ======================= 432 | //=========================================================================== 433 | 434 | /** 435 | * Thermal Protection provides additional protection to your printer from damage 436 | * and fire. Marlin always includes safe min and max temperature ranges which 437 | * protect against a broken or disconnected thermistor wire. 438 | * 439 | * The issue: If a thermistor falls out, it will report the much lower 440 | * temperature of the air in the room, and the the firmware will keep 441 | * the heater on. 442 | * 443 | * If you get "Thermal Runaway" or "Heating failed" errors the 444 | * details can be tuned in Configuration_adv.h 445 | */ 446 | 447 | #define THERMAL_PROTECTION_HOTENDS // Enable thermal protection for all extruders 448 | #define THERMAL_PROTECTION_BED // Enable thermal protection for the heated bed 449 | 450 | //=========================================================================== 451 | //============================= Mechanical Settings ========================= 452 | //=========================================================================== 453 | 454 | // @section machine 455 | 456 | // Uncomment one of these options to enable CoreXY, CoreXZ, or CoreYZ kinematics 457 | // either in the usual order or reversed 458 | #define COREXY 459 | //#define COREXZ 460 | //#define COREYZ 461 | //#define COREYX 462 | //#define COREZX 463 | //#define COREZY 464 | 465 | //=========================================================================== 466 | //============================== Endstop Settings =========================== 467 | //=========================================================================== 468 | 469 | // @section homing 470 | 471 | // Specify here all the endstop connectors that are connected to any endstop or probe. 472 | // Almost all printers will be using one per axis. Probes will use one or more of the 473 | // extra connectors. Leave undefined any used for non-endstop and non-probe purposes. 474 | #define USE_XMIN_PLUG 475 | #define USE_YMIN_PLUG 476 | #define USE_ZMIN_PLUG 477 | #define USE_XMAX_PLUG 478 | #define USE_YMAX_PLUG 479 | //#define USE_ZMAX_PLUG 480 | 481 | // coarse Endstop Settings 482 | #define ENDSTOPPULLUPS // Comment this out (using // at the start of the line) to disable the endstop pullup resistors 483 | 484 | #if DISABLED(ENDSTOPPULLUPS) 485 | // fine endstop settings: Individual pullups. will be ignored if ENDSTOPPULLUPS is defined 486 | //#define ENDSTOPPULLUP_XMAX 487 | //#define ENDSTOPPULLUP_YMAX 488 | //#define ENDSTOPPULLUP_ZMAX 489 | //#define ENDSTOPPULLUP_XMIN 490 | //#define ENDSTOPPULLUP_YMIN 491 | //#define ENDSTOPPULLUP_ZMIN 492 | //#define ENDSTOPPULLUP_ZMIN_PROBE 493 | #endif 494 | 495 | // Mechanical endstop with COM to ground and NC to Signal uses "false" here (most common setup). 496 | #define X_MIN_ENDSTOP_INVERTING false // set to true to invert the logic of the endstop. 497 | #define Y_MIN_ENDSTOP_INVERTING false // set to true to invert the logic of the endstop. 498 | #define Z_MIN_ENDSTOP_INVERTING true // set to true to invert the logic of the endstop. 499 | #define X_MAX_ENDSTOP_INVERTING false // set to true to invert the logic of the endstop. 500 | #define Y_MAX_ENDSTOP_INVERTING false // set to true to invert the logic of the endstop. 501 | #define Z_MAX_ENDSTOP_INVERTING false // set to true to invert the logic of the endstop. 502 | #define Z_MIN_PROBE_ENDSTOP_INVERTING false // set to true to invert the logic of the probe. 503 | 504 | // Enable this feature if all enabled endstop pins are interrupt-capable. 505 | // This will remove the need to poll the interrupt pins, saving many CPU cycles. 506 | //#define ENDSTOP_INTERRUPTS_FEATURE 507 | 508 | //============================================================================= 509 | //============================== Movement Settings ============================ 510 | //============================================================================= 511 | // @section motion 512 | 513 | /** 514 | * Default Settings 515 | * 516 | * These settings can be reset by M502 517 | * 518 | * Note that if EEPROM is enabled, saved values will override these. 519 | */ 520 | 521 | /** 522 | * With this option each E stepper can have its own factors for the 523 | * following movement settings. If fewer factors are given than the 524 | * total number of extruders, the last value applies to the rest. 525 | */ 526 | //#define DISTINCT_E_FACTORS 527 | 528 | /** 529 | * Default Axis Steps Per Unit (steps/mm) 530 | * Override with M92 531 | * X, Y, Z, E0 [, E1[, E2[, E3[, E4]]]] 532 | */ 533 | #define DEFAULT_AXIS_STEPS_PER_UNIT { 160, 160, 800, 175 } 534 | 535 | /** 536 | * Default Max Feed Rate (mm/s) 537 | * Override with M203 538 | * X, Y, Z, E0 [, E1[, E2[, E3[, E4]]]] 539 | */ 540 | #define DEFAULT_MAX_FEEDRATE { 500, 500, 5, 25 } 541 | 542 | /** 543 | * Default Max Acceleration (change/s) change = mm/s 544 | * (Maximum start speed for accelerated moves) 545 | * Override with M201 546 | * X, Y, Z, E0 [, E1[, E2[, E3[, E4]]]] 547 | */ 548 | #define DEFAULT_MAX_ACCELERATION { 3000, 3000, 100, 10000 } 549 | 550 | /** 551 | * Default Acceleration (change/s) change = mm/s 552 | * Override with M204 553 | * 554 | * M204 P Acceleration 555 | * M204 R Retract Acceleration 556 | * M204 T Travel Acceleration 557 | */ 558 | #define DEFAULT_ACCELERATION 1500 // X, Y, Z and E acceleration for printing moves 559 | #define DEFAULT_RETRACT_ACCELERATION 10000 // E acceleration for retracts 560 | #define DEFAULT_TRAVEL_ACCELERATION 2000 // X, Y, Z acceleration for travel (non printing) moves 561 | 562 | /** 563 | * Default Jerk (mm/s) 564 | * Override with M205 X Y Z E 565 | * 566 | * "Jerk" specifies the minimum speed change that requires acceleration. 567 | * When changing speed and direction, if the difference is less than the 568 | * value set here, it may happen instantaneously. 569 | */ 570 | #define DEFAULT_XJERK 10.0 571 | #define DEFAULT_YJERK 10.0 572 | #define DEFAULT_ZJERK 0.3 573 | #define DEFAULT_EJERK 5.0 574 | 575 | //=========================================================================== 576 | //============================= Z Probe Options ============================= 577 | //=========================================================================== 578 | // @section probes 579 | 580 | // 581 | // See http://marlinfw.org/docs/configuration/probes.html 582 | // 583 | 584 | /** 585 | * Z_MIN_PROBE_USES_Z_MIN_ENDSTOP_PIN 586 | * 587 | * Enable this option for a probe connected to the Z Min endstop pin. 588 | */ 589 | //#define Z_MIN_PROBE_USES_Z_MIN_ENDSTOP_PIN 590 | 591 | /** 592 | * Z_MIN_PROBE_ENDSTOP 593 | * 594 | * Enable this option for a probe connected to any pin except Z-Min. 595 | * (By default Marlin assumes the Z-Max endstop pin.) 596 | * To use a custom Z Probe pin, set Z_MIN_PROBE_PIN below. 597 | * 598 | * - The simplest option is to use a free endstop connector. 599 | * - Use 5V for powered (usually inductive) sensors. 600 | * 601 | * - RAMPS 1.3/1.4 boards may use the 5V, GND, and Aux4->D32 pin: 602 | * - For simple switches connect... 603 | * - normally-closed switches to GND and D32. 604 | * - normally-open switches to 5V and D32. 605 | * 606 | * WARNING: Setting the wrong pin may have unexpected and potentially 607 | * disastrous consequences. Use with caution and do your homework. 608 | * 609 | */ 610 | //#define Z_MIN_PROBE_ENDSTOP 611 | 612 | /** 613 | * Probe Type 614 | * 615 | * Allen Key Probes, Servo Probes, Z-Sled Probes, FIX_MOUNTED_PROBE, etc. 616 | * Activate one of these to use Auto Bed Leveling below. 617 | */ 618 | 619 | /** 620 | * The "Manual Probe" provides a means to do "Auto" Bed Leveling without a probe. 621 | * Use G29 repeatedly, adjusting the Z height at each point with movement commands 622 | * or (with LCD_BED_LEVELING) the LCD controller. 623 | */ 624 | //#define PROBE_MANUALLY 625 | 626 | /** 627 | * A Fix-Mounted Probe either doesn't deploy or needs manual deployment. 628 | * (e.g., an inductive probe or a nozzle-based probe-switch.) 629 | */ 630 | //#define FIX_MOUNTED_PROBE 631 | 632 | /** 633 | * Z Servo Probe, such as an endstop switch on a rotating arm. 634 | */ 635 | //#define Z_ENDSTOP_SERVO_NR 0 // Defaults to SERVO 0 connector. 636 | //#define Z_SERVO_ANGLES {70,0} // Z Servo Deploy and Stow angles 637 | 638 | /** 639 | * The BLTouch probe uses a Hall effect sensor and emulates a servo. 640 | */ 641 | //#define BLTOUCH 642 | #if ENABLED(BLTOUCH) 643 | //#define BLTOUCH_DELAY 375 // (ms) Enable and increase if needed 644 | #endif 645 | 646 | /** 647 | * Enable one or more of the following if probing seems unreliable. 648 | * Heaters and/or fans can be disabled during probing to minimize electrical 649 | * noise. A delay can also be added to allow noise and vibration to settle. 650 | * These options are most useful for the BLTouch probe, but may also improve 651 | * readings with inductive probes and piezo sensors. 652 | */ 653 | //#define PROBING_HEATERS_OFF // Turn heaters off when probing 654 | //#define PROBING_FANS_OFF // Turn fans off when probing 655 | //#define DELAY_BEFORE_PROBING 200 // (ms) To prevent vibrations from triggering piezo sensors 656 | 657 | // A probe that is deployed and stowed with a solenoid pin (SOL1_PIN) 658 | //#define SOLENOID_PROBE 659 | 660 | // A sled-mounted probe like those designed by Charles Bell. 661 | //#define Z_PROBE_SLED 662 | //#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. 663 | 664 | // 665 | // For Z_PROBE_ALLEN_KEY see the Delta example configurations. 666 | // 667 | 668 | /** 669 | * Z Probe to nozzle (X,Y) offset, relative to (0, 0). 670 | * X and Y offsets must be integers. 671 | * 672 | * In the following example the X and Y offsets are both positive: 673 | * #define X_PROBE_OFFSET_FROM_EXTRUDER 10 674 | * #define Y_PROBE_OFFSET_FROM_EXTRUDER 10 675 | * 676 | * +-- BACK ---+ 677 | * | | 678 | * L | (+) P | R <-- probe (20,20) 679 | * E | | I 680 | * F | (-) N (+) | G <-- nozzle (10,10) 681 | * T | | H 682 | * | (-) | T 683 | * | | 684 | * O-- FRONT --+ 685 | * (0,0) 686 | */ 687 | #define X_PROBE_OFFSET_FROM_EXTRUDER 23 // X offset: -left +right [of the nozzle] 688 | #define Y_PROBE_OFFSET_FROM_EXTRUDER 0 // Y offset: -front +behind [the nozzle] 689 | #define Z_PROBE_OFFSET_FROM_EXTRUDER 0 // Z offset: -below +above [the nozzle] 690 | 691 | // X and Y axis travel speed (mm/m) between probes 692 | #define XY_PROBE_SPEED 8000 693 | 694 | // Speed for the first approach when double-probing (MULTIPLE_PROBING == 2) 695 | #define Z_PROBE_SPEED_FAST HOMING_FEEDRATE_Z 696 | 697 | // Speed for the "accurate" probe of each point 698 | #define Z_PROBE_SPEED_SLOW (Z_PROBE_SPEED_FAST / 2) 699 | 700 | // The number of probes to perform at each point. 701 | // Set to 2 for a fast/slow probe, using the second probe result. 702 | // Set to 3 or more for slow probes, averaging the results. 703 | //#define MULTIPLE_PROBING 2 704 | 705 | /** 706 | * Z probes require clearance when deploying, stowing, and moving between 707 | * probe points to avoid hitting the bed and other hardware. 708 | * Servo-mounted probes require extra space for the arm to rotate. 709 | * Inductive probes need space to keep from triggering early. 710 | * 711 | * Use these settings to specify the distance (mm) to raise the probe (or 712 | * lower the bed). The values set here apply over and above any (negative) 713 | * probe Z Offset set with Z_PROBE_OFFSET_FROM_EXTRUDER, M851, or the LCD. 714 | * Only integer values >= 1 are valid here. 715 | * 716 | * Example: `M851 Z-5` with a CLEARANCE of 4 => 9mm from bed to nozzle. 717 | * But: `M851 Z+1` with a CLEARANCE of 2 => 2mm from bed to nozzle. 718 | */ 719 | #define Z_CLEARANCE_DEPLOY_PROBE 10 // Z Clearance for Deploy/Stow 720 | #define Z_CLEARANCE_BETWEEN_PROBES 5 // Z Clearance between probe points 721 | 722 | // For M851 give a range for adjusting the Z probe offset 723 | #define Z_PROBE_OFFSET_RANGE_MIN -20 724 | #define Z_PROBE_OFFSET_RANGE_MAX 20 725 | 726 | // Enable the M48 repeatability test to test probe accuracy 727 | //#define Z_MIN_PROBE_REPEATABILITY_TEST 728 | 729 | // For Inverting Stepper Enable Pins (Active Low) use 0, Non Inverting (Active High) use 1 730 | // :{ 0:'Low', 1:'High' } 731 | #define X_ENABLE_ON 0 732 | #define Y_ENABLE_ON 0 733 | #define Z_ENABLE_ON 0 734 | #define E_ENABLE_ON 0 // For all extruders 735 | 736 | // Disables axis stepper immediately when it's not being used. 737 | // WARNING: When motors turn off there is a chance of losing position accuracy! 738 | #define DISABLE_X false 739 | #define DISABLE_Y false 740 | #define DISABLE_Z false 741 | // Warn on display about possibly reduced accuracy 742 | //#define DISABLE_REDUCED_ACCURACY_WARNING 743 | 744 | // @section extruder 745 | 746 | #define DISABLE_E false // For all extruders 747 | #define DISABLE_INACTIVE_EXTRUDER true // Keep only the active extruder enabled. 748 | 749 | // @section machine 750 | 751 | // Invert the stepper direction. Change (or reverse the motor connector) if an axis goes the wrong way. 752 | #define INVERT_X_DIR false 753 | #define INVERT_Y_DIR false 754 | #define INVERT_Z_DIR true 755 | 756 | // Enable this option for Toshiba stepper drivers 757 | //#define CONFIG_STEPPERS_TOSHIBA 758 | 759 | // @section extruder 760 | 761 | // For direct drive extruder v9 set to true, for geared extruder set to false. 762 | #define INVERT_E0_DIR true 763 | #define INVERT_E1_DIR false 764 | #define INVERT_E2_DIR false 765 | #define INVERT_E3_DIR false 766 | #define INVERT_E4_DIR false 767 | 768 | // @section homing 769 | 770 | //#define NO_MOTION_BEFORE_HOMING // Inhibit movement until all axes have been homed 771 | 772 | //#define Z_HOMING_HEIGHT 4 // (in mm) Minimal z height before homing (G28) for Z clearance above the bed, clamps, ... 773 | // Be sure you have this distance over your Z_MAX_POS in case. 774 | 775 | // Direction of endstops when homing; 1=MAX, -1=MIN 776 | // :[-1,1] 777 | #define X_HOME_DIR -1 778 | #define Y_HOME_DIR -1 779 | #define Z_HOME_DIR -1 780 | 781 | // @section machine 782 | 783 | // The size of the print bed 784 | #define X_BED_SIZE 250 785 | #define Y_BED_SIZE 210 786 | 787 | // Travel limits (mm) after homing, corresponding to endstop positions. 788 | #define X_MIN_POS -21 789 | #define Y_MIN_POS -87 790 | #define Z_MIN_POS 0 791 | #define X_MAX_POS X_BED_SIZE 792 | #define Y_MAX_POS Y_BED_SIZE 793 | #define Z_MAX_POS 250 794 | 795 | /** 796 | * Software Endstops 797 | * 798 | * - Prevent moves outside the set machine bounds. 799 | * - Individual axes can be disabled, if desired. 800 | * - X and Y only apply to Cartesian robots. 801 | * - Use 'M211' to set software endstops on/off or report current state 802 | */ 803 | 804 | // Min software endstops curtail movement below minimum coordinate bounds 805 | //#define MIN_SOFTWARE_ENDSTOPS 806 | #if ENABLED(MIN_SOFTWARE_ENDSTOPS) 807 | #define MIN_SOFTWARE_ENDSTOP_X 808 | #define MIN_SOFTWARE_ENDSTOP_Y 809 | #define MIN_SOFTWARE_ENDSTOP_Z 810 | #endif 811 | 812 | // Max software endstops curtail movement above maximum coordinate bounds 813 | //#define MAX_SOFTWARE_ENDSTOPS 814 | #if ENABLED(MAX_SOFTWARE_ENDSTOPS) 815 | #define MAX_SOFTWARE_ENDSTOP_X 816 | #define MAX_SOFTWARE_ENDSTOP_Y 817 | #define MAX_SOFTWARE_ENDSTOP_Z 818 | #endif 819 | 820 | /** 821 | * Filament Runout Sensor 822 | * A mechanical or opto endstop is used to check for the presence of filament. 823 | * 824 | * RAMPS-based boards use SERVO3_PIN. 825 | * For other boards you may need to define FIL_RUNOUT_PIN. 826 | * By default the firmware assumes HIGH = has filament, LOW = ran out 827 | */ 828 | //#define FILAMENT_RUNOUT_SENSOR 829 | #if ENABLED(FILAMENT_RUNOUT_SENSOR) 830 | #define FIL_RUNOUT_INVERTING false // set to true to invert the logic of the sensor. 831 | #define ENDSTOPPULLUP_FIL_RUNOUT // Uncomment to use internal pullup for filament runout pins if the sensor is defined. 832 | #define FILAMENT_RUNOUT_SCRIPT "M600" 833 | #endif 834 | 835 | //=========================================================================== 836 | //=============================== Bed Leveling ============================== 837 | //=========================================================================== 838 | // @section calibrate 839 | 840 | /** 841 | * Choose one of the options below to enable G29 Bed Leveling. The parameters 842 | * and behavior of G29 will change depending on your selection. 843 | * 844 | * If using a Probe for Z Homing, enable Z_SAFE_HOMING also! 845 | * 846 | * - AUTO_BED_LEVELING_3POINT 847 | * Probe 3 arbitrary points on the bed (that aren't collinear) 848 | * You specify the XY coordinates of all 3 points. 849 | * The result is a single tilted plane. Best for a flat bed. 850 | * 851 | * - AUTO_BED_LEVELING_LINEAR 852 | * Probe several points in a grid. 853 | * You specify the rectangle and the density of sample points. 854 | * The result is a single tilted plane. Best for a flat bed. 855 | * 856 | * - AUTO_BED_LEVELING_BILINEAR 857 | * Probe several points in a grid. 858 | * You specify the rectangle and the density of sample points. 859 | * The result is a mesh, best for large or uneven beds. 860 | * 861 | * - AUTO_BED_LEVELING_UBL (Unified Bed Leveling) 862 | * A comprehensive bed leveling system combining the features and benefits 863 | * of other systems. UBL also includes integrated Mesh Generation, Mesh 864 | * Validation and Mesh Editing systems. 865 | * 866 | * - MESH_BED_LEVELING 867 | * Probe a grid manually 868 | * The result is a mesh, suitable for large or uneven beds. (See BILINEAR.) 869 | * For machines without a probe, Mesh Bed Leveling provides a method to perform 870 | * leveling in steps so you can manually adjust the Z height at each grid-point. 871 | * With an LCD controller the process is guided step-by-step. 872 | */ 873 | //#define AUTO_BED_LEVELING_3POINT 874 | //#define AUTO_BED_LEVELING_LINEAR 875 | //#define AUTO_BED_LEVELING_BILINEAR 876 | //#define AUTO_BED_LEVELING_UBL 877 | //#define MESH_BED_LEVELING 878 | 879 | /** 880 | * Enable detailed logging of G28, G29, M48, etc. 881 | * Turn on with the command 'M111 S32'. 882 | * NOTE: Requires a lot of PROGMEM! 883 | */ 884 | //#define DEBUG_LEVELING_FEATURE 885 | 886 | #if ENABLED(MESH_BED_LEVELING) || ENABLED(AUTO_BED_LEVELING_BILINEAR) || ENABLED(AUTO_BED_LEVELING_UBL) 887 | // Gradually reduce leveling correction until a set height is reached, 888 | // at which point movement will be level to the machine's XY plane. 889 | // The height can be set with M420 Z 890 | #define ENABLE_LEVELING_FADE_HEIGHT 891 | 892 | // For Cartesian machines, instead of dividing moves on mesh boundaries, 893 | // split up moves into short segments like a Delta. This follows the 894 | // contours of the bed more closely than edge-to-edge straight moves. 895 | #define SEGMENT_LEVELED_MOVES 896 | #define LEVELED_SEGMENT_LENGTH 5.0 // (mm) Length of all segments (except the last one) 897 | 898 | /** 899 | * Enable the G26 Mesh Validation Pattern tool. 900 | */ 901 | //#define G26_MESH_VALIDATION 902 | #if ENABLED(G26_MESH_VALIDATION) 903 | #define MESH_TEST_NOZZLE_SIZE 0.4 // (mm) Diameter of primary nozzle. 904 | #define MESH_TEST_LAYER_HEIGHT 0.2 // (mm) Default layer height for the G26 Mesh Validation Tool. 905 | #define MESH_TEST_HOTEND_TEMP 205.0 // (°C) Default nozzle temperature for the G26 Mesh Validation Tool. 906 | #define MESH_TEST_BED_TEMP 60.0 // (°C) Default bed temperature for the G26 Mesh Validation Tool. 907 | #endif 908 | 909 | #endif 910 | 911 | #if ENABLED(AUTO_BED_LEVELING_LINEAR) || ENABLED(AUTO_BED_LEVELING_BILINEAR) 912 | 913 | // Set the number of grid points per dimension. 914 | #define GRID_MAX_POINTS_X 3 915 | #define GRID_MAX_POINTS_Y GRID_MAX_POINTS_X 916 | 917 | // Set the boundaries for probing (where the probe can reach). 918 | #define LEFT_PROBE_BED_POSITION 32 919 | #define RIGHT_PROBE_BED_POSITION 170 920 | #define FRONT_PROBE_BED_POSITION 20 921 | #define BACK_PROBE_BED_POSITION 170 922 | 923 | // The Z probe minimum outer margin (to validate G29 parameters). 924 | #define MIN_PROBE_EDGE 10 925 | 926 | // Probe along the Y axis, advancing X after each column 927 | //#define PROBE_Y_FIRST 928 | 929 | #if ENABLED(AUTO_BED_LEVELING_BILINEAR) 930 | 931 | // Beyond the probed grid, continue the implied tilt? 932 | // Default is to maintain the height of the nearest edge. 933 | //#define EXTRAPOLATE_BEYOND_GRID 934 | 935 | // 936 | // Experimental Subdivision of the grid by Catmull-Rom method. 937 | // Synthesizes intermediate points to produce a more detailed mesh. 938 | // 939 | //#define ABL_BILINEAR_SUBDIVISION 940 | #if ENABLED(ABL_BILINEAR_SUBDIVISION) 941 | // Number of subdivisions between probe points 942 | #define BILINEAR_SUBDIVISIONS 3 943 | #endif 944 | 945 | #endif 946 | 947 | #elif ENABLED(AUTO_BED_LEVELING_3POINT) 948 | 949 | // 3 arbitrary points to probe. 950 | // A simple cross-product is used to estimate the plane of the bed. 951 | #define ABL_PROBE_PT_1_X 15 952 | #define ABL_PROBE_PT_1_Y 180 953 | #define ABL_PROBE_PT_2_X 15 954 | #define ABL_PROBE_PT_2_Y 20 955 | #define ABL_PROBE_PT_3_X 170 956 | #define ABL_PROBE_PT_3_Y 20 957 | 958 | #elif ENABLED(AUTO_BED_LEVELING_UBL) 959 | 960 | //=========================================================================== 961 | //========================= Unified Bed Leveling ============================ 962 | //=========================================================================== 963 | 964 | //#define MESH_EDIT_GFX_OVERLAY // Display a graphics overlay while editing the mesh 965 | 966 | #define MESH_INSET 1 // Mesh inset margin on print area 967 | #define GRID_MAX_POINTS_X 10 // Don't use more than 15 points per axis, implementation limited. 968 | #define GRID_MAX_POINTS_Y GRID_MAX_POINTS_X 969 | 970 | #define UBL_PROBE_PT_1_X 39 // Probing points for 3-Point leveling of the mesh 971 | #define UBL_PROBE_PT_1_Y 180 972 | #define UBL_PROBE_PT_2_X 39 973 | #define UBL_PROBE_PT_2_Y 20 974 | #define UBL_PROBE_PT_3_X 180 975 | #define UBL_PROBE_PT_3_Y 20 976 | 977 | #define UBL_MESH_EDIT_MOVES_Z // Sophisticated users prefer no movement of nozzle 978 | #define UBL_SAVE_ACTIVE_ON_M500 // Save the currently active mesh in the current slot on M500 979 | 980 | #elif ENABLED(MESH_BED_LEVELING) 981 | 982 | //=========================================================================== 983 | //=================================== Mesh ================================== 984 | //=========================================================================== 985 | 986 | #define MESH_INSET 10 // Mesh inset margin on print area 987 | #define GRID_MAX_POINTS_X 3 // Don't use more than 7 points per axis, implementation limited. 988 | #define GRID_MAX_POINTS_Y GRID_MAX_POINTS_X 989 | 990 | //#define MESH_G28_REST_ORIGIN // After homing all axes ('G28' or 'G28 XYZ') rest Z at Z_MIN_POS 991 | 992 | #endif // BED_LEVELING 993 | 994 | /** 995 | * Use the LCD controller for bed leveling 996 | * Requires MESH_BED_LEVELING or PROBE_MANUALLY 997 | */ 998 | //#define LCD_BED_LEVELING 999 | 1000 | #if ENABLED(LCD_BED_LEVELING) 1001 | #define MBL_Z_STEP 0.025 // Step size while manually probing Z axis. 1002 | #define LCD_PROBE_Z_RANGE 4 // Z Range centered on Z_MIN_POS for LCD Z adjustment 1003 | #endif 1004 | 1005 | // Add a menu item to move between bed corners for manual bed adjustment 1006 | //#define LEVEL_BED_CORNERS 1007 | 1008 | /** 1009 | * Commands to execute at the end of G29 probing. 1010 | * Useful to retract or move the Z probe out of the way. 1011 | */ 1012 | //#define Z_PROBE_END_SCRIPT "G1 Z10 F12000\nG1 X15 Y330\nG1 Z0.5\nG1 Z10" 1013 | 1014 | 1015 | // @section homing 1016 | 1017 | // The center of the bed is at (X=0, Y=0) 1018 | //#define BED_CENTER_AT_0_0 1019 | 1020 | // Manually set the home position. Leave these undefined for automatic settings. 1021 | // For DELTA this is the top-center of the Cartesian print volume. 1022 | //#define MANUAL_X_HOME_POS 0 1023 | //#define MANUAL_Y_HOME_POS 0 1024 | //#define MANUAL_Z_HOME_POS 0 1025 | 1026 | // Use "Z Safe Homing" to avoid homing with a Z probe outside the bed area. 1027 | // 1028 | // With this feature enabled: 1029 | // 1030 | // - Allow Z homing only after X and Y homing AND stepper drivers still enabled. 1031 | // - If stepper drivers time out, it will need X and Y homing again before Z homing. 1032 | // - Move the Z probe (or nozzle) to a defined XY point before Z Homing when homing all axes (G28). 1033 | // - Prevent Z homing when the Z probe is outside bed area. 1034 | // 1035 | //#define Z_SAFE_HOMING 1036 | 1037 | #if ENABLED(Z_SAFE_HOMING) 1038 | #define Z_SAFE_HOMING_X_POINT ((X_BED_SIZE) / 2) // X point for Z homing when homing all axes (G28). 1039 | #define Z_SAFE_HOMING_Y_POINT ((Y_BED_SIZE) / 2) // Y point for Z homing when homing all axes (G28). 1040 | #endif 1041 | 1042 | // Homing speeds (mm/m) 1043 | #define HOMING_FEEDRATE_XY (50*60) 1044 | #define HOMING_FEEDRATE_Z (4*60) 1045 | 1046 | // @section calibrate 1047 | 1048 | /** 1049 | * Bed Skew Compensation 1050 | * 1051 | * This feature corrects for misalignment in the XYZ axes. 1052 | * 1053 | * Take the following steps to get the bed skew in the XY plane: 1054 | * 1. Print a test square (e.g., https://www.thingiverse.com/thing:2563185) 1055 | * 2. For XY_DIAG_AC measure the diagonal A to C 1056 | * 3. For XY_DIAG_BD measure the diagonal B to D 1057 | * 4. For XY_SIDE_AD measure the edge A to D 1058 | * 1059 | * Marlin automatically computes skew factors from these measurements. 1060 | * Skew factors may also be computed and set manually: 1061 | * 1062 | * - Compute AB : SQRT(2*AC*AC+2*BD*BD-4*AD*AD)/2 1063 | * - XY_SKEW_FACTOR : TAN(PI/2-ACOS((AC*AC-AB*AB-AD*AD)/(2*AB*AD))) 1064 | * 1065 | * If desired, follow the same procedure for XZ and YZ. 1066 | * Use these diagrams for reference: 1067 | * 1068 | * Y Z Z 1069 | * ^ B-------C ^ B-------C ^ B-------C 1070 | * | / / | / / | / / 1071 | * | / / | / / | / / 1072 | * | A-------D | A-------D | A-------D 1073 | * +-------------->X +-------------->X +-------------->Y 1074 | * XY_SKEW_FACTOR XZ_SKEW_FACTOR YZ_SKEW_FACTOR 1075 | */ 1076 | //#define SKEW_CORRECTION 1077 | 1078 | #if ENABLED(SKEW_CORRECTION) 1079 | // Input all length measurements here: 1080 | #define XY_DIAG_AC 282.8427124746 1081 | #define XY_DIAG_BD 282.8427124746 1082 | #define XY_SIDE_AD 200 1083 | 1084 | // Or, set the default skew factors directly here 1085 | // to override the above measurements: 1086 | #define XY_SKEW_FACTOR 0.0 1087 | 1088 | //#define SKEW_CORRECTION_FOR_Z 1089 | #if ENABLED(SKEW_CORRECTION_FOR_Z) 1090 | #define XZ_DIAG_AC 282.8427124746 1091 | #define XZ_DIAG_BD 282.8427124746 1092 | #define YZ_DIAG_AC 282.8427124746 1093 | #define YZ_DIAG_BD 282.8427124746 1094 | #define YZ_SIDE_AD 200 1095 | #define XZ_SKEW_FACTOR 0.0 1096 | #define YZ_SKEW_FACTOR 0.0 1097 | #endif 1098 | 1099 | // Enable this option for M852 to set skew at runtime 1100 | //#define SKEW_CORRECTION_GCODE 1101 | #endif 1102 | 1103 | //============================================================================= 1104 | //============================= Additional Features =========================== 1105 | //============================================================================= 1106 | 1107 | // @section extras 1108 | 1109 | // 1110 | // EEPROM 1111 | // 1112 | // The microcontroller can store settings in the EEPROM, e.g. max velocity... 1113 | // M500 - stores parameters in EEPROM 1114 | // M501 - reads parameters from EEPROM (if you need reset them after you changed them temporarily). 1115 | // M502 - reverts to the default "factory settings". You still need to store them in EEPROM afterwards if you want to. 1116 | // 1117 | #define EEPROM_SETTINGS // Enable for M500 and M501 commands 1118 | //#define DISABLE_M503 // Saves ~2700 bytes of PROGMEM. Disable for release! 1119 | //#define EEPROM_CHITCHAT // Give feedback on EEPROM commands. Disable to save PROGMEM. 1120 | 1121 | // 1122 | // Host Keepalive 1123 | // 1124 | // When enabled Marlin will send a busy status message to the host 1125 | // every couple of seconds when it can't accept commands. 1126 | // 1127 | #define HOST_KEEPALIVE_FEATURE // Disable this if your host doesn't like keepalive messages 1128 | #define DEFAULT_KEEPALIVE_INTERVAL 2 // Number of seconds between "busy" messages. Set with M113. 1129 | #define BUSY_WHILE_HEATING // Some hosts require "busy" messages even during heating 1130 | 1131 | // 1132 | // M100 Free Memory Watcher 1133 | // 1134 | //#define M100_FREE_MEMORY_WATCHER // Add M100 (Free Memory Watcher) to debug memory usage 1135 | 1136 | // 1137 | // G20/G21 Inch mode support 1138 | // 1139 | //#define INCH_MODE_SUPPORT 1140 | 1141 | // 1142 | // M149 Set temperature units support 1143 | // 1144 | //#define TEMPERATURE_UNITS_SUPPORT 1145 | 1146 | // @section temperature 1147 | 1148 | // Preheat Constants 1149 | #define PREHEAT_1_TEMP_HOTEND 180 1150 | #define PREHEAT_1_TEMP_BED 70 1151 | #define PREHEAT_1_FAN_SPEED 255 // Value from 0 to 255 1152 | 1153 | #define PREHEAT_2_TEMP_HOTEND 235 1154 | #define PREHEAT_2_TEMP_BED 65 1155 | #define PREHEAT_2_FAN_SPEED 255 // Value from 0 to 255 1156 | 1157 | /** 1158 | * Nozzle Park 1159 | * 1160 | * Park the nozzle at the given XYZ position on idle or G27. 1161 | * 1162 | * The "P" parameter controls the action applied to the Z axis: 1163 | * 1164 | * P0 (Default) If Z is below park Z raise the nozzle. 1165 | * P1 Raise the nozzle always to Z-park height. 1166 | * P2 Raise the nozzle by Z-park amount, limited to Z_MAX_POS. 1167 | */ 1168 | //#define NOZZLE_PARK_FEATURE 1169 | 1170 | #if ENABLED(NOZZLE_PARK_FEATURE) 1171 | // Specify a park position as { X, Y, Z } 1172 | #define NOZZLE_PARK_POINT { (X_MIN_POS + 10), (Y_MAX_POS - 10), 20 } 1173 | #define NOZZLE_PARK_XY_FEEDRATE 100 // X and Y axes feedrate in mm/s (also used for delta printers Z axis) 1174 | #define NOZZLE_PARK_Z_FEEDRATE 5 // Z axis feedrate in mm/s (not used for delta printers) 1175 | #endif 1176 | 1177 | /** 1178 | * Clean Nozzle Feature -- EXPERIMENTAL 1179 | * 1180 | * Adds the G12 command to perform a nozzle cleaning process. 1181 | * 1182 | * Parameters: 1183 | * P Pattern 1184 | * S Strokes / Repetitions 1185 | * T Triangles (P1 only) 1186 | * 1187 | * Patterns: 1188 | * P0 Straight line (default). This process requires a sponge type material 1189 | * at a fixed bed location. "S" specifies strokes (i.e. back-forth motions) 1190 | * between the start / end points. 1191 | * 1192 | * P1 Zig-zag pattern between (X0, Y0) and (X1, Y1), "T" specifies the 1193 | * number of zig-zag triangles to do. "S" defines the number of strokes. 1194 | * Zig-zags are done in whichever is the narrower dimension. 1195 | * For example, "G12 P1 S1 T3" will execute: 1196 | * 1197 | * -- 1198 | * | (X0, Y1) | /\ /\ /\ | (X1, Y1) 1199 | * | | / \ / \ / \ | 1200 | * A | | / \ / \ / \ | 1201 | * | | / \ / \ / \ | 1202 | * | (X0, Y0) | / \/ \/ \ | (X1, Y0) 1203 | * -- +--------------------------------+ 1204 | * |________|_________|_________| 1205 | * T1 T2 T3 1206 | * 1207 | * P2 Circular pattern with middle at NOZZLE_CLEAN_CIRCLE_MIDDLE. 1208 | * "R" specifies the radius. "S" specifies the stroke count. 1209 | * Before starting, the nozzle moves to NOZZLE_CLEAN_START_POINT. 1210 | * 1211 | * Caveats: The ending Z should be the same as starting Z. 1212 | * Attention: EXPERIMENTAL. G-code arguments may change. 1213 | * 1214 | */ 1215 | //#define NOZZLE_CLEAN_FEATURE 1216 | 1217 | #if ENABLED(NOZZLE_CLEAN_FEATURE) 1218 | // Default number of pattern repetitions 1219 | #define NOZZLE_CLEAN_STROKES 12 1220 | 1221 | // Default number of triangles 1222 | #define NOZZLE_CLEAN_TRIANGLES 3 1223 | 1224 | // Specify positions as { X, Y, Z } 1225 | #define NOZZLE_CLEAN_START_POINT { 30, 30, (Z_MIN_POS + 1)} 1226 | #define NOZZLE_CLEAN_END_POINT {100, 60, (Z_MIN_POS + 1)} 1227 | 1228 | // Circular pattern radius 1229 | #define NOZZLE_CLEAN_CIRCLE_RADIUS 6.5 1230 | // Circular pattern circle fragments number 1231 | #define NOZZLE_CLEAN_CIRCLE_FN 10 1232 | // Middle point of circle 1233 | #define NOZZLE_CLEAN_CIRCLE_MIDDLE NOZZLE_CLEAN_START_POINT 1234 | 1235 | // Moves the nozzle to the initial position 1236 | #define NOZZLE_CLEAN_GOBACK 1237 | #endif 1238 | 1239 | /** 1240 | * Print Job Timer 1241 | * 1242 | * Automatically start and stop the print job timer on M104/M109/M190. 1243 | * 1244 | * M104 (hotend, no wait) - high temp = none, low temp = stop timer 1245 | * M109 (hotend, wait) - high temp = start timer, low temp = stop timer 1246 | * M190 (bed, wait) - high temp = start timer, low temp = none 1247 | * 1248 | * The timer can also be controlled with the following commands: 1249 | * 1250 | * M75 - Start the print job timer 1251 | * M76 - Pause the print job timer 1252 | * M77 - Stop the print job timer 1253 | */ 1254 | #define PRINTJOB_TIMER_AUTOSTART 1255 | 1256 | /** 1257 | * Print Counter 1258 | * 1259 | * Track statistical data such as: 1260 | * 1261 | * - Total print jobs 1262 | * - Total successful print jobs 1263 | * - Total failed print jobs 1264 | * - Total time printing 1265 | * 1266 | * View the current statistics with M78. 1267 | */ 1268 | #define PRINTCOUNTER 1269 | 1270 | //============================================================================= 1271 | //============================= LCD and SD support ============================ 1272 | //============================================================================= 1273 | 1274 | // @section lcd 1275 | 1276 | /** 1277 | * LCD LANGUAGE 1278 | * 1279 | * Select the language to display on the LCD. These languages are available: 1280 | * 1281 | * en, an, bg, ca, cn, cz, cz_utf8, de, el, el-gr, es, eu, fi, fr, fr_utf8, gl, 1282 | * hr, it, kana, kana_utf8, nl, pl, pt, pt_utf8, pt-br, pt-br_utf8, ru, sk_utf8, 1283 | * tr, uk, zh_CN, zh_TW, test 1284 | * 1285 | * :{ 'en':'English', 'an':'Aragonese', 'bg':'Bulgarian', 'ca':'Catalan', 'cn':'Chinese', 'cz':'Czech', 'cz_utf8':'Czech (UTF8)', 'de':'German', 'el':'Greek', 'el-gr':'Greek (Greece)', 'es':'Spanish', 'eu':'Basque-Euskera', 'fi':'Finnish', 'fr':'French', 'fr_utf8':'French (UTF8)', 'gl':'Galician', 'hr':'Croatian', 'it':'Italian', 'kana':'Japanese', 'kana_utf8':'Japanese (UTF8)', 'nl':'Dutch', 'pl':'Polish', 'pt':'Portuguese', 'pt-br':'Portuguese (Brazilian)', 'pt-br_utf8':'Portuguese (Brazilian UTF8)', 'pt_utf8':'Portuguese (UTF8)', 'ru':'Russian', 'sk_utf8':'Slovak (UTF8)', 'tr':'Turkish', 'uk':'Ukrainian', 'zh_CN':'Chinese (Simplified)', 'zh_TW':'Chinese (Taiwan)', test':'TEST' } 1286 | */ 1287 | #define LCD_LANGUAGE en 1288 | 1289 | /** 1290 | * LCD Character Set 1291 | * 1292 | * Note: This option is NOT applicable to Graphical Displays. 1293 | * 1294 | * All character-based LCDs provide ASCII plus one of these 1295 | * language extensions: 1296 | * 1297 | * - JAPANESE ... the most common 1298 | * - WESTERN ... with more accented characters 1299 | * - CYRILLIC ... for the Russian language 1300 | * 1301 | * To determine the language extension installed on your controller: 1302 | * 1303 | * - Compile and upload with LCD_LANGUAGE set to 'test' 1304 | * - Click the controller to view the LCD menu 1305 | * - The LCD will display Japanese, Western, or Cyrillic text 1306 | * 1307 | * See http://marlinfw.org/docs/development/lcd_language.html 1308 | * 1309 | * :['JAPANESE', 'WESTERN', 'CYRILLIC'] 1310 | */ 1311 | #define DISPLAY_CHARSET_HD44780 WESTERN 1312 | 1313 | /** 1314 | * LCD TYPE 1315 | * 1316 | * Enable ULTRA_LCD for a 16x2, 16x4, 20x2, or 20x4 character-based LCD. 1317 | * Enable DOGLCD for a 128x64 (ST7565R) Full Graphical Display. 1318 | * (These options will be enabled automatically for most displays.) 1319 | * 1320 | * IMPORTANT: The U8glib library is required for Full Graphic Display! 1321 | * https://github.com/olikraus/U8glib_Arduino 1322 | */ 1323 | //#define ULTRA_LCD // Character based 1324 | //#define DOGLCD // Full graphics display 1325 | 1326 | /** 1327 | * SD CARD 1328 | * 1329 | * SD Card support is disabled by default. If your controller has an SD slot, 1330 | * you must uncomment the following option or it won't work. 1331 | * 1332 | */ 1333 | //#define SDSUPPORT 1334 | 1335 | /** 1336 | * SD CARD: SPI SPEED 1337 | * 1338 | * Enable one of the following items for a slower SPI transfer speed. 1339 | * This may be required to resolve "volume init" errors or LCD issues. 1340 | */ 1341 | 1342 | //#define SPI_SPEED SPI_HALF_SPEED 1343 | //#define SPI_SPEED SPI_QUARTER_SPEED 1344 | //#define SPI_SPEED SPI_EIGHTH_SPEED 1345 | 1346 | /** 1347 | * SD CARD: ENABLE CRC 1348 | * 1349 | * Use CRC checks and retries on the SD communication. 1350 | */ 1351 | //#define SD_CHECK_AND_RETRY 1352 | 1353 | // 1354 | // ENCODER SETTINGS 1355 | // 1356 | // This option overrides the default number of encoder pulses needed to 1357 | // produce one step. Should be increased for high-resolution encoders. 1358 | // 1359 | //#define ENCODER_PULSES_PER_STEP 1 1360 | 1361 | // 1362 | // Use this option to override the number of step signals required to 1363 | // move between next/prev menu items. 1364 | // 1365 | //#define ENCODER_STEPS_PER_MENU_ITEM 5 1366 | 1367 | /** 1368 | * Encoder Direction Options 1369 | * 1370 | * Test your encoder's behavior first with both options disabled. 1371 | * 1372 | * Reversed Value Edit and Menu Nav? Enable REVERSE_ENCODER_DIRECTION. 1373 | * Reversed Menu Navigation only? Enable REVERSE_MENU_DIRECTION. 1374 | * Reversed Value Editing only? Enable BOTH options. 1375 | */ 1376 | 1377 | // 1378 | // This option reverses the encoder direction everywhere. 1379 | // 1380 | // Set this option if CLOCKWISE causes values to DECREASE 1381 | // 1382 | //#define REVERSE_ENCODER_DIRECTION 1383 | 1384 | // 1385 | // This option reverses the encoder direction for navigating LCD menus. 1386 | // 1387 | // If CLOCKWISE normally moves DOWN this makes it go UP. 1388 | // If CLOCKWISE normally moves UP this makes it go DOWN. 1389 | // 1390 | //#define REVERSE_MENU_DIRECTION 1391 | 1392 | // 1393 | // Individual Axis Homing 1394 | // 1395 | // Add individual axis homing items (Home X, Home Y, and Home Z) to the LCD menu. 1396 | // 1397 | //#define INDIVIDUAL_AXIS_HOMING_MENU 1398 | 1399 | // 1400 | // SPEAKER/BUZZER 1401 | // 1402 | // If you have a speaker that can produce tones, enable it here. 1403 | // By default Marlin assumes you have a buzzer with a fixed frequency. 1404 | // 1405 | //#define SPEAKER 1406 | 1407 | // 1408 | // The duration and frequency for the UI feedback sound. 1409 | // Set these to 0 to disable audio feedback in the LCD menus. 1410 | // 1411 | // Note: Test audio output with the G-Code: 1412 | // M300 S P 1413 | // 1414 | //#define LCD_FEEDBACK_FREQUENCY_DURATION_MS 2 1415 | //#define LCD_FEEDBACK_FREQUENCY_HZ 5000 1416 | 1417 | // 1418 | // CONTROLLER TYPE: Standard 1419 | // 1420 | // Marlin supports a wide variety of controllers. 1421 | // Enable one of the following options to specify your controller. 1422 | // 1423 | 1424 | // 1425 | // Original RADDS LCD Display+Encoder+SDCardReader 1426 | // http://doku.radds.org/dokumentation/lcd-display/ 1427 | // 1428 | //#define RADDS_DISPLAY 1429 | 1430 | // 1431 | // ULTIMAKER Controller. 1432 | // 1433 | //#define ULTIMAKERCONTROLLER 1434 | 1435 | // 1436 | // ULTIPANEL as seen on Thingiverse. 1437 | // 1438 | //#define ULTIPANEL 1439 | 1440 | 1441 | // 1442 | // PanelOne from T3P3 (via RAMPS 1.4 AUX2/AUX3) 1443 | // http://reprap.org/wiki/PanelOne 1444 | // 1445 | //#define PANEL_ONE 1446 | 1447 | // 1448 | // MaKr3d Makr-Panel with graphic controller and SD support. 1449 | // http://reprap.org/wiki/MaKr3d_MaKrPanel 1450 | // 1451 | //#define MAKRPANEL 1452 | 1453 | // 1454 | // ReprapWorld Graphical LCD 1455 | // https://reprapworld.com/?products_details&products_id/1218 1456 | // 1457 | //#define REPRAPWORLD_GRAPHICAL_LCD 1458 | 1459 | // 1460 | // Activate one of these if you have a Panucatt Devices 1461 | // Viki 2.0 or mini Viki with Graphic LCD 1462 | // http://panucatt.com 1463 | // 1464 | //#define VIKI2 1465 | //#define miniVIKI 1466 | 1467 | // 1468 | // Adafruit ST7565 Full Graphic Controller. 1469 | // https://github.com/eboston/Adafruit-ST7565-Full-Graphic-Controller/ 1470 | // 1471 | //#define ELB_FULL_GRAPHIC_CONTROLLER 1472 | 1473 | // 1474 | // RepRapDiscount Smart Controller. 1475 | // http://reprap.org/wiki/RepRapDiscount_Smart_Controller 1476 | // 1477 | // Note: Usually sold with a white PCB. 1478 | // 1479 | //#define REPRAP_DISCOUNT_SMART_CONTROLLER 1480 | 1481 | // 1482 | // GADGETS3D G3D LCD/SD Controller 1483 | // http://reprap.org/wiki/RAMPS_1.3/1.4_GADGETS3D_Shield_with_Panel 1484 | // 1485 | // Note: Usually sold with a blue PCB. 1486 | // 1487 | //#define G3D_PANEL 1488 | 1489 | // 1490 | // RepRapDiscount FULL GRAPHIC Smart Controller 1491 | // http://reprap.org/wiki/RepRapDiscount_Full_Graphic_Smart_Controller 1492 | // 1493 | //#define REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER 1494 | 1495 | // 1496 | // MakerLab Mini Panel with graphic 1497 | // controller and SD support - http://reprap.org/wiki/Mini_panel 1498 | // 1499 | //#define MINIPANEL 1500 | 1501 | // 1502 | // RepRapWorld REPRAPWORLD_KEYPAD v1.1 1503 | // http://reprapworld.com/?products_details&products_id=202&cPath=1591_1626 1504 | // 1505 | // REPRAPWORLD_KEYPAD_MOVE_STEP sets how much should the robot move when a key 1506 | // is pressed, a value of 10.0 means 10mm per click. 1507 | // 1508 | //#define REPRAPWORLD_KEYPAD 1509 | //#define REPRAPWORLD_KEYPAD_MOVE_STEP 1.0 1510 | 1511 | // 1512 | // RigidBot Panel V1.0 1513 | // http://www.inventapart.com/ 1514 | // 1515 | //#define RIGIDBOT_PANEL 1516 | 1517 | // 1518 | // BQ LCD Smart Controller shipped by 1519 | // default with the BQ Hephestos 2 and Witbox 2. 1520 | // 1521 | //#define BQ_LCD_SMART_CONTROLLER 1522 | 1523 | // 1524 | // Cartesio UI 1525 | // http://mauk.cc/webshop/cartesio-shop/electronics/user-interface 1526 | // 1527 | //#define CARTESIO_UI 1528 | 1529 | // 1530 | // ANET and Tronxy Controller supported displays. 1531 | // 1532 | //#define ZONESTAR_LCD // Requires ADC_KEYPAD_PIN to be assigned to an analog pin. 1533 | // This LCD is known to be susceptible to electrical interference 1534 | // which scrambles the display. Pressing any button clears it up. 1535 | // This is a LCD2004 display with 5 analog buttons. 1536 | 1537 | //#define ANET_FULL_GRAPHICS_LCD // Anet 128x64 full graphics lcd with rotary encoder as used on Anet A6 1538 | // A clone of the RepRapDiscount full graphics display but with 1539 | // different pins/wiring (see pins_ANET_10.h). 1540 | 1541 | // 1542 | // LCD for Melzi Card with Graphical LCD 1543 | // 1544 | //#define LCD_FOR_MELZI 1545 | 1546 | // 1547 | // CONTROLLER TYPE: I2C 1548 | // 1549 | // Note: These controllers require the installation of Arduino's LiquidCrystal_I2C 1550 | // library. For more info: https://github.com/kiyoshigawa/LiquidCrystal_I2C 1551 | // 1552 | 1553 | // 1554 | // Elefu RA Board Control Panel 1555 | // http://www.elefu.com/index.php?route=product/product&product_id=53 1556 | // 1557 | //#define RA_CONTROL_PANEL 1558 | 1559 | // 1560 | // Sainsmart YW Robot (LCM1602) LCD Display 1561 | // 1562 | // Note: This controller requires F.Malpartida's LiquidCrystal_I2C library 1563 | // https://bitbucket.org/fmalpartida/new-liquidcrystal/wiki/Home 1564 | // 1565 | //#define LCD_I2C_SAINSMART_YWROBOT 1566 | 1567 | // 1568 | // Generic LCM1602 LCD adapter 1569 | // 1570 | //#define LCM1602 1571 | 1572 | // 1573 | // PANELOLU2 LCD with status LEDs, 1574 | // separate encoder and click inputs. 1575 | // 1576 | // Note: This controller requires Arduino's LiquidTWI2 library v1.2.3 or later. 1577 | // For more info: https://github.com/lincomatic/LiquidTWI2 1578 | // 1579 | // Note: The PANELOLU2 encoder click input can either be directly connected to 1580 | // a pin (if BTN_ENC defined to != -1) or read through I2C (when BTN_ENC == -1). 1581 | // 1582 | //#define LCD_I2C_PANELOLU2 1583 | 1584 | // 1585 | // Panucatt VIKI LCD with status LEDs, 1586 | // integrated click & L/R/U/D buttons, separate encoder inputs. 1587 | // 1588 | //#define LCD_I2C_VIKI 1589 | 1590 | // 1591 | // SSD1306 OLED full graphics generic display 1592 | // 1593 | //#define U8GLIB_ST7920 1594 | //#define U8GLIB_SSD1306 1595 | 1596 | // 1597 | // SAV OLEd LCD module support using either SSD1306 or SH1106 based LCD modules 1598 | // 1599 | //#define SAV_3DGLCD 1600 | #if ENABLED(SAV_3DGLCD) 1601 | //#define U8GLIB_SSD1306 1602 | #define U8GLIB_SH1106 1603 | #endif 1604 | 1605 | // 1606 | // CONTROLLER TYPE: Shift register panels 1607 | // 1608 | // 2 wire Non-latching LCD SR from https://goo.gl/aJJ4sH 1609 | // LCD configuration: http://reprap.org/wiki/SAV_3D_LCD 1610 | // 1611 | //#define SAV_3DLCD 1612 | 1613 | // 1614 | // TinyBoy2 128x64 OLED / Encoder Panel 1615 | // 1616 | //#define OLED_PANEL_TINYBOY2 1617 | 1618 | // 1619 | // AZSMZ 12864 LCD with SD 1620 | // https://www.aliexpress.com/store/product/3D-printer-smart-controller-SMART-RAMPS-OR-RAMPS-1-4-LCD-12864-LCD-control-panel-green/2179173_32213636460.html 1621 | // 1622 | //#define AZSMZ_12864 1623 | 1624 | // Silvergate GLCD controller 1625 | // http://github.com/android444/Silvergate 1626 | // 1627 | //#define SILVER_GATE_GLCD_CONTROLLER 1628 | 1629 | //============================================================================= 1630 | //=============================== Extra Features ============================== 1631 | //============================================================================= 1632 | 1633 | // @section extras 1634 | 1635 | // Increase the FAN PWM frequency. Removes the PWM noise but increases heating in the FET/Arduino 1636 | //#define FAST_PWM_FAN 1637 | 1638 | // Use software PWM to drive the fan, as for the heaters. This uses a very low frequency 1639 | // which is not as annoying as with the hardware PWM. On the other hand, if this frequency 1640 | // is too low, you should also increment SOFT_PWM_SCALE. 1641 | //#define FAN_SOFT_PWM 1642 | 1643 | // Incrementing this by 1 will double the software PWM frequency, 1644 | // affecting heaters, and the fan if FAN_SOFT_PWM is enabled. 1645 | // However, control resolution will be halved for each increment; 1646 | // at zero value, there are 128 effective control positions. 1647 | #define SOFT_PWM_SCALE 0 1648 | 1649 | // If SOFT_PWM_SCALE is set to a value higher than 0, dithering can 1650 | // be used to mitigate the associated resolution loss. If enabled, 1651 | // some of the PWM cycles are stretched so on average the desired 1652 | // duty cycle is attained. 1653 | //#define SOFT_PWM_DITHER 1654 | 1655 | // Temperature status LEDs that display the hotend and bed temperature. 1656 | // If all hotends, bed temperature, and target temperature are under 54C 1657 | // then the BLUE led is on. Otherwise the RED led is on. (1C hysteresis) 1658 | //#define TEMP_STAT_LEDS 1659 | 1660 | // M240 Triggers a camera by emulating a Canon RC-1 Remote 1661 | // Data from: http://www.doc-diy.net/photo/rc-1_hacked/ 1662 | //#define PHOTOGRAPH_PIN 23 1663 | 1664 | // SkeinForge sends the wrong arc g-codes when using Arc Point as fillet procedure 1665 | //#define SF_ARC_FIX 1666 | 1667 | // Support for the BariCUDA Paste Extruder 1668 | //#define BARICUDA 1669 | 1670 | // Support for BlinkM/CyzRgb 1671 | //#define BLINKM 1672 | 1673 | // Support for PCA9632 PWM LED driver 1674 | //#define PCA9632 1675 | 1676 | /** 1677 | * RGB LED / LED Strip Control 1678 | * 1679 | * Enable support for an RGB LED connected to 5V digital pins, or 1680 | * an RGB Strip connected to MOSFETs controlled by digital pins. 1681 | * 1682 | * Adds the M150 command to set the LED (or LED strip) color. 1683 | * If pins are PWM capable (e.g., 4, 5, 6, 11) then a range of 1684 | * luminance values can be set from 0 to 255. 1685 | * For Neopixel LED an overall brightness parameter is also available. 1686 | * 1687 | * *** CAUTION *** 1688 | * LED Strips require a MOFSET Chip between PWM lines and LEDs, 1689 | * as the Arduino cannot handle the current the LEDs will require. 1690 | * Failure to follow this precaution can destroy your Arduino! 1691 | * NOTE: A separate 5V power supply is required! The Neopixel LED needs 1692 | * more current than the Arduino 5V linear regulator can produce. 1693 | * *** CAUTION *** 1694 | * 1695 | * LED Type. Enable only one of the following two options. 1696 | * 1697 | */ 1698 | 1699 | //#define RGB_LED 1700 | //#define RGBW_LED 1701 | #if ENABLED(RGB_LED) || ENABLED(RGBW_LED) 1702 | #define RGB_LED_R_PIN 34 1703 | #define RGB_LED_G_PIN 43 1704 | #define RGB_LED_B_PIN 35 1705 | #define RGB_LED_W_PIN -1 1706 | #endif 1707 | 1708 | // Support for Adafruit Neopixel LED driver 1709 | //#define NEOPIXEL_LED 1710 | #if ENABLED(NEOPIXEL_LED) 1711 | #define NEOPIXEL_TYPE NEO_GRB // NEO_GRBW / NEO_GRB - four/three channel driver type (defined in Adafruit_NeoPixel.h) 1712 | #define NEOPIXEL_PIN 4 // LED driving pin on motherboard 4 => D4 (EXP2-5 on Printrboard) / 30 => PC7 (EXP3-13 on Rumba) 1713 | #define NEOPIXEL_PIXELS 30 // Number of LEDs in the strip 1714 | #define NEOPIXEL_IS_SEQUENTIAL // Sequential display for temperature change - LED by LED. Disable to change all LEDs at once. 1715 | #define NEOPIXEL_BRIGHTNESS 255 // Initial brightness 0-255 1716 | //#define NEOPIXEL_STARTUP_TEST // Cycle through colors at startup 1717 | #endif 1718 | 1719 | /** 1720 | * Printer Event LEDs 1721 | * 1722 | * During printing, the LEDs will reflect the printer status: 1723 | * 1724 | * - Gradually change from blue to violet as the heated bed gets to target temp 1725 | * - Gradually change from violet to red as the hotend gets to temperature 1726 | * - Change to white to illuminate work surface 1727 | * - Change to green once print has finished 1728 | * - Turn off after the print has finished and the user has pushed a button 1729 | */ 1730 | #if ENABLED(BLINKM) || ENABLED(RGB_LED) || ENABLED(RGBW_LED) || ENABLED(PCA9632) || ENABLED(NEOPIXEL_LED) 1731 | #define PRINTER_EVENT_LEDS 1732 | #endif 1733 | 1734 | /** 1735 | * R/C SERVO support 1736 | * Sponsored by TrinityLabs, Reworked by codexmas 1737 | */ 1738 | 1739 | /** 1740 | * Number of servos 1741 | * 1742 | * For some servo-related options NUM_SERVOS will be set automatically. 1743 | * Set this manually if there are extra servos needing manual control. 1744 | * Leave undefined or set to 0 to entirely disable the servo subsystem. 1745 | */ 1746 | //#define NUM_SERVOS 3 // Servo index starts with 0 for M280 command 1747 | 1748 | // Delay (in milliseconds) before the next move will start, to give the servo time to reach its target angle. 1749 | // 300ms is a good value but you can try less delay. 1750 | // If the servo can't reach the requested position, increase it. 1751 | #define SERVO_DELAY { 300 } 1752 | 1753 | // Servo deactivation 1754 | // 1755 | // With this option servos are powered only during movement, then turned off to prevent jitter. 1756 | //#define DEACTIVATE_SERVOS_AFTER_MOVE 1757 | 1758 | #endif // CONFIGURATION_H 1759 | --------------------------------------------------------------------------------