Need Help For My DuetWiFi's First Test Print
-
I currently have 1.18 firmware, and a tuned config.g, but when I put a 20mm test cube gcode in to print, the printer did an auto home, then moved to a random location on the bed and rammed it.
With my Marlin/MKS board set up, my start code included an Auto Home, Bed Levelling Calibration, a short print along X0 to clear the nozzle, then it began printing in the centre of the bed. I'm not sure if the RepRap start code can use my Marlin start code, because I noticed some of the commands are different, but I would like to have the same process if possible.
As for why it rams the bed, I have no idea why it completely ignores Z0 before printing.
–---------------
config.g; General preferences
M111 S0 ; Debugging off
G21 ; Work in millimetres
G90 ; Send absolute coordinates...
M83 ; ...but relative extruder moves
M555 P2 ; Set firmware compatibility to look like Marlin
M208 X0 Y0 Z0 S1 ; Set axis minima
M208 X340 Y250 Z280 S0 ; Set axis maxima; Endstops
M574 X1 Y1 Z1 S0 ; Define active low and unused microswitches
M558 P5 X0 Y0 Z1 H5 F200 T6000 ; Set Z probe type to modulated, the axes for which it is used and the probe + travel speeds
G31 X-48 Y18 Z4.5 P50 ; Set Z probe trigger value, offset and trigger height;Z-offset (Z0.9). Higher value LOWER nozzle height
; Lower value RAISE nozzle heightM557 X10:340 Y10:240 S68 ; Define mesh grid
M307 H3 A-1 C-1 D-1 ; disable heater 3, which makes it available for use to control the BLTouch
; Drives
M569 P0 S1 ; Drive 0 goes forwards - X
M569 P1 S0 ; Drive 1 goes backwards - Y
M569 P2 S0 ; Drive 2 goes backwards - Z
M569 P3 S1 ; Drive 3 goes forwards - ExtruderM350 X16 Y16 Z16 E16 I1 ; Configure microstepping with interpolation 16
M92 X160 Y160 Z1600 E800 ; Set steps per mm 16M566 X600 Y420 Z12 E120 ; Set maximum instantaneous speed changes (mm/min) - (JERK)
M203 X6000 Y6000 Z500 E400 ; Set maximum speeds (mm/min)
M201 X1000 Y1000 Z1000 E250 ; Set accelerations (mm/s^2)
M204 P1000 T1000 ; Set Max acceleration for P=printing moves and T=travel moves
M906 X1600 Y1600 Z900 E1000 I30 ; Set motor currents (mA) and motor idle factor in per cent
M84 S30 ; Set idle timeout; Heaters
M143 S285 ; Set maximum heater temperature to 285C
;M305 P1 X101M305 P0 R4700 T100000 B3950 ; Set thermistor + ADC parameters for heater 0 - BED
M305 P1 R4700 T100000 B3950 ; Set thermistor + ADC parameters for heater 1 - HOTEND;M305 P0 T99600 B4388 C0 R4700 ; Set thermistor + ADC parameters for heater 0 - BED
;M305 P1 T100000 B4725 C4.891620e-7 R4700 ; Set thermistor + ADC parameters for heater 1 - HOTENDM307 H0 P96.0, I3.285, D603.9 ;Bed
M307 H1 A250 C140 D5.3 B0 S1 ;Hotend;M307 H1 P1.1, I0.011, D51.5 ;Hotend pid
;M307 H1 P17.8, I0.055, D74.9 ;Hotend E3d pid; Tools
M563 P0 D0 H1 ; Define tool 0
G10 P0 X0 Y0 Z0 ; Set tool 0 axis offsets
G10 P0 R0 S0 ; Set initial tool 0 active and standby temperatures to 0C; Network
M550 Black Widow ; Set machine name
M552 P0.0.0.0 S1 ; Enable network and acquire dynamic address via DHCP; Fans
M106 P0 S0.3 I0 F500 H-1 ; Set fan 0 value, PWM signal inversion and frequency. Thermostatic control is turned off
M106 P1 S1 I0 F500 H1 T45 ; Set fan 1 value, PWM signal inversion and frequency. Thermostatic control is turned on
M106 P2 S1 I0 F500 H1 T45 ; Set fan 2 value, PWM signal inversion and frequency. Thermostatic control is turned on; Custom settings are not configured
slicer start code.txt
M376 H5 ; probe fade level to level out the print 5mm
G21 ;metric values
G90 ;absolute positioning
M83 ;set extruder to relative mode
;;;M82 ;set extruder to absolute mode
G32 ;probe
G92 E0 ;zero the extruded length
G1 X0.0 Y50.0 Z10.0 F3600
G1 Z0.0 F1000
G1 Z0.2 Y70.0 E9.0 F1000.0 ; prime
G1 Y100.0 E12.5 F1000.0 ; prime
G92 E0 ; zero extruder again
M117 Printing...
slicer endcode.txt
M104 S0 ; turn off extruder
M140 S0 ; turn off bed
G91 ;relative positioning // Do not remove this line
G1 E-1 F300 ;retract the filament a bit before lifting the nozzle
to release some of the pressure
G1 Z+0.5 E-5 ;move Z up a bit and retract filament even more
G90 ;absolute positioning
G28 X0 ; home X axis
G1 Y210 ; move Y axis to end position
M84 ; disable motors
M107 ; turn off fan -
You are using G32 to probe the bed in your slicer start code. G32 runs macro file bed.g. What commands do you have in bed.g ?
-
; bed.g
; called to perform automatic bed compensation via G32G28 ;home all
G91 ;relative mode
G1 Z4 F200 ;move Z up 4mm for clearence
G90 ;absolute mode
M401 ;lower probe
G29 S2 ;clear bed compensation
G29 ;run auto bed mesh level
M402 ;retract probe
G1 X10 Y100 F5000 -
I can't see anything obviously wrong. What happens if you manually execute the commands in your slicer start gcode, one at a time?
-
I rams the bed at G1 Z0.0 F1000, even though that's a different position to the place it rammed it on my test print (far right).
I haven't continued with the process for fear of ramming the bed again.
My hotend Z offset is: M307 H1 A250 C140 D5.3 B0 S1
Whereas it was originally 0.9. I found that every time I did the Z0 calibration, the nozzle would always return to 5.4mm above the bed. Even if I set the physical height to 0.1, then told it to recognise it as Z0, then save it, it still would return to Z5.4 as Z0.
Maybe I've done the Z0 calibration wrong and used the wrong setting to get it there…
-
You can reduce the motor current during testing.
It sounds to me that your Z=0 height setting is not quite correct. This probably means that the trigger height of the probe is less than you have set it in config.g (it's the Z parameter in the G31 command). Have you measured the trigger height, as described here https://duet3d.com/wiki/Using_mesh_bed_compensation#Checking_the_trigger_height ?
Why are you moving the head to Z=0 anyway?
-
I rams the bed at G1 Z0.0 F1000, even though that's a different position to the place it rammed it on my test print (far right).
I haven't continued with the process for fear of ramming the bed again.
My hotend Z offset is: M307 H1 A250 C140 D5.3 B0 S1
Whereas it was originally 0.9. I found that every time I did the Z0 calibration, the nozzle would always return to 5.4mm above the bed. Even if I set the physical height to 0.1, then told it to recognise it as Z0, then save it, it still would return to Z5.4 as Z0.
Maybe I've done the Z0 calibration wrong and used the wrong setting to get it there…
M307 doesn't set the z height. What you show is the hotend heater setting.
-
You can reduce the motor current during testing.
It sounds to me that your Z=0 height setting is not quite correct. This probably means that the trigger height of the probe is less than you have set it in config.g (it's the Z parameter in the G31 command). Have you measured the trigger height, as described here https://duet3d.com/wiki/Using_mesh_bed_compensation#Checking_the_trigger_height ?
Why are you moving the head to Z=0 anyway?
I was moving the nozzle down to Z0 because I wanted to make sure Z0 meant the nozzle was no higher than 0.1mm off the bed when printing.
When I follow the Trigger Height steps through and get to Step 8, it rams the bed indefinitely: G30 S-1
Here's what I think is fundamentally wrong with the process: When I move the nozzle down to 0.1mm (paper thickness) in Step 5, it naturally triggers the BLT and it goes into Alarm Mode. Then in Step 6 I command G92 Z0 to set the Z=0. Step 7 moves the nozzle up 5mm with G1 Z5, but doesn't deploy the BLT, or release it from alarm mode. But seeing that I've told the printer what height Z0 is 5 seconds ago, it should remember. In Step 8, it doesn't remember anything about the physical height I just associated with Z0 and indefinitely rams the bed. It could ram it at say Z-5mm, or some other physical measurement, but I'm not will for the printer to cave in to find out exactly where it's going.
So between Step 5 and 8, there's no success in recording the Z height, saving the Z height, and testing it.
I've also done this process with an Auto Home prior to the trigger height calibration, moving the nozzle up to G1 Z15 in Step 7, forcing the BLT to deploy with M280 P3 S10 I1, then running Step 8 to see if the BLT is required to establish the Z0 calibration. What it does this time is trigger the BLT to Alarm Mode again, but gives me a trigger height of 4.409, or 4.41. I then put this into the Endstop setting (as seen below). Then I reset the alarm, do and Auto Home again, then run G1 Z0, it moves down to the paper thickness height I set early.
I'm still not convinced I've done this correctly seeing that I didn't follow the wiki process precisely. I also noticed that it doesn't consider the BLT, so maybe I'm looking at the wrong process for this…
; Endstops
M574 X1 Y1 Z1 S0 ; Define active low and unused microswitches
M558 P5 X0 Y0 Z1 H5 F200 T6000 ; Set Z probe type to modulated, the axes for which it is used and the probe + travel speeds
G31 X-48 Y18 Z4.41 P50 ; Set Z probe trigger value, offset and trigger height; Z-offset. Higher value LOWER nozzle height
; Lower value RAISE nozzle height -
What probe are you using? You have your Z offset set to 4.5mm
G31 X-48 Y18 Z4.5 P50
Is the probe really 4.5mm above the nozzle tip? If not, that's probably why it is crashing.
My BLTouch offset is only 1.5mm. -
I don't use BLT, but from what I have read by people who do, I don't think it should be going into alarm mode, except perhaps if you deploy it when it is too low.
-
What probe are you using? You have your Z offset set to 4.5mm
G31 X-48 Y18 Z4.5 P50
Is the probe really 4.5mm above the nozzle tip? If not, that's probably why it is crashing.
My BLTouch offset is only 1.5mm.BLTouch. I've managed to use the trigger height calibration wiki properly by inserting a higher Z setting and BLT pin release in Step 7. The BLT trigger height has to be set to 4.41, or there about, with the ANTCLABS proprietary BLT mount because it's the lead time required for triggering and nozzle height. Proximity or IR sensors simply don't require this much lead time. Retracting the nozzle by 5mm is enough to disengage these sensors but the BLT requires about 10mm or 15mm to be safe.
Like I said, I got it triggering properly and lowering to 0.1mm, but I had to improvise with the BLT pin release requirements.
I don't use BLT, but from what I have read by people who do, I don't think it should be going into alarm mode, except perhaps if you deploy it when it is too low.
What do people use for the the Z end stop then? Just about everyone who owns a Tevo converts from the standard limit sensors to BLTs, and a number of people are already using them for the Duet.
With the Marlin/MKS set up, when you do an Auto Home it finds X, Y, then Z, but when it finds Z it probes twice, releasing the pin between each of the two probes, then raises the nozzle to G1 Z10 or similar, giving the BLT probe space to trigger next time it nears the board. This separates Marlin/MKS from RepRap/Duet, because it's ready for future commands, and respects the prerequisite of the BLT. The Duet probes Z during the Auto Home, but after the BLT pin is triggered it continues to lower to a random Z height - it's not Z0, only a few millimetres above the bed, but it doesn't move back up to a height that respects the BLT for future commands or movements. I'm not sure where it's getting this measurement from - pin trigger, continue Xmm, stop. Why? This is where step-by-step process in the Duet wiki doesn't work for BLT Z test, because the BLT has to be released and precede the nozzle, unlike proximity sensors that can be set at the nozzle height or slightly above. That's why Step 7 works for these sensors and not the BLT. 1) Because the BLT isn't raised high enough, and 2) the BLT pin isn't released before running Step 8 for a trigger height value. That's the BLT update that should be included in the wiki for BLT users. Step 7 just has to say G1 Z15 for everyone, and BLT users add M280 P3 S10 I1. Then Step 8.
*Once I had established my trigger height was 4.41, there was no instruction on where to put that information as a new user. I derived that I had to go into the config.g, find the EndStop section, and change G31 X-48 Y18 Zx.xx P50 to G31 X-48 Y18 Z4.41 P50, assuming that's what I'm supposed to do. I only figured that out because the creator of the config.g file had created a comment specifying the Z setting in this line was the official Z trigger height setting.
The good thing is if I do an Auto Home directly follow an Auto Home, the RepRap/Duet does move the nozzle and BLT up a little so the BLT has enough height to trigger for the next Auto Home. Otherwise it would Auto Home too low to the bed and not be able to trigger the pin, or run straight into alarm mode, or ram the bed.
-
Ok, so you need to raise the BLT more between probing. The Duet homing files let you define the homing sequence yourself, so this is easily done. To raise it after Z homing, just put a G1 Zxxx command after the G30 commands in homez.g and homeall.g, where xxx is a suitable height.
To ensure that the head moves upwards sufficiently between probing when running G29 or G31, increase the H (dive height) parameter in the M558 command.
-
Ok, so you need to raise the BLT more between probing. The Duet homing files let you define the homing sequence yourself, so this is easily done. To raise it after Z homing, just put a G1 Zxxx command after the G30 commands in homez.g and homeall.g, where xxx is a suitable height.
To ensure that the head moves upwards sufficiently between probing when running G29 or G31, increase the H (dive height) parameter in the M558 command.
Ah, fantastic. Thanks very much for your help!