Z configuration for sensors
-
Indeed, but I cannot home Z. I always have the Error: Insufficient axes homed for bed probing.
-
@Timothee-Leblond exactly. You're trying to move an unhomed axis using a move that requires a homed axis before you have homed it. I'm not surprised it's failing.
You need to go through your home z file and understand what each line is doing
-
Okay, now I get it.
Now it's moving but I cannot figure out why it's not moving to the center.
Even replacing the following variables by simple G1 X150 Y150 do not work:var xCenter = move.compensation.probeGrid.mins[0] + (move.compensation.probeGrid.maxs[0] - move.compensation.probeGrid.mins[0]) / 2 - sensors.probes[0].offsets[0] ;var yCenter = move.compensation.probeGrid.mins[1] + (move.compensation.probeGrid.maxs[1] - move.compensation.probeGrid.mins[1]) / 2 - sensors.probes[0].offsets[1]
I mean, it randomly works, sometimes yes, sometimes not...
-
@Timothee-Leblond Make sure you are in absolute mode when executing the move to the centre of the bed. In your homeall.g you posted above you have:
var xCenter = move.compensation.probeGrid.mins[0] + (move.compensation.probeGrid.maxs[0] - move.compensation.probeGrid.mins[0]) / 2 - sensors.probes[0].offsets[0] var yCenter = move.compensation.probeGrid.mins[1] + (move.compensation.probeGrid.maxs[1] - move.compensation.probeGrid.mins[1]) / 2 - sensors.probes[0].offsets[1] G91 ; relative positioning G1 X{var.xCenter} Y{var.yCenter} F1000 ; go to bed centre G90 ; absolute positioning M401 G30 ; probe the bed M402
So the move in that case will be using relative coordinates.
As was mentioned above it is much easier to just call your homex, homey homez macros from homeall it keeps things simple.
-
Thanks for your help!
Following your advice, I'm now calling my home macros in my homeall.g.
However, after changing homez according to your suggestion, I still have problems. In the following file, the printer is sending the bed on the low end (towards me) although is should go in the high end. Then, it is probing without moving to the center (X not moving). What is weird is that home XY both work as expected.; homez.g ; increase Z G91 ; relative positioning G1 H2 Z5 ; move Z relative to current position to avoid dragging nozzle over the bed G90 ; absolute positioning ; home Z ; NOTE: The following XY position is determined from the probe grid defined in the next section var xCenter = move.compensation.probeGrid.mins[0] + (move.compensation.probeGrid.maxs[0] - move.compensation.probeGrid.mins[0]) / 2 - sensors.probes[0].offsets[0] var yCenter = move.compensation.probeGrid.mins[1] + (move.compensation.probeGrid.maxs[1] - move.compensation.probeGrid.mins[1]) / 2 - sensors.probes[0].offsets[1] G1 X{var.xCenter} Y{var.yCenter} F6000 ; go to bed centre M401 G30 ; probe the bed M402 ; retract probe
In my config.g, I have the following. M574 Y2 S3 should indicate to home in the high end.
; Endstops M574 X1 S3 ; configure X axis endstop M574 Y2 S3 ; configure Y axis endstop M574 Z1 S2 ; configure Z axis endstop M915 X Y R0 F0
Home X and home Z work now:
; homex.g ; called to home the X axis ; ; generated by RepRapFirmware Configuration Tool v3.5.8 on Tue Dec 10 2024 15:03:23 GMT-0500 (Eastern Standard Time) ; increase Z G91 ; relative positioning G1 H2 Z5 ; move Z relative to current position to avoid dragging nozzle over the bed G90 ; absolute positioning M400 M913 X70 Y70 ; drop motor current to 40% -> for sensorless homing M400 ; home X G91 ; relative positioning var maxTravel = move.axes[0].max - move.axes[0].min + 5 ; calculate how far X can travel plus 5mm G1 H1 X{-var.maxTravel} F3000 ; coarse home in the -X direction G1 X5 F3000 ; move back 5mm G1 H1 X{-var.maxTravel} F1000 ; fine home in the -X direction G90 ; absolute positioning ; decrease Z again G91 ; relative positioning G1 H2 Z-5 F6000 ; move Z relative to current position G90 ; absolute positioning M400 ; Wait for current moves to finish M913 X100 Y100 ; return current to 100% -> for sensorless homing M400 ; Wait for current moves to finish
; homey.g ; called to home the Y axis ; ; generated by RepRapFirmware Configuration Tool v3.5.8 on Tue Dec 10 2024 15:03:23 GMT-0500 (Eastern Standard Time) ; increase Z G91 ; relative positioning G1 H2 Z5 ; move Z relative to current position to avoid dragging nozzle over the bed G90 ; absolute positioning M400 ; Wait for current moves to finish M913 X70 Y70 ; drop motor current to 70% -> for sensorless homing M400 ; home Y G91 ; relative positioning var maxTravel = move.axes[1].max - move.axes[1].min + 5 ; calculate how far Y can travel plus 5mm G1 H1 Y{var.maxTravel} F3000 ; coarse home in the +Y direction G1 Y-5 F3000 ; move back 5mm G1 H1 Y{var.maxTravel} F2000 ; fine home in the +Y direction G90 ; absolute positioning ; decrease Z again G91 ; relative positioning G1 H2 Z-5 F6000 ; move Z relative to current position G90 ; absolute positioning M400 ; Wait for current moves to finish M913 X100 Y100 ; return current to 100% -> for sensorless homing M400 ; Wait for current moves to finish
Would you have an idea?
-
@Timothee-Leblond Sorry it is not very clear to me what is happening. Perhaps you could make a short video of what you are seeing. I suggest that you home x then home y then home z and video all three homing operations. That will hopefully make it easier to work out what is going on. Oh and you might also want to add something like:
echo "X center", var.xCenter, "y center", var.yCenter
This should display the values in your DWC console when you run homez.g, Just to check to make sure that the x, y values are being calculated correctly.
-
Here is the answer from echo: X center -0.5 y center -0.5
I forgot to mention that my homez had been done through the RRF config tool.And here is the video:
IMG_5972.mp4What you see in the video:
-Homing X and Y work
-Homing Z is sending the bed in the wrong direction and probing is not at bed center.I also have another problem that is not visible on the video. I can't raise the Z axis more than 10 cm above the bed. The motors jam and make a lot of noise.
Hopefully you'll see what I mean. Let me know if you need further details.
-
UPDATE:
I tried tweaking the var commands it seems that the following are much better:
var xCenter = (move.axes[0].min + move.axes[0].max) / 2 - sensors.probes[0].offsets[0] var yCenter = (move.axes[1].min + move.axes[1].max) / 2 - sensors.probes[0].offsets[1]
At least, X and Y are now moving to a point on the bed. It is not the center but maybe it comes from the offset settings.. Do you know how to deal with this? Would you also have an idea why I cannot raise Z much?
-
@Timothee-Leblond said in Z configuration for sensors:
UPDATE:
I tried tweaking the var commands it seems that the following are much better:
var xCenter = (move.axes[0].min + move.axes[0].max) / 2 - sensors.probes[0].offsets[0] var yCenter = (move.axes[1].min + move.axes[1].max) / 2 - sensors.probes[0].offsets[1]
At least, X and Y are now moving to a point on the bed. It is not the center but maybe it comes from the offset settings.. Do you know how to deal with this? Would you also have an idea why I cannot raise Z much?
The current endstop configuration behavior is that when endstop is triggered during a G1 H1 move the current axis position is set to axis min or axis max, depending on where the endstop is located.
The problem for me has always been is that the endstops are never located so that they trigger exactly at axis min or axis max.
So for an X axis with min of -100 and max of 100 the G1 H1 position may end up being X=100 when the endstop actually triggered at X=90.
I end up have to adjust things in my homing files by doing a G91 G1 move that results in the axis being at the center of the bed and then doing a G92 X0 or G92 Y0 so that the logical position matches the physical position.
Frederick
-
-
@Timothee-Leblond said in Z configuration for sensors:
Hi Frederick,
I like your approach. Could you please show a test file?
Thank you,
TIM
Assume the X endstop is at max end and triggers exactly at X=90 and the axis range is -100 to 100.
G91 ; relative moves G1 H1 X210 F6000 ; fast move to endstop G1 X-20 ; backoff a bit G1 H1 X25 F300 ; slow move to endstop ; now at this point the logical position is X=100 even though the physical position is X=90 G1 X-90 ; move to physical X=0 G92 X0 ; sync logical and physical positions