Lowrider V3 Endstops Do Not Trigger

The endstops on my Lowrider V3 are not triggering, pressing the switches does not affect the motor movement in either direction. I have run M119 with switches open and pressed and no matter what it shows the endstops as “open”.

I am using an SKR Pro board with the TMC 2209 drivers, running the V1CNC_SkrPro_DualLR_2209-2.0.9.2 firmware. I have bent the sensorless homing pin as shown in the SKR Pro setup guide.

As far as I can tell, the endstops themselves are working correctly. I have them wired as NC, and testing them with a multimeter gives the correct results. There is also a red light on the board next to all of the motor ports, and that light will turn on or off when the endstop is physically triggered.

Is there something that I am missing here? Any help would be greatly appreciated.

pressing the switches does not affect the motor movement in either direction

The endstop switches are not used except during homing, so if your motor movement is not during a homing sequence, the switches will have no effect.

I have run M119 with switches open and pressed and no matter what it shows the endstops as “open”.

This is troubling and a bit strange. Start by unplugging your endstops and running an M119 again. You should get “triggered” since an open connection is the triggered state. If that works, you have a wiring or switch issue. If that does not work, you have a board or firmware issue of some sort.

1 Like

Thank you for that information, I did not realize endstops only registered during homing sequences. That said, when I home the X-axis it does not stop once the endstop is pressed, it just keeps going and grinds against the side of the machine.

I removed all of the endstops and ran M119 and it registered them all as triggered.

The normal behavior would be for the end-stops to be in an Open state while connected and Triggered when pressed. Try to press the end-stop and while still pressing, run the M119 and see if it changes to Triggered. If not, I have some hypotheses:

  1. you probably have issues with their wire connections, either on the endstop itself or on the board. Check both connections.
  2. Did you connect the endstops wires to the correct pins? not only for the X, Y, and Z axis but also to make sure that the 5V pin on the Min/Max plugs are not being used.

In addition, did you make any modifications to the firmware?

So, when the endstops are plugged in, the board/firmware is viewing them as closed/shorted. The question is why do they not register as triggered when you press the button and run the M119. Start by rerunning the M119 test with switches pressed. Also rerun the multimeter testing, but be sure to test at the end of the wire where it plugs into the board to eliminate any wiring issues.

If it appears as your original post (multimeter == okay and switches never triggered), I’m not sure what to tell you. Maybe unsolder or unplug one of the switches and rerun the M119 to test the wire. Weirdness is sometimes associated with electrical noise, but usually that causes homing to be triggered early rather than your symptoms.

I did not realize endstops only registered during homing sequences.

Once you’ve successfully homed your machine, there will be soft stops at 0,0. Unfortunately, most of us using the MPCNC execute a G92 to reset the origin position relative to the stock. Once the G92 is executed, Marlin is no longer “homed,” and the soft stops are eliminated. There is a workaround using workspaces, but I’ve only seen a couple of people on this forum go to the trouble of using workspaces. The primary purpose of the endstops is to square the machine, so the lack of soft stops does not impact the quality of the cutting.

That’s backwards. They should be normally closed, and open when triggered. That way if a wire gets broken or a connector comes loose, you know before crashing.

1 Like

I have been testing the plug ends with the multimeter and the switches are working as expected. I can measure resistance when the switch isn’t pressed and get nothing when the switch is pressed.

Running M119 with the switches pressed doesn’t change anything, they still show as open.

Here’s something I noticed: If I only have one limit switch plugged in (X-axis) and run M119, it will only show that one switch as open. But if I move the endstop to a different slot (Y1) and run M119 again, it will show both X and Y1 as open. I can go to every slot and do that. It’s like the board will update when they go from triggered to open but not from open to triggered.

I just thought to test the Z probe for this as well, and it actually does update, but only once. It defaults to open, and once it is triggered it won’t read open again.

I usually have a theory about what is going on with a given problem (which is often wrong), but I don’t even have a theory at this point. If it was my problem, my next step would be to plug in some Dupont wires in place of your current wiring and endstop switches, and manually short the wires and run an M119. You need to be absolutely sure you are using the signal and ground pins and not using the VCC/3.3V pin when plugging in to end stops connections.

