Panicking with my Z probe attempt

edited February 2016 in Repetier-Firmware
Hi, all.

I have a metal bed, that is OK when printing PLA at 45-50 deg.C, but as soon as I want to start to print ABS, the bed bends a lot due to heating and the adhesion, especially with bigger parts, is terrible.

So my plan was to introduce the Z probe instead of Zmin switch and prior each ABS print do the bed measurement and correct the distortion in firmware somehow.

I made the holder for the probe and connected it, everything seems technically OK, however I messed up the SW setting apparently.

This is a diagram of the situation with extruder on [0,0] position:

image

I compiled the 0.92.8 firmware and here is my list of problems and things that went horribly wrong for me:
  • I used the Z end-stop signal as the input for my Z probe.
  • Z probe distance from extruder - I have quite significant distance of the
    probe in relation to the head (70mm on X, 9mm on Y). Therefore when I
    now push Home X, Home Y, the probe is actually 9mm away from the bed.
    So, as soon as I hit Home Z, terrible things start to happen - the
    printer will simply never stop. Well - I did stop, damaging one stepper,
    stepper driver (on Melzi board) and bending the X gantry... Yay!
  • I played with it further - I tried to make the bed heat map. Although the
    firmware should know the probe distance, it happily measured out of
    range.
Now, my newbie questions:
  • Is the probing/heat map/etc.
    measuring the height and calculating in at the position of the probe, or
    the position of the print head? If it's considering the position of the print head, it's pretty useless
    as the relevant spot is at the Z-probe X/Y distance... This seems not
    to work OK, or maybe I did not set something correctly in my firmware
    (very high possibility).
  • Is there some protection for the homing
    request out of "safe" positions? E.g. like my case, when the probe is
    70mm away from the extruder, the last 70mm of X axes should not allow
    the "home Z" command, or should "fake" it by moving to current Z=0. Same
    applies, of course, to both axes. Maybe, again, I did set something
    wrong with the settings...
  • Also, after resetting the printer, the first move I do is ignored and the printer moves in X and Y direction for some reason - e.g. I press Z 10mm up in repetier-host and instead the printer moves some distance in X and Y direction. Then it stops and as soon as it's stationary, all the commands from there are 100% correct in direction, axes and length. Is there something I am doing wrong, or is this just some "feature"? This, btw, costed me further damage of my bed+print head as soon as I tried to raise the Z axes after printer reboot...

