End stop does not trigger after first homing

I have a weird issue. When I home my x or y it is fine...but if I home for a second time..or begin a print etc.. the end stop is not triggered and my printhead crashes at my frame.

Even after a first home the m119 command gives the correct values.

Any ideas?


  • During print you might have it disabled (ALWAYS_CHECK_ENDSTOPS) but during second and third homing endstops will always be tested. Also M119 will always show current endstop state. So if you manually trigger/untigger and test with M119 it should change state correctly. Does that happen?
  • Yes manual trigger always gives the correct values. The problem is not during print.. allready when I hit home for a second time.. it will just ignore the endstop.. it worked fine but one of the hall-e endstops broke. I changed it with a mechanical endstop and changed the firmware accordingly..but now I have this issue :s
  • I also go back 15mm after homing to untrigger the mechanical endstop
  • Did you enable pullup when you are now using mechanical endstops. Without the signal is not stable I think. But that is all and since it works on first home it is strange to not work any more.

    What printer type is that on which board? Memory problems can be an issue with strange behaviour as well. Especially on deltas memory gets often an issue. Make sure on connection it reports around 1000 free bytes of ram on 8 bit boards.
  • I use core xy with radds/due board. But if first homing works all should be ok right? Home all works 1 time.. but home X and then y works only for x and it crashes in Y ...
  • I probably screwed things up when updating the firmware... I went back to an older version and it worked again... so my bad sorry
  • On corexy you must ensure to untrigger endstops by going back a bit. Otherwise you get easy in troubles due to motor split on 2 motors that can confuse firmware.
    But good to hear that old config worked.
  • Hi, i 've got a simular problem.
    with manual tiggering the endstops and checking the result wirth M119 L/H works fine.
    But homing first x which is ok but than homing  y ends in a crash, ignoring my hall e endstops. Or the other way around.
    First homing one axis seems to be good, but the second go wrong.
    Yesterday everything works well.
    No idea. A few days earlyer same issue. Next day no problems, today again..

    For Homing i used : the display linked to the radds, as well the repetier host, connectet with repetier server, and same issue with homing in web front end from the server.
    Thats wy i think the problem is the repetier firmware or the hardware maybe?? the confusing point is, that for me there is no system visible.
    Any ideas?

  • Yes, it is firmware or hardware. In all cases the same function in firmware executes the homing, so it does not matter where you start homing.
    Could it be that pullup for sensor is missing to get defined signals? Otherwise the cable to y endstop might be broken and work only sometimes depending on bending at broken position? You can also try a different endstop pin like ymax just tell firmware to use that instead for ymin. As it works sometimes I would think that it is either pullup or hardware related if it is so wanky.
  • What i also did Yesterday evening to Home Just one Axis twice. The First homing was OK, the Seconds homing of Same Axis Crashes.. so i think it is more Software related.

    To bei Sure that it is no issue from Stepper Signals: how should the shield of the Wire are connected to? At this time there ist no shield because i installed For x and y smart Stepper. The cable from Steppermotor to the smart Stepper Board ist very Short.
  • Update:
    I de and reinstalled Arduino IDE
    I compiled the same version of my config.h again and for this moment everything ist working fine again..

    --> Arduino Due issue?

  • again, new update.

    due to updated firmware as i wrote i enabled z-correction. And now homing is again in trouble.
    In my opinion there is a direkt link with homing and z-correction. I enabled both: autoleve and Z correction.
    There is a possible mistake in the firmware..using 1.03.

    @repetier: Could you please check that ?
  • I only test 1.0.4dev which is where all corrections go into and where all known bugs are fixed.
    So you have autoleveling and distortion correction enabled. Can you check if disabling only one or both makes them work again. Not that the endstop check is anyhow related to these features. Only for z there might be chance if z probe is active.

    What kind of printer do you have? Cartesian, core xy, dual x, delta ... as they have all different homing routines. Also which homing order and settings do you have, just to be sure.
  • to answer:
    #define DRIVE_SYSTEM 1 / z axis + xy H-gantry/core XY (x_motor=x+y...)

    homing order: in settings i set to: x,y then z but mostly i home manually each axis z at last.

    when i send M323 S1 (enabling distortion) then the homing gets in trouble. with S0 homing works - so the distortion algorithm enables the problem.

    what i also discoverd is, that adjusting Z to get it to 0 with distortion disabled manually with "babystepps" and later activate distortion correction afer homing then z gets an offset and i have to set Z to 0 with babystepps again.

    A new issue now: i have communication timeout and Error :Wrong checksum
    But this is an other topic.
    do you need my configuration.h as well?
  • That makes a bit of sense. Homing with enabled distortion correction does not work. Looking into 1.0.4dev code for homing in Printer.cpp line 2019 you see

    void Printer::homeAxis(bool xaxis, bool yaxis, bool zaxis) { // home non-delta printer
    bool nocheck = isNoDestinationCheck();
    bool oldLaser = LaserDriver::laserOn;
    LaserDriver::laserOn = false;
    float startX, startY, startZ;
    realPosition(startX, startY, startZ);
    bool distOn = Printer::distortion.isEnabled();

    As you see distortion correction is disabled first before anything is done. Printer::distortion.disable(false); is same as M323 S0 does. Can you update to 1.0.4dev to be sure fixed bugs are not a reason.  I also see in code that you should see in log a message that distortion was disabled when you home. Do you see that?

    Are you using fast core xy or regular version? Unfortunately I have no core xy for testing my self.
  • B)
    Yes sir, with 1.0.4dev the homing with previous enabled distortion correction works.
    also  the log message disableing/enabling distortion comes up.

    Further more the "communication timeout and Error :Wrong checksum" seems to be reduced as well. For this moment.

    with distortion enabled, my leveld z-to 0 doesn`t work.

    What i did in display first:
    adjust z with distortion disabled to 0. Printing in a "good" bed area works well.
    But with enabling distortion same g code ends in jammed nozzel and extruder looses steps due to wrong hights - not only the first layer but second and more.
    For the first layer i always need to adjust with distortion enabled the high again with babystepps about ~1mm..

    In past when i worked with 1.03 and enabled distortion correction there was always noise from my 3 z-motors when moving the nozzel near Z at 0.
    It seems to me, that there is no physicaly correction. Only something in calculation for next layer.

  • Ok, first good to hear that the problem is already fixed in 1.0.4dev. So I can make it stable soon.

    You should run G33 always after G32 S2 so both use same z position as reference. If you check values with G33 L0 they should swing around 0. Also I assume zmin homing with z probe is used here? If you are too close you need to descrease z probe height so after homing you have more space to bed.
    G33 only works on a limited Z range defined in configuration. At higher Z you will see no z correction.
    For testing I always put some higher card box at one measurement point. When I the move with low Z over that point (with removed card) I can clearly see it move up/down at that point. Regular correction is hard to see as it is so small.
    For non fast core xy the correction is computed at 10mm distances of each move.
  • edited December 8
    tried today https://www.repetier.com/firmware/dev
    with my corexy+z radds/due with disabled z-correction (distortion correction) 
    Alway check endstop true
    Fast_corexyz 1

    and now homing the x-axis does not work. Y/Z are fine. 
    X homing is crashing for half a minute and then it stops. 

    Gone back to firmware from last year with same config ... everything is fine.
  • With fast corexy you have to be careful to reduce segments per second to fit the homing move in one list of subsegments. This depends on homing speed and  2 * x length. So you need 2 * x_length/homing_speed_in_mmps seconds. If you have 10 subsegments per move that must fit into it. So with 10 updates per second homing would need to be done in one second. 
    On the other side subsegments per second must be high enough that at maximum speed a segment only contains at max. 32000 steps.
    Any violation could cause a stopped move to continue. Also I would expect it to get stopped again by the end stop trigger, but I have no core xy printer to prove that.

    A good test would be to disable fast corexy first to see if everything is ok with pins etc. Then you know the problem comes from nonlinear handling.

    Fortunately in V2 firmware these problems are gone due to different motion handling.
  • so, after testing i can say, that the motorized distortion correction still does not work.

    what i did:
    1. G33 R0
    2.homing all axes
    3. level z manually (with display) and set Z=0
    4. Hominz z to test if 0 = 0
    5. G32 S2
    6. G33

    7. check with test print..or driving x and y near zero  but my z-motors still do no correction.

    any advise to find the problem?

    my map:
    21:16:05.409: G33 X50.00 Y50.00 Z0.000
    21:16:05.409: G33 X50.00 Y76.67 Z0.085
    21:16:05.413: G33 X50.00 Y103.33 Z0.156
    21:16:05.417: G33 X50.00 Y130.00 Z0.205
    21:16:05.417: G33 X50.00 Y156.66 Z0.223
    21:16:05.421: G33 X50.00 Y183.33 Z0.233
    21:16:05.421: G33 X50.00 Y210.00 Z0.264
    21:16:05.425: G33 X50.00 Y236.66 Z0.310
    21:16:05.425: G33 X50.00 Y263.33 Z0.361
    21:16:05.429: G33 X50.00 Y290.00 Z0.382
    21:16:05.434: G33 X94.44 Y50.00 Z0.037
    21:16:05.434: G33 X94.44 Y76.67 Z0.085
    21:16:05.438: G33 X94.44 Y103.33 Z0.134
    21:16:05.439: G33 X94.44 Y130.00 Z0.172
    21:16:05.442: G33 X94.44 Y156.66 Z0.192
    21:16:05.443: G33 X94.44 Y183.33 Z0.195
    21:16:05.446: G33 X94.44 Y210.00 Z0.205
    21:16:05.447: G33 X94.44 Y236.66 Z0.234
    21:16:05.450: G33 X94.44 Y263.33 Z0.277
    21:16:05.454: G33 X94.44 Y290.00 Z0.281
    21:16:05.455: G33 X138.89 Y50.00 Z0.054
    21:16:05.458: G33 X138.89 Y76.67 Z0.075
    21:16:05.459: G33 X138.89 Y103.33 Z0.112
    21:16:05.462: G33 X138.89 Y130.00 Z0.146
    21:16:05.463: G33 X138.89 Y156.66 Z0.154
    21:16:05.468: G33 X138.89 Y183.33 Z0.132
    21:16:05.470: G33 X138.89 Y210.00 Z0.134
    21:16:05.470: G33 X138.89 Y236.66 Z0.157
    21:16:05.474: G33 X138.89 Y263.33 Z0.183
    21:16:05.474: G33 X138.89 Y290.00 Z0.171
    21:16:05.478: G33 X183.33 Y50.00 Z0.074
    21:16:05.482: G33 X183.33 Y76.67 Z0.061
    21:16:05.482: G33 X183.33 Y103.33 Z0.077
    21:16:05.488: G33 X183.33 Y130.00 Z0.108
    21:16:05.488: G33 X183.33 Y156.66 Z0.117
    21:16:05.491: G33 X183.33 Y183.33 Z0.100
    21:16:05.492: G33 X183.33 Y210.00 Z0.090
    21:16:05.496: G33 X183.33 Y236.66 Z0.101
    21:16:05.506: G33 X183.33 Y263.33 Z0.100
    21:16:05.507: G33 X183.33 Y290.00 Z0.088
    21:16:05.507: G33 X227.78 Y50.00 Z0.090
    21:16:05.507: G33 X227.78 Y76.67 Z0.058
    21:16:05.507: G33 X227.78 Y103.33 Z0.049
    21:16:05.512: G33 X227.78 Y130.00 Z0.090
    21:16:05.512: G33 X227.78 Y156.66 Z0.090
    21:16:05.516: G33 X227.78 Y183.33 Z0.071
    21:16:05.516: G33 X227.78 Y210.00 Z0.038
    21:16:05.520: G33 X227.78 Y236.66 Z0.042
    21:16:05.520: G33 X227.78 Y263.33 Z0.028
    21:16:05.524: G33 X227.78 Y290.00 Z0.004
    21:16:05.528: G33 X272.22 Y50.00 Z0.088
    21:16:05.528: G33 X272.22 Y76.67 Z0.055
    21:16:05.532: G33 X272.22 Y103.33 Z0.029
    21:16:05.532: G33 X272.22 Y130.00 Z0.061
    21:16:05.536: G33 X272.22 Y156.66 Z0.054
    21:16:05.541: G33 X272.22 Y183.33 Z0.038
    21:16:05.541: G33 X272.22 Y210.00 Z0.009
    21:16:05.545: G33 X272.22 Y236.66 Z-0.013
    21:16:05.545: G33 X272.22 Y263.33 Z-0.051
    21:16:05.549: G33 X272.22 Y290.00 Z-0.080
    21:16:05.549: G33 X316.67 Y50.00 Z0.066
    21:16:05.553: G33 X316.67 Y76.67 Z0.044
    21:16:05.557: G33 X316.67 Y103.33 Z0.005
    21:16:05.557: G33 X316.67 Y130.00 Z0.042
    21:16:05.561: G33 X316.67 Y156.66 Z0.031
    21:16:05.561: G33 X316.67 Y183.33 Z0.013
    21:16:05.565: G33 X316.67 Y210.00 Z-0.036
    21:16:05.569: G33 X316.67 Y236.66 Z-0.052
    21:16:05.569: G33 X316.67 Y263.33 Z-0.116
    21:16:05.573: G33 X316.67 Y290.00 Z-0.133
    21:16:05.573: G33 X361.11 Y50.00 Z0.043
    21:16:05.577: G33 X361.11 Y76.67 Z0.030
    21:16:05.581: G33 X361.11 Y103.33 Z-0.015
    21:16:05.581: G33 X361.11 Y130.00 Z0.023
    21:16:05.585: G33 X361.11 Y156.66 Z0.017
    21:16:05.585: G33 X361.11 Y183.33 Z-0.002
    21:16:05.589: G33 X361.11 Y210.00 Z-0.062
    21:16:05.593: G33 X361.11 Y236.66 Z-0.090
    21:16:05.593: G33 X361.11 Y263.33 Z-0.155
    21:16:05.598: G33 X361.11 Y290.00 Z-0.192
    21:16:05.598: G33 X405.55 Y50.00 Z0.013
    21:16:05.602: G33 X405.55 Y76.67 Z0.007
    21:16:05.606: G33 X405.55 Y103.33 Z-0.024
    21:16:05.606: G33 X405.55 Y130.00 Z-0.002
    21:16:05.610: G33 X405.55 Y156.66 Z-0.014
    21:16:05.610: G33 X405.55 Y183.33 Z-0.034
    21:16:05.614: G33 X405.55 Y210.00 Z-0.102
    21:16:05.618: G33 X405.55 Y236.66 Z-0.124
    21:16:05.618: G33 X405.55 Y263.33 Z-0.208
    21:16:05.622: G33 X405.55 Y290.00 Z-0.242
    21:16:05.622: G33 X450.00 Y50.00 Z-0.009
    21:16:05.626: G33 X450.00 Y76.67 Z-0.008
    21:16:05.630: G33 X450.00 Y103.33 Z-0.038
    21:16:05.630: G33 X450.00 Y130.00 Z-0.025
    21:16:05.634: G33 X450.00 Y156.66 Z-0.031
    21:16:05.634: G33 X450.00 Y183.33 Z-0.070
    21:16:05.641: G33 X450.00 Y210.00 Z-0.127
    21:16:05.642: G33 X450.00 Y236.66 Z-0.173
    21:16:05.642: G33 X450.00 Y263.33 Z-0.259
    21:16:05.646: G33 X450.00 Y290.00 Z-0.317


    // #################### Z-Probing #####################

    #define Z_PROBE_Z_OFFSET 0
    #define Z_PROBE_Z_OFFSET_MODE 0
    #define UI_BED_COATING 1
    #define FEATURE_Z_PROBE 1
    #define EXTRUDER_IS_Z_PROBE 0
    #define Z_PROBE_BED_DISTANCE 10
    #define Z_PROBE_PULLUP 1
    #define Z_PROBE_ON_HIGH 0
    #define Z_PROBE_X_OFFSET -36.6
    #define Z_PROBE_Y_OFFSET 49.8
    #define Z_PROBE_SPEED 2
    #define Z_PROBE_XY_SPEED 150
    #define Z_PROBE_USE_MEDIAN 0
    #define Z_PROBE_HEIGHT 0.672
    #define Z_PROBE_DELAY 0
    #define Z_PROBE_START_SCRIPT ""
    #define Z_PROBE_X1 291
    #define Z_PROBE_Y1 250
    #define Z_PROBE_X2 50
    #define Z_PROBE_Y2 50
    #define Z_PROBE_X3 450
    #define Z_PROBE_Y3 50
    #define BED_MOTOR_1_X 252
    #define BED_MOTOR_1_Y 373
    #define BED_MOTOR_2_X 591
    #define BED_MOTOR_2_Y 7
    #define BED_MOTOR_3_X -90
    #define BED_MOTOR_3_Y 7
    #define FEATURE_AXISCOMP 0
    #define AXISCOMP_TANXY 0
    #define AXISCOMP_TANYZ 0
    #define AXISCOMP_TANXZ 0

  • edited December 8
    *deleted* wrong comment

  • From the map you have distorions. Don't see from G32 the correction which should be added to that.
    Your config does not contain the settings for distortion correction, these are

    /* DISTORTION_CORRECTION compensates the distortion caused by mechanical imprecisions of nonlinear (i.e. DELTA) printers
    * assumes that the floor is plain (i.e. glass plate)
    * and that it is perpendicular to the towers
    * and that the (0,0) is in center
    * requires z-probe
    * G33 measures the Z offset in matrix NxN points (due to nature of the delta printer, the corners are extrapolated instead of measured)
    * and compensate the distortion
    * more points means better compensation, but consumes more memory and takes more time
    * DISTORTION_CORRECTION_R is the distance of last row or column from center

    /** Max. distortion value to enter. Used to prevent dangerous errors with big values. */
    /* For delta printers you simply define the measured radius around origin */
    /* For all others you define the correction rectangle by setting the min/max coordinates. Make sure the the probe can reach all points! */
    #define DISTORTION_XMIN 10
    #define DISTORTION_YMIN 10
    #define DISTORTION_XMAX 190
    #define DISTORTION_YMAX 190

    /** Uses EEPROM instead of ram. Allows bigger matrix (up to 22x22) without any ram cost.
    Especially on arm based systems with cached EEPROM it is good, on AVR it has a small
    performance penalty.
    /** Correction computation is not a cheap operation and changes are only small. So it
    is not necessary to update it for every sub-line computed. For example lets take DELTA_SEGMENTS_PER_SECOND_PRINT = 150
    and fastest print speed 100 mm/s. So we have a maximum segment length of 100/150 = 0.66 mm.
    Now lats say our point field is 200 x 200 mm with 9 x 9 points. So between 2 points we have
    200 / (9-1) = 25 mm. So we need at least 25 / 0.66 = 37 lines to move to the next measuring
    point. So updating correction every 15 calls gives us at least 2 updates between the
    measured points.
    NOTE: Explicit z changes will always trigger an update!
    /** z distortion degrades to 0 from this height on. You should start after the first layer to get
    best bonding with surface. */
    /** z distortion correction gets down to 0 at this height. */

    Important - any Z higher then DISTORTION_START_DEGRADE will reduce the distortion correction and above DISTORTION_END_HEIGHT there will be no correction at all, if it is enabled, which G33 does automatically until you disable it. See log you will see the messages.
  • edited December 9
    i did not post the right sequenz where the distortion parameters are listed:
    here they are:

    // ################# XYZ movements ###################

    #define X_ENABLE_ON 0
    #define Y_ENABLE_ON 0
    #define Z_ENABLE_ON 1
    #define DISABLE_X 0
    #define DISABLE_Y 0
    #define DISABLE_Z 0
    #define DISABLE_E 0
    #define INVERT_X_DIR 0
    #define INVERT_X2_DIR 0
    #define INVERT_Y_DIR 0
    #define INVERT_Y2_DIR 0
    #define INVERT_Z_DIR 1
    #define INVERT_Z2_DIR 0
    #define INVERT_Z3_DIR 0
    #define INVERT_Z4_DIR 0
    #define X_HOME_DIR 1
    #define Y_HOME_DIR 1
    #define Z_HOME_DIR 1
    #define X_MAX_LENGTH 501
    #define Y_MAX_LENGTH 310
    #define Z_MAX_LENGTH 293.543
    #define X_MIN_POS 0
    #define Y_MIN_POS 0
    #define Z_MIN_POS 0
    #define PARK_POSITION_X 250
    #define PARK_POSITION_Y 0
    #define PARK_POSITION_Z_RAISE 10

    #define DISTORTION_XMIN 50
    #define DISTORTION_YMIN 50
    #define DISTORTION_XMAX 450
    #define DISTORTION_YMAX 290

    something worng here?

    "#define DISTORTION_CORRECTION 1" --> for enabling the 1 is the moste important - right?

  • Disabling Fast_corexyz x-axis homing does work again. 

Sign In or Register to comment.