Any way to test repeatability of axis limt switches?

  • Without using extra external measurement on the system is there a way to drive onto the x or y limit and report the axis value at which it triggered rather than reset it?

    I'm running RepRapFirmware1. My bodge approach is to temporarily wiring the relevant stepper and switch into the z axis!

  • Three thoughts:

    1. Prior to conditional g-code, the switch to be tested really does need to be defined as a probe (e.g. your bodge) if we want the firmware to do the calculations. Then a macro of probing (very similar to a mesh probe, except all in one spot) and report the average at the end.

    2. With conditional g-code, it should be possible to hit it over and over, and report position. A few
      copy/paste into a spreadsheet and you'd have every stat you wanted. When conditional G gets variables, even easier, accumulate the measurements, divide, average, whatever you want.

    3. Or, if you are only going to this once, just manually enter the G1 Sx move (a move that finds the limit switch, preferably at low speed), and manually copy the coordinate from the web interface to a spreadsheet. Do it about 10 times, and average in the spreadsheet.

  • administrators

    Currently, the nearest thing you can do is to use G1 H3 moves. These work like G1 H1 moves, but instead of setting the current position to the M208 limit, they do the reverse i.e. set the M208 limit to the current position. So after doing a G1 H3 move, read off the M208 limit and see how close it is to the original one. You can do this repeatedly in a while-loop. Set the M208 value back to its original value at the end.

    BTW there are ways to simulate variables. For example, you can create a dummy tool (e.g. tool 20), then use the X Y and Z offsets of that tool as 3 variables. Assign them using G10, and read them using tools[n].offsets[m]. Just be careful that you don't ever select that tool! You could have its tpre file set all the offsets to 0 to make it a little safer in case you do.

  • If you have a dial test indicator you can easily verify your measurements as well. Most of the digital ones have a proprietary but easily "hacked" serial out as well.

  • Hi,

    JOOC why is this of interest to you? The actual positions when the X/Y end stop sensors are triggered are not terribly important, unlike the Z axis.


  • @fcwilt in the work briefly tested in the following link I was trying to investigate positional related effects on part size. My initial experiment was repeating a set gcode file a number of times and looking at the difference.

    The link was about trying to tackle the potential error by forcing a specific position over the bed to be full step after homing. This thread is just me figuring out how much variation in centre point was introduced by the homing between builds. Same issue, different angle.

    Most of the improvements to be made on my best P3Steel now involve a significant investment in time or money. Along with other objectives listed in the link I want to ensure my resources are spent on areas that have a high probability of returning good results! 🙂

    What does JOOC stand for or mean?

  • @DocTrucker

    Thanks for the information.

    JOOC = Just Out Of Curiosity


  • Markforged printers, at least the one I saw demoed at the Makerspace, rezero X and Y at each layer change. That would require very high precision in the X and Y endstops to ensure that the layers get stacked properly. I'm not sure what advantage it confers, but I recently converted my printer to optical endstops and intend to try that scheme out to see what it does. I'll be mounting a gauge on the printer to see if I can measure repeatability of the X and Y endstops, though print quality will probably reveal more than a gauge can.

    If the machine doesn't skip steps, rezeroing at each layer change seems pointless. Maybe they do it to allow the print to cool a little between layers instead of printing a sacrificial object that would waste their relatively expensive material.

  • @mrehorstdmd said in Any way to test repeatability of axis limt switches?:

    If the machine doesn't skip steps, rezeroing at each layer change seems pointless.


    Re-hitting an endstop during a print... that strikes me as something that has only downside...

  • Moderator

    @Danal said in Any way to test repeatability of axis limt switches?:

    @mrehorstdmd said in Any way to test repeatability of axis limt switches?:

    If the machine doesn't skip steps, rezeroing at each layer change seems pointless.


    Re-hitting an endstop during a print... that strikes me as something that has only downside...

    I had to do it on the first printer I built, in 2010. I couldn’t afford fancy aluminium pulleys for my T5 belt, so had to bootstrap something to print pulleys. I ended up using plastic pallet strapping on rubber pulleys as the X and Y belts! I had to home every layer, as it would slowly shift. I managed to print two very rudimentary pulleys that were just capable of holding the T5 belt. Then iterated a couple of times until I had a good pair of them.


  • Moderator

    @mrehorstdmd said in Any way to test repeatability of axis limt switches?:

    rezero X and Y at each layer change

    That makes sense if you assume you're going to get layer shifts and missed steps. I don't see why you'd want to do that otherwise.

  • No this took an interesting turn! Always interesting to see what the commercial folk have done, and to try and understand it. That said it's not always the right thing!

    In this case perhaps their stepper drives or stepper drives and machine setup couldn't allow accurate missed step detection mid build. This behaviour gives almost the same result and as others say allows the user to print smaller items without needing the dupicate items to stop parts getting too hot.

  • Perhaps it's all all about claimed positional accuracy. Just like a stopped clock that tells exactly the correct time once every 12 hours Vs a clock that is 1 second fast or slow so never shows the correct time. 🙂

    So in marketing speak, one can claim a positional accuracy that is consistent for every layer. The fact that it's only accurate at the very start of a layer and can drift all over the place is irrelevant in marketing speak 🙂

    (In case anyone has problems with my sense of humour, this post is not to be taken seriously.)

  • @deckingman you may think your joking but having worked in the field of commercial manufactures of AM machines I can state that this has been the state of affairs in times gone. There were some real dishonest marketing ploys out there. There were some really slippery characters out there who could always justify their claims but in really tenuous manners. Stuff like build rates were quoting the rate at which a laser process material as it was moving over the bed, not average for a while build. These build rates making spongy crap parts, rather than the parts used to qualify the high density figures. Strength figures from processing parameters you would never use because the parts look crap.

    Just to be clear, for those who know me, and know companies I have worked for, I am not saying this was their behaviour. I've been to many academic conference and trade show and seen many different manufacturers and researchers engage in similar tactics. One reason I have grown to love open source as there is far more emphasis on sharing information and results and less dishonesty as it's too easy to be disproven by others with spare time!

  • @DocTrucker I can give lots of similar examples. Resolution vs accuracy is always a good one.

    When I had a proper job, the engineering consultancy company that I worked were told by one of their clients (a UK engine manufacturer who shall remain nameless) that we had to use a particular piece of equipment to measure ignition advance, because the display showed two decimal places rather than the single decimal place that our default equipment used. So in the eyes of the client, that equipment was 10 times more accurate. But that piece of "more accurate" equipment only used a 60 tooth encoder and interpolated between pulses to calculate the ignition advance (which it displayed to 2 decimal places). So at best, it only received a pulse every 6 degrees whereas the ("10 times less accurate") equipment we used at the time, used a 360 tooth encoder so received pulses every degree making it potentially 6 times more accurate than the piece of crap they insisted we use.

  • I'll run two prints today, one homed at the start only and the same print with rehoming at each layer change, and post some photos. We'll see what happens. I expect some blobbing at the seam in the rezeroed part, otherwise, ?????

Log in to reply