@fcwilt
That is true. My bad.
I use
G1 Xnn Ynn
G30
I forget that it is two commands. I will update my post. Thanks for pointing that out.
@fcwilt
That is true. My bad.
I use
G1 Xnn Ynn
G30
I forget that it is two commands. I will update my post. Thanks for pointing that out.
@zemlin said in Two identical printers - different print speeds:
N2
M566 X400.00 Y400.00 Z100.00 E400.00:400.00 ; set maximum instantaneous speed changes (mm/min)
N2+
M566 X400.00 Y400.00 Z100.00 E400.00:400.00 P1 ; set maximum instantaneous speed changes (mm/min)
I found the following from M566 Gcode-Duet3D. N2 uses the default policy 0 and N2+ uses policy 1. This could account for some small differences in speed.
The default jerk policy is 0, which replicates the behaviour of earlier versions of RRF (jerk is only applied between two printing moves, or between two travel moves, and only if they both involve XY movement or neither does). Changing the jerk policy to 1 allows jerk to be applied between any pair of moves.
If you run the 3point calibration multiple time it should return a smaller deviation each time hence the reason I use a while loop and an if statement to check the deviation value. It will continue to run until it passes the tolerance set by the if statement.
You could put this code in a macro and run it multiple time to see how small you can get the deviation.
G30 P0 X40 Y80 Z-99999 ; Probe near the front left lead-screw
G30 P1 X215 Y395 Z-99999 ; Probe near the rear lead screw
G30 P2 X415 Y80 Z-99999 S3 ; Probe near the front right lead-screw
Though I have changed all of it, I get that it could still be a BLTouch issue or a wiring issue and have nothing to do with the Duet but the firmware should halt the Z when it knows the probe has failed. I find it odd that it doesn’t, though it is entirely possible I just haven’t found how to make it do so yet.
You can check for BLTouch sensor error before probing to detect some errors.
if sensors.probes[0].value[0]!=1000 ; if probe is not in error state
M291 P"BLTouch ready to use" S1 T2
G30
@Phaedrux said in RRF3.2Beta4.1 Heightmap vs. Spindle/Driver Mapping:
M671 defines the position of the lead screws
The order must match the order of the motors defined in M584
In bed.g you probe as close to the lead screws as you can in the same order as the lead screws are defined.
Have you verified these settings are correct and the motors are positioned in the same order in the M671 as in the M584?
@Frederik
Add an M291 between the M409 and the if statement. I have updated the macro below with this
M291 P{move.calibration.initial.deviation} S3
Based upon these values
M208 X0 Y0 Z0 S1 ; set axis minima
M208 X415 Y395 Z400 S0 ; set axis maxima
G10 P0 X0 Y0 Z0 ; set tool 0 axis offsets
the nozzle should be considered at x0 y0 and the BLTouch at x-38 y-10 in the comment below.
when my printhead is homed at x0 y0 (left front corner) the bltouch is around x-3 y-2
the nozzle x35 y8
This
G31 P1000 X0 Y0 Z0.81 ; BLTouch offset
should be updated to this
G31 P1000 X-38 Y-10 Z0.81 ; BLTouch offset
For M671 move the tool head to the position indicated by the (1) of x0 y(align the nozzle to the spindle). Measure from the center of the nozzle to the center of the spindle and subtract that number from x0. The Y value will be the Y position as indicated by the DWC tool position.
Next move tool head to position 2 of x(align the nozzle to the spindle) y395. Measure from the center of the nozzle to the center of the spindle and add that number to y395. The X value will be the X position as indicated by the DWC tool position.
Next move tool head to position 3 of x415 y(align the nozzle to the spindle). Measure from the center of the nozzle to the center of the spindle and add that number to x415. The Y value will be the Y position as indicated by the DWC tool position.
Update the M671 with the values collected from the above steps.
M671 X0:215:450 Y80:450:80 S5 ; Position of Leadscrews
Next copy your first G30 command from the 3point calibration
G30 P0 X40 Y80 Z-99999
to the console and send it the printer. Once the command has finished record the tool position as indicated by the DWC. Use this x and y value in a G1 x## y## command at the beginning of the 3point calibration followed by G30 to set the z height.
Update the 3point calibration macro to something like
M203 Z100 ; set a low z max speed to increase accuracy. Run multiple G30 S-1 to determine the speed needed to achieve the accuracy you need.
G28
while true
G1 X## Y## ; enter the tool position as indicated by the DWC after running the first G30 command in the 3point calibration
G30 ; sets the first point of the 3point calibration as Z0
G30 P0 X40 Y80 Z-99999 ; Probe near the front left lead-screw
G30 P1 X215 Y395 Z-99999 ; Probe near the rear lead screw
G30 P2 X415 Y80 Z-99999 S3 ; Probe near the front right lead-screw
M409 K"move.calibration.initial.deviation" ;displays deviation in console
M400 ; wait for move to complete
M291 P{move.calibration.initial.deviation} S3 ;displays deviation value
if move.calibration.initial.deviation <= 0.001 ; change the 0.001 to your needed value
echo "Passed"
M203 Z1000 ; set this z max speed to match your config file. Note if you cancel this macro by selecting the cancel button on the M291 message box this command will not run. You will need to run this command from the console to restore the max z speed
break
continue
Follows these steps above to double check all your setting are correct. Lets the 3point calibration macro run until the deviation no longer decreases and post the results.
@Phaedrux
This is my understanding of the calibration process for 3 motor Z axis calibration.
If something is not correct please update it. This is the process I used to set mine up and it works perfectly.
Edit: {
Added M203 to start and end of macro to increase probe accuracy.
@3dML said in RRF3.2Beta4.1 Heightmap vs. Spindle/Driver Mapping:
@Frederik
I have found that slowing down the maximum Z speed can help with tolerance.
}
@Veti
Create a macro and call it at layer change. Much easier to update the macro instead of slicing the file for every change.
You can call macros from the macro folder using the full file location similar to
M98 P"0:/macros/Calibrate Things"
Put something similar to this in the macro. Again this particular code is untested.
If mod(layer_z,5)==0
M572 D0 S{layer_z*0.005}
echo {move.axes[2].userPosition} ; change 2 in axes[2] to the z axis for your machine
echo {layer_z*0.005}
This will report the the z height and the PA value every time it changes.
@button
There are so many variables it is hard to say. As speed increases every printer setting becomes more important.
I may be wrong but the fact that slowing down fixes the problem make me think it is related to speed and temperature. The only way I found to clean up my print was to slow down also. I got to the point in the test print pictured above that I no longer had accurate enough control over the fan speed. Either the print drooped from too much heat or was cooled too much as in the picture.
I have not printed with ASA but ABS is similar. With ABS the previous layer needs to be above glass transition temp to stick properly. The hotter the better as long as the part is not deforming from heat is my philosophy. As you said at lower speed with too much cooling the layer doesn't stick. At higher speed you will have a point where the filament doesn't stick but because of speed and building pressure caused by the nozzle dragging the filament along with it the previous layer heats enough that the filament sticks all in one glob. This can happen repeatedly over very short distances. It is possible that flex in the X axis lets the nozzle oscillate at higher speeds also compounding the problem.
Another possibility for keeping the previous layer at a higher temp is to increase the layer height.
This is only an experience I had that looks similar to yours not necessarily your problem.
If the layers with the artifacts look similar to this it is caused by excessive cooling.
@dc42
Will it work to connect the PWM wire from a 4 wire 12v fan to a heater control outputs on the expansion connector?
@Veti
Create a macro and call it at layer change. Much easier to update the macro instead of slicing the file for every change.
You can call macros from the macro folder using the full file location similar to
M98 P"0:/macros/Calibrate Things"
Put something similar to this in the macro. Again this particular code is untested.
If mod(layer_z,5)==0
M572 D0 S{layer_z*0.005}
echo {move.axes[2].userPosition} ; change 2 in axes[2] to the z axis for your machine
echo {layer_z*0.005}
This will report the the z height and the PA value every time it changes.
@fcwilt
That is true. My bad.
I use
G1 Xnn Ynn
G30
I forget that it is two commands. I will update my post. Thanks for pointing that out.
@t0bias
Use a
G1 Xnnn Ynnn
G30
where X and Y is the tool position of the first probe point not the probe position as G30
does not use the G31 probe offset
and G30 Pnnn
does.
This will set the first probe point height to 0 to minimize the lead screw compensation.
After lead screw compensation rehome at the normal location to set Z offset.
Edit: Also add a G29 S2
at the beginning of the file to clear Height Map before bed leveling. Reenable Height Map with a G29 S1
at the end of the file.
Update: Corrected the first G30 as stated in a later post.
@Frederik
My guess is excessive force got applied to the center of the bed at some point and the nature of the L brackets with a single bolt allowed them to swivel inward creating the bend in the bed along the Y axis. I don't have any experience with that style of bed mount so not sure what would be the best recommendation for mounting.
@Frederik
Post a picture of the current mount you are using to mount the bed to the z sub-frame. If you are using the mounts I think you are they may be be the cause of sum of the sag.
@Frederik
The drawing looks correct. My above post still applies.
Based on these values
M208 X0 Y0 Z0 S1 ; set axis minima
M208 X415 Y395 Z400 S0 ; set axis maxima
G10 P0 X0 Y0 Z0 ; set tool 0 axis offsets
all offsets are relative to nozzle position with the tool at x0 y0.
Base on that drawing and your height map I'd say the bed has a large sag along the Y axis.
In this image your 3point calibration deviation is close to 0 but the sag in the bed is causing the skew in the Heightmap.
@Frederik
Add an M291 between the M409 and the if statement. I have updated the macro below with this
M291 P{move.calibration.initial.deviation} S3
Based upon these values
M208 X0 Y0 Z0 S1 ; set axis minima
M208 X415 Y395 Z400 S0 ; set axis maxima
G10 P0 X0 Y0 Z0 ; set tool 0 axis offsets
the nozzle should be considered at x0 y0 and the BLTouch at x-38 y-10 in the comment below.
when my printhead is homed at x0 y0 (left front corner) the bltouch is around x-3 y-2
the nozzle x35 y8
This
G31 P1000 X0 Y0 Z0.81 ; BLTouch offset
should be updated to this
G31 P1000 X-38 Y-10 Z0.81 ; BLTouch offset
For M671 move the tool head to the position indicated by the (1) of x0 y(align the nozzle to the spindle). Measure from the center of the nozzle to the center of the spindle and subtract that number from x0. The Y value will be the Y position as indicated by the DWC tool position.
Next move tool head to position 2 of x(align the nozzle to the spindle) y395. Measure from the center of the nozzle to the center of the spindle and add that number to y395. The X value will be the X position as indicated by the DWC tool position.
Next move tool head to position 3 of x415 y(align the nozzle to the spindle). Measure from the center of the nozzle to the center of the spindle and add that number to x415. The Y value will be the Y position as indicated by the DWC tool position.
Update the M671 with the values collected from the above steps.
M671 X0:215:450 Y80:450:80 S5 ; Position of Leadscrews
Next copy your first G30 command from the 3point calibration
G30 P0 X40 Y80 Z-99999
to the console and send it the printer. Once the command has finished record the tool position as indicated by the DWC. Use this x and y value in a G1 x## y## command at the beginning of the 3point calibration followed by G30 to set the z height.
Update the 3point calibration macro to something like
M203 Z100 ; set a low z max speed to increase accuracy. Run multiple G30 S-1 to determine the speed needed to achieve the accuracy you need.
G28
while true
G1 X## Y## ; enter the tool position as indicated by the DWC after running the first G30 command in the 3point calibration
G30 ; sets the first point of the 3point calibration as Z0
G30 P0 X40 Y80 Z-99999 ; Probe near the front left lead-screw
G30 P1 X215 Y395 Z-99999 ; Probe near the rear lead screw
G30 P2 X415 Y80 Z-99999 S3 ; Probe near the front right lead-screw
M409 K"move.calibration.initial.deviation" ;displays deviation in console
M400 ; wait for move to complete
M291 P{move.calibration.initial.deviation} S3 ;displays deviation value
if move.calibration.initial.deviation <= 0.001 ; change the 0.001 to your needed value
echo "Passed"
M203 Z1000 ; set this z max speed to match your config file. Note if you cancel this macro by selecting the cancel button on the M291 message box this command will not run. You will need to run this command from the console to restore the max z speed
break
continue
Follows these steps above to double check all your setting are correct. Lets the 3point calibration macro run until the deviation no longer decreases and post the results.
@Phaedrux
This is my understanding of the calibration process for 3 motor Z axis calibration.
If something is not correct please update it. This is the process I used to set mine up and it works perfectly.
Edit: {
Added M203 to start and end of macro to increase probe accuracy.
@3dML said in RRF3.2Beta4.1 Heightmap vs. Spindle/Driver Mapping:
@Frederik
I have found that slowing down the maximum Z speed can help with tolerance.
}