I might also check the voltage of the signal pin. It should be pulled up to 3.3V. If it is more like 1.5V, then it is floating and it should not be.

I assume you are using just bare switches, not the switches that come on little circuit boards.

1 Like

I am using the two pins furthest from the stepper motor drivers like it shows in the SKR Pro setup guide. And I am using bare switches, no PCBs on them.

I just tried again using Duponts and manually shorted it, same thing. It will show triggered until I short it, then it shows open but will not return to triggered when the wires are separated.

I checked the signal pin voltages, and they all are reading 2.02V.

I’m just a hobbyist when it comes to electronics, but to me, the 2.02V reading is wrong, indicating the pin is floating rather than pulled high like it should be. At this point, I would be looking at exchanging/returning the board. If you are an electronics hobbyist also, you could do one further test. You could run a 10K resistor between the signal pin and the ‘+’ pin, and then rerun your test.

I could not find a schematic for the Skr Pro, but the schematic for the Rambo board clearly shows an external 10K resistor pulling the pin high:

image

Plus, microcontrollers I’ve used typically have a way to enable an internal pullup resistor.

I concur with Robert, sounds like the internal pullup resistor is either not enabled, or has failed.

There should be a section in your configuration.h that looks like this:

// Enable pullup for all endstops to prevent a floating state
#define ENDSTOPPULLUPS
#if DISABLED(ENDSTOPPULLUPS)
  // Disable ENDSTOPPULLUPS to set pullups individually
  //#define ENDSTOPPULLUP_XMAX
  //#define ENDSTOPPULLUP_YMAX
  //#define ENDSTOPPULLUP_ZMAX
  //#define ENDSTOPPULLUP_XMIN
  //#define ENDSTOPPULLUP_YMIN
  //#define ENDSTOPPULLUP_ZMIN
  //#define ENDSTOPPULLUP_ZMIN_PROBE
#endif

And it should look like that.

If the #define ENDSTOPPULLUPS is commented out, then they won’t be enabled.

If it is defined, Marlin should still not leave those pins floating, the next section should define pullDOWN resistors instead to prevent that.

I’ve had the pullup resistor on one board fail. They’re really low power devices, so it can happen.

The actual value of the pullup resistor is noncritical. I used some 4.7k resistors from a junk box.

Change your endstop plug to a 3 wire type, and plug in a resistor from the (+) pin to the (S) pin. The (S) pin and the (-) pin go to the endstop as usual. There. You have just inserted your own pullup resistor. If the pullup resistor IS working, but it’s just noise… No problem. Worst case is that you have 2 4.7l resistors in parallel, so it’s effectively a 2.35k. The board will EASILY tolerate 470 ohms, (I used one of those on a RAMPS board by accident, misread the colour code. It worked for years before I retired the RAMPS board – which is now in my ZenXY table.)

Anyway, adding in your own pullup resistor is a simple matter, so long as you have something in a suitable range.I suggest between 4.7k and 10k.

2 Likes

I took a quick look at the configuration.h file for the SKR Pro LR firmware, and ENSTOPPULLUPS is defined.

I just finished wiring my LR3 and am seeing the similar weirdness that the OP (@chrywo ) is seeing. I am 100% confident in my soldering and wiring. I, too, see the appropriate board SMT LEDs turn on/off when I manually trigger individual switches. I am testing via the TFT touchscreen terminal on the SKR Pro with 2209s.

I’ve done the same debugging steps of removing all of the endstop connectors on the board and then reconnecting them. Once I’m confident in the connections I hot-glued them in position. The board is mounted in the case.

My X endpoint appeared to be working via the M119 command. I homed it a couple of times with success and then it failed and started grinding into the sideplate.

Another oddity, Y2min. If I close the non-rail Y2min endpoint switch, push the reset button and reboot, and execute M119, Y2min registers as TRIGGERED. I release the switch and retest M119, it register open. If I close the Y2min switch again and retest M119, it shows open!? This behavior is repeatable. Booting with the switch closed shows TRIGGERED, but will never show TRIGGERED again.

