How to get around "insufficent Axes Homed?
-
What does your homing code look like?
You don't want to use M564.
What you can do is use G92 Z0 to force the Z axis to be marked as homed and set it's logical position to 0.
Frederick
-
@fcwilt Thanks, I will try G92 Z0 to force the Z axis ...
My HomeX.g:
; homex.g
; called to home the X axis
;
M400 ; Wait for motion to stop
G91 ; Use relative moves
G1 H2 X0.01 Y0.01 ; Move X a small amount to enable
M400 ; Wait for stop
G4 P200 ; Delay to allow TMC to detect stopped state
M915 p0 s20 H200 r0 ; Configure stall detect
M574 X1 S3 ; Configure X endstop
M913 X50 Y50 ; Lower X, Y and Z power
G4 P200 ; Delay to ensure settings are made
; G1 H2 Z5 F2500 ; lift Z relative to current position
g1 H1 X20 F2000 ; back away from endstop
M400 ; Wait for stop
M915 p0 s20 H200 r0 ; Configure stall detect
G4 P200 ; Delay to ensure settings are made
G1 H1 X-325 F2500 ; Move towards endstop until it stalls
M400 ; Wait until all stopped
M915 p0 s20 H200 r0 ; Configure stall detect
G4 P200 ; Delay to ensure settings are made
g1 H1 X10 F2000 ; back away from endstop
M400
M915 p0 s20 H200 r0 ; Configure stall detect
G4 P200
G1 H1 X-325 F2500 ; Move towards endstop until it stalls
M915 p0 s20 H200 r0 ; Configure stall detect to be less sensitive
M400
G1 X1 F1000 ; Move away from stop and cancel stall
M400 ; wait complete
G90 ; Absolute positioning
M913 X100 Y100 ; back to full power
;G1 H2 Z0 F2500 ; Return Z to original position
M915 P1 S20 H200 R1 ; Report any stalls -
Hi,
I don't use stall detect but I have tested it once upon a time.
Your homing code seems way more complicated then it needs to be. While I don't remember exactly what I did it wasn't anywhere near that complicated.
Perhaps someone who uses stall detect for their printer will jump in and comment.
Frederick
-
@westech said in How to get around "insufficent Axes Homed?:
G1 H2 X0.01 Y0.01 ; Move X a small amount to enable
Hm, why do you move Y in your homex.g?
-
-
@westech I have a sand table, which is not dissimilar to a pen plotter - it has X and Y, no Z, no extruder, etc.
My homez.g is just:
; homez.g ; called to home the Z axis ; echo "homez.g" G92 Z0
With respect to sensorless homing, I use that on X (but not Y). I think your homex.g has more commands than you need, but you might decide that if it's not broke don't fix it.
In particular, you don't need to keep repeating
M915 p0 s20 H200 r0
- that's a setting you can make once. Also, the lineM915 p0 s20 H200 r0 ; Configure stall detect to be less sensitive
doesn't make much sense, because you're resetting exactly the same configuration, not a less sensitive one. Finally, it may depend on your hardware, but noting that stall detection is less precise and on a plotter-type device super-sub-millimetre homing probably isn't necesary on X or Y, I don't bother with the touch-backoff-touch again dance.I use:
; homex.g ; called to home the X axis ; echo "homex.g" M574 X1 S3 ; low end X stop by motor load detection M913 X66 ; reduce motor current to two thirds standard level M915 X S40 F0 H200 R0 ; configure sensorless homing on X G4 P200 ; ensure the settings are made G91 ; relative moves G1 H1 X-400 F4000 ; move to endstop and set this as zero M913 X100 ; return to full current G90 ; return to absolute positioning
Note that I'm using slightly different hardware and the 'S' parameter in my M915 probably isn't appropriate for yours.
-
@achrn Great info! I do want to clean my homing, But it did get sensorless homing working, and I'd rather not install switches.
Do you remove or comment out in you config the Z axis and extruder? I'd like to but don't want to break things. In Marlin if you comment somethings out then these sanity checks error out.
True, I don't care about the accuracy of the homing. Just to allow my gcode to "print."
Thank
-
@westech said in How to get around "insufficent Axes Homed?:
Do you remove or comment out in you config the Z axis and extruder?
I wrote the config file from scratch, and don't have Z or extruder references.
My hardware is not Duet3D (or rip-off-of-Duet3D), so some of the hardware interfacing detail is different (like, for example, in the stall detection the range of credible S values is different). Pin names are different to Duet3D hardware. Also, it's actually a continuous rotation polar mechanism, but the firmware thinks it's a cartesian with a very long Y axis (+/- 3,600,000 long). However, I only define axes that the machine uses:
; Configuration file for Fly-E3-Pro running table ; set up with x axis as radial position in units of mm ; y axis is angular position in degrees ; config file for RRF 3.4.0RC1 M550 P"Table" ; set printer name M552 S1 ; enable wifi - DO NOT OMIT ; General preferences G90 ; send absolute coordinates ; define as cartesian kinematics but include crosstalk factor on x axis ; radial position driven by 20 tooth 2mm pitch, ; so 1 revolution (360 degrees) will move position by 40mm, or 1 degree = 1/9mm M669 K0 Y{1/9,1,0} ; Motor drives ; radial position is on driver 0 (X on board) and anticlockwise motor rotation increases radius ; angular position is on driver 3 (E0 on board) and anticlockwise motor rotation increases angle M569 P0 S0 D3 V40 ; radial physical drive 0 goes backwards using default driver timings and sensorless homing M569 P3 S0 ; angle physical drive 3 goes backwards using default driver timings M584 X0 Y3 ; map drivers to axes M350 X16 Y16 I1 ; configure microstepping with interpolation ; values for table: ; radial drive 1 rev = 200x16 steps = 20*2 = 40mm thus 80 steps/mm ; angular drive 1 rev = 400x16 steps = 16/288*360 = 20 degrees thus 320 steps/deg M92 X80 Y320 ; set steps per radius and steps/deg ; axis limits M208 X300 Y3600000 ; allow max posn up to 300mm and +10,000 revolutions M208 S1 X0 Y-3600000 ; minimum position is 0mm and -10,000 revolutions ; speeds etc M566 X600 Y360 ; max instantaneous speed changes not yet tuned M203 X20000 Y20000 M201 X1000 Y300 ; set accelerations (mm/s^2 and deg/s^2) ; motors rated current is 1330mA/phase ; typical value is 60% to 90% of the rated current - lower reduces torque, higher increase temperature ; say 75% rated = 1000mA, but while running on test PSU limit to 600 ; idle should not be very significant because mechanism does not droop, ; so set idle current low but leave timeout long so dont lose homed position M906 X600 Y600 I5 ; set motor currents (mA) and motor idle factor in per cent M84 S600 ; Set idle timeout to ten minutes ; endstops M574 X1 S3 ; low-end X stop by motor stall detection M574 Y1 S1 P"ystop" ; low-end Y stop by active-high on pin y-stop ; record processor temperature as sensor 9 M308 S9 Y"mcu-temp" A"processor" ; Tool M563 P0 ; define tool 0 T0 ; select tool 0
-
@achrn If you have a continuous rotation axis, why not setup like a CNC with an A axis. The A Axis on a CNC is generally setup for continuous rotation. You specify the degree of rotation rather than a coordinate. For homing an A axis you do what others have suggested an just set G92 A0 at the startup of the machine. For the X, you can always just manually move it to the 'Home ' position and then send a G92 X0. It shouldn't be more complicated than that.
-
@baird1fa Thanks, I think you may be mixing up two posters. I'm perfectly happy with how my machine works. On the X axis I don't want to "just manually move it to the 'Home ' position and then send a G92 X0" - I have a homex.g file that automatically moves it to the zero position and sets that as zero.
I have a mechanical coupling between the axes, so I can't actually treat it as a continuous rotation axis - the motor coordinates for a particular physical position depend on the path to get there, and I want control of the path without always segmenting it (and I'm sometimes writing the gcode by hand).
-
-
@dc42 said in How to get around "insufficent Axes Homed?:
I think it should also be possible to hide the Z axis using M584 P2, and if you hide it then it shouldn't complain that t is not homed.
That works on mine, thank you. However, you still need a homez.g (though an empty one will do) otherwise you get a warning message about its absence.
-
@achrn said in How to get around "insufficent Axes Homed?:
That works on mine, thank you. However, you still need a homez.g (though an empty one will do) otherwise you get a warning message about its absence.
Perhaps your homeall.g file includes a call to homez.g?
-
@achrn Thanks everyone. a Ton of great info. I will try in little steps all these. I found in working in Marlin, if you make too many changes at once, something breaks and you have to start over.
That is how I got my Home.g and config. they seemed to get sensorless working even though they were ugly. Now I will start trimming things back.
I had an issue because I did not have thermistors. So it complained and wouldn't setup. So I gave it a min temp of -250c. And then it was happy.:-)
Max
-
@westech said in How to get around "insufficent Axes Homed?:
I had an issue because I did not have thermistors. So it complained and wouldn't setup. So I gave it a min temp of -250c. And then it was happy.:-)
The solution for that is to declare no heaters, and declare that the tool or tools use no heaters.
-
@dc42 So, do you mean to comment those out in config or do I need a specific setting like heaters= 0.
"declare no heaters, and declare that the tool or tools use no heaters"
-
@westech if you use the online configurator to generate config.g then don't declare them.
If you want to edit an existing config.g then comment out any M307, M308 and M950 commands for the sensors and heaters that you don't have, and remove any H parameters from M563 too creation lines.
-
@dc42 Yes, you're right I still had an errant homez.g call in homeall.g. Thanks.
-
@dc42 Understood! Thanks!