Z configuration for sensors
-
And the MicroProbe is responding to M401 and M402?
I was never able to get that working. I will try testing my setup again.
Unrelated but possibly of interest:
In your homing files you have
M400 M913 M400
As far as I know they are serving no purpose.
Also for your "coarse" and "fine" homing moves you have the same F values. Normally the "fine" move is done at a much slower speed. I don't see the need to do the same move twice if they are at the same speed.
Waiting for verification that M401/M402 are working for you.
Thanks, Frederick
-
@Timothee-Leblond you should be using G30 moves to home z, not G1 H1 Z
-
-
So should I replace every G1 by G30 in my homez?
-
@Timothee-Leblond https://docs.duet3d.com/User_manual/Connecting_hardware/Z_probe_BLTouch#configuration-1
See here for an example home all and homez file -
It looks like what I made initially?
I have a G1 going to center followed by a G30. -
@Timothee-Leblond said in Z configuration for sensors:
M950 P0 C"out6"
This should be io6.out not out6 I believe.
Are you sure M401 and M402 are working to retract and deploy the pin? What do you have in your deployprobe.g and retractprobe.g files?
M558 P9 H10 F250:30 T8000 C"^!io6.in"
Your trigger pin is also inverted with the ! , which might lead to the probe triggering before it's even deployed. Are you sure it needs to be inverted?
-
I confirm M401/M402 are working with M950 P0 C"out6". On the contrary, it is not using M950 P0 C"io6.out".
Deploy
; deployprobe0.g ; called to deploy a physical Z probe ; ; generated by RepRapFirmware Configuration Tool v3.5.8 on Tue Dec 10 2024 15:03:23 GMT-0500 (Eastern Standard Time) M42 P0 S1 ; Deploy probe G4 P500 ; Pause for 500ms to ensure deployment
retract
; retractprobe0.g ; called to retract a physical Z probe ; ; generated by RepRapFirmware Configuration Tool v3.5.8 on Tue Dec 10 2024 15:03:23 GMT-0500 (Eastern Standard Time) M42 P0 S0 ; Retract probe G4 P500 ; Pause for 500ms
I'm using a BTT not a BlTouch, and it is advised to use ^!io6. in apparently.
-
@Timothee-Leblond said in Z configuration for sensors:
I'm using a BTT not a BlTouch, and it is advised to use ^!io6. in apparently.
understood.
Can you show a photo of your probe wiring at the board?
When you send G30 manually, the Z axis moves, but the probe does not deploy? But M401/M402 do work?
-
First of all, when I send G30 it says: "Error: G30: Insufficient axes homed for bed probing".
When I try homing, I regularly have the same problem.
Right now, when I home all, the X bumps into the wall with a noise, the probe deploys, retracts then deploys and I then have that error message again without the Y being homed.I know my first problem may be due to the stall detection and sensorless homing through M915 in config.g. I've been trying to set it up but I still have some problems.
M915 X Y S10 R1 F1 H2 ; set sensorless homing
The wiring had been thanks to an other discussion here: https://forum.duet3d.com/topic/37443/wiring-biqu-microprobe-to-duet-rototoolboard/43
-
Are you able to home X and Y independantly successfully?
Need to get that sorted first. If you want to pretend the axis are homed, you can move them manually to the correct location and then send G92 X0 Y0 to force the axis to be homed and at that position.
You can try adding M401 and M402 commands to deploy/retract the probe right before and after you send G30 in your homing files.
-
For X, homing is making a noise bumping the wall but it seems to work.
For Y, I have no problem homing it.However, the home all is problematic.
Sending M92 X0 Y0 before homing Z gives the same Error answer.
I already have M401/M402 in my homing files before and after G30. -
Can you share your most up to date homing files?
Can you capture and share the exact error messages you get and exactly when?
-
Sure:
homeall:
; homeall.g ; called to home all axes ; ; 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 F6000 ; move Z relative to current position to avoid dragging nozzle over the bed G90 ; absolute positioning ; home XY M400 M913 M400 var xTravel = move.axes[0].max - move.axes[0].min + 5 ; calculate how far X can travel plus 5mm var yTravel = move.axes[1].max - move.axes[1].min + 5 ; calculate how far Y can travel plus 5mm G91 ; relative positioning G1 H1 X{-var.xTravel} Y{var.yTravel} F4000 ; coarse home in the -X and -Y directions G1 H2 X5 Y5 F4000 ; move back 5mm G1 H1 X{-var.xTravel} Y{var.yTravel} F1000 ; fine home in the -X and -Y directions G90 ; absolute positioning M400 M913 M400 ; home Z 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
homex:
; 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 X40 Y40 ; 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:
; 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 X40 Y40 ; 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 Y5 F3000 ; move back 5mm G1 H1 Y{var.maxTravel} F1000 ; 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
homez:
; homez.g ; called to home the Z axis ; ; generated by RepRapFirmware Configuration Tool v3.5.8 on Tue Dec 10 2024 15:03:23 GMT-0500 (Eastern Standard Time) ; ################# Home Z Preparation ################ G91 ; Relative mode G90 G1 Z10 F3000 ; Move Z up 10mm to ensure clearance 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} F4000 ; go to bed centre ; Back to absolute positioning M401 G30 M402 ; retract probe
config.g:
; Default config.g template for DuetPi ; Replace this with a proper configuration file (e.g from https://configtool.reprapfirmware.org) ; Display initial welcome message M291 P"You are operating an SBC image in standalone mode. Please see <a href=""https://www.duet3d.com/StartHere"" target=""_blank"">here</a> further information." R"Welcome to your new Duet 3!" S1 T0 ; Enable PanelDue M575 P1 B57600 S1 ; Enable network ; M552 P0.0.0.0 S1 ; Configuration file for RepRapFirmware on Duet 3 Mini 5+ Ethernet ; executed by the firmware on start-up ; ; generated by RepRapFirmware Configuration Tool v3.5.8 on Fri Dec 13 2024 08:59:52 GMT-0500 (Eastern Standard Time) ; General G90 ; absolute coordinates M83 ; relative extruder moves M550 P"Duet 3" ; set hostname M915 X Y S10 R1 F1 H2 ; set sensorless homing M302 P1 ; Allow cold extrusion ; Accessories M575 P1 S0 B57600 ; configure PanelDue support ; Wait a moment for the CAN expansion boards to become available G4 S2 ; Smart Drivers M569 P0.0 S1 D3 V188; driver 0.0 goes forwards (X axis) -> D3 is for stealthChop mode = enable stall detection M569 P0.1 S1 D3 V188; driver 0.1 goes forwards (Y axis) -> D3 is for stealthChop mode = enable stall detection M569 P0.2 S1 D2 V188; driver 0.2 goes forwards (Z axis) -> D3 is for stealthChop mode = enable stall detection M569 P121.0 S0 D2 ; driver 20.0 goes forwards (extruder 0) ; Motor Idle Current Reduction M906 I30 ; set motor current idle factor M84 S30 ; set motor current idle timeout ; Axes M584 X0.0 Y0.1 Z0.2 ; set axis mapping M350 X16 Y16 Z16 I1 ; configure microstepping with interpolation M906 X800 Y800 Z800 ; set axis driver currents M92 X80 Y80 Z400 ; configure steps per mm M208 X-6:310 Y0:310 Z-5:405 ; set minimum and maximum axis limits M566 X900 Y900 Z12 ; set maximum instantaneous speed changes (mm/min) M203 X6000 Y6000 Z180 ; set maximum speeds (mm/min) M201 X500 Y500 Z20 ; set accelerations (mm/s^2) ; Extruders M584 E121.0 ; set extruder mapping M350 E16 I1 ; configure microstepping with interpolation M906 E800 ; set extruder driver currents M92 E100 ; configure steps per mm M566 E120 ; set maximum instantaneous speed changes (mm/min) M203 E3600 ; set maximum speeds (mm/min) M201 E250 ; set accelerations (mm/s^2) ; Kinematics M669 K0 ; configure Cartesian kinematics ; Probes M950 P0 C"out6" ; Set servo output on Mini 5+ M558 P9 H30 F250:30 T8000 C"^!io6.in" ; Set probe input to IO_6 on Mini 5+ G31 P500 X0 Y0 Z20 ; set Z probe trigger value, offset and trigger height ;M950 S0 C"121.io0.out" ; Set servo output on Rototoolboard ;M558 P9 H6 F250:30 T8000 C"^!121.io0.in" ; Set probe input to IO_0 on Rototoolboard ;G31 P500 X0 Y0 Z0 ; set Z probe trigger value, offset and trigger height ; Endstops M574 X1 S3 ; configure X axis endstop M574 Y1 S3 ; configure Y axis endstop M574 Z1 S2 ; configure Z axis endstop M915 X Y R0 F0 ; Tools M563 P0 S"MainExtruder" D0 ; create Tool 0 using Extruder Drive 0 G10 P0 S0 R0 ; set Tool 0 active and standby temperatures to 0 T0 ; select Tool 0 at startup
I had the error: Error: G30: Insufficient axes homed for bed probing when trying to home all axes at the same time. For some reasons after I restarted the printer, I seem I no longer have it.
However, when I home all or home Z or send G30, the extuder gets all the way down ignoring the probe, hitting the bed. When I manually activate the pin of the probe before it reaches bed, this error appears: Error: G4: Probe already triggered at start of probing move.On top of that, it is not going to the center of the bed before probing and my X axes make a noise when homing which I can't solve.
-
For the sake of simplicity and not duplicating code this is how I code homeALL.g.
M98 P"homeZ.g" M98 P"homeY.g" M98 P"homeX.g"
You can change the order as best for your printer.
Frederick
-
@fcwilt
Thanks for the tip, I'll do that in the future.But I'm not sure it will solve my problem right?
-
@Timothee-Leblond said in Z configuration for sensors:
@fcwilt
Thanks for the tip, I'll do that in the future.But I'm not sure it will solve my problem right?
No, nothing to do with your problem - it just makes things a bit simpler in that if you make a change to homing code for one axis (X Y or Z) you don't need to make the same change to homeALL.g
Frederick
-
This is smart, thank you though!
-
I'm kind of at a loss for your probe issue. It's confusing why M401 would work to deploy the pin manually but not during the homing move.
Have you tried manually positioning he probe at the center of the bed and then sending M401 and G30 to deploy and start probing?
-
@Timothee-Leblond what happens if you do the following:
- Position the probe a long way above the bed.
- Either home X and Y, or send e.g. G92 X0 Y0 to make RRF consider that X and Y have been homed.
- Send M401 and check that the probe deploys.
- Send G30. Before the probe pin touches the bed, manually push it up to trigger the probe.
- If the probing move doesn't stop, turn the printer off to prevent the probe crashing into the bed.
If at step 4 RRF reports that the probe is already triggered at the start of the probing move, that means you need to use C"io6.in" instead of C"!io6.in" . Either way, don't include the ^ character because that will reduce the noise margin.