Grounding interference solved!.....I wish

I will offer one tweak I am performing - adding a ferrite core to the USB cable - surely that’s suggested elsewhere - compensating for my misdirection :nerd_face:

3 Likes

That is widely agreed upon and I doubt you will find any dissenters. Good to remind people.

1 Like

I can’t pass up a challenge! :nerd_face: :rofl:

I recommend a USB cable with built in Ferrites at both ends, with gold plated connectors. The built in ferrites wrap the USB twisted pairs around the ferrite donut, rather than the whole insulated cable.

6 Likes

@Atreides at one-point Langmuir recommended the following to combat EMI.

FireControl Freezing During Cutting & How to Fix it! - CrossFire ® PRO - Langmuir Systems Forum

4 Likes

Well played!!!

2 Likes

Just remember!!! No limit switches :stuck_out_tongue_winking_eye:

5 Likes

Oh John! We were having such a civil conversation here. And you had to go and do that!!! :rofl:

1 Like

I hate those things… Just kidding anyway.

2 Likes

Agreed…I literally only use them to home the machine at the end of the day. They do not bother me now that I have turned off the soft limits.

1 Like

yeah see this is the thing… most people will never have the problem… but i like to get ahead of potential problems just in case i do. because if i was on a bigger budget then i’d have gotten a different system and just called tech support to deal with it. lol. but there’s something to be said for learning whats behind the scenes first and then moving up to better plug and play stuff later on if things go well.

Just had a massive problem cause im a dummy and mounted my plasma cutter to my table. Either it was feeding into the table or it was cause the main wall plug was touching or almost touching the main electrical box​:sweat_smile::sweat_smile::sweat_smile::joy: took me a week to figure it out

2 Likes

Welcome to the forum!

Just curios. What were the problems that were created by those circumstances?

1 Like

0 volt readings during the live voltage test. But it would still cut things and the readings would fluctuate between 10-35 volts. Im assuming the main power for the plasma cutter was to close to the main electronics and was causing some type of ground loop or feed and making the thc misread the voltage. Will be mounting to the wall now

3 Likes

I can testify to the efficacy of @Bigdaddy2166 's grounding suggestions.

I recently replaced an ancient laptop (“Pentium inside”!) with a mini PC. The mini PC is much faster and runs firecontrol much better, but I’ve been having an intermittent “machine disconnected” message. The mini PC is a 2 prong power supply so I thought it would behave like the laptop. I always ran the laptop plugged in to AC since the battery was dead and never had an issue.

I didn’t go quite as thorough with the grounding, but I did do braid to each motor, the table, and the 8’ ground rod to a common ground bar. I ran an extra 8’ of braid to the ground rod so I can still roll the table around for big index cuts.

I just finished a 10 minute program with loads of pierces and some fairly long straight runs with zero issues. Previously nearly every project, no matter how small, would have at least one failure.

While I was messing around in the area I added some 1" plastic standoffs to the control box, and a plastic splash shield for the control box.

3 Likes

Awesome that your issues are gone .

USB port looks to be bent over and touching the housing too. semi-common issue.

2 Likes

Thanks Tin. I gave it a little screwdriver tweak based on your observation.

Maybe a custom script . here is one chat gpt made.

example code

(v1.6-af)

(Machine)

( vendor: Autodesk)

( model: Crossfire Pro)

( description: Langmuir)

G90 G94

G17

G20

H0

(2D Profile1)

G0 X1.3744 Y1.539

G92 Z0.

G38.2 Z-5. F100.

G38.4 Z0.5 F20.

G92 Z0.

G0 Z0.04 (IHS Springback + Backlash)

G92 Z0.

G0 Z0.15 (Pierce Height)

M3

G4 P0.6

G0 Z0.06 (Cut Height)

H1

G1 X1.276 Y1.7095 F100.

G3 X1.25 Y1.7245 I-0.026 J-0.015 F100.

G3 Y0.7755 I0. J-0.4745

G3 Y1.7245 I0. J0.4745

G3 X1.224 Y1.7095 I0. J-0.03