Comments

  • G32/G33 first enable z probe meaning setting the offset to z probe and reposition extruder so it measures at z probe position. One thing to consider is, that this move must be possible! With your big offset I assume it may be not possible after homing so you might want to send G1 X100 Y100 F6000 before starting probing. Also make sure the probing area would not crash the carriage into a endstop. Especially the 70mm offset are likely to this if you have not much place next to your bed. So in that case you can not measure the complete bed, but that is no problem. Firmware would extrapolate last results to the edge.

    At end of G32/G33 offsets are undone. Form that point all normal positions should be reachable.

    Resets need special care. After reset position is unknown and 0,0,0 is assumed as current position. This may lead to unexpected behaviour since software endstops and other checks may prevent moves or moves might not end where you expect.

    Homing is always expected to be allowed and not to fail.

    Your image is a bit confusing as I think you need to rotate it 180° to be correct. X goes right and y up in normal viewing of a plane. So to prevent damage to z probe you should home to x max and y max or never home while z probe is enabled. Normally z probe is on the extruder carriage and does not crash anywhere in xy direction.

  • You're right - the image should be rotated 180 degrees :( Poor me...
    Thanks for the advice, will test it as soon as I fix the HW ;)
  • edited February 2016
    OK, I got a bit further.
    Now, I have a clear SW issue with firmware.
    To describe it...
    I disconnected the Z min switch and instead I connected the Z probe.
    With firmware configuration like this:

    #define Z_PROBE_Z_OFFSET 0
    #define Z_PROBE_Z_OFFSET_MODE 0
    #define UI_BED_COATING 1
    #define FEATURE_Z_PROBE 1
    #define Z_PROBE_BED_DISTANCE 1
    #define Z_PROBE_PIN ORIG_Z_MIN_PIN
    #define Z_PROBE_PULLUP 0
    #define Z_PROBE_ON_HIGH 1
    #define Z_PROBE_PIN ORIG_Z_MIN_PIN
    #define Z_PROBE_HEIGHT -0.6
    #define MIN_HARDWARE_ENDSTOP_Z true
    #define min_software_endstop_z false
    the printer kinda' works - it is able to work with G29 command to find the Z=0, it is able to run the G32 command and do the 7x7 grid and come up with modification and, when printing, I can see the Z axis moving up and down to get the correction.
    However, the problem is, that when I do G1 Z0 F1200 the print head always goes to 0.6mm and stops, considering this is the "new" Z=0.



    So, I changed the configuration to this:

    #define Z_PROBE_HEIGHT -0.6
    #define MIN_HARDWARE_ENDSTOP_Z false
    #define min_software_endstop_z true
    What I want to achieve here is to tell the firmware I have no endstop, but I have probe connected and I want it to "calculate" the software Z endstop. And that when the probe "hits", it means the nozzle is still 0.6mm from the print bed.

    But when I hit G29 to find the Z=0, the probe will get to the correct X,Y position and start to descent - and will never stop.

    Luckily, this time I am ready with the power switch, so I always turn it off before I get further damage to my printer...



    Clearly I do not understand how this should work and how it should be set.
    Can someone, please, advice, what do I do wrong?
  • Software endstops do only work opposite to a used endstop.

    z min endstop = z probe is quite troublesome and only works in very special condition and only in some special combinations. For printers with probing I always say to use z max endstop for homing and then even go back a few mm from the endstop away, so it does not trigger while moving left/right and z corrects. That is the only combination not giving you a headache. Then you still can decide to use G32 for z homing instead of z max homing. Unbelievavle how many hours some users spend to reduce homing time a few seconds with some complicated setups.

    z homing with z probe moves after signal -zProbeHeight so in your case 0.6mm. That is corrects s you said your probe triggers when nozzle is 0.6mm below bed. One thing to consider is that you must z min home when z probe is above 0,0, so you need G1 X-70 Y-9 first, if that is possible at all. 0,0 is the rotation point and there is no correction for rotation so you MUST z min home where the correction is exactly 0 and that is only the origin.

  • All my problems are caused by the missing inputs on Melzi. However, as I found out that the "custom" analogue buttons are not working, I did not used the display now for quite some time.
    So, my plan now is to introduce a Zmax switch, home to max and use the bed leveling for measurement.

    I'm not really sure what you mean by the -zProbeHeight - if I understand that correctly, you are telling me, that when the Z probe "hits", the printer "thinks" the nozzle is already 0.6mm below the bed?
    So, instead of -0.6 I should have set that to +0.6? I am so stupid I do not even understand a simple picture on your how-to - now, when I read it, it seems obvious I should have used +, not - value... :(

    And a question regarding the 0,0 Z-homing - if I set the bed to be -100,-100->100,100 instead of 0,0->200,200, would it help?
  • Oh, one more hint for users as stupid as myself - the initial side-movement is caused by the fact, that I have the nozzle X and Y offset (-35mm, -10mm). So as soon as the printer starts, it "thinks" it's not at 0,0 - instead it calculates the gantry is at 0,0, but the nozzle is therefore on -35,-10. So when I try to move, it "compensates".
    I made following sequence to get me out of trouble, when my Z is too low:
    G91 ; use relative coordinates
    G1 X-35 Y-10 Z30 F4500 ; keep the X and Y static, move the Z axis 30mm up
    G90 ; restore the absolute coordinates
    This always saves the day ;)
  • zProbeHeight is distance between bed and nozzle when probe triggers so it mostly positive. Only sensors that get triggered after indenting nozzle like when pressing the nozzle triggers a switch have negative values. This is also the value you tweak to get a good first layer. Once you found your sweet value there autoleveling is easy. With wrong values you might get a gap too big/small.

    Regarding extruder offsets. These are mainly for multi extruder setup to set positions relative to each other. When xy homing the nozzle is xmin/ymin. Of course at startup it thinks it is at 0,0 as you did not home x and y. Homeing should always be done as one of the first steps.
Sign In or Register to comment.