Z-height, Z-Min and Z-probe setup questions

I am building a core-xy printer and have installed the repetier firmware. All axis movements seem to be OK so far, but I am having trouble calibrating z-height in the firmware.

At present the bed is physically level to within 1mm. I have installed an inductive sensor 1mm higher than my hot-end nozzle.  My plan was to use the sensor as both a z-min enstop and as a z-probe. 

Q1) Is this possible with repetier or is there a better way?

At present my sensor triggers roughly 2mm above the bed, leaving the nozzle 1mm above the bed.

Q2) Can I change settings in repetier firmware to account for this difference and thus achieve the correct z-hight at 0. Which settings do I change? If it cannot be done in the firmware must I tune this physically by raising the sensor?

I looked closely at the documentation but nothing clearly explains this process, just a statement "At some point your extruder can‘t get lower, because the end stop is
triggered. At this point you should have a minimal distance. A simple
test is a sheet of paper" which makes it sound so simple ;-)

Regards,
Laurence.

Comments

  • There is a parameter in eeprom (also config) z probe height which is the height between bed and extruder when sensor triggers. You need to change that to make the distance vanish.

    With Autobedleveling never home to z min. That is normally wrong. It always depends on where you go down as your bed is not leveled. So z-max homing is the way to go. z max homing has also other advantages like the possibility to continue a print or rehome after a filamentchange during a print.
  • OK thank you I will try it like that.
  • It seems better, but I now have another problem.

    After running G32 S2, the Z=0 position is perfect at X0 Y0 but at other bed positions it is incorrect. For example at X50 Y140 it seems .8mm too low. (If I use the print panel Z positioning by .1mm 8 times it becomes perfect at X50 Y140)  Then if I use G1 X0 Y0 Z0 it does return to a perfect position at Z0.

    It is like the transformed Z matrix is too sloped. 

    I am using todays version of 0.92.3

    I can post a log if it helps - tell me what you need
  • go to z=10 and first check if z moves while going left/right. Just a test to see if autoleveling is enabled at all.
    Then when you reset the board or on connection you get the rotation matrix in the log.

    When running G32 make sure to use 3 distant positions for testing. Higher distances give better results.
  • edited April 2015
    Yes, Z definately moves small amounts during G1 xy moves.  I probe a few cms from the edges of the bed. Autoleveling is on. Here is a sample of my log.  Head is perfect (paper sheet distance) at 0,0 but crashes into the bed in other places.

      15:51:54: Attempting to connect to printer
      15:51:54: Connection opened
    < 15:52:03: ôstart
    > 15:52:03: N1 M110 *2
    > 15:52:03: N2 M115 *4
    < 15:52:05: Info:External Reset
    > 15:52:05: N4 M111 S6 *67
    < 15:52:05: Transformation matrix: 1.000000 0.000000 0.000000 0.000000 1.000000 0.000000 0.000000 0.000000 1.000000
    > 15:52:05: N5 M111 S6 *66
    < 15:52:05: Free RAM:4168
    < 15:52:06: FIRMWARE_NAME:Repetier_0.92.3 FIRMWARE_URL:https://github.com/repetier/Repetier-Firmware/ PROTOCOL_VERSION:1.0 MACHINE_TYPE:Core_XY EXTRUDER_COUNT:1 REPETIER_PROTOCOL:3
    < 15:52:06: Printed filament:1.57m Printing time:0 days 0 hours 18 min
    > 15:52:38: N37 M104 S200 *115
    > 15:54:45: N156 G91 *51
    > 15:54:45: N157 G1 E400.0000 F60.00 *58
    > 15:54:45: N158 G90 *60
    > 15:55:01: N173 G28 X0.00 Y0.00 Z0.00 *83
    < 15:55:06: X:0.00 Y:0.00 Z:177.000 E:0.0000
    > 15:55:29: N197 G32 S2 *118
    < 15:56:41: Z-probe:4.81 X:35.00 Y:20.00
    < 15:56:58: Z-probe:4.68 X:180.00 Y:20.00
    < 15:57:15: Z-probe:4.96 X:100.00 Y:160.00
    < 15:57:17: Transformation matrix: 1.000000 0.000001 0.000925 0.000000 0.999999 -0.001501 -0.000925 0.001501 0.999998
    < 15:58:43: Z-probe max:171.65 X:100.00 Y:160.00
    < 16:00:09: Printer height:176.46
    < 16:00:09: Info:Autoleveling enabled
    < 16:00:09: X:100.00 Y:159.99 Z:4.963 E:0.0000

  • Arrrgghh!  Did some more tests. Reset the transformation matrix and tried to manually level the bed. Discovered that my sheet of 6mm Aluminium in not perfectly flat! Its raised in the middle of the y plain by about .3mm.  I will try to correct this.

    Oh and while I remember some commands do not seem to work in this version... M323 is unknown and no confirmation from M320. M321 and M322 seems OK.
    < 13:00:46: start
    < 13:00:48: Info:External Reset
    < 13:00:48: Info:Autoleveling enabled
    < 13:00:48: Transformation matrix: 0.999999 -0.000001 -0.001129 0.000000 0.999999 -0.001292 0.001129 0.001292 0.999998
    < 13:00:48: Free RAM:4168
    > 13:07:13: N360 M323 *4
    < 13:07:13: Unknown command:N360 M323
    > 13:07:39: N385 M323 S0 *76
    < 13:07:39: Unknown command:N385 M323  S0
    > 13:07:51: N397 M323 S0 P1 *14
    < 13:07:51: Unknown command:N397 M323  S0 P1
    > 13:08:39: N443 M232 S1 P1 *0
    < 13:08:39: Unknown command:N443 M232  S1 P1
    > 13:09:08: N471 M320 *0
    > 13:09:29: N492 M320 S2 *76
    > 13:09:45: N508 M321 *14
    < 13:09:45: Info:Autoleveling disabled
    > 13:10:34: N554 M322 S3 *68
    < 13:10:34: Info:Autolevel matrix reset


  • Arrrgghh!  Did some more tests. Reset the transformation matrix and tried to manually level the bed. Discovered that my sheet of 6mm Aluminium in not perfectly flat! Its raised in the middle of the y plain by about .3mm.  I will try to correct this.

    Oh and while I remember some commands do not seem to work in this version... M323 is unknown and no confirmation from M320. M321 and M322 seems OK.
    < 13:00:46: start
    < 13:00:48: Info:External Reset
    < 13:00:48: Info:Autoleveling enabled
    < 13:00:48: Transformation matrix: 0.999999 -0.000001 -0.001129 0.000000 0.999999 -0.001292 0.001129 0.001292 0.999998
    < 13:00:48: Free RAM:4168
    > 13:07:13: N360 M323 *4
    < 13:07:13: Unknown command:N360 M323
    > 13:07:39: N385 M323 S0 *76
    < 13:07:39: Unknown command:N385 M323  S0
    > 13:07:51: N397 M323 S0 P1 *14
    < 13:07:51: Unknown command:N397 M323  S0 P1
    > 13:08:39: N443 M232 S1 P1 *0
    < 13:08:39: Unknown command:N443 M232  S1 P1
    > 13:09:08: N471 M320 *0
    > 13:09:29: N492 M320 S2 *76
    > 13:09:45: N508 M321 *14
    < 13:09:45: Info:Autoleveling disabled
    > 13:10:34: N554 M322 S3 *68
    < 13:10:34: Info:Autolevel matrix reset




    Did this issue with m323 being unknown get figured out I cannot for the life of me figure out how to enable z correction be cuase of this in trying to set a hieght map and my g29 will only probe 3 points like it's running g32 autolevel

  • edited October 2016
    I'm following https://www.repetier.com/documentation/repetier-firmware/z-probing/ as well and looks like M323 does not work on 0.92.9 and returns an "uknown cmmand as noted above.  I'm confused how to enable the z correction now that the matrix is stored.

    I setup Distortion correction in the FW, uploaded and still no luck:
    #define DISTORTION_CORRECTION 1
    #define DISTORTION_CORRECTION_POINTS 5
    #define DISTORTION_CORRECTION_R 100
    #define DISTORTION_PERMANENT 1
    #define DISTORTION_UPDATE_FREQUENCY 15
    #define DISTORTION_START_DEGRADE 0.5
    #define DISTORTION_END_HEIGHT 1
    #define DISTORTION_EXTRAPOLATE_CORNERS 0
    #define DISTORTION_XMIN 10
    #define DISTORTION_YMIN 10
    #define DISTORTION_XMAX 385
    #define DISTORTION_YMAX 415

    When repetier host connects though, I see this:
    06:05:43.121 : Printer reset detected - initalizing
    06:05:43.121 : start
    06:05:43.125 : Info:Autoleveling enabled
    06:05:43.133 : Transformation matrix: 0.999998 0.000000 0.001979 0.000008 0.999993 -0.003827 -0.001979 0.003827 0.999991
    06:05:45.771 : zDistortionCorrection:0
    06:05:45.771 : Free RAM:3856

    So seems like DistortionCorrection is still seen as false

  • In dev version commands.cpp still contains

    #if DISTORTION_CORRECTION
            case 323: // M323 S0/S1 enable disable distortion correction P0 = not permanent, P1 = permanent = default
                if(com->hasS()) {
                    if(com->S > 0)
                        Printer::distortion.enable(com->hasP() && com->P == 1);
                    else
                        Printer::distortion.disable(com->hasP() && com->P == 1);
                } else {
                    Printer::distortion.reportStatus();
                }
                break;
    #endif // DISTORTION_CORRECTION

    So with DISTORTION_CORRECTION 1 it should compile and include that part.
    Add inside a line
    #error i get compiled 
    and compile again. You should then get a compilation error indicating that this part gets compiled for your config. If not it is no wonder it fires unknown command. Then you would need to find where DISTORTION_CORRECTION gets set 0.
Sign In or Register to comment.