Homing to Z-max when also using a Z-probe?



  • Mechanics: Ultimaker 2 machine. Ie 1 Z-motor with Z-max endstop.

    I want to be able to home to Z-max before and after a print. Then go to Z=10 before a new print to start probing.

    I've used sensor for different machines with 2 and 3 z-motors where I've used M584 to create virtual axes and just home to U-max (on 2x Z), state a new Z and that's working..
    But I can't do it here.
    On the 3x Z machine it homes automatically to Z-max before doing the 3-point probe, so I guess it must be possible to use Z-endstop even if a probe is used on that axis as well?

    I'm not used to just 1 Z-motor, and this is causing me some issues it seems.

    How do I either make it home to Z-max before a probe?
    or
    Create a virtual U which uses the Z-max endstop?
    This last one is what I've tried so far, but for some reason it just does't want to use the Z-max. It's always read as triggered even when it isnt?


  • administrators

    Just configure M584 to specify a high end Z endstop switch, and set up your homez.g and homeall.g files to home using that endstop instead of the Z probe.



  • I'm not sure I follow you on the M584, when I don't use virtual axes?
    My Endstops look like:

    [[language]]
    M574 X1 Y2 S1               		; X home to min. Y home to max. Define active high microswitches
    M574 Z1 S2				; Define Z to use Probe. Home to Min
    M558 P5 H5 F500 T4000 X0 Y0 Z1		; Set Z probe type/mode 5\. H=Dive Height. F=Speed it proves
    
    

    Sensor setup:

    [[language]]
    G31 P25 X0 Y-28 Z0.8	  		; Z probe trigger value, offset in relation to nozzle. And trigger height adjustment
    M557 X5:205 Y5:165 S10                	; Define mesh grid
    
    ``` **Current function level:**
    It does work now with the G28 XY and then G30 with a prior mesh-sequence. It just take forever to slowly raise the bed up to the nozzle since I don't know where Z is at.


  • @dc42:

    Just configure M584 to specify a high end Z endstop switch, and set up your homez.g and homeall.g files to home using that endstop instead of the Z probe.

    I don't know how to setup Z to home using Z-max endstop when the Z axis is configured to be using the probe on Z-min?


  • administrators



  • If it helps I do this with my corexy. The bed homes to the bottom of the machine (I. E. High end of z axis on corexy) on a microswitch. That's the default homeZ behaviour.

    But it also has (several usually) z probes attached. Whichever one is active then comes into play when I send a G30 or G29 or G32 or anything "proby". ๐Ÿ™‚

    The two schemes work nicely alongside one another there are no real conflicts.



  • @DjDemonD:

    If it helps I do this with my corexy. The bed homes to the bottom of the machine (I. E. High end of z axis on corexy) on a microswitch. That's the default homeZ behaviour.

    But it also has (several usually) z probes attached. Whichever one is active then comes into play when I send a G30 or G29 or G32 or anything "proby". ๐Ÿ™‚

    The two schemes work nicely alongside one another there are no real conflicts.

    G32 has build in "I want to home to Z-max first" to determine Z-space.. G29 does not and I can't get it to work. As stated

    If they work so well, why don't you help by solving the config problem instead of telling me it works, but not helping getting it working?



  • @dc42:

    https://duet3d.dozuki.com/Wiki/ConfiguringRepRapFirmwareCartesianPrinter#Section_Homing_Z

    You missed my problem.
    I obviously know how to do a basic homing sequence!
    Problem is, as I stated, the Z-max endstop is simply acting disabled as soon as I define Z to use Probe on Z-min

    You told me to use M584 to solve it?

    I guess it has something to do with how the Endstops has been configured, so I wrote them out for you at the top.
    I'll put them here again:
    My Endstops look like:

    [[language]]
    M574 X1 Y2 S1               		; X home to min. Y home to max. Define active high microswitches
    M574 Z1 S2				; Define Z to use Probe. Home to Min
    M558 P5 H5 F500 T4000 X0 Y0 Z1		; Set Z probe type/mode 5\. H=Dive Height. F=Speed it proves
    
    ```**Sensor setup:**
    

    [[language]]
    G31 P25 X0 Y-28 Z0.8 ; Z probe trigger value, offset in relation to nozzle. And trigger height adjustment
    M557 X5:205 Y5:165 S10 ; Define mesh grid

    It does work now (at this moment) with the G28 XY (but not to Z max) and then G30 with a prior mesh-sequence.
    It just take forever to slowly raise the bed up to the nozzle since I don't know where Z is at.
    
    When I configure Z to use Probe, which is Z-min the endstop at Z-max stops working.
    If I change Z endstop to Z2, then probe does not work.
    When doing G29 it does not recognize Z-max endstop. It is disabled.


  • I belive the cruz of the problem might be this line:

    [[language]]
    M574 Z1 S2				; Define Z to use Probe. Home to Min
    
    ```But I don't see how I can change the Z1 to make the Z-max (Z2) endstop working and retain the function of my probe?
    
    Just odd as G32 (3-point probe for autolevel on my xBot) homes by itself to Z-max before it probes anything, while G29 doesn't care about the Z-space.

  • administrators

    The Z probe works independently of the Z endstop configuration. Use M574 Z2 S0 or S1 depending on the type of endstop switch.

    S2 in M574 is really intended for machines that use the Z probe to home X or Y, such as the Ormerod.



  • Dintid - So the way I do it is home to z max using the microswitch. I know the approximate height minus a small amount for safety. I send G92 Z180. Then move to Z10 and send G30 using whatever z probe I have mounted. Now the firmware knows the exact z position. Then I use G29 to grid level. Job done.

    So I apologise if I did not realise G32 goes to z max before probing and this is a problem for your setup as I rarely use it, and I apologise if I wrongly stated that I did. Would homing Z using G28 Z or G28 (all) before G32 work, presuming basic Z homing to a max switch was configured correctly? However:

    1. my statement above was meant as encouragement rather than a solution as it seemed David had provided the answer. If he had not then I appreciate it might have been annoying.

    2. I am not a paid support tech for Duet3d, although I am friendly with them, use their products and spend a considerable amount of my free time helping people on this forum. So I don't have to help you solve your problem and don't particularly appreciate being criticised for not getting to the core of it straightaway.


  • administrators

    G32 will only home first if you have a G28 command in your bed.g file.



  • @dc42:

    G32 will only home first if you have a G28 command in your bed.g file.

    That's what I thought.



  • @dc42:

    The Z probe works independently of the Z endstop configuration. Use M574 Z2 S0 or S1 depending on the type of endstop switch.

    S2 in M574 is really intended for machines that use the Z probe to home X or Y, such as the Ormerod.

    Hello DC42, Thank you again for answering.

    While I'd like to beleive what you said, the fact is that my Z-max endstop simply stops working as soon as I list Z axis as being using a probe:

    [[language]]
    M574 Z1 S2
    
    ```This might be intentional, but it is very frustrating and I simply just hope to get a code snippet or some work around as I simply _must_ get it to be able to also home to Z-max. Ie, have the Z-max endstop active.
    
    My machine is using the probe to home Z to minimum, but I must have my machine to be able to home to Z-max also, before homing to Z.
    
    My machine is an Ultimaker style machine, where we home to Z-max typically.
    
    Without the z-max endstop functioning we have to home very, very slooowly to Z-min so as not to crash into our sensor/nozzle.
    With the z-max endstop we can first home to Z-max (now our machine knows where it is a), then quickly go back to Z10 and do the last few mm slowly.
    
    On my other machine (the xBot-Medium, with autolevel) this works fine. I use G32 and it requires a z-endstop to be in place to work at all, but on this single z-machine I'm loading mesh and then do a G30\.
    
    On the G30 machine I can't get the Z-max endstop to work. I've tried making virtual axis U, but the Z-max always just reads as triggered and does not change state regardless of what I do.


  • @dc42:

    G32 will only home first if you have a G28 command in your bed.g file.

    I don't understand this solution?
    How would I make use of bed.g to make it home to Z-max first?
    I thought I didn't need bed.g at all when doing a mesh (G29) and then just a single probe G30 before each print.

    I am using bed.g to do 3-point autolevel probe on the G32 machine.

    I have read everything I could find on wiki, so please don't just linkdrop me.



  • @DjDemonD:

    Dintid - So the way I do it is home to z max using the microswitch. I know the approximate height minus a small amount for safety. I send G92 Z180. Then move to Z10 and send G30 using whatever z probe I have mounted. Now the firmware knows the exact z position. Then I use G29 to grid level. Job done.

    So I apologise if I did not realise G32 goes to z max before probing and this is a problem for your setup as I rarely use it, and I apologise if I wrongly stated that I did. Would homing Z using G28 Z or G28 (all) before G32 work, presuming basic Z homing to a max switch was configured correctly? However:

    1. my statement above was meant as encouragement rather than a solution as it seemed David had provided the answer. If he had not then I appreciate it might have been annoying.

    2. I am not a paid support tech for Duet3d, although I am friendly with them, use their products and spend a considerable amount of my free time helping people on this forum. So I don't have to help you solve your problem and don't particularly appreciate being criticised for not getting to the core of it straightaway.

    Seems you got confused now.
    The machine in question is a single z-axes machine using G30 to probe. It has disabled max endstop. This is what I want solved as my other machine, where I use G32 it requires a z-max to be in place - this one works perfectly.

    Your setup:
    You start by manually defining a position for Z, then move to Z10, and then home.
    This is what I want, except I want it to do so automatically by homing first to Z-max (then it knows where it is at) then go back to Z10 and home using G30.
    But using G30 the endstop is completely disabled. Can't even use virtual axes.

    On my other machine, using 3x z-axes I use bed.g to do a 3point autoevel probe and it requires a home to max as a part of G32. It even warns me that I must have a Z max endstop in place.

    The machine in question is just a basic Ultimaker2 mechanical machine type, where I just use G29 to generate a mesh and a single probe using G30.

    About your #2.. seriously, there are just so many people stating all the time that it's sooo easy to do this or that, but they never ever come up with actual solutions. In other words, they just pop in to gloat/brag about their own working machines, but never comes up with any form of help.. when you poke them about it, they always get rather upset and telling me they do it for freeโ€ฆ
    I dupped you as one of those for obvious reasons, but I did not critize you but rather question your reasons for posting the way you did.
    Try looking at it from this side of the screen, no?



  • Here is the machine where it's working.
    Notice how it homes to Z-max first and THEN go back.. I want this to be possible when using G30 as well.
    Edit: I'm using axis U as Z is used for the probe, but this approach does not work on the machine with just 1 z-motor with G30
    https://youtu.be/2u84rC4EA7Y



  • My corexy works exactly as you want your machine to. I'll make a video later of it doing it, and share the config I use. I am not confused and this forum is about the most helpful, polite and genuine one you'll come across. I can see you have an annoying problem but getting grumpy with the people who can help you solve it isn't going to help.



  • Okay so this is my homez.g

    ;z max homing to switch

    G91
    G1 Z240 F1000 S1
    G92 Z162
    G1 Z-4 F600
    G1 Z10 S1
    G90
    G92 Z162

    This is my probe config in config.g

    M558 P5 I1 R1.0 H10 F700 T1500 X0 Y0 Z0 ;digital piezo sensor, output falls on contact, probing speed, not used to home axes
    G31 X0 Y0 Z-0.1 P50 ;sensor is nozzle and debounce value.

    As you can see I do not define the probe as an endstop in M558.

    My bed.g only contains the mesh definition

    M557 X10:260 Y20:180 S20 ;define mesh
    M500 ;save

    My start gcode contains amongst other things:
    G28
    M98 P0:/macros/SETZ ; run z fine tuning

    That macro looks like this:

    G1 X130 Y97.5 Z15 F1000 ;move to be centre slowly.
    G30 ; probe for z=0
    G1 Z10 F1000 ; raise nozzle
    G30 S-1 ;check z gap
    G1 Z10 F1000 ; raise nozzle

    And here's how it works:

    https://youtu.be/y3kCXAp0sZo

    I tried sending G32 but since my bed.g does not contain discreet points to probe, it does nothing, but I regularly run a G29, save the mesh and then use G28, then G30 as above and print and get very nice first layers each time. I have no extra axes defined, just X, Y and Z and E0.

    What am I missing?


Locked
 

Looks like your connection to Duet3D was lost, please wait while we try to reconnect.