Search Results (Searched for: )
- tommylight

Terminated with an error, I'm begging for help
Category: General LinuxCNC Questions
RMM0705HZ.hal:30: Pin 'hm2_5i25.0.7i76.0.0.input-00' does not exist- PanikEspoir
- PanikEspoir
Terminated with an error, I'm begging for help
Category: General LinuxCNC Questions
- snowgoer540

No underspeed with temporary material
Category: Plasmac
Thanks for the long reply. I've been doing this long enough to know that that a good bug hunter is worth their weight in gold.
I like to think so haha
> I am not sure when you'd actually want to use cutter comp, I've always just relied on the CAM to offset the paths for me
I don't fully understand what you mean there since in this scenario MetalHeadCAM is the CAM. Do you mean that you normally offset it in CAD? Or that you use G40/41/42 in gcode? FYI, support for LinuxCNC's native offsetting via G40/41/42 will probably come in the next release.
I added offsets for a few reasons. 1) visualize the actual cut path 2) possible future support for controllers that don't have G40/41/42 3) eventually support true arc and NURBS offset paths since LinuxCNC G40... only does lines.
I think we are talking past each other a bit.
I am saying that your CAM software should drive the offset, by producing a G-Code path that is offset inside or outside depending on the feature by the kerf amount. It should not rely on using G40/41/42 in the G-Code output.
The reason to not use it specifically with LinuxCNC is as follows (quoted from the manual)
Important
IF CUTTER COMPENSATION IS IN EFFECT G-CODE THC, VELOCITY BASED THC AND OVER CUT ARE NOT ABLE TO BE USED; AN ERROR MESSAGE WILL BE DISPLAYED.> I am unsure what all of your goals are for the project, but if you need inspiration, SheetCAM is a pretty good software to try and emulate. I cant think of much I would want to do that it does not. It's nice to have free options for sure!
I currently use SheetCAM. It's great, but I don't love the interface. I also think that $279 is too much for most hobbyists. I'm also an open source maximalist so it will forever bother me that I have a closed program in my workflow.
I missed when SheetCAM became so expensive. I agree, that's too much for hobbyists. I swear when I bought it it was $79, and not $279! But I am still on version 7.
The rest I'll reply to in order:
1. I'm going to add some sort of documentation to the landing page on this. You're not actually uploading anything. MetalHeadCAM runs as a Javascript app in your browser. There's literally no backend to upload to; it's just HTML and Javascript delivered via a CDN. At some point I'm going to make it available for download as a fat HTML page so that you can run the whole thing offline.
Understood.
2. I've just deployed a new version that has first-class Imperial support. At first I wasn't sure if I should stop with the Norman conquest, or add cubits too. Go to the hamburger menu > Settings > Reset Application before trying it again because you'll need to wipe out the old metric-only state.
Good news, I will try to make time over the weekend to retest!
3. I need to scale zoom factor based on size. That's on the TODO list.
4. Edit and Prepare stages are gone now.
5. Tools are in hamburger menu > Tools. I need to get rid of the hamburger menu as that is really a mobile thing.
6. Rapid speed is in Simulation now.
7. There's now a Select All button.
8. Fit is gone. That was an experiment.
9. Should be fixed. Normals calculation needed improvement.
10. Should be fixed. There was a bug in spline tesselation.
11. This one is admittedly confusing. Default is Part because it implements "the kerf always be toward the scrap (or away from the part)?". Allowing the user to set Inside and Outside is just my way of avoiding making a hasty assumption.
Acknowledged on all of these, looking forward to giving it a go. It's nice to have CAM options.
12. Not sure what was up with that. I can't reproduce it.
If I see it again, I will try to find exact steps to reproduce. I know how valuable that is to squishing bugs.
Great work overall. Will report back after I've had another play.
- Bram kersten
- Bram kersten
WCS Problem with Linuxcnc/qtdragon
Category: General LinuxCNC Questions
- MaHa
- MaHa
WCS Problem with Linuxcnc/qtdragon
Category: General LinuxCNC Questions
I would change Z machine home to top, something like
[AXIS_Z]
MIN_LIMIT = -350
MAX_LIMIT = 0.001
HOME = 0.0
- laurentl38
- laurentl38
increment 4 MPG jog wheels with Basic Probe
Category: QtPyVCP
For now, I've decided to add physical switches to select the wheel increments. The wheels will be decoupled from the soft increments.
This is the simplest solution for me. I already have something that works; I need to refine it.
- Aciera