G1 X1.1256 Y1.539

H0

M5

G0 Z1.

G0 Y2.461

G92 Z0.

G38.2 Z-5. F100.

G38.4 Z0.5 F20.

G92 Z0.

G0 Z0.04 (IHS Springback + Backlash)

G92 Z0.

G0 Z0.15 (Pierce Height)

M3

G4 P0.6

G0 Z0.06 (Cut Height)

H1

G1 X1.224 Y2.2905 F100.

G3 X1.25 Y2.2755 I0.026 J0.015

G1 X2.25

G2 X2.2755 Y2.25 I0. J-0.0255

G1 Y0.25

G2 X2.25 Y0.2245 I-0.0255 J0.

G1 X0.25

G2 X0.2245 Y0.25 I0. J0.0255

G1 Y2.25

G2 X0.25 Y2.2755 I0.0255 J0.

G1 X1.25

G3 X1.276 Y2.2905 I0. J0.03

G1 X1.3744 Y2.461

H0

M5

G0 Z1.

M30

(PS100)

:receipt: Here’s the Full Script You Can Run:

Just paste this into any Python environment (like Replit, VS Code, or even Python installed locally):

python

CopyEdit

import re
import math

gcode = """
(paste your full G-code here — same one you gave earlier)
"""

move_cmds = re.findall(r'([GM]\d+[^M]*)', gcode)

cutting = False
pierce_count = 0
cut_length = 0.0
non_cut_length = 0.0
last_x = None
last_y = None

def extract_coords(line, last_x, last_y):
    x = last_x
    y = last_y
    if 'X' in line:
        x = float(re.search(r'X([-+]?[0-9]*\.?[0-9]+)', line).group(1))
    if 'Y' in line:
        y = float(re.search(r'Y([-+]?[0-9]*\.?[0-9]+)', line).group(1))
    return x, y

def extract_ij(line):
    i = j = 0.0
    if 'I' in line:
        i = float(re.search(r'I([-+]?[0-9]*\.?[0-9]+)', line).group(1))
    if 'J' in line:
        j = float(re.search(r'J([-+]?[0-9]*\.?[0-9]+)', line).group(1))
    return i, j

def calculate_arc_length(x0, y0, x1, y1, i, j, cw):
    cx = x0 + i
    cy = y0 + j
    r = math.hypot(i, j)

    v0x = x0 - cx
    v0y = y0 - cy
    v1x = x1 - cx
    v1y = y1 - cy

    dot = v0x * v1x + v0y * v1y
    det = v0x * v1y - v0y * v1x
    angle = math.atan2(det, dot)

    if cw and angle > 0:
        angle -= 2 * math.pi
    elif not cw and angle < 0:
        angle += 2 * math.pi

    return abs(r * angle)

for line in move_cmds:
    line = line.strip()

    if line.startswith('M3'):
        cutting = True
        pierce_count += 1
    elif line.startswith('M5'):
        cutting = False

    if line.startswith(('G0', 'G1', 'G2', 'G3')):
        x, y = extract_coords(line, last_x, last_y)

        if last_x is not None and last_y is not None and x is not None and y is not None:
            if line.startswith('G1') or line.startswith('G0'):
                dx = x - last_x
                dy = y - last_y
                dist = math.hypot(dx, dy)
            elif line.startswith(('G2', 'G3')):
                i, j = extract_ij(line)
                dist = calculate_arc_length(last_x, last_y, x, y, i, j, cw=line.startswith('G2'))

            if cutting:
                cut_length += dist
            else:
                non_cut_length += dist

        last_x = x
        last_y = y

total_length = cut_length + non_cut_length

print("Pierce Count:", pierce_count)
print("Cut Length (in):", round(cut_length, 4))
print("Non-Cutting Travel (in):", round(non_cut_length, 4))
print("Total Travel (in):", round(total_length, 4))

:white_check_mark: You’ll Get Output Like:

java

CopyEdit

Pierce Count: 2
Cut Length (in): 11.142
Non-Cutting Travel (in): 3.567
Total Travel (in): 14.709

maybe something like this will work for you.