I am using FW version 513DL from the V1Engineering release on github.

Not sure where to go next. I realize I can use the machine without endstops but this problem is troubling. I’ve spent my career designing/building/testing/producing scientific instrumentation. This build is definitely in my wheelhouse. Something seems very inconsistent in the behavior.

I’ve been following this forum for several years, and the behavior outlined by chrywo is new to me. While it is theoretically possible that this is a firmware issue, since the 513 version of the firmware has been out for nine months and used by hundreds (thousands?) of people, it is highly unlikely the issue is firmware. My best guess is that the pins are the board are bad (not responding to a pullup setting) either due to a manufacturer error, or there was a wiring issue at some point that damaged the pins.

I suggest your first step be verifying this is the identical problem. Carefully check the voltage of each of the signal pins with the board booted. It should be 3.3V. It was around 2.0V for chrywo. Verify (M119) with Dupont wires and direct wire connections if the problem still occurs. This second test takes all of your wiring and switches out of the equation.

If the following two test follow chrywo’s results, a third test would be to wire a pullup resistor between VCC and the signal pin and retest. If the problem is just a pullup resistor issue, adding an external pullup resistor should fix the issue.

There is a fourth thing that can be tried. It is possible in the firmware to reassign endstops to alternate pins. This is something I’ve seen done once for the Rambo board with a bad pin, but I’ve not seen it done on an SKR Pro, but it should work.

2 Likes

Thank you @robertbu. I apologize for my tone. I truly appreciate your thoughtful considerations. The support via this forum was one of the major reasons I decided to build the LR3.

Now to the debug business… i pulled all of my endstop plugs and checked the voltage with a DVM, 1.9999 to 2.03 Vdc on all of the endstop pins at the board! Eureka. It sure sounds like the pullups aren’t there. Apparently something has changed with the SKR Pro assembly process (forgotten parts, bad solder/assembly, cheap parts, etc.) since chrywo had the same issue. Coincidence is unlikely when doing large runs of PCBs.

While I was assembling the other day, I felt using a 2-pin connector in a 3-pin receptacle made for intermittent connections. Luckily I just received at set of crimp pins and housings to make cables so adding a pullup and switching to a 3-pin housing should help.

I’ll add pullups and report back.

thanks.

2 Likes

Did you clip or bend the pins on the drivers? My endstops were not working until I did this, something to do with sensorless homing.

1 Like

Yes, I bent the pin shown in the SKR Pro setup guide on each of the drivers.

1 Like

Here’s what I’ve found. Attached is the schematic for the limit switch connectors from BigTreeTech manual for the SKR Pro.


There’s a 4.7K pullup resistor and a 1K current limiting resistor to the LED. I measured 1.7V across the LED which is fairly typical for a red LED. Looking at the voltage divider of the 4.7k/1.0K resistor, the voltage for pin 3 (signal pin) calculates to 1.98 V which is pretty much what we have measured with the DVM.

So… the question is what changed? Why does this work for some and not others? Looking at the CPUs input/output characteristics, the minimum voltage for a signal to be considered high, Vih, ranges between 1.7 (theoretical) and 2.3 (production unit testing) volts. hmmm, right where we’re sitting. No wonder we’re seeing odd behavior.

Seems like this behavior may have been seen before: https://forum.v1engineering.com/t/skr-pro-1-2-strange-problems/32821 although there are some differences. Unfortunately there is no response resolving the problem.

I’m thinking that the on-board pullups are there to keep the pin from floating open but an external pullup (about 1.8k to 1.5K) is needed for real world operation.

hope this helps,
s

1 Like

I wound up getting another SKR Pro and the endstops on the new board work correctly. I guess the first one was just a defective unit, or I messed up the board my first time wiring it.

Thanks everyone for all the help and suggestions!

1 Like

I ended up putting 1.5K pullups on the connectors and it appears to be working. I now see 2.5V at this input when the switch is open. Hopefully a crown print tomorrow.

3 Likes