Pas de déplacement avec le MPG
Category: Français
forum.linuxcnc.org/21-axis/57364-axis-co...-9-6?start=10#336538
Ou rester avec 2.9.4 et attends 2.9.7
- Aciera

Combine Glade Togglebutton with Physical Input
Category: GladeVCP
net some_signal_name <= halui.machine.is-on => gladevcp.led_Startstopp- Lcvette

increment 4 MPG jog wheels with Basic Probe
Category: QtPyVCP
The main issue with the on screen increment widget is how to keep it and a physical rotary switch synchronized, you could have the rotary knob sync the buttons but not the other way. you would use momentary push buttons, that would work bidirectionally as there would not be a static set switch. you could also have outputs to illuminate the momentary buttons for which increment was selected if you have enough IO. but there were so many scenarios to contend with that we ultimately decide to just leave the increment settings connected solely to the on screen jog buttons.
- DerKlotz
- DerKlotz
Combine Glade Togglebutton with Physical Input
Category: GladeVCP
#[Startknopf]
loadrt or2
addf or2.0 servo-thread
loadrt not
addf not.0 servo-thread
net Start.not.in => not.0.in #<= ???? must be hm2_7i76e.0.7i76.0.0.input-04
#net Start.not.out => not.0.out
net Start.ext.an <= gladevcp.Start => or2.0.in0
net Start.ext.an1 <= hm2_7i76e.0.7i76.0.0.input-04 => or2.0.in1
net Start.or <= or2.0.out => hm2_7i76e.0.7i76.0.0.output-05 => gladevcp.led_Startstopp => halui.machine.on
#net Start.or <= not.0.in => hm2_7i76e.0.7i76.0.0.output-06 => halui.machine.off
#net Start.ext.aus <= not.0.out => hm2_7i76e.0.7i76.0.0.output-06 => halui.machine.off ## almost work, but gladevcp.led_Startstopp doesn´t work
- lorenzing
- lorenzing
Festo CMMT-ST
Category: EtherCAT
ethercat.ini
[EMC]
VERSION = 1.1
# Debug level, 0 means no messages. See src/emc/nml_int/emcglb.h for others
#DEBUG = 0x7FFFFFFF
DEBUG = 0
[DISPLAY]
DISPLAY = axis
CYCLE_TIME = 0.1
MAX_LINEAR_VELOCITY = 50.0
DEFAULT_LINEAR_VELOCITY = 10.0
POSITION_OFFSET = RELATIVE
POSITION_FEEDBACK = ACTUAL
[TASK]
TASK = milltask
CYCLE_TIME = 0.01
[EMCMOT]
EMCMOT = motmod
# Timeout for comm to emcmot, in seconds
COMM_TIMEOUT = 1.0
# Servo task period, in nano-seconds
SERVO_PERIOD = 1000000
# section for main IO controller parameters -----------------------------------
[EMCIO]
# Name of IO controller program, e.g., io
EMCIO = io
# cycle time, in seconds
CYCLE_TIME = 0.100
TOOL_TABLE = tool.tbl
[HAL]
HALFILE = ethercat.hal
# Single file that is executed after the GUI has started. Only supported by
# AXIS at this time (only AXIS creates a HAL component of its own)
#POSTGUI_HALFILE = test_postgui.hal
HALUI = halui
[RS274NGC]
PARAMETER_FILE = linuxcnc.var
[TRAJ]
COORDINATES = XYYZZ
LINEAR_UNITS = mm
ANGULAR_UNITS = degree
MAX_LINEAR_VELOCITY = 25.0
DEFAULT_LINEAR_VELOCITY = 2.50
[KINS]
JOINTS = 5
KINEMATICS = trivkins coordinates=XYYZZ kinstype=BOTH
# --- X Axis ---
[AXIS_X]
MAX_VELOCITY = 50.0
MAX_ACCELERATION = 200.0
MIN_LIMIT = -30.0
MAX_LIMIT = 1700.0
[JOINT_0]
TYPE = LINEAR
HOME = 0.0
MAX_VELOCITY = 50.0
MAX_ACCELERATION = 200.0
MIN_LIMIT = -30.0
MAX_LIMIT = 1700.0
FERROR = 1000
MIN_FERROR = 1000
HOME_ABSOLUTE_ENCODER = 2
HOME_SEQUENCE = 0
# --- Y Axis (dual) ---
[AXIS_Y]
MAX_VELOCITY = 50.0
MAX_ACCELERATION = 200.0
MIN_LIMIT = -30.0
MAX_LIMIT = 1700.0
[JOINT_1]
TYPE = LINEAR
HOME = 0.0
FERROR = 1000
MIN_FERROR = 1000
# both Y joints home together
HOME_SEQUENCE = 1
HOME_ABSOLUTE_ENCODER = 2
MAX_VELOCITY = 50.0
MAX_ACCELERATION = 200.0
MIN_LIMIT = -30.0
MAX_LIMIT = 1700.0
[JOINT_2]
TYPE = LINEAR
HOME = 0.0
FERROR = 1000
MIN_FERROR = 1000
# both Y joints home together
HOME_SEQUENCE = 1
HOME_ABSOLUTE_ENCODER = 2
MAX_VELOCITY = 50.0
MAX_ACCELERATION = 200.0
MIN_LIMIT = -30.0
MAX_LIMIT = 1700.0
# --- Z Axis (dual) ---
[AXIS_Z]
MAX_VELOCITY = 50.0
MAX_ACCELERATION = 200.0
MIN_LIMIT = -30.0
MAX_LIMIT = 1700.0
[JOINT_3]
TYPE = LINEAR
HOME = 0.0
MAX_VELOCITY = 50.0
MAX_ACCELERATION = 200.0
MIN_LIMIT = -30.0
MAX_LIMIT = 1700.0
FERROR = 1000
MIN_FERROR = 1000
# both Z joints home together
HOME_SEQUENCE = 2
HOME_ABSOLUTE_ENCODER = 2
[JOINT_4]
TYPE = LINEAR
HOME = 0.0
MAX_VELOCITY = 50.0
MAX_ACCELERATION = 200.0
MIN_LIMIT = -30.0
MAX_LIMIT = 1700.0
FERROR = 1000
MIN_FERROR = 1000
# both Z joints home together
HOME_SEQUENCE = 2
HOME_ABSOLUTE_ENCODER = 2ethercat.hal
# --- load components ---
loadrt [KINS]KINEMATICS
loadrt [EMCMOT]EMCMOT servo_period_nsec=[EMCMOT]SERVO_PERIOD num_joints=5
# load EtherCAT xml then drivers
loadusr -W lcec_conf ethercat-conf.xml
loadrt lcec
loadrt cia402 count=5
# estop loopback
net estop-loop iocontrol.0.user-enable-out iocontrol.0.emc-enable-in
#machine enabled if no estop loopback
#setp iocontrol.0.emc-enable-in 1
# --- add functions to servo-thread ---
addf lcec.read-all servo-thread
# read from cia402 drivers (one per joint)
addf cia402.0.read-all servo-thread
addf cia402.1.read-all servo-thread
addf cia402.2.read-all servo-thread
addf cia402.3.read-all servo-thread
addf cia402.4.read-all servo-thread
# motion stack
addf motion-command-handler servo-thread
addf motion-controller servo-thread
# writes: cia402 then lcec
addf cia402.0.write-all servo-thread
addf cia402.1.write-all servo-thread
addf cia402.2.write-all servo-thread
addf cia402.3.write-all servo-thread
addf cia402.4.write-all servo-thread
addf lcec.write-all servo-thread
# =========================
# JOINT 0 (X) -> cia402.0 -> lcec.0.4
# =========================
setp cia402.0.csp-mode 1
setp cia402.0.pos-scale 2000 # match SCALE in .ini; negate if direction reversed
# joint signals for motion
net x-pos-cmd joint.0.motor-pos-cmd => cia402.0.pos-cmd
net x-pos-fb joint.0.motor-pos-fb <= cia402.0.pos-fb
net x-enable joint.0.amp-enable-out => cia402.0.enable
net x-amp-fault joint.0.amp-fault-in <= cia402.0.drv-fault
# ethercat to cia402 driver
net x-statusword lcec.0.4.cia-statusword => cia402.0.statusword
net x-opmode-display lcec.0.4.opmode-display => cia402.0.opmode-display
net x-drv-act-pos lcec.0.4.actual-position => cia402.0.drv-actual-position
# cia402 driver to ethercat
net x-controlword cia402.0.controlword => lcec.0.4.cia-controlword
net x-modes-of-operation cia402.0.opmode => lcec.0.4.opmode
net x-drv-target-pos cia402.0.drv-target-position => lcec.0.4.target-position
# homing (optional)
# net x-home-request joint.0.request-custom-homing => cia402.0.home
# net x-homing joint.0.is-custom-homing <= cia402.0.stat-homing
# net x-homed joint.0.custom-homing-finished <= cia402.0.stat-homed
# =========================
# JOINT 1 (Y1) -> cia402.1 -> lcec.0.2
# =========================
setp cia402.1.csp-mode 1
setp cia402.1.pos-scale 2000
#setp cia402.1.abs-encoder 1
net y1-pos-cmd joint.1.motor-pos-cmd => cia402.1.pos-cmd
net y1-pos-fb joint.1.motor-pos-fb <= cia402.1.pos-fb
net y1-enable joint.1.amp-enable-out => cia402.1.enable
net y1-amp-fault joint.1.amp-fault-in <= cia402.1.drv-fault
net y1-statusword lcec.0.2.cia-statusword => cia402.1.statusword
net y1-opmode-display lcec.0.2.opmode-display => cia402.1.opmode-display
net y1-drv-act-pos lcec.0.2.actual-position => cia402.1.drv-actual-position
net y1-controlword cia402.1.controlword => lcec.0.2.cia-controlword
net y1-modes-of-operation cia402.1.opmode => lcec.0.2.opmode
net y1-drv-target-pos cia402.1.drv-target-position => lcec.0.2.target-position
# =========================
# JOINT 2 (Y2) -> cia402.2 -> lcec.0.3
# =========================
setp cia402.2.csp-mode 1
setp cia402.2.pos-scale 2000
#setp cia402.2.abs-encoder 1
net y2-pos-cmd joint.2.motor-pos-cmd => cia402.2.pos-cmd
net y2-pos-fb joint.2.motor-pos-fb <= cia402.2.pos-fb
net y2-enable joint.2.amp-enable-out => cia402.2.enable
net y2-amp-fault joint.2.amp-fault-in <= cia402.2.drv-fault
net y2-statusword lcec.0.3.cia-statusword => cia402.2.statusword
net y2-opmode-display lcec.0.3.opmode-display => cia402.2.opmode-display
net y2-drv-act-pos lcec.0.3.actual-position => cia402.2.drv-actual-position
net y2-controlword cia402.2.controlword => lcec.0.3.cia-controlword
net y2-modes-of-operation cia402.2.opmode => lcec.0.3.opmode
net y2-drv-target-pos cia402.2.drv-target-position => lcec.0.3.target-position
# =========================
# JOINT 3 (Z1) -> cia402.3 -> lcec.0.0
# =========================
setp cia402.3.csp-mode 1
setp cia402.3.pos-scale 2000
#setp cia402.3.abs-encoder 1
net z1-pos-cmd joint.3.motor-pos-cmd => cia402.3.pos-cmd
net z1-pos-fb joint.3.motor-pos-fb <= cia402.3.pos-fb
net z1-enable joint.3.amp-enable-out => cia402.3.enable
net z1-amp-fault joint.3.amp-fault-in <= cia402.3.drv-fault
net z1-statusword lcec.0.0.cia-statusword => cia402.3.statusword
net z1-opmode-display lcec.0.0.opmode-display => cia402.3.opmode-display
net z1-drv-act-pos lcec.0.0.actual-position => cia402.3.drv-actual-position
net z1-controlword cia402.3.controlword => lcec.0.0.cia-controlword
net z1-modes-of-operation cia402.3.opmode => lcec.0.0.opmode
net z1-drv-target-pos cia402.3.drv-target-position => lcec.0.0.target-position
# =========================
# JOINT 4 (Z2) -> cia402.4 -> lcec.0.1
# =========================
setp cia402.4.csp-mode 1
setp cia402.4.pos-scale 2000
#setp cia402.4.abs-encoder 1
net z2-pos-cmd joint.4.motor-pos-cmd => cia402.4.pos-cmd
net z2-pos-fb joint.4.motor-pos-fb <= cia402.4.pos-fb
net z2-enable joint.4.amp-enable-out => cia402.4.enable
net z2-amp-fault joint.4.amp-fault-in <= cia402.4.drv-fault
net z2-statusword lcec.0.1.cia-statusword => cia402.4.statusword
net z2-opmode-display lcec.0.1.opmode-display => cia402.4.opmode-display
net z2-drv-act-pos lcec.0.1.actual-position => cia402.4.drv-actual-position
net z2-controlword cia402.4.controlword => lcec.0.1.cia-controlword
net z2-modes-of-operation cia402.4.opmode => lcec.0.1.opmode
net z2-drv-target-pos cia402.4.drv-target-position => lcec.0.1.target-position
# End of HALethercat-conf.xml
<masters>
<master idx="0" appTimePeriod="1000000" refClockSyncCycles="1">
<!-- Joint Z1 -->
<slave idx="0" type="generic" vid="0000001D" pid="007b5a25" configPdos="true">
<dcConf assignActivate="300" sync0Cycle="*1" sync0Shift="0"/>
<syncManager idx="2" dir="out">
<pdo idx="1600">
<pdoEntry idx="6040" subIdx="00" bitLen="16" halPin="cia-controlword" halType="u32"/>
<pdoEntry idx="6060" subIdx="00" bitLen="8" halPin="opmode" halType="s32"/>
<pdoEntry idx="607A" subIdx="00" bitLen="32" halPin="target-position" halType="s32"/>
</pdo>
</syncManager>
<syncManager idx="3" dir="in">
<pdo idx="1a00">
<pdoEntry idx="6041" subIdx="00" bitLen="16" halPin="cia-statusword" halType="u32"/>
<pdoEntry idx="6061" subIdx="00" bitLen="8" halPin="opmode-display" halType="s32"/>
<pdoEntry idx="6064" subIdx="00" bitLen="32" halPin="actual-position" halType="s32"/>
<pdoEntry idx="606C" subIdx="00" bitLen="32" halPin="actual-velocity" halType="s32"/>
<pdoEntry idx="6077" subIdx="00" bitLen="32" halPin="actual-torque" halType="s32"/>
</pdo>
</syncManager>
</slave>
<!-- Joint Z2 -->
<slave idx="1" type="generic" vid="0000001D" pid="007b5a25" configPdos="true">
<dcConf assignActivate="300" sync0Cycle="*1" sync0Shift="0"/>
<syncManager idx="2" dir="out">
<pdo idx="1600">
<pdoEntry idx="6040" subIdx="00" bitLen="16" halPin="cia-controlword" halType="u32"/>
<pdoEntry idx="6060" subIdx="00" bitLen="8" halPin="opmode" halType="s32"/>
<pdoEntry idx="607A" subIdx="00" bitLen="32" halPin="target-position" halType="s32"/>
</pdo>
</syncManager>
<syncManager idx="3" dir="in">
<pdo idx="1a00">
<pdoEntry idx="6041" subIdx="00" bitLen="16" halPin="cia-statusword" halType="u32"/>
<pdoEntry idx="6061" subIdx="00" bitLen="8" halPin="opmode-display" halType="s32"/>
<pdoEntry idx="6064" subIdx="00" bitLen="32" halPin="actual-position" halType="s32"/>
<pdoEntry idx="606C" subIdx="00" bitLen="32" halPin="actual-velocity" halType="s32"/>
<pdoEntry idx="6077" subIdx="00" bitLen="32" halPin="actual-torque" halType="s32"/>
</pdo>
</syncManager>
</slave>
<!-- Joint Y1 -->
<slave idx="2" type="generic" vid="0000001D" pid="007b5a25" configPdos="true">
<dcConf assignActivate="300" sync0Cycle="*1" sync0Shift="0"/>
<syncManager idx="2" dir="out">
<pdo idx="1600">
<pdoEntry idx="6040" subIdx="00" bitLen="16" halPin="cia-controlword" halType="u32"/>
<pdoEntry idx="6060" subIdx="00" bitLen="8" halPin="opmode" halType="s32"/>
<pdoEntry idx="607A" subIdx="00" bitLen="32" halPin="target-position" halType="s32"/>
</pdo>
</syncManager>
<syncManager idx="3" dir="in">
<pdo idx="1a00">
<pdoEntry idx="6041" subIdx="00" bitLen="16" halPin="cia-statusword" halType="u32"/>
<pdoEntry idx="6061" subIdx="00" bitLen="8" halPin="opmode-display" halType="s32"/>
<pdoEntry idx="6064" subIdx="00" bitLen="32" halPin="actual-position" halType="s32"/>
<pdoEntry idx="606C" subIdx="00" bitLen="32" halPin="actual-velocity" halType="s32"/>
<pdoEntry idx="6077" subIdx="00" bitLen="32" halPin="actual-torque" halType="s32"/>
</pdo>
</syncManager>
</slave>
<!-- Joint Y2 -->
<slave idx="3" type="generic" vid="0000001D" pid="007b5a25" configPdos="true">
<dcConf assignActivate="300" sync0Cycle="*1" sync0Shift="0"/>
<syncManager idx="2" dir="out">
<pdo idx="1600">
<pdoEntry idx="6040" subIdx="00" bitLen="16" halPin="cia-controlword" halType="u32"/>
<pdoEntry idx="6060" subIdx="00" bitLen="8" halPin="opmode" halType="s32"/>
<pdoEntry idx="607A" subIdx="00" bitLen="32" halPin="target-position" halType="s32"/>
</pdo>
</syncManager>
<syncManager idx="3" dir="in">
<pdo idx="1a00">
<pdoEntry idx="6041" subIdx="00" bitLen="16" halPin="cia-statusword" halType="u32"/>
<pdoEntry idx="6061" subIdx="00" bitLen="8" halPin="opmode-display" halType="s32"/>
<pdoEntry idx="6064" subIdx="00" bitLen="32" halPin="actual-position" halType="s32"/>
<pdoEntry idx="606C" subIdx="00" bitLen="32" halPin="actual-velocity" halType="s32"/>
<pdoEntry idx="6077" subIdx="00" bitLen="32" halPin="actual-torque" halType="s32"/>
</pdo>
</syncManager>
</slave>
<!-- Joint X -->
<slave idx="4" type="generic" vid="0000001D" pid="007b5a25" configPdos="true">
<dcConf assignActivate="300" sync0Cycle="*1" sync0Shift="0"/>
<syncManager idx="2" dir="out">
<pdo idx="1600">
<pdoEntry idx="6040" subIdx="00" bitLen="16" halPin="cia-controlword" halType="u32"/>
<pdoEntry idx="6060" subIdx="00" bitLen="8" halPin="opmode" halType="s32"/>
<pdoEntry idx="607A" subIdx="00" bitLen="32" halPin="target-position" halType="s32"/>
</pdo>
</syncManager>
<syncManager idx="3" dir="in">
<pdo idx="1a00">
<pdoEntry idx="6041" subIdx="00" bitLen="16" halPin="cia-statusword" halType="u32"/>
<pdoEntry idx="6061" subIdx="00" bitLen="8" halPin="opmode-display" halType="s32"/>
<pdoEntry idx="6064" subIdx="00" bitLen="32" halPin="actual-position" halType="s32"/>
<pdoEntry idx="606C" subIdx="00" bitLen="32" halPin="actual-velocity" halType="s32"/>
<pdoEntry idx="6077" subIdx="00" bitLen="32" halPin="actual-torque" halType="s32"/>
</pdo>
</syncManager>
</slave>
</master>
</masters>I hope this can eventually help other people who want to use these drives.
Many thanks to all for your help.
- Bram kersten
- Bram kersten
WCS Problem with Linuxcnc/qtdragon
Category: General LinuxCNC Questions
- Bram kersten
- Bram kersten
WCS Problem with Linuxcnc/qtdragon
Category: General LinuxCNC Questions
- unknown
- unknown
Is there a new Linuxcnc release in the wings ?
Category: General LinuxCNC Questions
A: there is a another package that provides the same function
B: there is no equivalent for Trixie
C: a package appears to be confusing as to why it's been included
D: some packages I think maybe an idea to include
E: a file may not needed to be included
What would be the ideal way to communicate these.
BTW for the time being I had to make a temporary change to be able to install packages from the Linuxcnc repo due to the key issue.
The build was just out of curiosity to see how things go and I thought if I found anything that needed changing it may help later down the track.
I'm unsure if a pull request is the correct way to go. I apologise but my GitHub knowledge is more or less at a toddler stage.
- alangibson
- alangibson
Building an Open Source DIY Plasma Cutter on YouTube
Category: Plasma & Laser
I also go over the smaller prototype version in this video:
If you're thinking of building your own table, follow along so you don't make the same mistakes I do. My channel is at www.youtube.com/@MetalHeadCNC
I'm also going to be showing off, and eventually open sourcing, the CAM program I'm building to go along with it. You can check out the alpha version here if you're so inclined:
metalheadcam.alan-gibson.workers.dev/