├── 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 |
--------------------------------------------------------------------------------