@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.