Every time I print, I need to increase baby steps
-
@phaedrux thanks for the response mate and looking into it.
I've got an EZABL and I used this article to set it up and set my offset.It's roughly the same amount, 0.06 - 0.08, but it varies.
I did run a G29 earlier and I've got a height map, but not sure if I'm loading it or not... I think it's in the bed.g fileG29 ; probe the bed and enable compensation
Here's the output of M122
M122 === Diagnostics === RepRapFirmware for Duet 2 WiFi/Ethernet version 3.2.2 running on Duet WiFi 1.02 or later Board ID: 0JD0M-9P6B2-NJ4S8-6J1F4-3SN6S-9U4AJ Used output buffers: 3 of 24 (24 max) === RTOS === Static ram: 23460 Dynamic ram: 73460 of which 76 recycled Never used RAM 15084, free system stack 99 words Tasks: NETWORK(ready,169) HEAT(blocked,308) MAIN(running,410) IDLE(ready,20) Owned mutexes: === Platform === Last reset 26:25:56 ago, cause: software Last software reset at 2021-08-29 17:33, reason: User, GCodes spinning, available RAM 15084, slot 0 Software reset code 0x0003 HFSR 0x00000000 CFSR 0x00000000 ICSR 0x0041f000 BFAR 0xe000ed38 SP 0x00000000 Task MAIN Freestk 0 n/a Error status: 0x08 Aux0 errors 0,0,0 MCU temperature: min 27.6, current 35.6, max 36.5 Supply voltage: min 23.7, current 24.0, max 24.5, under voltage events: 0, over voltage events: 0, power good: yes Driver 0: position 4530, standstill, SG min/max 0/334 Driver 1: position 12540, ok, SG min/max 0/523 Driver 2: position 42, standstill, SG min/max 0/543 Driver 3: position 0, standstill, SG min/max 0/1023 Driver 4: position 0, standstill, SG min/max not available Driver 5: position 0 Driver 6: position 0 Driver 7: position 0 Driver 8: position 0 Driver 9: position 0 Driver 10: position 0 Driver 11: position 0 Date/time: 2021-08-30 19:59:21 Cache data hit count 4294967295 Slowest loop: 163.74ms; fastest: 0.12ms I2C nak errors 0, send timeouts 0, receive timeouts 0, finishTimeouts 0, resets 0 === Storage === Free file entries: 9 SD card 0 detected, interface speed: 20.0MBytes/sec SD card longest read time 4.5ms, write time 49.7ms, max retries 0 === Move === DMs created 83, maxWait 23786190ms, bed compensation in use: mesh, comp offset 0.102 === MainDDARing === Scheduled moves 6086, completed moves 6066, hiccups 0, stepErrors 0, LaErrors 0, Underruns [0, 0, 26], CDDA state 3 === AuxDDARing === Scheduled moves 0, completed moves 0, hiccups 0, stepErrors 0, LaErrors 0, Underruns [0, 0, 0], CDDA state -1 === Heat === Bed heaters = 0 -1 -1 -1, chamberHeaters = -1 -1 -1 -1 Heater 0 is on, I-accum = 0.3 Heater 1 is on, I-accum = 0.6 === GCodes === Segments left: 1 Movement lock held by null HTTP is idle in state(s) 0 Telnet is idle in state(s) 0 File is doing "G0 F7500 X55.203 Y149.106" in state(s) 0 USB is idle in state(s) 0 Aux is idle in state(s) 0 Trigger is idle in state(s) 0 Queue is idle in state(s) 0 LCD is idle in state(s) 0 Daemon is idle in state(s) 0 Autopause is idle in state(s) 0 Code queue is empty. === Network === Slowest loop: 192.98ms; fastest: 0.00ms Responder states: HTTP(0) HTTP(0) HTTP(0) HTTP(0) FTP(0) Telnet(0), 0 sessions HTTP sessions: 2 of 8 - WiFi - Network state is active WiFi module is connected to access point Failed messages: pending 0, notready 0, noresp 0 WiFi firmware version 1.25 WiFi MAC address e0:98:06:22:67:28 WiFi Vcc 3.39, reset reason Turned on by main processor WiFi flash size 4194304, free heap 24792 WiFi IP address 192.168.1.28 WiFi signal strength -48dBm, mode 802.11n, reconnections 0, sleep mode modem Clock register 00002002 Socket states: 4 0 0 0 0 0 0 0 === Filament sensors === Extruder 0 sensor: ok
And here's the output of M98
M98 P"config.g" HTTP is enabled on port 80 FTP is disabled TELNET is disabled
-
@infidelprops said in Every time I print, I need to increase baby steps:
I did run a G29 earlier and I've got a height map, but not sure if I'm loading it or not... I think it's in the bed.g file
Yes, but are you ever using G32 to run bed.g? I don't see it in any of your start code.
I would suggest that you update your firmware to 3.3 by uploading this zip file to the system tab in DWC
https://github.com/Duet3D/RepRapFirmware/releases/download/3.3/Duet2and3Firmware-3.3.zipRe measure your G31 Z offset with nozzle and bed at temp.
Test your homeall again by seeing if the nozzle just touches the bed at Z0.
Then re-level your bed and send G29 S0 to create a fresh heightmap.
Then add G29 S1 to your slicer start gcode after the G28
Make sure your extruder flow rate is calibrated and then try a test print of this file to test how well the mesh is working.
-
Thanks mate, I will give this all a go now
-
Thanks for this! I've done the upgrade and reconfig... Z-offset is set to 1.750,
G31 P500 X47 Y10 Z1.750
When I did the first print of the suggested file, I had to babystep to -0.33
On the second print, I had to again babystep to -0.45
On the third print, I had to again babystpe to -0.66
On all three prints, when I am facing the printer:
- the right side of the bed prints very low to the bed and the filament is almost squished.
- but on the left sidem, it prints very high and the filament barely sticks.
- In the middle, it's also still pretty lose
This is my height map, after configuring the z-offset, after levelling and this looks pretty bad and I've had better.
It's also good to point out that I don't yet have a LCD screen, I've ordered one but it's two weeks late or lost, so I am doing everything via DWC.When I level the bed, I jog the hotend to where my 4 bed levelling screws are and I use a sheet of paper to get them all having the same resistence when I pull on the paper and then I check centre again.
After I do this, I run the G29 S0.Also, I still don't see a mesh.g file... am I supposed to have one of these?
Here's an updated M122
M122 === Diagnostics === RepRapFirmware for Duet 2 WiFi/Ethernet version 3.3 (2021-06-15 21:44:54) running on Duet WiFi 1.02 or later Board ID: 0JD0M-9P6B2-NJ4S8-6J1F4-3SN6S-9U4AJ Used output buffers: 3 of 24 (20 max) === RTOS === Static ram: 23876 Dynamic ram: 75320 of which 176 recycled Never used RAM 12188, free system stack 114 words Tasks: NETWORK(ready,63.2%,231) HEAT(delaying,0.1%,305) Move(notifyWait,0.4%,305) MAIN(running,36.1%,420) IDLE(ready,0.2%,29), total 100.0% Owned mutexes: WiFi(NETWORK) === Platform === Last reset 01:39:37 ago, cause: software Last software reset at 2021-08-31 07:57, reason: User, GCodes spinning, available RAM 15044, slot 1 Software reset code 0x0003 HFSR 0x00000000 CFSR 0x00000000 ICSR 0x0041f000 BFAR 0xe000ed38 SP 0x00000000 Task MAIN Freestk 0 n/a Error status: 0x08 Aux0 errors 0,0,0 Step timer max interval 0 MCU temperature: min 28.8, current 29.7, max 32.6 Supply voltage: min 23.7, current 24.2, max 24.5, under voltage events: 0, over voltage events: 0, power good: yes Heap OK, handles allocated/used 99/0, heap memory allocated/used/recyclable 2048/126/126, gc cycles 0 Driver 0: position 400, standstill, SG min/max 0/337 Driver 1: position 28320, standstill, SG min/max 25/530 Driver 2: position 7930, standstill, SG min/max 0/540 Driver 3: position 0, standstill, SG min/max 0/386 Driver 4: position 0, standstill, SG min/max not available Driver 5: position 0 Driver 6: position 0 Driver 7: position 0 Driver 8: position 0 Driver 9: position 0 Driver 10: position 0 Driver 11: position 0 Date/time: 2021-08-31 09:37:01 Cache data hit count 4294967295 Slowest loop: 42.45ms; fastest: 0.10ms I2C nak errors 0, send timeouts 0, receive timeouts 0, finishTimeouts 0, resets 0 === Storage === Free file entries: 10 SD card 0 detected, interface speed: 20.0MBytes/sec SD card longest read time 4.1ms, write time 4.6ms, max retries 0 === Move === DMs created 83, maxWait 2403120ms, bed compensation in use: mesh, comp offset 0.000 === MainDDARing === Scheduled moves 1307, completed moves 1307, hiccups 0, stepErrors 0, LaErrors 0, Underruns [1, 0, 61], CDDA state -1 === AuxDDARing === Scheduled moves 0, completed moves 0, hiccups 0, stepErrors 0, LaErrors 0, Underruns [0, 0, 0], CDDA state -1 === Heat === Bed heaters = 0 -1 -1 -1, chamberHeaters = -1 -1 -1 -1 Heater 0 is on, I-accum = 0.3 Heater 1 is on, I-accum = 0.4 === GCodes === Segments left: 0 Movement lock held by null HTTP is idle in state(s) 0 Telnet is idle in state(s) 0 File is idle in state(s) 0 USB is idle in state(s) 0 Aux is idle in state(s) 0 Trigger is idle in state(s) 0 Queue is idle in state(s) 0 LCD is idle in state(s) 0 Daemon is idle in state(s) 0 Autopause is idle in state(s) 0 Code queue is empty. === Filament sensors === Extruder 0 sensor: ok === Network === Slowest loop: 37.91ms; fastest: 0.00ms Responder states: HTTP(0) HTTP(0) HTTP(0) HTTP(0) FTP(0) Telnet(0), 0 sessions HTTP sessions: 1 of 8 - WiFi - Network state is active WiFi module is connected to access point Failed messages: pending 0, notready 0, noresp 0 WiFi firmware version 1.26 WiFi MAC address e0:98:06:22:67:28 WiFi Vcc 3.40, reset reason Turned on by main processor WiFi flash size 4194304, free heap 21400 WiFi IP address 192.168.1.28 WiFi signal strength -47dBm, mode 802.11n, reconnections 0, sleep mode modem Clock register 00002002 Socket states: 0 0 0 0 0 0 0 0
And a M98
M98 P"config.g" HTTP is enabled on port 80 FTP is disabled TELNET is disabled
-
@infidelprops
Hi,
Since you have a Z probe you can get some help adjusting those bed leveling screws.
Basically the firmware will move to each of the 4 locations you specify and probe the bed. Then it will compute the adjustment needed for the 2nd, 3rd, and 4th leveling screws. It uses the 1st point as a reference and screw isn't adjusted.
It works well.
Frederick
-
@infidelprops
Hi again.
The G32 command executes the bed.g file and that file you must create and populate with the needed commands.
The G29 command executes a mesh.g file, if it exists, and again that file you must create and populate with the needed commands.
I put in each file all of the needed commands to insure that I can execute a G32 or G29 command and have the process complete successfully without having to be sure to do certain other commands first.
This can lead to a bit of inefficiency as you may be doing a few of the same commands in each file. But given the time each process takes any extra time due to the duplicated commands is minimal.
I also should mention that the DWC is already setup to invoke G32 or G29 from a pull down menu so if you stick with creating bed.g and mesh.g then you can invoke those processes from the DWC without errors.
Frederick
-
@fcwilt & @Phaedrux thanks for the explanations!
I've tried this previously, but I wasn't doing it right and I've now put them in the right file, but when select
True Bed Levelling (G32)
within DWC, I get the below message after it homes z, but the hotend doesn't move anywhere:G32 Manual corrections required: 0.00 turn up (0.00mm) 0.00 turn down (0.00mm) 0.00 turn down (0.00mm) 0.00 turn down (0.00mm)
This is at the very bottom of my config.g file
; Setup Manual Bed Levelling Assistant M671 X55:338:338:55 Y311:311:51:51 P0.5 ; Back-left:Back-Right:Front-Right:Front-Left
And this is in bed.g
; bed.g ; called to perform automatic bed compensation via G32 ; ; generated by RepRapFirmware Configuration Tool v3.3.0 on Sun Aug 08 2021 21:27:11 GMT+1000 (Australian Eastern Standard Time) M561 ; clear any bed transform G28 Z ; home z G30 P0 X55 Y311 Z-500 ; Back-Left G30 P1 X338 Y311 Z-500 ; Back-Right G30 P2 X338 Y51 Z-500 ; Front-Right G30 P3 X55 Y51 Z-500 S4; Front-Left G29 ; probe the bed and enable compensation
I'm going to look around the forums and Google, but wanted to post this here
-
@infidelprops
Hi,
You recall that I said I put all commands needed into each file so the will execute successfully without any other steps being taken first?
Now having the M671 in config.g works. But you may find you need to change those values because they are not quite right. If you put the M671 in bed.g then anytime bed.g is executed the current values in the M671 command will be used.
Now as to why it is not working for you. In your G30 command you are using Z-500.
Read this from the G30 documentation:
G30 with a P parameter
This is used for operations that are performed after the printer has been homed and that require the height error at more than one probe point to be measured. These operations are typically performed in the bed.g file. With a Z parameter of -9999 or less, the head moves to the specified XY coordinates and the dive height (set using the H parameter in the M558 command), and probes the bed.
Also since bed.g is intended for bed leveling (auto or manual) and mesh.g is intended for creating the height map needed for mesh bed compensation I would not include the G29 in bed.g. They do not need to be done together and if you included G29 in bed.g you cannot do them separately.
For example I implemented auto bed leveling on one of my printers. I level the bed when I home it. But I only create the height map manually using a DWC Macro as the height map can usually be created once and used over and over. I load the height map use G29 S1 in the code which is executed at the start of a print.
One thing you do need to add to your bed.g file is the code to set the Z=0 Datum using a G30 command. I always set the Z=0 Datum using the center of the bed for the XY position that you must always set before executing the G30. You use a normal G1 command but you have to compute the X and Y parameters so the probe is positioned at the center of the bed and not the nozzle. This means you have to take into account the X and Y offsets of your Z probe.
Frederick
-
@fcwilt thanks for the details!
I've updated bed.g with the following, but not sure if I'm setting Z=0 correctly. Based on reading the documentation for G30, what I'm doing is:
- Move Probe to centre of bed
- Use G30 to probe the current location
- Then move and probe the screw locations and probe
; bed.g ; called to perform automatic bed compensation via G32 ; ; generated by RepRapFirmware Configuration Tool v3.3.0 on Sun Aug 08 2021 21:27:11 GMT+1000 (Australian Eastern Standard Time) ; Setup Manual Bed Levelling Assistant M671 X55:338:338:55 Y311:311:51:51 P0.5 ; Back-left:Back-Right:Front-Right:Front-Left M561 ; clear any bed transform G28 Z; home ; Center of the bed G1 X220 Y175 F6000 G30 S1 Z-9999 ; Centre ; 4 Screw Points G30 P0 X55 Y311 Z-9999 ; Back-Left G30 P1 X338 Y311 Z-9999 ; Back-Right G30 P2 X338 Y51 Z-9999 ; Front-Right G30 P3 X55 Y51 Z-9999 S4; Front-Left
-
@infidelprops
I made a mistake.
It's quite late here and I overlooked the fact that you are doing manual bed leveling so setting the Z=0 datum would have to be done after you completed the manual process.
Sorry about that.
Frederick
-
@fcwilt no worries mate, I appreciate you sticking with it!
Here's my bed.g file
; bed.g ; called to perform automatic bed compensation via G32 ; ; generated by RepRapFirmware Configuration Tool v3.3.0 on Sun Aug 08 2021 21:27:11 GMT+1000 (Australian Eastern Standard Time) ; Setup Manual Bed Levelling Assistant M671 X69:338:69:338 Y51:51:308:308 P0.5 ; Front-Left:Front-Right:Back-Left:Back-Right M561 ; clear any bed transform G28 Z; home ; Probe near bed screws G30 P0 X127 Y58 Z-9999 ; Front-Left G30 P1 X380 Y58 Z-9999 ; Front-Right G30 P3 X127 Y318 Z-9999; Back-Left G30 P2 X380 Y318 Z-9999 S4; Back-Right
And this is what is shown in the console after the 4th point is finished
G32 Manual corrections required: 0.00 turn up (0.00mm) 0.25 turn down (0.13mm) 0.14 turn up (-0.07mm) 0.27 turn down (0.14mm)
Now that I know how much to adjust it... what's the best way to adjust the knobs given they're a manual turn? And do I still need to run a G29 as well to get a height map or this a 1 or the other situation?
-
@infidelprops said in Every time I print, I need to increase baby steps:
Now that I know how much to adjust it... what's the best way to adjust the knobs given they're a manual turn? And do I still need to run a G29 as well to get a height map or this a 1 or the other situation?
I find it difficult to turn the adjustment screws the amounts specified - like 0.14 of a turn. After awhile you just get a feel for it but it can still take many tries. I strive for perfect but I'll settle for being off by 0.01mm.
Now I may just be inept but I find my printer with just 3 adjustment screws much easier to get right than the one that as 4 adjustment screws.
With my manual adjust beds I check them periodically with G32 to see if they have changed.
With my auto adjust beds I do that as part of homing Z.
I create the height map periodically if I think something may have changed. If you implement mesh.g you can create the height map via the DWC pull down menu, via a DWC Macro or just by executing G29.
I load the existing height map in my print start code.
the basic steps related to leveling and mesh compensation are:
- home the printer
- level the bed if auto bed leveling is implemented
- set the Z=0 Datum
- load the height map
Of course I do others things in my print start code like set the bed/extruder temps, wait for them to reach temp, prime the extruder, etc.
Frederick
-
@fcwilt thanks! I actually got some sleep last night and this morning I realised that I just need to turn the knob slightly, then re-run the test again... so the coffee did it's work this morning.
For the G29, I have an empty Mesh file now, and when I run G29 it does nothing... should I put the following in my mesh.g file?
mesh.g
M561 ; clear any bed transform G28 Z; home M557 X90:400 Y15:360 P20 G28 Z; home
-
@infidelprops said in Every time I print, I need to increase baby steps:
@fcwilt thanks! I actually got some sleep last night and this morning I realised that I just need to turn the knob slightly, then re-run the test again... so the coffee did it's work this morning.
For the G29, I have an empty Mesh file now, and when I run G29 it does nothing... should I put the following in my mesh.g file?
Below are the essential commands from my mesh.g file.
Now I make use of many separate files dedicated to a specific function.
Below you can see M98 invocations of probe_config.g and probe_set_z.g. The comments below say what they do.
You can of course configure the probe in config.g as many folks do and you can set the Z=0 Datum using a G1 command and a G30 command.
But since these two processes (configuring the probe and setting the Z=0 Datum) need to be done in several other places I create dedicated files for such processes to be invoked with M98 as needed.
M98 P"probe_config.g" ; configure Z probe M98 P"probe_set_z.g" ; set Z=0 datum M557 X-140:140 Y-125:140 P20:20 ; define 400 point mesh G29 S0 ; do probing and save height map
If you have questions please ask.
Frederick
-
@fcwilt Thanks man, really appreciate it!
I've got the manual adjustments done now and reporting back 0.00 for all but one screw, so I'm OK with that for now. I've updated mesh.g to include the below and it's creating the height map now.
;mesh g - manually configured M98 P"probe_config.g" M561 ; clear any bed transform G28 Z; home M557 X90:400 Y15:360 P20 ; define probe area and points G29 S0 ; probe and save height map
I've also setup a probe_config.g file as I do like the seperation of files, and in here I have:
; probe_config.g ; Z-Probe M558 P5 C"!zprobe.in" H3 F650 T12000 ; setup my EZABL G31 P500 X47 Y10 Z1.750 ; set Z probe trigger value, offset and trigger height
Can I see what you have in your probe_set_z.g file? I've seen multiple post from you around setting Z=0 Datum, and would like to see what you have in there so I can read the gcode doco and figure out what's going on. Question: Will setting this help me to stop having to re-do my babysteps every time I turn my printer back ok? (IE: When I print, as indicated above, I'm constantly updating baby steps, even for the same layer height, but when I turn off my printer and back on... my baby steps go back to 0.00 and i need to reset it as when my first print starts, it's a good .5 mm off the bed)
-
@infidelprops Height calibration just finished and I am very pleased to say this is the best height map I've seen since I started this journey... thanks @fcwilt
-
@infidelprops said in Every time I print, I need to increase baby steps:
Can I see what you have in your probe_set_z.g file?
Glad to do it.
If you want to see the M98 invoked files let me know.
I hope you don't get confused by my approach of using many separate files.
M98 P"homeALL_verify.g" ; verify printer is homed - abort if not M98 P"probe_config.g" ; configure probe M98 P"center_probe.g" ; position on XY for probing G29 S2 ; cancel mesh bed compensation M290 R0 S0 ; cancel baby stepping G1 Z{global.g_z_home} F600 ; move Z to "homed" height - insures probe is not too close to the bed - value is set into a global variable in config.g G30 ; do single probe - sets Z to probe trigger height - if trigger height is wrong Z position will be wrong - see probe_config.g G1 Z{global.g_z_home} F600 ; move Z back again to "homed" height
-
@infidelprops
Forgot.
Once you set the Z Trigger Height correct (and it seems you have) setting baby stepping will not be needed every time you print.
I still find myself tweaking the starting Z height when printing if it looks like the first layer is not quite right.
Frederick
-
@fcwilt said in Every time I print, I need to increase baby steps:
@infidelprops said in Every time I print, I need to increase baby steps:
Can I see what you have in your probe_set_z.g file?
Glad to do it.
If you want to see the M98 invoked files let me know.
I hope you don't get confused by my approach of using many separate files.
M98 P"homeALL_verify.g" ; verify printer is homed - abort if not M98 P"probe_config.g" ; configure probe M98 P"center_probe.g" ; position on XY for probing G29 S2 ; cancel mesh bed compensation M290 R0 S0 ; cancel baby stepping G1 Z{global.g_z_home} F600 ; move Z to "homed" height - insures probe is not too close to the bed - value is set into a global variable in config.g G30 ; do single probe - sets Z to probe trigger height - if trigger height is wrong Z position will be wrong - see probe_config.g G1 Z{global.g_z_home} F600 ; move Z back again to "homed" height
Thanks, making more sense and I will take you up on the offer to see the homeALL_verify.g, center_probe.g and your config.g file?
And nah, I don't get confused... it makes more sense to me as a developer. (more on the JS/Node side than this/perl)
-
@infidelprops
Here are the files. I cleaned them up a bit removing experimental stuff. I hope I didn't break anything doing that.
; homeALL_verify.g if !move.axes[0].homed || !move.axes[1].homed || !move.axes[2].homed M291 R"Printer has not been homed" P"Cannot continue" S2 T0 abort "Action aborted - printer not homed"
; center_probe.g M98 P"homeALL_verify.g" M98 P"z_position_adjust.g" ; adjust Z position as needed - insures probe is far enough away from bed to work ; move probe to center of bed G90 ; absolute moves ; this mess computes the center of the bed based on axes min/max values and probe XY offsets G1 X{((move.axis[0].max + move.axis[0].min) / 2) - sensors.probes[0].offsets[0]}, Y{((move.axis[1].max + move.axis[1].min) / 2) - sensors.probes[0].offsets[1]}, F1800
; z_position_adjust.g ; adjust Z if it is not in a good position for probing if {move.axes[2].machinePosition} < 5 || {move.axes[2].machinePosition} > 20 G90 ; absolute moves G1 Z{global.g_z_home} F1200 ; move Z to "home" position
; ---------------------------------------------------------------------------------------------------- ; start of file - printer FT5 - hardware Duet 2 WiFi/Duex 5 - firmware 3.3.0 ; ---------------------------------------------------------------------------------------------------- ; **************************************************************************************************** ; prologue ; **************************************************************************************************** M111 S0 ; debug off M550 P"FT5" ; machine name (can be anything you like) M555 P2 ; set output to look like Marlin M575 P0 B57600 S2 ; communication parameters for USB serial M575 P1 B115200 S1 ; communication parameters for PanelDue M552 S1 ; enable WiFi (S1) M586 S1 P1 T0 ; enable (S1) FTP (P1) Disable TLS (T0) M586 S1 P2 T0 ; enable (S1) Telnet (P2) Disable TLS (T0) G21 ; dimensions in mm G90 ; for X,Y,Z use absolute coordinate values M83 ; for E0,E1,etc use relative coordinate values ; **************************************************************************************************** ; mode control variables ; **************************************************************************************************** global g_z_home = 5 ; can be used to always move Z to known height global g_print_beg_prime = 30 ; default - set desired in filament config.g global g_print_beg_retract = 0 ; default - set desired in filament config.g global g_print_pause_retract = 0 ; default - set desired in filament config.g global g_print_end_retract = 0 ; default - set desired in filament config.g global g_print_end_mode = "HEAT OFF" ; determines if heaters are turned off when print is done global g_map_mode = "FULL" ; determines which kind of height map is created/loaded global g_probe_mode = "TWO" ; determines if z proving used consecutive or averaging global g_level_mode = "3PT" ; determines if 3 or 4 points are used for leveling global g_pa_setting = 0 ; used for pressure advance testing global g_pa_increment = 0 ; used for pressure advance testing global g_pa_layer_count = 0 ; used for pressure advance testing global g_pa_layer_counter = 0 ; used for pressure advance testing ; **************************************************************************************************** ; kinematics - K0 = Cartesian (X is -left/+right, Y is -front/+back, Z is bed -up/+down) ; **************************************************************************************************** M669 K0 ; defaults = X1:0:0 Y0:1:0 Z0:0:1 ; **************************************************************************************************** ; motors ; **************************************************************************************************** ; motor direction - drive (P), direction (S1 = normal, S0 = reverse) M569 P0 S1 ; drive 0 - normal - X M569 P1 S0 ; drive 1 - reverse - YL M569 P2 S1 ; drive 2 - normal - YR M569 P3 S0 ; drive 3 - reverse - E M569 P5 S0 ; drive 5 - reverse - Z ; motor assignment M584 X0 Y1:2 Z5 E3 ; set what motors do what ; motor performance settings ; X Y Z M92 X80 Y80 Z400 ; steps per mm (Z1600 for 2mm lead - Z400 for 8mm lead - Z400 for belt drive using stepper with gearbox of 5-to-1) M203 X12000 Y12000 Z1200 ; max speed (mm/min) M566 X900 Y900 Z120 ; max instant speed change (jerk) (mm/min) (defaults 900 900 12) (120 z value from phaedrux) M201 X500 Y500 Z240 ; acceleration (mm/s^2) (defaults 500 500 20) (240 z value from phaedrux) M906 X1000 Y1000 Z1000 I30 ; motor current (mA) and idle current (30%) ; E (Zesty Nimble) M92 E2750 ; steps per mm (suggested 2750) M203 E3600 ; max speed (mm/min) (suggested 3600) M566 E40 ; max instant speed change (jerk) (mm/min) (suggested 40) M201 E120 ; acceleration (mm/s^2) (suggested 120) M906 E500 ; motor current (mA) (suggested 500) ; if M92 above is set for the default 16x microstepping then putting M350 here ; will result in the needed adjustments to the initial values set by M92 M350 X16 Y16 Z16 E16 I1 ; 16x microstepping with interpolation ; ============================================================ ; axis dimensions and coordinate value modes for 0,0 in center ; ============================================================ M208 X-150:150 Y-150:150 Z0:350 ; set axes min/max values M579 X1.0 Y1.0 Z1.0 ; scaling (values are determined by measuring test object) M564 H1 S1 ; H1 = dont allow moving non-homed axes S1 = limit movement to axis min/max ; **************************************************************************************************** ; end stops ; -- X,Y,Z,etc = location of endstop (0 = none, 1 = low end, 2 = high end) ; -- S = type (1 = switch, 2 = probe, 3 = motor stall (one), 4 = motor stall (multiple) ; -- ! = invert ^ = enable pull-up ; **************************************************************************************************** M574 X2 S1 P"xstop" ; configure active-high endstop for max end on X M574 Y2 S1 P"ystop" ; configure active-high endstop for max end on Y M574 Z1 S1 P"zstop" ; configure active-high endstop for min end on Z ; **************************************************************************************************** ; heaters ; **************************************************************************************************** M308 S0 P"bedtemp" Y"thermistor" T100000 B4138 ; configure sensor 0 as thermistor M950 H0 C"bedheat" T0 Q10 ; create bed heater output on bedheat and map it to sensor 0 M307 H0 B0 S1.00 A107.3 C136.0 D2.8 V12.0 ; values A, C, D, V determined by running heater tuning M140 P0 H0 ; map heated bed to heater 0 M143 H0 S115 ; set temperature limit for heater 0 M308 S1 P"e0temp" Y"thermistor" T500000 B4723 C1.196220e-7 ; configure sensor 1 as thermistor (SLICE) M950 H1 C"e0heat" T1 Q250 ; create nozzle heater output on e0heat and map it to sensor 1 M307 H1 B0 S1.00 A362.4 C121.7 D4.4 V11.8 ; values A, C, D, V determined by running heater tuning M143 H1 S250 ; set temperature limit for heater 1 ; other heater settings M570 P300 ; heater fault timeout - increase to allow extra heating time ; **************************************************************************************************** ; cooling fans ; -- P# is fan, S# is speed (0 to 255 or 0.0 to 1.0) H# means turn on fan when heater H# temp hits T# ; -- H-1 means no thermostatic control ; **************************************************************************************************** M950 F0 C"fan0" Q500 ; create fan (F), pin name (C), frequency (Q) M106 P0 C"Part" S0 H-1 ; set fan (P), name (C), speed (S), thermostatic control off (H) M950 F1 C"fan1" Q500 ; create fan (F), pin name (C), frequency (Q) M106 P1 C"Hotend" S1 H1 T45 ; set fan (P), name (C), speed (S), thermostatic control on (H & T) ; **************************************************************************************************** ; LED light strips ; -- P# is fan, S# is speed (0 to 255 or 0.0 to 1.0) H# means turn on fan when heater H# temp hits T# ; -- H-1 means no thermostatic control ; **************************************************************************************************** M950 F2 C"fan2" Q500 ; create fan 2 (F), pin name (C), frequency (Q) (lights center) M106 P2 C"Lights C" H-1 L0 ; set fan 2 (P), name (C), thermostatic control off (H) M950 F3 C"duex.fan6" Q500 ; create fan 3 (F), pin name (C), frequency (Q) (lights left) M106 P3 C"Lights L" H-1 L0 ; set fan 3 (P), name (C), thermostatic control off (H) M950 F4 C"duex.fan7" Q500 ; create fan 4 (F), pin name (C), frequency (Q) (lights right) M106 P4 C"Lights R" H-1 L0 ; set fan 4 (P), name (C), thermostatic control off (H) ; **************************************************************************************************** ; tools ; --- M563 --- ; P is tool number ; S is tool name (optional) ; D is extruder drive (0 or 1) ; H is associated heater number ; F is associated fan number ; --- G10 --- ; P is tool number ; X, Y, Z are axis offsets ; R, S are initial standby & active temperatures ; **************************************************************************************************** ; tool 0 M563 P0 S"T0" D0 H1 F0 ; define tool 0 to use extruder drive 0, heater 1, fan 0 G10 P0 X0 Y0 Z0 ; set tool 0 axis offsets G10 P0 R0 S0 ; set initial tool 0 active/standby temperatures ; **************************************************************************************************** ; external buttons (T trigger #, E end-stop #, C when to trigger (0 = always), S = edge (rising = 1, falling = 0) ; external buttons (P = pin #, T = trigger #, R = when to trigger (0 = always, 1 = printing), S = what edge (I->A = 1, A->I = 0, -1 = ignored) ; --- T0 does emergency stop ; --- T1 does pause (see M25) ; --- T# runs macro trigger#.g ; **************************************************************************************************** M950 J1 C"^duex.e2stop" M581 P1 T2 R0 S0 ; little button runs trigger2.g which does M999 reset M950 J2 C"^duex.e3stop" M581 P2 T0 R0 S0 ; big button does emergency stop ; **************************************************************************************************** ; filament sensor ; Pnn = sensor type ; - 0 = none ; - 1 = simple sensor (high signal when filament present) ; - 2 = simple sensor (low signal when filament present) (TriangleLabs) ; - 3 = Duet3D rotating magnet sensor ; - 4 = Duet3D rotating magnet sensor with microswitch ; - 5 = Duet3D laser sensor ; - 6 = Duet3D laser sensor with microswitch ; - 7 = pulse-generating sensor ; C"xx" = input pin name ; Dnn = extruder drive (0,1,2,...) ; Snn = enable/disable monitoring (0 = disable, 1 = enable) ; --- for types 3 to 7 --- ; Ann = when to check (0 = printing motion only, 1 = all motion) ; Enn = min extrusion to trigger check (mm, default 3) ; Lnn = movement per sensor wheel rotation (in mm, default 28.4) ; Raa:bb = extrusion error range (percent) ; **************************************************************************************************** M591 D0 P2 C"e1stop" S1 ; TriangleLabs ;M591 D0 P3 C"e1stop" S1 A0 E3.0 L25.72 R40:115 ; E3D Magnetic ; **************************************************************************************************** ; epilogue ; **************************************************************************************************** ; ---------------------------------------------------------------------------------------------------- ; workplace coordinates ; Ln Mode (L1 L2 or L20 - see below) ; Pnnn tool number if L=1 or coordinate system number if L=2 or L=20 ; X,Y,Z,U,V... Offsets ; ; L= 1: this sets the tool offset, as if the L parameter was not present ; L= 2: this sets the origin of the coordinate system number specified by the P parameter (1 to 9) to the specified X, Y, X... values ; L=20: this is similar to L=2 except that the origin is specified relative to the current position of the tool ; ---------------------------------------------------------------------------------------------------- G10 L2 P1 X0.00 Y0.00 Z0.00 G10 L2 P2 X0.00 Y0.00 Z0.00 G10 L2 P3 X0.00 Y0.00 Z0.00 G10 L2 P4 X0.00 Y0.00 Z0.00 G10 L2 P5 X0.00 Y0.00 Z0.00 G10 L2 P6 X0.00 Y0.00 Z0.00 G10 L2 P7 X0.00 Y0.00 Z0.00 G10 L2 P8 X0.00 Y0.00 Z0.00 G10 L2 P9 X0.00 Y0.00 Z0.00 ; ---------------------------------------------------------------------------------------------------- ; Z probe configuration ; ---------------------------------------------------------------------------------------------------- M98 P"probe_config.g" ; ---------------------------------------------------------------------------------------------------- ; end of file ; ----------------------------------------------------------------------------------------------------