USB smoothstepper
C25 breakout board
gecko 201 stepper drivers
Smoothsteper board ver 1.2
plugin smoothstepper SmoothStepper_v17fe
12 vdc proxy sensors on X and Y as homing switches (opto relay board triggers signal)
machine is 3 axis mill running mach 3

I tried a z zero script after watching this video

Script worked like a charm but was having other issues with homing and so it was strongly suggested I update my USS plugin which I did. I was using an ancient version. The new plugin fixed the homing problem but now the Z zero script no longer functions. The z axis never moves down to contact the touch off plate. (Maybe a G31 issue?}

Here's the script.

'************************************************* ************************************************** **********
'**************************** Z Axis Touch Plate Script For Mach3 R3.043 ********************************
'******FONT****************** For Both INCH And MM Units | Rev12 Sep/2020 ********************************
'*********Courier************ CHARLIE SARSFIELD ********************************
'**************************** www.YouTube.com/sunny5rising ********************************
'**************************** sunny5rise@gmail.com ********************************
'************************************************* ************************************************** **********
'******************** TEST SCRIPT CAUTIOUSLY ****** USE SCRIPT AT YOUR OWN RISK ***********************
'************************************************* ************************************************** **********
'************************************************* ************************************************** **********
'******************** To Support My Work: PayPal.Me ***********************
'************************************************* ************************************************** **********

'----- USER VARIABLES FOR DISTANCES, FEED RATES, TOUCH PLATES, OPTIONS ---------------------------------------
If GetParam("Units") = 0 Then
'* METRIC VALUES *
VarUnits = " MM"
VarMaxDistance = -25.4 'MAX Z TRAVEL * ALWAYS MAKE NEGATIVE
VarFeedRate = 127 'MM/MIN DOWN FEEDRATE
VarStandOff = 1.27 'STANDOFF DISTANCE ABOVE PROBE CONTACT
VarTouchPlate = 9.93 'PRIMARY/DEFAULT TOUCH PLATE THICKNESS
VarSecondPlate = 0.038 'SECONDARY TOUCH PLATE THICKNESS * OPTION FOR CHOICE DIALOG
VarThirdPlate = 0.012 'TERTIARY TOUCH PLATE THICKNESS * OPTION FOR CHOICE DIALOG
Else
'* SAE VALUES *
VarUnits = " INCH"
VarMaxDistance = -1.0 'MAX Z TRAVEL * ALWAYS MAKE NEGATIVE
VarFeedRate = 5 'INCH/MIN DOWN FEEDRATE
VarStandOff = 0.05 'STANDOFF DISTANCE ABOVE PROBE CONTACT
VarTouchPlate = 0.391 'PRIMARY/DEFAULT TOUCH PLATE THICKNESS
VarSecondPlate = 0.0015 'SECONDARY TOUCH PLATE THICKNESS * OPTION FOR CHOICE DIALOG
VarThirdPlate = 0.0005 'TERTIARY TOUCH PLATE THICKNESS * OPTION FOR CHOICE DIALOG
End If

VarRunTheChoice = 1 'RUN PLATE CHOICE DIALOG? 0=NO 1=YES

VarDelayInSec = 0 'DEFAULT SECONDS TO DELAY MOTION
VarBeepOrSpeak = 2 'COUNTDOWN AUDIO: 0=NONE 1=BEEP 2=SPEAK
VarSecOfAudio = 5 'COUNTDOWN SECOND AT WHICH AUDIO BEGINS

VarCompleteAudio = 3 'END SIGNAL: 0=NONE 1=BEEP 2=SPEAK 3=WAV_AUDIO_FILE
VarWavAudioFile = "C:\MACH3\ToolCompleteSND1.wav" 'WAV_AUDIO_FILE LOCATION

'************************************************* ************************************************** **********
'************************************************* ************************************************** **********

