Z-Probe height problems after upgrading to 0.92.8

Hi,

I was using 0.92.6 and decided to give a try to 0.92.8.
My printer is a cartesian Prusa i3 and I use a capacitative sensor.

All running fine with 0.92.6, I saw that there is a few new features and I've run over the web configuration tool to set them all up.
In my GCode I use the following sequence to home X,Y and later check bed level.
---
G28 X0 Y0
G32
---

And the Z-PROBE-HEIGHT is of 2.65, so when the probe triggers the nozzle is 2.65mm above the bed.

So now what happens with 0.92.8 is that I can't set this high correctly, it always stays quite above. I tried reducing the value or even change it to negative -2.65 and it doesn't work. 
When sending a G1 Z0 the nozzle always stays way above the bed, around 4mm (if I send a G1 Z-4 it touches the bed).

Is there any parameter that changed that I need to take care of?
I read the updated documentation but I couldn't find anything that would explain this.

Thanks




«1

Comments

  • Have you changed the height in eeprom or configuration.h. I guess the later while eeprom would solve the problem.
  • I added it to the new configuration but later also made sure the value was fine in the EEPROM.
    I just wiped the EEPROM and loaded 0.92.6 as I needed to print and is working well.

    Going to give 0.92.8 another try, when I loaded it I didn't wiped the EEPROM and it assumed the previous settings.
    Maybe some conflict?

    I'll try again to load 0.92.8 but first wiping the EEPROM.
  • edited January 2016
    No luck.
    Wiped EEPROM, loaded 0.92.8 and it prints in the air.

    My Z-PROBE Settings for 0.92.6:
    ---
    #define FEATURE_Z_PROBE 1
    #define Z_PROBE_Z_OFFSET 0
    #define Z_PROBE_Z_OFFSET_MODE 0
    #define Z_PROBE_BED_DISTANCE 10
    #define Z_PROBE_PIN ORIG_Z_MIN_PIN
    #define Z_PROBE_PULLUP 1
    #define Z_PROBE_ON_HIGH 0
    #define Z_PROBE_X_OFFSET -25
    #define Z_PROBE_Y_OFFSET -29
    #define Z_PROBE_WAIT_BEFORE_TEST 0
    #define Z_PROBE_SPEED 2
    #define Z_PROBE_XY_SPEED 150
    #define Z_PROBE_SWITCHING_DISTANCE 3
    #define Z_PROBE_REPETITIONS 2
    #define Z_PROBE_HEIGHT 2.65
    #define Z_PROBE_START_SCRIPT ""
    #define Z_PROBE_FINISHED_SCRIPT ""
    #define FEATURE_AUTOLEVEL 1
    #define Z_PROBE_X1 20
    #define Z_PROBE_Y1 20
    #define Z_PROBE_X2 160
    #define Z_PROBE_Y2 20
    #define Z_PROBE_X3 20
    #define Z_PROBE_Y3 160
    #define BENDING_CORRECTION_A 0
    #define BENDING_CORRECTION_B 0
    #define BENDING_CORRECTION_C 0
    #define FEATURE_AXISCOMP 0
    #define AXISCOMP_TANXY 0
    #define AXISCOMP_TANYZ 0
    #define AXISCOMP_TANXZ 0
    ---

    My Z-PROBE Settings for 0.92.8:
    ---
    #define FEATURE_Z_PROBE 1
    #define Z_PROBE_Z_OFFSET 0
    #define Z_PROBE_Z_OFFSET_MODE 0
    #define UI_BED_COATING 1
    #define Z_PROBE_BED_DISTANCE 10
    #define Z_PROBE_PIN ORIG_Z_MIN_PIN
    #define Z_PROBE_PULLUP 1
    #define Z_PROBE_ON_HIGH 0
    #define Z_PROBE_X_OFFSET -25
    #define Z_PROBE_Y_OFFSET -29
    #define Z_PROBE_WAIT_BEFORE_TEST 0
    #define Z_PROBE_SPEED 2
    #define Z_PROBE_XY_SPEED 150
    #define Z_PROBE_SWITCHING_DISTANCE 3
    #define Z_PROBE_REPETITIONS 2
    #define Z_PROBE_HEIGHT 2.65
    #define Z_PROBE_START_SCRIPT ""
    #define Z_PROBE_FINISHED_SCRIPT ""
    #define FEATURE_AUTOLEVEL 1
    #define Z_PROBE_X1 20
    #define Z_PROBE_Y1 20
    #define Z_PROBE_X2 180
    #define Z_PROBE_Y2 20
    #define Z_PROBE_X3 20
    #define Z_PROBE_Y3 170
    #define BED_LEVELING_METHOD 1
    #define BED_CORRECTION_METHOD 0
    #define BED_LEVELING_GRID_SIZE 3
    #define BED_LEVELING_REPETITIONS 5
    #define BED_MOTOR_1_X 0
    #define BED_MOTOR_1_Y 0
    #define BED_MOTOR_2_X 200
    #define BED_MOTOR_2_Y 0
    #define BED_MOTOR_3_X 100
    #define BED_MOTOR_3_Y 200
    #define BENDING_CORRECTION_A 0
    #define BENDING_CORRECTION_B 0
    #define BENDING_CORRECTION_C 0
    #define FEATURE_AXISCOMP 0
    #define AXISCOMP_TANXY 0
    #define AXISCOMP_TANYZ 0
    #define AXISCOMP_TANXZ 0
    ---

    Seems that it doesn't use Z-PROBE-HEIGHT as before.
    I tried to update the value in the EEPROM of Z_PROBE_HEIGHT first to 10 and then to 1 and the result is always the same. I would raise the G1 Z10 then run G30 and tem G1 Z0 and it goes always to the same height.

  • You could try to home and then write the measured height to EEPROM:
    "G28" (with z) and then "G32 S2". This should update your printable height in the EEPROM.
  • edited January 2016
    Tried that and didnt't worked.
    ---
    G28 X0 Y0
    G1 X100 Y100  // So the probe is over the bed
    G28 X
    G32 S2
    ---

    After this doing G1 Z0 leaves the nozzle several mm above the bed.

    After I did the exactly the same with 0.92.6 and it leaves the nozzle touching the bed as expected.
    I'll try again using a different bed probing in 0.92.8 as I'm using Grid mode that is different from the 3 point in 0.92.6.
    Maybe there's some bug in the new refactored code.
  • Hey!

    Pls check this text passage on z-probing:
    "If you have a max z endstop and parameter S was not 0, we update the printer height so later homing gives correct results. Make sure to do this only IF you had homed to z max before or you get completely wrong heights." from http://www.repetier.com/documentation/repetier-firmware/z-probing/

    Did you try to do a "G28 Z" or "G28 Z0" ever before "G32 S2"? I know that this *should* not change the behaviour, but it could lead to the bug more clearly.

    And just for a chance: You did not define the z probe pin as an endstop, correct? (just checking :) )
  • edited January 2016
    Yes I did, I see I made a typo in my previous post: :S
    It should be: (can't edit the text now...)
    ---
    G28 X0 Y0
    G1 X100 Y100  // So the probe is over the bed
    G28 Z               // Tried also with Z0
    G32 S2
    ---
    In regards to the Z Probe pin as endstop, it is connected to the endpoint pin, but that didn't change from the previous version.
    I also can issue a G1 Z-5 and it goes past the point where the probe triggers, so it doesn't seem to be preventing it from going lower.
    Where would I check that in the configuration file?
  • To make it easy. If you have height correct so z=0 is the bottom, homed and Z=10, what does G30 return in log?
    Distortion correction disabled? G30 will show if it added a correction.

    Also we add bed coating and bending correction. Read our updated z leveling tutorial or BedLeveling.cpp how that all works. Maybe one of these corrections were active while 0.92.6 doe snot have them.

  • I have bed coating enabled for the UI but I actually checked and nothing is selected for it.
    As for bending correction it also has no values defined.
    From the settings shared in the previous post:
    ---
    #define BENDING_CORRECTION_A 0
    #define BENDING_CORRECTION_B 0
    #define BENDING_CORRECTION_C 0
    ---

    When I did G1 Z10 and then G30 and I get
    ---
    11:15:24.836 : N507 G1 Z10 *113
    11:15:29.206 : N509 G30 *54
    11:15:38.472 : Z-probe:10.44 X:87.22 Y:93.08
    ---
    So no distortion is applied.

    This thing is really odd, there is no way I can make the nozzle move down.
    I kept increasing the Z-PROBE-HEIGHT and nothing. 
    I tried running a G32 S2 so it makes the bed probing again and stores the transformation matrix but it doesn't make the 
    nozzle go down as well.
  • I hope eeprom has the same values:-)

    Do you have a z min endstop that might trigger? Try M119 and you see if firmware thinks you have.

    Distortion is at least disabled, that is correct.

    Your G30 was at Z10 real height or just according to homing? For real height you would have to reduce z probe height by 0.44 mm. But if that makes no change you must have 2 triggers for z tests. Still a bit confused about your exact situation. For me it always works as I expect it without any problems, so I'd like to know what interferes here making it difficult.
  • I've make sure to wipe the EEPROM every time I load the firmware. 
    I run the EEPROM clear sketch from arduino before just to try and avoid any bad data in there.

    My Z MIN endstop was removed and the sensor connected to it's pin, so there is nothing other than the sensor detecting
    Z height.

    The height I'm not sure, I just made the homing with "G28 X0 Y0", "G32 S2", "G1 X100 Y100" just to make sure sensor is above the bed and finally "G1 Z10".

    I'm puzzled as well as I'm setting it up and using the exact same GCode as with 0.92.6 where it works fine.
    I've actually been going back and forth between 0.92.6 and 0.92.8 as I needed to make some prints.

    I was looking at the code trying to spot any change that could explain this and to try and also understand the full probe behaviour.

    Would you mind sharing your start GCode to home the axis and set bed level?
    Mine at the moment is quite simple, two lines.
    ---
    G28 X0 Y0
    G32
    ---

    I'm just wondering if I'm correctly generating the z distance or missing a step that is now needed in 0.92.8.
  • One thing you should remember - NEVER use Sx if you did not home to zmax before (assuming you have zmax home). This will update z length and with wrong starting height zlengtz becomes nonsense.

    Actually my start gcode is G28 since I never autolevel before prints. That is just a wast of time. It normally does not change, so I do it only if something has changed or I see bad results.

    G28 X0 Y0
    G32

    should work ok as it does not assume z is correct and does not update zlength, only rotation matrix. It sets new z based on measured z and rotation matrix






    Printer::currentPositionSteps[Z_AXIS] = currentZ * Printer::axisStepsPerMM[Z_AXIS];

    Printer::updateCurrentPosition(true);

    There should be some outputs in the log CurrentZ and z after rotation and M114. Could you correlate them with real z?

    CurrentZ is measured Z at that position. I guess there is something lost while optimizing the leveling structure.







  • Thanks for the warning.
    I assumed Sx could be used normally, I don't have a ZMax endstop so I can never determine Z Max Position.

    I have G32 set as default in the start GCode as it become annoying to always add/remove it when needed and the probing
    process is quite fast.

    But  as I don't have the zmax, how does it ends up determining the Z0 point?
    Assuming I just turn on the machine there is no way for the FW to know where is the Z0. 
    So I always need to perform a commnad that sets that up.

    As I can't use G28 or it will probe Z outside the bed, using:
    ---
    G28 X0 Y0
    G1 X100 Y00  // to make sure the probe is over the bed
    G28 Z0
    ---
    Should also work?

    In regards to zCurrent I'll take notice and see what I can spot in the logs.
  • edited January 2016
    UPDATE: It's getting better :)

    So if I only use G28 Z0 it gets to the proper height.
    As soon as I execute G32 (event without SX) it gets messed up and too high.

    I also notice some odd behavior with G32, as if it starts with a probe a bit high when it moves down it never reaches the point when it triggers. It just stops at a certain higher, repeapts and moves to the next point.

    Result from G32:
    ---
    21:23:45.860 : plane: a = -0.0125 b = 0.0005 c = 10.4482
    21:23:45.860 : Transformation matrix: 0.999922 0.000006 0.012509 0.000000 1.000000 -0.000506 -0.012509 0.000506 0.999922
    21:23:45.860 : CurrentZ:7.98 atZ:10.00
    21:23:46.210 : Info:Autoleveling enabled
    ---

    10 - 7.98 = 2.02 so it;s far from the expected 2.65. (even applying the transformation matrix would need to be more)
  • If you have no zmax endstop it is no problem with s parameter. It will not change zlength.

    How does your zmin endstop work as you said G28 Z0 works? zmin endstops are always dangerous/difficult in combination with z probing.
  • My zmin endstop is the sensor probe, I have the probe connected to the zmin endstop in the ramps.

    Btw I have noticed a odd behavior in regards to the G28 Z0.
    If I have the printer in X0 Y0 and I do G28 Z0 it doesn't apply the Z_PROBE_X_OFFSET -and Z_PROBE_Y_OFFSET.
    If I move it slightly into the bed then it does.

    I'll start making soem videos of this, because I have noticed a couple of odd behaviours.
  • G28 is homing and has NOTHING to do with probing. All probing paramneters are neglected. The fact that you connected it to zmin pin does not make it a z min endstop, also you could misuse it if you consider that it does not care about zprobe height/offset etc in general. There are some special conditions I just do not oversee completely. I know under some conditions if zprobepin = zminpin it adds probe height to measured height. But I think that is all. This is more for the case the nozzle is also a probe.
  • Same problem... probe is craze... Here.. it run the command G32 S2, but when finish, the bed goes up and down when move X and Y and the Z runs very high... as 20mm to 0 or more
  • dev version has some updates on z probing and G32 fixing problems with z height after G32. If that does not work, please formulate a better error description so it can be understood. Best a commented log what you did and what happened in contrast to expectations.
  • edited August 2016
    I'm hijacking this thread. I've also got issues with the auto leveling. I'm using the grid method and the probing so far is working, but when I check the distance between nozzle and print bed manually with a sheet of paper. Then I got a bigger gap on the right side, in the middle its more or less perfect, and more to the left, the nozzle is almost hitting the bed surface.

    I tried both versions, 0.92 and the latest dev 1.0, but the issue stays the same. This is my configuration.h:

    This is the procedure I'm using: heating bed first, then G28 X0 Y0 and afterwards G32 0 or 2 depends what I want.

  • This can happen depending on how you measure and how flexible your printer is at different measurement points.

    A simple way to correct this is with bending correction. You can set correction values for the 3 points where you measure (or which span the grid). For the left side you would add a small negative value and on the right a small positive value. After measuring it should correct a bit more like you want. This is a problem especially with mechanical probes and beds just fixed at the back.
  • Ah ok, thanks. Will definitely try this out!
  • edited August 2016
    Tried the bending correction today, and its working! Thank you very much, you need sometime to get it perfect, but even the quick calibrating was ok for me. First layer now sticks almost perfect on surface, without any tapes, sprays or glass bed. Thanks for all your hard work you put into the firmware.

    The only thing which I don't quite understand, is why do you need to set this extra value? My understanding for the whole bed measuring was, that it generates a height map, which is being used to adjust the z-height accordingly to the x and y positions.
  • The problem arises if you need force to trigger a z probe. That causes bending of the bed and you measure the distance including bending. During print you do not have this force so distance is then wrong. So you need to correct the bending case. Some beds are stiff and you won't notice, other are cantilevered and can easily bend 0.5mm while probing (have such a printer). So that part is just not automatically measureable but can be corrected if it is a planar function.
  • But my sensor isn't touching the surface at all. It triggers like 2mm-3mm above the surface, and even the hotend nozzle isn't touching the surface during the measurement.
  • Inductive measurement, ok. Here the forces have no effect of course. No idea why this then does happen, but fortunately the solution still works.
  • Another question:
    Is there a gcode command to just set the min z-height with probe? I got no endstops installed for the z-axis, and the correct height is getting set by using S32, but when I save the bed lvl into eeprom, and start the printer the next time he doesn't know the z min-height. So I have to bed lvl everytime I want to print, when the printer was powered off.
  • Use latest dev version. This version supports z probe as z min endstop. Just set z min and z probe to same pin. Depending on z probe offset you might want to select the homing variant including T (preheat) but can leave temp. at 0. This allows z test at a position of your choice.
  • Ok, got it. But this means, that I have to adjust the z-probe distance between bed and probe, mechanically. So that the probe triggers right before nozzle reaches the bed, or is there a offset value just for probe as min-endstop?
  • No, it should trigger beforr nozzle hits. The reaming distance is what we call "z probe height". Wen then add this to zmin to get current z. Now homing also knows this and corrects for the distance.
Sign In or Register to comment.