Touch Plate

@KellyHickel I think the problem is it is defaulted to mm. I had to do G20G38.2 Z-.5 F1

If I did not have G20, it would only move .5mm so it would barely move then set off the alarm saying that it never touched the plate. You can easily try this by changing it to 10 not .5 and see if it moves 10mm.

Just use the G20 code and it should fix it.

for some reason it edited my last post. not what i was trying to do…

No joy, it fails immediately with no motion:

G20G38.2 Z-.5 F1
ALARM: Probe fail

@KellyHickel even after killing power to the GRBL box, and closing UGS and trying fresh?

I had trouble using the Nightly Build of UGS. I had to use the stable version V1.0.9 from November. The Nightly would work about 30% of the time for me. Which version are you using?

I cover a bit of a different method here

I Use Grbl-Panel, but in the post reply, I have the code I use to lower down to my switch.

Yes,went through multiple full power cycles, reseating GShield, etc. no change in results, whether I have anything connected to A5 or not.

@SteveLittlepage v1.0.9.

If you have a multimeter handy, without the Zeroing probes attached check the DC voltage between your spindle and ground. If you have voltage, there may be something leaking power to your spindle. Also, check that you have ~5VDC between your touch plate and your clip when they are not connected to your work surface or spindle. (mine is about 4.87V)

Do you get any error like a soft limit for the error.
On my machine, I have the soft limits on so I cant drive my Z-Axis down to far.

$20 = 1 : enable soft limits
$132 = 64: I can go any farther down than 64mm from my homing position, not z-zero.

What is the machine position when you send the command. If Grbl it sees it as farther than the limit it will stop.

I had just done a homing sequence, so Z had lots of travel left before the limit.

I have exactly the same symptoms as @JonathanTaylor did over in the “Touch Plate not working” thread, it seems his arduino was bad, so I guess I’ll be talking to the folks at Inventables support.


Thanks, but the machine doesn’t move even without the wires attached, so it can’t be a +5 on the spindle.
When I measured voltage between A5 and ground, there was very nearly zero volts DC.
So, I think I may have a bad arduino, I’ve emailed tech support.


OK, Inventables Support sent me a new arduino, touch plate works now!




I got my touch plate working un UGS. (Z height only)
I just used a scrap piece of aluminum I had laying around. It is a bit improvised, I plan on redoing the wiring later :wink:

One thing I noticed was that if you are in Absolute Addressing Mode (G90) the bit will move until it reached the specified Z address. Which in this case is bad as I had not set my height yet.
Switching to Relative Addressing mode (G91) insured that it would move the specified amount and then stop if no connection was made.

I wrote out my touch plate code as a macro for UGS and it works well.
Now I just need to figure out how if I can make UGS save macros between sessions.
As it is I have a small txt file that I copy / paste it out of each time I open UGS.

Here is the UGS Macro version of the code I am using:
M5; G17; G21; G91 G38.2 Z-5 F6; G92 z7; G91 G0 z6.25

Here is the G Code I am using with Comments:
(I find writing out the comments helps me understand how the code works)


  • Auto Zero [PLATE] Macro +


  • Make sure PROBE PLATE and TOOL are connected +


  • Spindle OFF, not needed just added for extra safety +
  • XY plane selection, added to insure proper mode after startup +
  • Programming in mm, added to insure proper mode after startup +


  • Probe Towards material, Error if not encountered in Z (mm), Feed (mm/min)+
  • Note G91 (Relative Mode) it will stop after moving the specified distance in (mm), this is preferred +
  • Note G90 (Absolute Mode) it will stop after reaching the specified Z absolute address, this may be an issue after startup +
    G91 G38.2 Z-5 F6
  • Resets Specified Axis (Z) to specified value, use plate thickness (mm) +
    G92 z7
  • Raises bit clear of touch plate, Relative Addressing Mode used in case Z Axis reset fails+
    G91 G0 z6.25
1 Like

I just brought A5 and ground out of the Arduino as follows:

  1. Find a “stackable header”. If you are an Arduino “hacker” you should have these in your junk box. I wanted to use a “standard” 6 pin version as that’s how many pins are on the A0 through A5 connector even though you only need A5.

  2. If you think too much of the stackable header pins is exposed, just use a side cutter (diagonal cutting pliers) to shorten.

  3. Grabbing the pins with a pair of needle nose pliers, bend then at a 90 degree angle with respect to the header body. That way, wiring to A5 will come out of the side of the Arduino, similar to the way the limit switch wiring comes out. At first, I thought I could come straight out the top without bending. But, the stepper motor wiring interfered with the A5 wiring and I couldn’t move it.

  4. The next problem is that the slot in the metal enclosure near A5 isn’t wide enough to accommodate the full 6 pin stackable header. So, using side cutters again, I chopped off 3 of the pins. Some Arduino headers are designed to be broken at each pin. These headers were not, but, chopped off cleanly enough. I wanted to have more than 1 pin, A5, come out for physical “stability” of the connection.

  5. Next, I used a standard 2 pin header to attach the probe cable to the stackable header just installed. I used a 2 pin header because I didn’t have a 3 pin header. Crimp a male pin on the red wire and insert into a 2 pin header socket. Crimp another pin, a dummy pin without a wire, and install into the other 2 pin header socket. Again, I used 2 pins for stability.

  6. Connect the black, ground wire, to the shields from the 3 stepper motors. They should be nearby. I also have connected the shields to the power supply ground through a separate wire.

  7. Run the cable through one of the work table holes and terminate as you desire.

If this is too much or you don’t have the parts, you might also be able to take a spare Arduino male pin, maybe cut off the strain relief part to make it shorter if needed, and just solder a wire to it and insert in A5.

Here is my solution to the A5 pin connection. I just used a piece of solid coper wire. I think it was door bell wire. I put a little backwards “S” twist in it and when the GRBL shield is put back on it holds the wire down just fine. Being as stiff as the wire is, it won’t pull out. Fit perfectly and exits out the back of the enclosure with the stepper wires. Once clear of the enclosure I soldered it to a length of quality and flexible speaker wire and ran that to my touch plate. I use it to zero all three axis at one time by loading a short g-code file. Here is a short video of it in action.


nice ! great idea !!

I just found out that the analog input is not used at all !
I wonder if it is possible to connect several switch to manually control the movements of in x-y-z

Not sure what you mean by this. Care to elaborate please?

A0 = Reset/Abort
A1 = Feed Hold
A2 = Cycle Start/Resume
A3 = Coolant Enable
A4 = Not Used
A5 = Probe

Here are the functions for the Analog pins on the Arduino.
Sorry, they are used.

1 Like