'----- GET INITIAL ENVIRONMENT SETTINGS FOR LATER REINSTATEMENT ----------------------------------------------
VarInitialLinearMode = GetOemDRO(819) 'LINEAR MODE G00/G01
VarInitialDistMode = GetOemLED(48) 'DISTANCE MODE G90/G91
VarInitialFeedRate = GetOemDRO(818) 'FEEDRATE
VarInitialInhibit = GetParam("ZInhibitOn") 'Z INHIBIT STATUS OFF/ON
VarInitialZScale = GetParam("ZScale") 'Z SCALE VALUE
VarInitialFRO = GetOemDRO(821) 'FEEDRATE OVERRIDE PERCENTAGE
Message "" 'CLEAR STATUS LINE TEXT


'----- CHECK DIGITIZE STATE; 0=CLEAR 1=ACTIVE ----------------------------------------------------------------
If GetOemLED (825) <> 0 Then
RET = MachMsg("Digitize Status Not Clear. Check Probe/Connections And Try Again!","*** ERROR! ***",0)
End 'END SCRIPT
End If


'----- CHECK IF USER WANTS TO RUN PLATE CHOICE DIALOG --------------------------------------------------------
If VarRunTheChoice = 1 Then RunTheThing 'RUN SUBROUTINE


'----- ACTIVATE TIME DELAY IF USED ---------------------------------------------------------------------------
If VarDelayInSec <> 0 Then
Do Until VarDelayInSec = 0 'LOOP UNTIL SECONDS = ZERO
Message VarDelayInSec 'DISPLAY SECONDS VALUE IN STATUS LINE
If VarDelayInSec < VarSecOfAudio + 1 Then
Select Case VarBeepOrSpeak
Case 1 'OPTION BEEP
Beep
Case 2 'OPTION SPEAK
Speak(VarDelayInSec)
End Select
End If
Sleep 1000 'PAUSE 1 SEC.
VarDelayInSec = VarDelayInSec - 1 'REDUCE SECONDS BY 1 AFTER EACH LOOP
Loop
End If


'----- PREPARE FOR MOVE ----- MOVE PROBE DOWN TOWARD CONTACT -------------------------------------------------
SetParam("ZInhibitOn",0) 'TURN Z INHIBIT OFF
SetParam("ZScale",1.0) 'SET Z SCALE TO 1.0
DoOemButton(1014) 'CANCEL FEED OVERRIDE
SetOemDRO(802,0) 'ZERO Z AXIS DRO
Sleep 200 'DELAY TO ALLOW DRO TO CHANGE
Message "Auto Tool Zero Running..."
Code "G90 G31 Z" &VarMaxDistance &"F" &VarFeedRate 'MOVE DOWN @ FEEDRATE
While IsMoving() 'WAIT UNTIL MOVE IS COMPLETE BEFORE PROCEEDING
Wend


'----- GET Z CONTACT POSITION AND TEST FOR MAX TRAVEL ------ MOVE TO STANDOFF ------ UPDATE Z AXIS DRO -------
If GetVar(2002) <= VarMaxDistance + .001 Then
RET = MachMsg("Maximum Travel Reached. Reposition Z Axis Closer To Touch Plate And Try Again!","*** OOPS! ***",0)
Message ""
RETURNSTATE 'CALL REINSTATE SUBROUTINE
End 'END SCRIPT
Else
Beep
Code "G90 G0 Z" &GetVar(2002) 'MOVE TO CONTACT POINT DUE TO OVERRUN
While IsMoving()
Wend
SetOemDRO(802,0) 'ZERO Z AXIS DRO
Sleep 200
Code "G90 G0 Z" &VarStandOff 'MOVE TO STANDOFF DISTANCE
While IsMoving ()
Wend
SetOemDRO(802, VarStandOff + VarTouchPlate) 'SET Z DRO (STANDOFF + PLATE THICKNESS)
Sleep 200
Select Case VarCompleteAudio
Case 1 'OPTION BEEP
Beep
Case 2 'OPTION SPEAK
Speak("Tool Zero Complete.")
Case 3 'OPTION WAV_AUDIO_FILE
PlayWave(VarWavAudioFile)
End Select
Message "Auto Tool Zero Complete! ***Remove Touch Plate***"
End If
RETURNSTATE 'CALL REINSTATE SUBROUTINE
End 'END SCRIPT

'******************************************* SUBROUTINES BELOW ***********************************************

