Bit setter accuracy issue

I received my new HDM a week ago for machining aluminum fixtures for work equipment. My current HDM setup:

  • heavy duty table (200+ lbs that was used for semiconductor manufacturing which means its quite rigid)
  • SMW table leveled within 0.002"
  • SMW vises (1/2" steel)
  • CNCJS software

My issue is that my WCS origin drifts over 0.01" every time I do a tool change. I am not running a program, just returning back to the origin and checking zero. I have not even changed the tool.

My process is as follows

  1. zero tool on bit setter
  2. move to X0,Y0,Z0 on WCS and zero out on my vise fixed jaw
  3. new tool initialization with same tool
  4. move back to X0,Y0,Z0
  5. measure the difference in zero via software by moving machine to physical zero.

X and Y are spot on, but Z is off +/- by over .01"

Is this common for the HDM? Can I improve my Z axis error?




Got some details on how you’re doing this?

After running the bitsetter, is your new z always higher, always lower or randomly higher or lower than the old z?

1 Like

The Tools are consistant, but drift a from tool to tool. Not sure what to make of this. 0.002" on the same tool, but over 0.05" drift on other tools regardless of diameter.

I am using your files found here: CNCjs-Macros/C3D_BitSetter at master · cncjs/CNCjs-Macros · GitHub

Hi Chris, See my post above for details

Hi Neil,

I have an update. Today I tested the machine and compared to carbide motion. CM is able to zero work offsets, but CNCJS macros are not updating G54 or any other Zs. I also get an error about G90. Are your scripts designed to adjust all work position?

Hi Jake…I missed your last post.
I’m not sure I understand what you’re asking, but Motion uses a dynamic tool offset (G43.1) with the bitsetter. That adjustment will carry across the WCS (work coordinate systems). My macros adjust the current WCS only. My main reason for doing it this way is to maintain Z zero across power cycles and resets. Personally, I have no use for adjusting Z across all coordinate systems. Does Motion make use of any besides G54?

That shouldn’t happen. There’s probably something else causing the error. Are you using CNCjs or gsender?
Were your results improved with Motion? Better than .002"?

Neil,

I would like to run multiple WCS with several vices, but the scripts to not update the Z0 on all coordinates. I found a script that fixes my single WCS issue, but I would like to update all WCS.

; This macro allows you to use a fixed machine location for a tool change and probe. It works by

; probing twice, once to capture the position of the tool you’re changing away from, and again to

; set the adjusted WCS offset of the tool you’re changing to.

; Using the macro in practice:

; 1) Insert an M6 tool change command in your program, which will pause cncjs and allow you to

; execute this macro.

; 2) The router retracts to a safe height and moves to a pre-defined location for tool changes and

; probing, then pauses.

; 3) Turn off your router, set up your probe, and continue. This will probe to capture the position

; of your current tool and then retract back up to the tool change height and pause.

; 4) Change out your tool, set up your probe, and continue. This will probe the new tool. When it

; reaches the probe, the end of the tool will be in precisely the same position as the original

; tool, but the Z position will be different, so we set the current Z offset to be the previously

; captured offset.

; 5) Remove the probe and continue. The spindle will move back to the location it encountered

; the M6.

; 6) Turn your router back on and resume execution of your program.

%wait

G21 ; Metric

; User-defined variables (METRIC)

%SAFE_HEIGHT = -1 ; Height needed to clear everything (negative number, distance below Z limit)

%TOOL_PROBE_X = -46 ; Machine coords

%TOOL_PROBE_Y = -470 ; Machine coords

%TOOL_PROBE_Z = -74 ; Machine coords

%PROBE_DISTANCE = 120

%PROBE_FAST_FEEDRATE = 300 ; mm/min

%PROBE_SLOW_FEEDRATE = 10 ; mm/min

%wait

; Keep a backup of current work position

%X0=posx, Y0=posy, Z0=posz

; Save modal state

; * Work Coordinate System: G54, G55, G56, G57, G58, G59

; * Plane: G17, G18, G19

; * Units: G20, G21

; * Distance Mode: G90, G91

; * Feed Rate Mode: G93, G94

; * Spindle State: M3, M4, M5

; * Coolant State: M7, M8, M9

%WCS = modal.wcs

%PLANE = modal.plane

%UNITS = modal.units

%DISTANCE = modal.distance

%FEEDRATE = modal.feedrate

%SPINDLE = modal.spindle

%COOLANT = modal.coolant

M5 ; Stop spindle

G90

G53 Z[SAFE_HEIGHT]

G53 X[TOOL_PROBE_X] Y[TOOL_PROBE_Y]

%wait

; Set up for probing

M0

G53 Z[TOOL_PROBE_Z]

G91

G38.2 Z-[PROBE_DISTANCE] F[PROBE_FAST_FEEDRATE]

G0 Z1

G38.2 Z-2 F[PROBE_SLOW_FEEDRATE]

G90

%ORIGINAL_TOOL = posz

%wait

G91

G0 Z5

G90

G53 Z[SAFE_HEIGHT]

%wait

; Manual tool change & probing

M0

G53 Z[TOOL_PROBE_Z]

G91

G38.2 Z-[PROBE_DISTANCE] F[PROBE_FAST_FEEDRATE]

G0 Z1

G38.2 Z-2 F[PROBE_SLOW_FEEDRATE]

G90

%wait

; Update Z offset for new tool to be that of original tool

G10 L20 Z[ORIGINAL_TOOL]

%wait

G91

G0 Z5

G90

G53 Z[SAFE_HEIGHT]

%wait

; Cleanup (e.g. remove touch plate, wires, etc)

M0

; Go to previous work position

G0 X[X0] Y[Y0]

G0 Z[Z0]

; Restore modal state

[WCS] [PLANE] [UNITS] [DISTANCE] [FEEDRATE] [SPINDLE] [COOLANT]

That’s an old one. I’d use one of the newer ones. What sender are you using?

You could either iterate through the WCS one by one or you can use G43.1. This is the thread that started things before the bitsetter existed. I originally used G43.1.

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.