'----- SUBROUTINE TO RETURN INITIAL SETTINGS -----------------------------------------------------------------
Sub RETURNSTATE
'REINSTATE INITIAL FEEDRATE
Code "F" &VarInitialFeedRate

'REINSTATE DISTANCE MODE 0=G91 -1=G90
If VarInitialDistMode = 0 Then Code "G91" Else Code "G90"

'REINSTATE LINEAR MODE 0=G00 1=G01
If VarInitialLinearMode = 0 Then Code "G00" Else Code "G01"

'REINSTATE Z INHIBIT STATUS 0=OFF 1=ON
If VarInitialInhibit = 1 Then SetParam("ZInhibitOn",1)

'SET Z SCALE TO INITIAL VALUE
If VarInitialZScale <> 1.0 Then SetParam("ZScale",VarInitialZScale)

'SET FEEDRATE OVERRIDE TO INITIAL VALUE
If VarInitialFRO <> 100 Then SetOemDRO(821,VarInitialFRO)
End Sub


'----- DIALOG SUBROUTINE FOR TOUCH PLATE CHOICE AND TIME DELAY -----------------------------------------------
Sub RunTheThing
Dim PlateList$ (2) 'DECLARE 3 ITEM ARRAY FOR PLATE SIZE LIST
If GetParam("Units") = 0 Then
'MM FORMATTING FOR LISTBOX
PlateList (0) = Format(VarTouchPlate,"00.000") 'FILL ARRAY 1
PlateList (1) = Format(VarSecondPlate,"00.000") 'FILL ARRAY 2
PlateList (2) = Format(VarThirdPlate,"00.000") 'FILL ARRAY 3
Else
'INCH FORMATTING FOR LISTBOX
PlateList (0) = Format(VarTouchPlate,"0.0000") 'FILL ARRAY 1
PlateList (1) = Format(VarSecondPlate,"0.0000") 'FILL ARRAY 2
PlateList (2) = Format(VarThirdPlate,"0.0000") 'FILL ARRAY 3
End If

Dim UnitList$ (0) 'DECLARE 1 ITEM ARRAY FOR UNIT LISTBOX
UnitList (0) = VarUnits 'FILL ARRAY 1

'SETUP DIALOG CONTROLS
Begin Dialog PlateChoice 110,68,"Touch Plate"
ListBox 15,20,35,30, PlateList$(),.Lstbox2
ListBox 64,20,25,10, UnitList$(),.Listbox1
GroupBox 8,8,95,45,"Choose Plate Thickness",.GroupBox1
OKButton 57,34,37,12
Text 13,55,100,15, "Delay"
TextBox 37,55,30,10, .SecText
Text 70,55,30,15, "Seconds"
End Dialog

Dim Dlg1 As PlateChoice
Dlg1.SecText = VarDelayInSec 'FILL SECONDS TEXTBOX WITH DEFAULT VALUE

Button = Dialog (Dlg1) 'SHOW DIALOG AND WAIT FOR BUTTON REPLY

If Button = 0 Then 'IF CLOSE BUTTON
Message "Auto Tool Zero CANCELED"
End 'END SCRIPT
End If

'CHECK THAT SECONDS WAS ENTERED NUMERIC
If IsNumeric(Dlg1.SecText) = True Then
VarDelayInSec = Int(Dlg1.SecText)
Else
RET = MachMsg("***** SECONDS MUST BE ENTERED IN NUMERIC FORMAT! *****", _
" Substance Abuse Is Not Recommended ",0)
RunTheThing 'RESTART SUB
End If

'SET PLATE VARIABLE BASED ON PLATE CHOICE
PlateNum = Dlg1.Lstbox2
Select Case PlateNum
Case 0 'PRIMARY PLATE
'WILL USE PRIMARY/DEFAULT THICKNESS
Case 1 'SECONDARY PLATE
VarTouchPlate = VarSecondPlate
Case 2 'TERTIARY PLATE
VarTouchPlate = VarThirdPlate
End Select
End Sub

'************************************************* ************************************************** **********
'************************************************* ************************************************** **********

Similar Threads: