Search Results (Searched for: stepper spindle)
04 Aug 2024 02:05
Replied by spumco on topic Hardware needed to switch from mach 3 6 axis to linuxcnc 9 axis
Hardware needed to switch from mach 3 6 axis to linuxcnc 9 axis
Category: General LinuxCNC Questions
Rick,
You'll find that there are many ways to accomplish the same thing in LCNC, but what I suggested was a combination of boards that would easily drive 9 separate axis motors, plus an analog 0-10v output for typical spindle control, plus a fair amount of inputs & outputs, plus has 5 high-speed encoder inputs since you mentioned 'closed loop.'
The 7i84 vs 7i84D - boards have the same I/O quantity, but one is for sourcing outputs and the other (D) is for sinking outputs.
The above recommendation is just that - a suggestion of an easy way to get 9 axes. It was not a cost or space optimized solution, and I strongly discourage you from buying anything at this point. You need to be in research mode right now.
If you want more specific recommendations, pics of the lathe, plus a detailed description of what additional 'stuff' you want to add would help us help you. Pics of the existing control electronics (stepper drives, spindle drive, power supplies, etc.) and anything else (control panel) would help.
Make a list of all the inputs, outputs, axes, spindle, whatever. Identify the voltages, amps, what components you have and will need in the future.
As for loading... are you talking about stock or part blank loading? Does this hardware currently exist, or are you planning to fabricate some sort of automation mechanism?
-S
You'll find that there are many ways to accomplish the same thing in LCNC, but what I suggested was a combination of boards that would easily drive 9 separate axis motors, plus an analog 0-10v output for typical spindle control, plus a fair amount of inputs & outputs, plus has 5 high-speed encoder inputs since you mentioned 'closed loop.'
The 7i84 vs 7i84D - boards have the same I/O quantity, but one is for sourcing outputs and the other (D) is for sinking outputs.
The above recommendation is just that - a suggestion of an easy way to get 9 axes. It was not a cost or space optimized solution, and I strongly discourage you from buying anything at this point. You need to be in research mode right now.
If you want more specific recommendations, pics of the lathe, plus a detailed description of what additional 'stuff' you want to add would help us help you. Pics of the existing control electronics (stepper drives, spindle drive, power supplies, etc.) and anything else (control panel) would help.
Make a list of all the inputs, outputs, axes, spindle, whatever. Identify the voltages, amps, what components you have and will need in the future.
As for loading... are you talking about stock or part blank loading? Does this hardware currently exist, or are you planning to fabricate some sort of automation mechanism?
-S
02 Aug 2024 19:12
Replied by spumco on topic Hardware needed to switch from mach 3 6 axis to linuxcnc 9 axis
Hardware needed to switch from mach 3 6 axis to linuxcnc 9 axis
Category: General LinuxCNC Questions
Some additional info would be helpful.
What is the machine? What is the upcoming project and why do you need three additional axes?
What are the current 6 axes, and what are the three additional axes you want/need to add? (linear axes, rotary, ballscrew, belt, worm drive, etc.)
When you ask for hardware suggestions, do you mean control hardware, motion hardware, or both?
What exactly is the current control setup? What do you plan to re-use?
Closed loop how? Closed loop steppers, or closed loop back to the control (LCNC)? Why do you think you might want this?
What IO do you need? Voltage, sinking/sourcing, current requirements?
Is there a spindle? How is it controlled?
Anything you can provide details on will help.
What is the machine? What is the upcoming project and why do you need three additional axes?
What are the current 6 axes, and what are the three additional axes you want/need to add? (linear axes, rotary, ballscrew, belt, worm drive, etc.)
When you ask for hardware suggestions, do you mean control hardware, motion hardware, or both?
What exactly is the current control setup? What do you plan to re-use?
Closed loop how? Closed loop steppers, or closed loop back to the control (LCNC)? Why do you think you might want this?
What IO do you need? Voltage, sinking/sourcing, current requirements?
Is there a spindle? How is it controlled?
Anything you can provide details on will help.
02 Aug 2024 09:55 - 03 Aug 2024 10:08
Gravograph Engraving Machine(s) Conversion (Updated)
Category: Basic Configuration
Dear All,
Figured it out with extended reading - thanks for this great forum! - and a bit of creative try-and-error.
All 3 axes are set up and calibrated, homing works like a charm
Next and last open issue is the spindle - but I don't expect much difficulty with that. Otherwise there'll be another post here ...
ORIGINAL POST:
I've started a project to convert a 30-year-old engraving machine (Gravograph UNICA) to LinuxCNC running on a Raspberry PI 4 with a MESA 7C80. I have several Gravograph machines of various sizes available and am looking to roll out my conversion to most of them, if it works out as planned. These machines may be old, but as such they're solid and reliable. Also they are simple as there's just one stepper and one limit switch per axis and the spindle motor to control. The main reason for conversion is that the UNICA machine only runs on it's own Gravograph-unique operating system with a tiny monochrome CRT screen and propietary keyboard, with no communication port. The other, larger machines can communicate via serial port, but they also require Gravograph-only software ...
So far, I got the Raspberry PI, 7C80 and LinuxCNC up and running to the point that the x-axis stepper is operational by using linuxcnc.hal and linuxcnc.ini from this thread:
forum.linuxcnc.org/42-deutsch/52725-3-ac...esa-7c80-und-raspi-4
As far as I can tell, there's no wizard available (stepconf etc.) for configuring the MESA 7C80, so I need to work with the config files directly(?)
I modified linuxcnc.ini so that the stepper runs smoothly, and added three lines for the limit switch and homing. The stepper now starts running when I home the machine in LinuxCNC, and the program is apparently waiting for the limit switch to be triggered.
This is where I'm currently insecure and would like to ask for assistance:
Figured it out with extended reading - thanks for this great forum! - and a bit of creative try-and-error.
All 3 axes are set up and calibrated, homing works like a charm
Next and last open issue is the spindle - but I don't expect much difficulty with that. Otherwise there'll be another post here ...
ORIGINAL POST:
I've started a project to convert a 30-year-old engraving machine (Gravograph UNICA) to LinuxCNC running on a Raspberry PI 4 with a MESA 7C80. I have several Gravograph machines of various sizes available and am looking to roll out my conversion to most of them, if it works out as planned. These machines may be old, but as such they're solid and reliable. Also they are simple as there's just one stepper and one limit switch per axis and the spindle motor to control. The main reason for conversion is that the UNICA machine only runs on it's own Gravograph-unique operating system with a tiny monochrome CRT screen and propietary keyboard, with no communication port. The other, larger machines can communicate via serial port, but they also require Gravograph-only software ...
So far, I got the Raspberry PI, 7C80 and LinuxCNC up and running to the point that the x-axis stepper is operational by using linuxcnc.hal and linuxcnc.ini from this thread:
forum.linuxcnc.org/42-deutsch/52725-3-ac...esa-7c80-und-raspi-4
As far as I can tell, there's no wizard available (stepconf etc.) for configuring the MESA 7C80, so I need to work with the config files directly(?)
I modified linuxcnc.ini so that the stepper runs smoothly, and added three lines for the limit switch and homing. The stepper now starts running when I home the machine in LinuxCNC, and the program is apparently waiting for the limit switch to be triggered.
This is where I'm currently insecure and would like to ask for assistance:
- What terminals to connect the limit switch to at the 7C80?
- How to set it up as a NC contact (Switch opens when x-axis home position is reached)?
- How to set up homing to move the spindle towards home at first if the home switch is not triggered, and then move a short distance away and back to the final home position?
This is my current linuxcnc.ini:
Thank you for reading and thanks in advance for any answers!
Best regards,
Erik
captain-panda
30 Jul 2024 13:32
help with millrun and/or custom Z-X-A(or C) lathe/machine was created by ffffrf
help with millrun and/or custom Z-X-A(or C) lathe/machine
Category: Fusion 360
Hello everyone, hoping someone in the community can help. I have a lathe that I modified to have the headstock be driven by a positional stepper motor, and have added a spindle on the cross slide WITHOUT a Y axis. Thus, I am looking for help getting a working processor that can generate gcode for 2d milling in this configuration, meaning I can do things like drill holes on the face of my stock off center.
What is the best way to go about doing this? Has anyone already made or used a working post processor for this? An old thread in fusion360 support said to find a post processor for millturn and remove mention of the Y axis so it only generates gcode without it - is that the right way to go about it?
Lastly, can someone verify if my kinematics are organized correctly in fusion360? My rotational/positional axis is along the Z axis and holds the stock, my spindle is on the cross slide (X axis) and points along the Z axis (attached image)
What is the best way to go about doing this? Has anyone already made or used a working post processor for this? An old thread in fusion360 support said to find a post processor for millturn and remove mention of the Y axis so it only generates gcode without it - is that the right way to go about it?
Lastly, can someone verify if my kinematics are organized correctly in fusion360? My rotational/positional axis is along the Z axis and holds the stock, my spindle is on the cross slide (X axis) and points along the Z axis (attached image)
30 Jul 2024 09:43
Replied by Krulli_Fräser on topic Verify my Mesa selection
Verify my Mesa selection
Category: Driver Boards
First of all thanks for the quick reply.
The setup with 7i97t with 7i84 would be ideal, however the 7i84 with sourcing outputs is currently out of stock everywhere I look. The spindle vfd takes a 0-10v signal and can therefore easily be controlled with one of the 6 axis outputs. I actually follow your Schaublin retrofit and that's where I got the idea for the 7i73 in my control cabinet. This can support physical keys in a matrix and also the encoders for Spindle/feed/jog so that's really good. I'm not satisfied with the cards in my electrical panel as well, but selecting from the available components this seems to work. Also, maybe in the future I'm gonna add a 4th axis to this machine and I'm not sure which type of motor I'm gonna use then, but having the 7i96 would leave the possibility of using a stepper or a servo for that.
The setup with 7i97t with 7i84 would be ideal, however the 7i84 with sourcing outputs is currently out of stock everywhere I look. The spindle vfd takes a 0-10v signal and can therefore easily be controlled with one of the 6 axis outputs. I actually follow your Schaublin retrofit and that's where I got the idea for the 7i73 in my control cabinet. This can support physical keys in a matrix and also the encoders for Spindle/feed/jog so that's really good. I'm not satisfied with the cards in my electrical panel as well, but selecting from the available components this seems to work. Also, maybe in the future I'm gonna add a 4th axis to this machine and I'm not sure which type of motor I'm gonna use then, but having the 7i96 would leave the possibility of using a stepper or a servo for that.
28 Jul 2024 22:11 - 29 Jul 2024 10:13
Replied by my1987toyota on topic 7i96 non S PWM on an output possible?
7i96 non S PWM on an output possible?
Category: Driver Boards
ok below are my current HAL, INI, and PYVCP files for the foam cutter.
the HAL file
[/code][/code][/code]
the HAL file
# Generated by PNCconf at Wed Jul 17 17:05:42 2024
# Using LinuxCNC version: Master (2.9)
# If you make changes to this file, they will be
# overwritten when you run PNCconf again
loadrt [KINS]KINEMATICS
loadrt [EMCMOT]EMCMOT servo_period_nsec=[EMCMOT]SERVO_PERIOD num_joints=[KINS]JOINTS
loadrt hostmot2
loadrt hm2_eth board_ip="10.10.10.10" config="num_encoders=1 num_pwmgens=0 num_stepgens=5 sserial_port_0=0xxxxxxx"
loadrt pid names=pid.x,pid.y,pid.u,pid.v,pid.a,pid.s
loadrt pwmgen output_type=0
addf [HMOT](CARD0).read servo-thread
addf motion-command-handler servo-thread
addf motion-controller servo-thread
addf pid.x.do-pid-calcs servo-thread
addf pid.y.do-pid-calcs servo-thread
addf pid.u.do-pid-calcs servo-thread
addf pid.v.do-pid-calcs servo-thread
addf pid.a.do-pid-calcs servo-thread
addf pid.s.do-pid-calcs servo-thread
addf [HMOT](CARD0).write servo-thread
addf pwmgen.update servo-thread
addf pwmgen.make-pulses servo-thread
setp [HMOT](CARD0).dpll.01.timer-us -50
setp [HMOT](CARD0).stepgen.timer-number 1
setp [HMOT](CARD0).watchdog.timeout_ns 5000000
setp pwmgen.0.dither-pwm true
setp pwmgen.0.pwm-freq 20
setp pwmgen.0.scale 100 # Change to your spindle’s top speed in RPM
# external output signals
# --- WIRE-OUTPUT-PIN ---
net spindle-speed-cmd spindle.0.speed-out => pwmgen.0.value
net spindle-on spindle.0.on => pwmgen.0.enable
net spindle-pwm pwmgen.0.pwm => [HMOT](CARD0).ssr.00.out-05
# external input signals
# --- ESTOP-EXT ---
net estop-ext <= [HMOT](CARD0).gpio.000.in_not
# --- HOME-X ---
net home-x <= [HMOT](CARD0).gpio.001.in
# --- HOME-Y ---
net home-y <= [HMOT](CARD0).gpio.002.in
# --- HOME-U ---
net home-U <= [HMOT](CARD0).gpio.003.in
# --- HOME-V ---
net home-V <= [HMOT](CARD0).gpio.004.in
# --- HOME-A ---
#net home-A <= [HMOT](CARD0).gpio.005.in
#*******************
# AXIS X JOINT 0
#*******************
setp pid.x.Pgain [JOINT_0]P
setp pid.x.Igain [JOINT_0]I
setp pid.x.Dgain [JOINT_0]D
setp pid.x.bias [JOINT_0]BIAS
setp pid.x.FF0 [JOINT_0]FF0
setp pid.x.FF1 [JOINT_0]FF1
setp pid.x.FF2 [JOINT_0]FF2
setp pid.x.deadband [JOINT_0]DEADBAND
setp pid.x.maxoutput [JOINT_0]MAX_OUTPUT
setp pid.x.error-previous-target true
# This setting is to limit bogus stepgen
# velocity corrections caused by position
# feedback sample time jitter.
setp pid.x.maxerror 0.012700
net x-index-enable => pid.x.index-enable
net x-enable => pid.x.enable
net x-pos-cmd => pid.x.command
net x-pos-fb => pid.x.feedback
net x-output <= pid.x.output
# Step Gen signals/setup
setp [HMOT](CARD0).stepgen.00.dirsetup [JOINT_0]DIRSETUP
setp [HMOT](CARD0).stepgen.00.dirhold [JOINT_0]DIRHOLD
setp [HMOT](CARD0).stepgen.00.steplen [JOINT_0]STEPLEN
setp [HMOT](CARD0).stepgen.00.stepspace [JOINT_0]STEPSPACE
setp [HMOT](CARD0).stepgen.00.position-scale [JOINT_0]STEP_SCALE
setp [HMOT](CARD0).stepgen.00.step_type 0
setp [HMOT](CARD0).stepgen.00.control-type 1
setp [HMOT](CARD0).stepgen.00.maxaccel [JOINT_0]STEPGEN_MAXACCEL
setp [HMOT](CARD0).stepgen.00.maxvel [JOINT_0]STEPGEN_MAXVEL
# ---closedloop stepper signals---
net x-pos-cmd <= joint.0.motor-pos-cmd
net x-vel-cmd <= joint.0.vel-cmd
net x-output => [HMOT](CARD0).stepgen.00.velocity-cmd
net x-pos-fb <= [HMOT](CARD0).stepgen.00.position-fb
net x-pos-fb => joint.0.motor-pos-fb
net x-enable <= joint.0.amp-enable-out
net x-enable => [HMOT](CARD0).stepgen.00.enable
# ---setup home / limit switch signals---
#net x-home-sw => joint.0.home-sw-in
net x-home => joint.0.home-sw-in
net x-neg-limit => joint.0.neg-lim-sw-in
net x-pos-limit => joint.0.pos-lim-sw-in
#*******************
# AXIS Y JOINT 1
#*******************
setp pid.y.Pgain [JOINT_1]P
setp pid.y.Igain [JOINT_1]I
setp pid.y.Dgain [JOINT_1]D
setp pid.y.bias [JOINT_1]BIAS
setp pid.y.FF0 [JOINT_1]FF0
setp pid.y.FF1 [JOINT_1]FF1
setp pid.y.FF2 [JOINT_1]FF2
setp pid.y.deadband [JOINT_1]DEADBAND
setp pid.y.maxoutput [JOINT_1]MAX_OUTPUT
setp pid.y.error-previous-target true
# This setting is to limit bogus stepgen
# velocity corrections caused by position
# feedback sample time jitter.
setp pid.y.maxerror 0.012700
net y-index-enable => pid.y.index-enable
net y-enable => pid.y.enable
net y-pos-cmd => pid.y.command
net y-pos-fb => pid.y.feedback
net y-output <= pid.y.output
# Step Gen signals/setup
setp [HMOT](CARD0).stepgen.01.dirsetup [JOINT_1]DIRSETUP
setp [HMOT](CARD0).stepgen.01.dirhold [JOINT_1]DIRHOLD
setp [HMOT](CARD0).stepgen.01.steplen [JOINT_1]STEPLEN
setp [HMOT](CARD0).stepgen.01.stepspace [JOINT_1]STEPSPACE
setp [HMOT](CARD0).stepgen.01.position-scale [JOINT_1]STEP_SCALE
setp [HMOT](CARD0).stepgen.01.step_type 0
setp [HMOT](CARD0).stepgen.01.control-type 1
setp [HMOT](CARD0).stepgen.01.maxaccel [JOINT_1]STEPGEN_MAXACCEL
setp [HMOT](CARD0).stepgen.01.maxvel [JOINT_1]STEPGEN_MAXVEL
# ---closedloop stepper signals---
net y-pos-cmd <= joint.1.motor-pos-cmd
net y-vel-cmd <= joint.1.vel-cmd
net y-output => [HMOT](CARD0).stepgen.01.velocity-cmd
net y-pos-fb <= [HMOT](CARD0).stepgen.01.position-fb
net y-pos-fb => joint.1.motor-pos-fb
net y-enable <= joint.1.amp-enable-out
net y-enable => [HMOT](CARD0).stepgen.01.enable
# ---setup home / limit switch signals---
#net y-home-sw => joint.1.home-sw-in
net home-y => joint.1.home-sw-in
net y-neg-limit => joint.1.neg-lim-sw-in
net y-pos-limit => joint.1.pos-lim-sw-in
#*******************
# AXIS U JOINT 2
#*******************
setp pid.u.Pgain [JOINT_2]P
setp pid.u.Igain [JOINT_2]I
setp pid.u.Dgain [JOINT_2]D
setp pid.u.bias [JOINT_2]BIAS
setp pid.u.FF0 [JOINT_2]FF0
setp pid.u.FF1 [JOINT_2]FF1
setp pid.u.FF2 [JOINT_2]FF2
setp pid.u.deadband [JOINT_2]DEADBAND
setp pid.u.maxoutput [JOINT_2]MAX_OUTPUT
setp pid.u.error-previous-target true
# This setting is to limit bogus stepgen
# velocity corrections caused by position
# feedback sample time jitter.
setp pid.u.maxerror 0.012700
net u-index-enable => pid.u.index-enable
net u-enable => pid.u.enable
net u-pos-cmd => pid.u.command
net u-pos-fb => pid.u.feedback
net u-output <= pid.u.output
# Step Gen signals/setup
setp [HMOT](CARD0).stepgen.02.dirsetup [JOINT_2]DIRSETUP
setp [HMOT](CARD0).stepgen.02.dirhold [JOINT_2]DIRHOLD
setp [HMOT](CARD0).stepgen.02.steplen [JOINT_2]STEPLEN
setp [HMOT](CARD0).stepgen.02.stepspace [JOINT_2]STEPSPACE
setp [HMOT](CARD0).stepgen.02.position-scale [JOINT_2]STEP_SCALE
setp [HMOT](CARD0).stepgen.02.step_type 0
setp [HMOT](CARD0).stepgen.02.control-type 1
setp [HMOT](CARD0).stepgen.02.maxaccel [JOINT_2]STEPGEN_MAXACCEL
setp [HMOT](CARD0).stepgen.02.maxvel [JOINT_2]STEPGEN_MAXVEL
# ---closedloop stepper signals---
net u-pos-cmd <= joint.2.motor-pos-cmd
net u-vel-cmd <= joint.2.vel-cmd
net u-output => [HMOT](CARD0).stepgen.02.velocity-cmd
net u-pos-fb <= [HMOT](CARD0).stepgen.02.position-fb
net u-pos-fb => joint.2.motor-pos-fb
net u-enable <= joint.2.amp-enable-out
net u-enable => [HMOT](CARD0).stepgen.02.enable
# ---setup home / limit switch signals---
#net u-home-sw => joint.2.home-sw-in
net home-u => joint.2.home-sw-in
net u-neg-limit => joint.2.neg-lim-sw-in
net u-pos-limit => joint.2.pos-lim-sw-in
#*******************
# AXIS V JOINT 3
#*******************
setp pid.v.Pgain [JOINT_3]P
setp pid.v.Igain [JOINT_3]I
setp pid.v.Dgain [JOINT_3]D
setp pid.v.bias [JOINT_3]BIAS
setp pid.v.FF0 [JOINT_3]FF0
setp pid.v.FF1 [JOINT_3]FF1
setp pid.v.FF2 [JOINT_3]FF2
setp pid.v.deadband [JOINT_3]DEADBAND
setp pid.v.maxoutput [JOINT_3]MAX_OUTPUT
setp pid.v.error-previous-target true
# This setting is to limit bogus stepgen
# velocity corrections caused by position
# feedback sample time jitter.
setp pid.v.maxerror 0.012700
net v-index-enable => pid.v.index-enable
net v-enable => pid.v.enable
net v-pos-cmd => pid.v.command
net v-pos-fb => pid.v.feedback
net v-output <= pid.v.output
# Step Gen signals/setup
setp [HMOT](CARD0).stepgen.03.dirsetup [JOINT_3]DIRSETUP
setp [HMOT](CARD0).stepgen.03.dirhold [JOINT_3]DIRHOLD
setp [HMOT](CARD0).stepgen.03.steplen [JOINT_3]STEPLEN
setp [HMOT](CARD0).stepgen.03.stepspace [JOINT_3]STEPSPACE
setp [HMOT](CARD0).stepgen.03.position-scale [JOINT_3]STEP_SCALE
setp [HMOT](CARD0).stepgen.03.step_type 0
setp [HMOT](CARD0).stepgen.03.control-type 1
setp [HMOT](CARD0).stepgen.03.maxaccel [JOINT_3]STEPGEN_MAXACCEL
setp [HMOT](CARD0).stepgen.03.maxvel [JOINT_3]STEPGEN_MAXVEL
# ---closedloop stepper signals---
net v-pos-cmd <= joint.3.motor-pos-cmd
net v-vel-cmd <= joint.3.vel-cmd
net v-output => [HMOT](CARD0).stepgen.03.velocity-cmd
net v-pos-fb <= [HMOT](CARD0).stepgen.03.position-fb
net v-pos-fb => joint.3.motor-pos-fb
net v-enable <= joint.3.amp-enable-out
net v-enable => [HMOT](CARD0).stepgen.03.enable
# ---setup home / limit switch signals---
#net v-home-sw => joint.3.home-sw-in
net home-v => joint.3.home-sw-in
net v-neg-limit => joint.3.neg-lim-sw-in
net v-pos-limit => joint.3.pos-lim-sw-in
#*******************
# AXIS A JOINT 4
#*******************
setp pid.a.Pgain [JOINT_4]P
setp pid.a.Igain [JOINT_4]I
setp pid.a.Dgain [JOINT_4]D
setp pid.a.bias [JOINT_4]BIAS
setp pid.a.FF0 [JOINT_4]FF0
setp pid.a.FF1 [JOINT_4]FF1
setp pid.a.FF2 [JOINT_4]FF2
setp pid.a.deadband [JOINT_4]DEADBAND
setp pid.a.maxoutput [JOINT_4]MAX_OUTPUT
setp pid.a.error-previous-target true
# This setting is to limit bogus stepgen
# velocity corrections caused by position
# feedback sample time jitter.
setp pid.a.maxerror 0.012700
net a-index-enable => pid.a.index-enable
net a-enable => pid.a.enable
net a-pos-cmd => pid.a.command
net a-pos-fb => pid.a.feedback
net a-output <= pid.a.output
# Step Gen signals/setup
setp [HMOT](CARD0).stepgen.04.dirsetup [JOINT_4]DIRSETUP
setp [HMOT](CARD0).stepgen.04.dirhold [JOINT_4]DIRHOLD
setp [HMOT](CARD0).stepgen.04.steplen [JOINT_4]STEPLEN
setp [HMOT](CARD0).stepgen.04.stepspace [JOINT_4]STEPSPACE
setp [HMOT](CARD0).stepgen.04.position-scale [JOINT_4]STEP_SCALE
setp [HMOT](CARD0).stepgen.04.step_type 0
setp [HMOT](CARD0).stepgen.04.control-type 1
setp [HMOT](CARD0).stepgen.04.maxaccel [JOINT_4]STEPGEN_MAXACCEL
setp [HMOT](CARD0).stepgen.04.maxvel [JOINT_4]STEPGEN_MAXVEL
# ---closedloop stepper signals---
net a-pos-cmd <= joint.4.motor-pos-cmd
net a-vel-cmd <= joint.4.vel-cmd
net a-output => [HMOT](CARD0).stepgen.04.velocity-cmd
net a-pos-fb <= [HMOT](CARD0).stepgen.04.position-fb
net a-pos-fb => joint.4.motor-pos-fb
net a-enable <= joint.4.amp-enable-out
net a-enable => [HMOT](CARD0).stepgen.04.enable
# ---setup home / limit switch signals---
net a-home-sw => joint.4.home-sw-in
#net home-a => joint.4.home-sw-in
net a-neg-limit => joint.4.neg-lim-sw-in
net a-pos-limit => joint.4.pos-lim-sw-in
#*******************
# SPINDLE
#*******************
setp pid.s.Pgain [SPINDLE_0]P
setp pid.s.Igain [SPINDLE_0]I
setp pid.s.Dgain [SPINDLE_0]D
setp pid.s.bias [SPINDLE_0]BIAS
setp pid.s.FF0 [SPINDLE_0]FF0
setp pid.s.FF1 [SPINDLE_0]FF1
setp pid.s.FF2 [SPINDLE_0]FF2
setp pid.s.deadband [SPINDLE_0]DEADBAND
setp pid.s.maxoutput [SPINDLE_0]MAX_OUTPUT
setp pid.s.error-previous-target true
net spindle-index-enable => pid.s.index-enable
net spindle-enable => pid.s.enable
net spindle-vel-cmd-rpm => pid.s.command
net spindle-vel-fb-rpm => pid.s.feedback
net spindle-output <= pid.s.output
# ---setup spindle control signals---
net spindle-vel-cmd-rps <= spindle.0.speed-out-rps
net spindle-vel-cmd-rps-abs <= spindle.0.speed-out-rps-abs
#net spindle-vel-cmd-rpm <= spindle.0.speed-out
net spindle-vel-cmd-rpm-abs <= spindle.0.speed-out-abs
#net spindle-enable <= spindle.0.on
net spindle-cw <= spindle.0.forward
net spindle-ccw <= spindle.0.reverse
net spindle-brake <= spindle.0.brake
net spindle-revs => spindle.0.revs
net spindle-at-speed => spindle.0.at-speed
net spindle-vel-fb-rps => spindle.0.speed-in
net spindle-index-enable <=> spindle.0.index-enable
# ---Setup spindle at speed signals---
sets spindle-at-speed true
#******************************
# connect miscellaneous signals
#******************************
# ---HALUI signals---
net axis-select-x halui.axis.x.select
net jog-x-pos halui.axis.x.plus
net jog-x-neg halui.axis.x.minus
net jog-x-analog halui.axis.x.analog
net x-is-homed halui.joint.0.is-homed
#
net axis-select-y halui.axis.y.select
net jog-y-pos halui.axis.y.plus
net jog-y-neg halui.axis.y.minus
net jog-y-analog halui.axis.y.analog
net y-is-homed halui.joint.1.is-homed
#
net axis-select-u halui.axis.u.select
net jog-u-pos halui.axis.u.plus
net jog-u-neg halui.axis.u.minus
net jog-u-analog halui.axis.u.analog
net u-is-homed halui.joint.2.is-homed
#
net axis-select-v halui.axis.v.select
net jog-v-pos halui.axis.v.plus
net jog-v-neg halui.axis.v.minus
net jog-v-analog halui.axis.v.analog
net v-is-homed halui.joint.3.is-homed
#
net axis-select-a halui.axis.a.select
net jog-a-pos halui.axis.a.plus
net jog-a-neg halui.axis.a.minus
net jog-a-analog halui.axis.a.analog
net a-is-homed halui.joint.4.is-homed
#
net jog-selected-pos halui.axis.selected.plus
net jog-selected-neg halui.axis.selected.minus
net spindle-manual-cw halui.spindle.0.forward
net spindle-manual-ccw halui.spindle.0.reverse
net spindle-manual-stop halui.spindle.0.stop
net machine-is-on halui.machine.is-on
net jog-speed halui.axis.jog-speed
net MDI-mode halui.mode.is-mdi
# ---coolant signals---
net coolant-mist <= iocontrol.0.coolant-mist
net coolant-flood <= iocontrol.0.coolant-flood
# ---probe signal---
net probe-in => motion.probe-input
# ---motion control signals---
net in-position <= motion.in-position
net machine-is-enabled <= motion.motion-enabled
# ---digital in / out signals---
# ---estop signals---
net estop-out <= iocontrol.0.user-enable-out
net estop-ext => iocontrol.0.emc-enable-in
# ---manual tool change signals---
net tool-change-request <= iocontrol.0.tool-change
net tool-change-confirmed => iocontrol.0.tool-changed
net tool-number <= iocontrol.0.tool-prep-number
# ---Use external manual tool change dialog---
loadusr -W hal_manualtoolchange
net tool-change-request => hal_manualtoolchange.change
net tool-change-confirmed <= hal_manualtoolchange.changed
net tool-number => hal_manualtoolchange.number
# ---ignore tool prepare requests---
net tool-prepare-loopback iocontrol.0.tool-prepare => iocontrol.0.tool-prepared
the INI file
[code]# Generated by PNCconf at Wed Jul 17 17:05:42 2024
# Using LinuxCNC version: Master (2.9)
# If you make changes to this file, they will be
# overwritten when you run PNCconf again
[EMC]
MACHINE = foam_cutter
DEBUG = 0
VERSION = 1.1
[DISPLAY]
DISPLAY = axis
FOAM = 1
XY_Z_POS = 5
UV_W_POS = 0
POSITION_OFFSET = RELATIVE
POSITION_FEEDBACK = ACTUAL
MAX_FEED_OVERRIDE = 2.000000
MAX_SPINDLE_OVERRIDE = 1.000000
MIN_SPINDLE_OVERRIDE = 0.500000
INTRO_GRAPHIC = linuxcnc.gif
INTRO_TIME = 5
PROGRAM_PREFIX = /home/cnc002/linuxcnc/nc_files
PYVCP = pyvcp-panel.xml
INCREMENTS = 10mm 1mm .1mm .01mm
POSITION_FEEDBACK = ACTUAL
DEFAULT_LINEAR_VELOCITY = 6.000000
MAX_LINEAR_VELOCITY = 25.000000
MIN_LINEAR_VELOCITY = 0.500000
DEFAULT_ANGULAR_VELOCITY = 12.000000
MAX_ANGULAR_VELOCITY = 180.000000
MIN_ANGULAR_VELOCITY = 1.666667
EDITOR = gedit
#GEOMETRY = xyz
GEOMETRY = xyuv
CYCLE_TIME = 100
[FILTER]
PROGRAM_EXTENSION = .png,.gif,.jpg Greyscale Depth Image
PROGRAM_EXTENSION = .py Python Script
png = image-to-gcode
gif = image-to-gcode
jpg = image-to-gcode
py = python
[TASK]
TASK = milltask
CYCLE_TIME = 0.010
[RS274NGC]
PARAMETER_FILE = linuxcnc.var
RS274NGC_STARTUP_CODE = G21 G40 G90 G94 G97 G64 P0.025
[EMCMOT]
EMCMOT = motmod
COMM_TIMEOUT = 1.0
SERVO_PERIOD = 1000000
[HMOT]
CARD0=hm2_7i96.0
[HAL]
HALUI = halui
HALFILE = foam_cutter.hal
HALFILE = custom.hal
POSTGUI_HALFILE = pyvcp_options.hal
POSTGUI_HALFILE = custom_postgui.hal
SHUTDOWN = shutdown.hal
[HALUI]
[KINS]
#JOINTS = 4
JOINTS = 5
#KINEMATICS = trivkins coordinates=XYZA
#KINEMATICS = trivkins coordinates=XYUV
KINEMATICS = trivkins coordinates=XYUVA
[TRAJ]
#COORDINATES = XYZA
#COORDINATES = XYUV
COORDINATES = XYUVA
MAX_ANGULAR_VELOCITY = 360.00
DEFAULT_ANGULAR_VELOCITY = 36.00
LINEAR_UNITS = mm
ANGULAR_UNITS = degree
DEFAULT_LINEAR_VELOCITY = 2.50
MAX_LINEAR_VELOCITY = 25.00
[EMCIO]
EMCIO = io
CYCLE_TIME = 0.100
TOOL_TABLE = tool.tbl
#******************************************
[AXIS_X]
MAX_VELOCITY = 25.0
MAX_ACCELERATION = 750.0
MIN_LIMIT = -0.01
MAX_LIMIT = 550.0
[JOINT_0]
TYPE = LINEAR
HOME = 0.0
FERROR = 10.0
MIN_FERROR = 1.0
MAX_VELOCITY = 25.0
MAX_ACCELERATION = 750.0
# The values below should be 25% larger than MAX_VELOCITY and MAX_ACCELERATION
# If using BACKLASH compensation STEPGEN_MAXACCEL should be 100% larger.
STEPGEN_MAXVEL = 31.25
STEPGEN_MAXACCEL = 937.50
P = 1000.0
I = 0.0
D = 0.0
FF0 = 0.0
FF1 = 1.0
FF2 = 0.0
BIAS = 0.0
DEADBAND = 0.0
MAX_OUTPUT = 0.0
# these are in nanoseconds
DIRSETUP = 20000
DIRHOLD = 20000
STEPLEN = 5000
STEPSPACE = 5000
STEP_SCALE = 1600.0
MIN_LIMIT = -0.01
MAX_LIMIT = 550.0
HOME_OFFSET = 0.0
#
HOME_SEARCH_VEL = -1.000000
HOME_LATCH_VEL = -0.500000
HOME_FINAL_VEL = 0.000000
HOME_USE_INDEX = NO
#
HOME_SEQUENCE = 0
#HOME_SEQUENCE = 1
#******************************************
#******************************************
[AXIS_Y]
MAX_VELOCITY = 25.0
MAX_ACCELERATION = 750.0
MIN_LIMIT = -0.01
MAX_LIMIT = 350.0
[JOINT_1]
TYPE = LINEAR
HOME = 0.0
FERROR = 10.0
MIN_FERROR = 1.0
MAX_VELOCITY = 25.0
MAX_ACCELERATION = 750.0
# The values below should be 25% larger than MAX_VELOCITY and MAX_ACCELERATION
# If using BACKLASH compensation STEPGEN_MAXACCEL should be 100% larger.
STEPGEN_MAXVEL = 31.25
STEPGEN_MAXACCEL = 937.50
P = 1000.0
I = 0.0
D = 0.0
FF0 = 0.0
FF1 = 1.0
FF2 = 0.0
BIAS = 0.0
DEADBAND = 0.0
MAX_OUTPUT = 0.0
# these are in nanoseconds
DIRSETUP = 20000
DIRHOLD = 20000
STEPLEN = 5000
STEPSPACE = 5000
STEP_SCALE = 800.0
MIN_LIMIT = -0.01
MAX_LIMIT = 350.0
HOME_OFFSET = 0.0
#
HOME_SEARCH_VEL = -1.000000
HOME_LATCH_VEL = -0.500000
HOME_FINAL_VEL = 0.000000
HOME_USE_INDEX = NO
#
HOME_SEQUENCE = 0
#HOME_SEQUENCE = 2
#******************************************
#******************************************
[AXIS_U]
MAX_VELOCITY = 25.0
MAX_ACCELERATION = 750.0
MIN_LIMIT = -0.01
MAX_LIMIT = 550.0
[JOINT_2]
TYPE = LINEAR
HOME = 0.0
FERROR = 10.0
MIN_FERROR = 1.0
MAX_VELOCITY = 25.0
MAX_ACCELERATION = 750.0
# The values below should be 25% larger than MAX_VELOCITY and MAX_ACCELERATION
# If using BACKLASH compensation STEPGEN_MAXACCEL should be 100% larger.
STEPGEN_MAXVEL = 31.25
STEPGEN_MAXACCEL = 937.50
P = 1000.0
I = 0.0
D = 0.0
FF0 = 0.0
FF1 = 1.0
FF2 = 0.0
BIAS = 0.0
DEADBAND = 0.0
MAX_OUTPUT = 0.0
# these are in nanoseconds
DIRSETUP = 20000
DIRHOLD = 20000
STEPLEN = 5000
STEPSPACE = 5000
STEP_SCALE = 800.0
MIN_LIMIT = -0.01
MAX_LIMIT = 550.0
HOME_OFFSET = 0.0
#
HOME_SEARCH_VEL = -1.000000
HOME_LATCH_VEL = -0.500000
HOME_FINAL_VEL = 0.000000
HOME_USE_INDEX = NO
#
HOME_SEQUENCE = 0
#HOME_SEQUENCE = 0
#******************************************
#******************************************
[AXIS_V]
MAX_VELOCITY = 25.0
MAX_ACCELERATION = 750.0
MIN_LIMIT = -0.01
MAX_LIMIT = 350.0
[JOINT_3]
TYPE = LINEAR
HOME = 0.0
FERROR = 10.0
MIN_FERROR = 1.0
MAX_VELOCITY = 25.0
MAX_ACCELERATION = 750.0
# The values below should be 25% larger than MAX_VELOCITY and MAX_ACCELERATION
# If using BACKLASH compensation STEPGEN_MAXACCEL should be 100% larger.
STEPGEN_MAXVEL = 31.25
STEPGEN_MAXACCEL = 937.50
P = 1000.0
I = 0.0
D = 0.0
FF0 = 0.0
FF1 = 1.0
FF2 = 0.0
BIAS = 0.0
DEADBAND = 0.0
MAX_OUTPUT = 0.0
# these are in nanoseconds
DIRSETUP = 20000
DIRHOLD = 20000
STEPLEN = 5000
STEPSPACE = 5000
STEP_SCALE = 800.0
MIN_LIMIT = -0.01
MAX_LIMIT = 350.0
HOME_OFFSET = 0.0
#
HOME_SEARCH_VEL = -1.000000
HOME_LATCH_VEL = -0.500000
HOME_FINAL_VEL = 0.000000
HOME_USE_INDEX = NO
#
HOME_SEQUENCE = 0
#HOME_SEQUENCE = 2
#******************************************
#******************************************
[AXIS_A]
MAX_VELOCITY = 360.0
MAX_ACCELERATION = 1200.0
MIN_LIMIT = -361.0
MAX_LIMIT = 361.0
[JOINT_4]
TYPE = ANGULAR
HOME = 0.0
FERROR = 0.5
MIN_FERROR = 0.05
MAX_VELOCITY = 360.0
MAX_ACCELERATION = 1200.0
# The values below should be 25% larger than MAX_VELOCITY and MAX_ACCELERATION
# If using BACKLASH compensation STEPGEN_MAXACCEL should be 100% larger.
STEPGEN_MAXVEL = 450.00
STEPGEN_MAXACCEL = 1500.00
P = 1000.0
I = 0.0
D = 0.0
FF0 = 0.0
FF1 = 1.0
FF2 = 0.0
BIAS = 0.0
DEADBAND = 0.0
MAX_OUTPUT = 0.0
# these are in nanoseconds
DIRSETUP = 10000
DIRHOLD = 10000
STEPLEN = 5000
STEPSPACE = 5000
STEP_SCALE = 4.4444
MIN_LIMIT = -361.0
MAX_LIMIT = 361.0
HOME_OFFSET = 0.0
#
#HOME_SEARCH_VEL = -1.000000
#HOME_LATCH_VEL = -0.500000
#HOME_FINAL_VEL = 0.000000
#HOME_USE_INDEX = NO
#
HOME_SEQUENCE = 1
#HOME_SEQUENCE = 3
#******************************************
[SPINDLE_0]
P = 0
I = 0
D = 0
FF0 = 1
FF1 = 0
FF2 = 0
BIAS = 0
DEADBAND = 0
MAX_OUTPUT = 100
PYVCP hal
[code]# _DO NOT_ include your HAL commands here.
# Put custom HAL commands in custom_postgui.hal
# The commands in this file are run after the GUI loads
# **** Setup of spindle speed display using pyvcp -START ****
net spindle-vel-cmd-rpm-abs => pyvcp.spindle-speed
net spindle-cw => pyvcp.spindle-at-speed-led
# **** Setup of spindle speed display using pyvcp -END ****
PYVCP xml
[code]<?xml version='1.0' encoding='UTF-8'?>
<pyvcp>
<vbox>
<relief>RIDGE</relief>
<bd>6</bd>
<label>
<text>"Wire Power:"</text>
<font>;("Helvetica",20)</font>
</label>
<bar>
<halpin>"spindle-speed"</halpin>
<max_>100</max_>
</bar>
<label>
<text>"Wire ON:"</text>
<font>;("Helvetica",20)</font>
</label>
<hbox>
<label>
<text>" "</text>
<font>;("Helvetica",20)</font>
</label>
<led>
<halpin>"spindle-at-speed-led"</halpin>
<size>30</size>
<on_color>"red"</on_color>
<off_color>"blue"</off_color>
</led>
</hbox>
</vbox>
</pyvcp>
28 Jul 2024 19:00
Help with pncconf Z-X-A custom machine was created by ffffrf
Help with pncconf Z-X-A custom machine
Category: General LinuxCNC Questions
Hello, I am modifying a sherline lathe with a positional stepper to drive the spindle, and I will have a high speed spindle mounted to the cross slide.
I am trying to set up this machine but am confused on how to handle the Y axis. For now, I WILL NOT have a Y axis, meaning any of my milling operations will be circular or tending to the spindle center line.
However, in PNCconf, it forces me to define a Y axis - do I have to do this? How can the kinematics be resolved if linuxcnc thinks there is a Y axis but it is not supposed to function. Is there any way to remove Y axis need from the machine?
My Z axis travels along the bed of the lathe to and from the spindle, my X axis travels side to side on the cross slide, and my A axis will be the positional stepper rotating the stock.
I am trying to set up this machine but am confused on how to handle the Y axis. For now, I WILL NOT have a Y axis, meaning any of my milling operations will be circular or tending to the spindle center line.
However, in PNCconf, it forces me to define a Y axis - do I have to do this? How can the kinematics be resolved if linuxcnc thinks there is a Y axis but it is not supposed to function. Is there any way to remove Y axis need from the machine?
My Z axis travels along the bed of the lathe to and from the spindle, my X axis travels side to side on the cross slide, and my A axis will be the positional stepper rotating the stock.
27 Jul 2024 11:34 - 27 Jul 2024 11:37
Replied by centreline on topic Summing Z axis on bridgeport
Summing Z axis on bridgeport
Category: General LinuxCNC Questions
Ok the last two posts are really useful additions & I'm moving along on this now finally although its been awhile (life issues...). I'm tired of cranking the knee manually. I'd like to modify my machine to implement gmouer's method.
I measured the torque to move the knee up and it takes 7nm on my machine with the table laden with the 4th axis spindle and a vice, so I'm going to use a 12nm closed loop stepper, and run it at 3:1 with a 72t htd5 pulley on the end of the knee screw and matching 24t htd pulley on the stepper, with a 133t belt between the two.
On the knee, I was investigating the physical side , and on my interact1 series1 there's a service hatch cover & window behind to enable you to get at the knee crank gear, which is perfect for both replacing the bevel gear which rotates the screw with a pulley, and also for a belt to come out the side of the knee to mount a stepper on there. I think if i unscrew the nut at the top through this, and lock & block up the knee in its highest position, I can crank the screw down enough to put the pulley on without disassembling it all. I will investigate taking the pedestal off and replace the knee elevation screw with a ballscrew.
I read some other comment about the knee on a series1 not being designed to move often etc, so I was surprised to see the machine automatic oiler manifold feeding oil to the knee leadscrew nut and z slideways so I think it could work as a full time axis without wear.
I measured the torque to move the knee up and it takes 7nm on my machine with the table laden with the 4th axis spindle and a vice, so I'm going to use a 12nm closed loop stepper, and run it at 3:1 with a 72t htd5 pulley on the end of the knee screw and matching 24t htd pulley on the stepper, with a 133t belt between the two.
On the knee, I was investigating the physical side , and on my interact1 series1 there's a service hatch cover & window behind to enable you to get at the knee crank gear, which is perfect for both replacing the bevel gear which rotates the screw with a pulley, and also for a belt to come out the side of the knee to mount a stepper on there. I think if i unscrew the nut at the top through this, and lock & block up the knee in its highest position, I can crank the screw down enough to put the pulley on without disassembling it all. I will investigate taking the pedestal off and replace the knee elevation screw with a ballscrew.
I read some other comment about the knee on a series1 not being designed to move often etc, so I was surprised to see the machine automatic oiler manifold feeding oil to the knee leadscrew nut and z slideways so I think it could work as a full time axis without wear.
19 Jul 2024 14:50
Replied by cornholio on topic Reconnect to Mesa ethernet card
Reconnect to Mesa ethernet card
Category: General LinuxCNC Questions
I have separate power controls for PC, MESA, Steppers & Spindle, if I'm going to be a away for a bit I just turn the Stepper & Spindle power off. And the way I have the relays that control the contactors if the mains goes & comes back on nothing energizes. To an outsider it may seem I have too many separate power supplies.
15 Jul 2024 22:29
Please help me with my ground wiring for my sherline lathe - running into issues was created by ffffrf
Please help me with my ground wiring for my sherline lathe - running into issues
Category: Turning
Hey everyone, I am having an issue where isolated analog output is failing to control my sherline spindle. This issue started after I added a spindle encoder. However, there are other issues going on that make me think there is a serious issue in my ground circuitry. I did a crappy job and there are probably lots of ground loops. Despite removing the encoder, I still get spindle control issues. As it stands, both axis work fine. At one point prior to encoder, everything worked fine.
What makes me suspect a (Dangerous) ground issue - is that moving around my isolated DC power brick (Which hooks into spin- and spin+ to get me my 0-10v range) can sometimes cause the spindle to turn on.
Currently, both axis work fine.
Therefore, I am planning on redoing my wiring, particularly when it comes to ground circuitry. I made a diagram of the new proposed ground circuit and wanted to see if anyone could verify this should work correctly.
My biggest question for this is: Does step- and dir- connect to GND on the steppergen of my 7i96s, or to the ground bar that connects to the sherline frame?
What makes me suspect a (Dangerous) ground issue - is that moving around my isolated DC power brick (Which hooks into spin- and spin+ to get me my 0-10v range) can sometimes cause the spindle to turn on.
Currently, both axis work fine.
Therefore, I am planning on redoing my wiring, particularly when it comes to ground circuitry. I made a diagram of the new proposed ground circuit and wanted to see if anyone could verify this should work correctly.
My biggest question for this is: Does step- and dir- connect to GND on the steppergen of my 7i96s, or to the ground bar that connects to the sherline frame?
13 Jul 2024 04:20 - 13 Jul 2024 06:52
Hi again,
So, I attached some screenshots from the Delta servo manual a few posts above but don't know if they answer your question about the Z pulse signal levels.
Also, I tried to do an updated IO list below. Kinda worst case scenario for now, though. But given the list, which daughter card would you recommend?
Out
In
Again, this is my first CNC, so I am not sure what’s prudent nor practical. Maybe it’s ok to run all limit switches in series and maybe the servo enables, alarms and resets, too? Also, no hard buttons at all on that list and I may have forgotten something. But it sure starts looking like some more IOs would be nice.
Replied by GeckoWorks on topic Sorry, Another 'Which Mesa?' Post. (Yes, I read Spumco's magnificient guide)
Sorry, Another 'Which Mesa?' Post. (Yes, I read Spumco's magnificient guide)
Category: Driver Boards
A 7I96S would do as it has the 0-10V VFD output and 5 step/dir axis
and support MPG encoders. You might run out of inputs however.
What signal levels are the Z (Index) outputs?
Another possibility is a 7I95T but its likely overkill
Hi again,
So, I attached some screenshots from the Delta servo manual a few posts above but don't know if they answer your question about the Z pulse signal levels.
Also, I tried to do an updated IO list below. Kinda worst case scenario for now, though. But given the list, which daughter card would you recommend?
Out
- 4 axis, step/dir
- 1 spindle via VFD
For mist coolant (fancy setup with a peristaltic pump): - 1 enable for the peristaltic pump (stepper with its own driver board with a range of speed settings)
- 1 solenoid for air (I could run them on the same pin, I guess but it would be nice to also have the option of only running air)
In
- 1 4-axis MPG with axis select and increment knobs
- 1 tool setter
- 1 probe
- 6 limit switches.I don’t know if these should be connected in series and what the impact would be, except for saving on pins. But I could also feed limit switches to the servo drivers and not the Mesa.
- 1 “home switch” for rotary homing together with Z pulse
- 4 Z pulse from the servo drives for homing (rotary axis at some point in the future)
- 3-4 Servo Enables (I can also program the servos to enable by default as the drives power on)
- 3-4 Servo Alarms (not sure it’s needed)
- 3-4 Servo Alarm Resets (not sure it’s needed)
- 3-4 Servo COMs (not sure it’s needed)
- 3-4 E-stop to servo drives (Not really needed but may be nice to have the drives stop the servos?)
Again, this is my first CNC, so I am not sure what’s prudent nor practical. Maybe it’s ok to run all limit switches in series and maybe the servo enables, alarms and resets, too? Also, no hard buttons at all on that list and I may have forgotten something. But it sure starts looking like some more IOs would be nice.
12 Jul 2024 03:43
Sorry, Another 'Which Mesa?' Post. (Yes, I read Spumco's magnificient guide) was created by GeckoWorks
Sorry, Another 'Which Mesa?' Post. (Yes, I read Spumco's magnificient guide)
Category: Driver Boards
Hi all,
Looong time lurker but finally signed up and first post here.
Quick background, I've wanted a CNC mill/router for years and was intending to have a custom granite frame made and put on good, used hardware but a cast iron 3040 (cm) Chinese machine came up and I jumped on that. It came with a standalone, Chinese controller that I know I will have to ditch as I want a nicer GUI and also, it can't do probing. Finally, I am over my 'Linux is too hard for me' phase, so here I am:)
Apologies if my lingo is off or I am missing some electronical know how, but I will do my best.
Anyways, from reading a bunch of posts, I am leaning towards a 7i96s board but I am not sure of whether I need a daughterboard and if so, which one? E.g. I am not sure I can attach an MPG to the 7i96s? I recall someone mentioning that perhaps one of the step/dir banks could be used for it?
Would it be ok if I do description of the machine below and maybe one of you can judge which daughterboard I'd need, if any?
4 Axis/ 4 Servos
Three axis, one servo on each but I see a rotary in my future, so let's call it four.
I can set the Delta servos up to enable as soon as they boot (I hope that's not bad practice) so that saves a pin, each. But I would need to read, at least, the Z pulse for homing. Also, not sure what else is common without going overboard, maybe an alarm and alarm reset?
Spindle
I guess I will be running 0-10V to the VFD. (The VFD is also a Delta)
Limit Switches
The router will have Delta servos on it (came with steppers, but I have the servos already). It has cheap proximity limit switches on both ends of each axis and I intend to home the machine via the Z pulse of the servo.
Mist Coolant
The machine will run mist only, no flood. Would be great to have this hooked up to the board.
ATC
No ATC, none planned, either.
Pendent/MPG
I have a cheap one with the encoder wheel and two knobs (axis and increments) that I would like to use. But I could also get the wireless WHB04B-4 down the road. I guess that works with a USB dongle - so maybe it doesn't take up any IOs on the board...?
Tool Setter and Probe
I'd like to have a tool setter on the table and then also a probe.
I would love to just be able to give you a total of IO counts, but I am actually not sure how many the servos will eat up and honestly, I am sometimes still confused about what needs analog vs. dig signals.
Anyhow, sorry for the long write up. If you made it this far, I am basically asking whether the 7i96s can run an MPG and if it has enough IOs or if I need a daughterboard and if so, which one would be a good one?
Looong time lurker but finally signed up and first post here.
Quick background, I've wanted a CNC mill/router for years and was intending to have a custom granite frame made and put on good, used hardware but a cast iron 3040 (cm) Chinese machine came up and I jumped on that. It came with a standalone, Chinese controller that I know I will have to ditch as I want a nicer GUI and also, it can't do probing. Finally, I am over my 'Linux is too hard for me' phase, so here I am:)
Apologies if my lingo is off or I am missing some electronical know how, but I will do my best.
Anyways, from reading a bunch of posts, I am leaning towards a 7i96s board but I am not sure of whether I need a daughterboard and if so, which one? E.g. I am not sure I can attach an MPG to the 7i96s? I recall someone mentioning that perhaps one of the step/dir banks could be used for it?
Would it be ok if I do description of the machine below and maybe one of you can judge which daughterboard I'd need, if any?
4 Axis/ 4 Servos
Three axis, one servo on each but I see a rotary in my future, so let's call it four.
I can set the Delta servos up to enable as soon as they boot (I hope that's not bad practice) so that saves a pin, each. But I would need to read, at least, the Z pulse for homing. Also, not sure what else is common without going overboard, maybe an alarm and alarm reset?
Spindle
I guess I will be running 0-10V to the VFD. (The VFD is also a Delta)
Limit Switches
The router will have Delta servos on it (came with steppers, but I have the servos already). It has cheap proximity limit switches on both ends of each axis and I intend to home the machine via the Z pulse of the servo.
Mist Coolant
The machine will run mist only, no flood. Would be great to have this hooked up to the board.
ATC
No ATC, none planned, either.
Pendent/MPG
I have a cheap one with the encoder wheel and two knobs (axis and increments) that I would like to use. But I could also get the wireless WHB04B-4 down the road. I guess that works with a USB dongle - so maybe it doesn't take up any IOs on the board...?
Tool Setter and Probe
I'd like to have a tool setter on the table and then also a probe.
I would love to just be able to give you a total of IO counts, but I am actually not sure how many the servos will eat up and honestly, I am sometimes still confused about what needs analog vs. dig signals.
Anyhow, sorry for the long write up. If you made it this far, I am basically asking whether the 7i96s can run an MPG and if it has enough IOs or if I need a daughterboard and if so, which one would be a good one?
11 Jul 2024 15:50
Appreciation to the Mesa board was created by Dave2024
Appreciation to the Mesa board
Category: Driver Boards
Hey I'm so happy rite now I just have to show my appreciation for what I've got! First off I want to thank PCW for being a genius and creating the Mesa board. I also want to thank TommyLight for the inspiration to make a goal of fixing my machine. It originally had a spindle issue and sucked at properly functioning as a PMW based VFD. So replaced it with a T6 from StepperOnline threw it in the case and slapped a Mesa 7i96 to in and it fired rite up with no issues what so ever! Anyways I'm so proud of this and want to let everyone at LinuxCNC know that I really appreciate all this!
If there's anything I can do to help or contribute to the awesome CNC movement let me know.
Lol, a quick question. How do I speed up the homing function on each axis? Thanks
If there's anything I can do to help or contribute to the awesome CNC movement let me know.
Lol, a quick question. How do I speed up the homing function on each axis? Thanks
10 Jul 2024 14:18
Getting started with 6i25+7i75+7i85s was created by Kirvesmies
Getting started with 6i25+7i75+7i85s
Category: PnCConf Wizard
Dear gods, I've got the cards mentioned in the subject, and my purpose is to run a lathe with:
- STEP/DIR steppers for x and z axes
- quadrature linear encoders for x and z axes
- Argon servo drive to run the dc spindle motor
- a stepper, a solenoid and an absolute encoder for a tool carousel (although this one might be easier to control with a separate microcontroller?)
- relays for coolant and lubrication pumps
I've found that PncConf does not have the firmware option for my selection of cards, and now I have little clue as to how to proceed.
Why I'm in such a pickle is that I had a friend pick those boards for me, but later, he has become too busy to help me with setting them up.
So, I suppose my question is what should I do? Money or sunken costs are really not an issue. If I should buy new cards that are easier to setup, or pay someone to guide me, then I will.
Oh, and I do also have a 7i73, but no panel or pendant built or even planned yet, so I'm not so worried about that one. For now, I will be a happy man if I can just get the machine to run at all.
- STEP/DIR steppers for x and z axes
- quadrature linear encoders for x and z axes
- Argon servo drive to run the dc spindle motor
- a stepper, a solenoid and an absolute encoder for a tool carousel (although this one might be easier to control with a separate microcontroller?)
- relays for coolant and lubrication pumps
I've found that PncConf does not have the firmware option for my selection of cards, and now I have little clue as to how to proceed.
Why I'm in such a pickle is that I had a friend pick those boards for me, but later, he has become too busy to help me with setting them up.
So, I suppose my question is what should I do? Money or sunken costs are really not an issue. If I should buy new cards that are easier to setup, or pay someone to guide me, then I will.
Oh, and I do also have a 7i73, but no panel or pendant built or even planned yet, so I'm not so worried about that one. For now, I will be a happy man if I can just get the machine to run at all.
04 Jul 2024 18:22 - 04 Jul 2024 18:40
Updated linuxcnc 2.7 -> 2.9, now parallel port card not working with sherline
Category: General LinuxCNC Questions
So... I recently got a sherline lathe, and opted to download linuxcnc 2.7 to my dell optiplex 7010. I used a startech pcie to parallel port card and followed the instructions but kept getting errors, however, towards the end, I realized the computer did detect it via lspci -v, and set up stepconf with the lathe and got everything to work.
Now, I eventually plan to use a mesa ethernet board with the lathe so I thought in the meantime to upgrade to the newest linuxcnc version and set up the lathe the same way.
However, it is not working. In stepconf when I test my axis they work, but when I compile, the software no longer moves the axis. When I do sudo lspci -v I do see my parallel port at the address e010 just as i did on linux 2.7. However, when I open up linuxcnc and type in a g code like g01 Z5 F100, I get "no parport registered at e010 (or 0xe010)" and nothing happens. I do not always get "no parport registered at e010 (or 0xe010)" when I restart linuxcnc but regardless the axis do not move.
I am at a loss on what to do as this is the exact same hardware I have been using. I tried clicking on the sherline pins in stepconf as I think that inverts them but nothing has worked.
In stepconf the axis works, and the steppers are energized. If I change the parport address to anything other than e010 or 0xe010, the axis no longer work in stepconf, so I know it is the right address
SHERLINE INI, HAL and terminal
[/code][/code]
Now, I eventually plan to use a mesa ethernet board with the lathe so I thought in the meantime to upgrade to the newest linuxcnc version and set up the lathe the same way.
However, it is not working. In stepconf when I test my axis they work, but when I compile, the software no longer moves the axis. When I do sudo lspci -v I do see my parallel port at the address e010 just as i did on linux 2.7. However, when I open up linuxcnc and type in a g code like g01 Z5 F100, I get "no parport registered at e010 (or 0xe010)" and nothing happens. I do not always get "no parport registered at e010 (or 0xe010)" when I restart linuxcnc but regardless the axis do not move.
I am at a loss on what to do as this is the exact same hardware I have been using. I tried clicking on the sherline pins in stepconf as I think that inverts them but nothing has worked.
In stepconf the axis works, and the steppers are energized. If I change the parport address to anything other than e010 or 0xe010, the axis no longer work in stepconf, so I know it is the right address
SHERLINE INI, HAL and terminal
# Generated by stepconf 1.1 at Thu Jul 4 12:14:30 2024
# If you make changes to this file, they will be
# overwritten when you run stepconf again
[EMC]
MACHINE = sherline
DEBUG = 0
VERSION = 1.1
[DISPLAY]
DISPLAY = axis
EDITOR = gedit
POSITION_OFFSET = RELATIVE
POSITION_FEEDBACK = ACTUAL
ARCDIVISION = 64
GRIDS = 10mm 20mm 50mm 100mm 1in 2in 5in 10in
MAX_FEED_OVERRIDE = 1.2
MIN_SPINDLE_OVERRIDE = 0.5
MAX_SPINDLE_OVERRIDE = 1.2
DEFAULT_LINEAR_VELOCITY = 2.50
MIN_LINEAR_VELOCITY = 0
MAX_LINEAR_VELOCITY = 25.00
CYCLE_TIME = 0.100
INTRO_GRAPHIC = linuxcnc.gif
INTRO_TIME = 5
PROGRAM_PREFIX = /home/maksym/linuxcnc/nc_files
INCREMENTS = 5mm 1mm .5mm .1mm .05mm .01mm .005mm
LATHE = 1
[KINS]
JOINTS = 2
KINEMATICS = trivkins coordinates=XZ
[FILTER]
PROGRAM_EXTENSION = .png,.gif,.jpg Greyscale Depth Image
PROGRAM_EXTENSION = .py Python Script
PROGRAM_EXTENSION = .nc,.tap G-Code File
png = image-to-gcode
gif = image-to-gcode
jpg = image-to-gcode
py = python
[TASK]
TASK = milltask
CYCLE_TIME = 0.010
[RS274NGC]
PARAMETER_FILE = linuxcnc.var
[EMCMOT]
EMCMOT = motmod
COMM_TIMEOUT = 1.0
BASE_PERIOD = 100000
SERVO_PERIOD = 1000000
[HAL]
HALFILE = sherline.hal
HALFILE = custom.hal
POSTGUI_HALFILE = postgui_call_list.hal
[TRAJ]
COORDINATES = X Z
LINEAR_UNITS = mm
ANGULAR_UNITS = degree
DEFAULT_LINEAR_VELOCITY = 2.50
MAX_LINEAR_VELOCITY = 25.00
[EMCIO]
EMCIO = io
CYCLE_TIME = 0.100
TOOL_TABLE = tool.tbl
#*** AXIS_X *******************************
[AXIS_X]
MAX_VELOCITY = 23.75
MAX_ACCELERATION = 750.0
MIN_LIMIT = -0.001
MAX_LIMIT = 200.0
[JOINT_0]
TYPE = LINEAR
HOME = 0.0
MIN_LIMIT = -0.001
MAX_LIMIT = 200.0
MAX_VELOCITY = 23.75
MAX_ACCELERATION = 750.0
STEPGEN_MAXACCEL = 937.5
SCALE = 400.0
FERROR = 1
MIN_FERROR = .25
HOME_OFFSET = 0.0
#******************************************
#*** AXIS_Z *******************************
[AXIS_Z]
MAX_VELOCITY = 23.75
MAX_ACCELERATION = 750.0
MIN_LIMIT = -100.0
MAX_LIMIT = 0.001
[JOINT_1]
TYPE = LINEAR
HOME = 0.0
MIN_LIMIT = -100.0
MAX_LIMIT = 0.001
MAX_VELOCITY = 23.75
MAX_ACCELERATION = 750.0
STEPGEN_MAXACCEL = 937.5
SCALE = 400.0
FERROR = 1
MIN_FERROR = .25
HOME_OFFSET = 0.0
#******************************************
SHERLINE HAL:
[code]# Generated by stepconf 1.1 at Thu Jul 4 12:14:30 2024
# If you make changes to this file, they will be
# overwritten when you run stepconf again
loadrt [KINS]KINEMATICS
loadrt [EMCMOT]EMCMOT base_period_nsec=[EMCMOT]BASE_PERIOD servo_period_nsec=[EMCMOT]SERVO_PERIOD num_joints=[KINS]JOINTS
loadrt hal_parport cfg="0xe010 out"
setp parport.0.reset-time 5000
loadrt stepgen step_type=0,0
loadrt pwmgen output_type=1
addf parport.0.read base-thread
addf stepgen.make-pulses base-thread
addf pwmgen.make-pulses base-thread
addf parport.0.write base-thread
addf parport.0.reset base-thread
addf stepgen.capture-position servo-thread
addf motion-command-handler servo-thread
addf motion-controller servo-thread
addf stepgen.update-freq servo-thread
addf pwmgen.update servo-thread
net spindle-cmd-rpm => pwmgen.0.value
net spindle-on <= spindle.0.on => pwmgen.0.enable
net spindle-pwm <= pwmgen.0.pwm
setp pwmgen.0.pwm-freq 100.0
setp pwmgen.0.scale 1166.6666666666665
setp pwmgen.0.offset 0.11428571428571428
setp pwmgen.0.dither-pwm true
net spindle-cmd-rpm <= spindle.0.speed-out
net spindle-cmd-rpm-abs <= spindle.0.speed-out-abs
net spindle-cmd-rps <= spindle.0.speed-out-rps
net spindle-cmd-rps-abs <= spindle.0.speed-out-rps-abs
net spindle-at-speed => spindle.0.at-speed
net spindle-cw <= spindle.0.forward
net estop-out => parport.0.pin-01-out
net xstep => parport.0.pin-02-out
setp parport.0.pin-02-out-reset 1
net xdir => parport.0.pin-03-out
net ystep => parport.0.pin-04-out
setp parport.0.pin-04-out-reset 1
net ydir => parport.0.pin-05-out
net zstep => parport.0.pin-06-out
setp parport.0.pin-06-out-reset 1
net zdir => parport.0.pin-07-out
net astep => parport.0.pin-08-out
setp parport.0.pin-08-out-reset 1
net adir => parport.0.pin-09-out
net spindle-cw => parport.0.pin-14-out
net spindle-pwm => parport.0.pin-16-out
net xenable => parport.0.pin-17-out
setp stepgen.0.position-scale [JOINT_0]SCALE
setp stepgen.0.steplen 1
setp stepgen.0.stepspace 0
setp stepgen.0.dirhold 35000
setp stepgen.0.dirsetup 35000
setp stepgen.0.maxaccel [JOINT_0]STEPGEN_MAXACCEL
net xpos-cmd joint.0.motor-pos-cmd => stepgen.0.position-cmd
net xpos-fb stepgen.0.position-fb => joint.0.motor-pos-fb
net xstep <= stepgen.0.step
net xdir <= stepgen.0.dir
net xenable joint.0.amp-enable-out => stepgen.0.enable
setp stepgen.1.position-scale [JOINT_1]SCALE
setp stepgen.1.steplen 1
setp stepgen.1.stepspace 0
setp stepgen.1.dirhold 35000
setp stepgen.1.dirsetup 35000
setp stepgen.1.maxaccel [JOINT_1]STEPGEN_MAXACCEL
net zpos-cmd joint.1.motor-pos-cmd => stepgen.1.position-cmd
net zpos-fb stepgen.1.position-fb => joint.1.motor-pos-fb
net zstep <= stepgen.1.step
net zdir <= stepgen.1.dir
net zenable joint.1.amp-enable-out => stepgen.1.enable
net estop-out <= iocontrol.0.user-enable-out
net estop-out => iocontrol.0.emc-enable-in
loadusr -W hal_manualtoolchange
net tool-change iocontrol.0.tool-change => hal_manualtoolchange.change
net tool-changed iocontrol.0.tool-changed <= hal_manualtoolchange.changed
net tool-number iocontrol.0.tool-prep-number => hal_manualtoolchange.number
net tool-prepare-loopback iocontrol.0.tool-prepare => iocontrol.0.tool-prepared
TERMINAL:
[code]02:00.0 Serial controller: Asix Electronics Corporation Device 9105 (prog-if 02 [16550])
Subsystem: Asix Electronics Corporation (Wrong ID) Device 1000
Flags: fast devsel, IRQ 16, IOMMU group 10
I/O ports at e020
[size=8] Memory at f7c03000 (32-bit, non-prefetchable)
=4K% Memory at f7c02000 (32-bit, non-prefetchable)
=4K% Capabilities: [50] MSI: Enable- Count=1/8 Maskable- 64bit+
Capabilities: [78] Power Management version 3
Capabilities: [80] Express Legacy Endpoint, MSI 00
Capabilities: [100] Virtual Channel
Capabilities: [800] Advanced Error Reporting
02:00.2 Parallel controller: Asix Electronics Corporation AX99100 PCIe to Multi I/O Controller (prog-if 03 [IEEE1284])
Subsystem: Asix Electronics Corporation (Wrong ID) Parallel Port
Flags: bus master, fast devsel, latency 0, IRQ 3, IOMMU group 10
I/O ports at e010
[size=8] I/O ports at e000
[size=8] Memory at f7c01000 (32-bit, non-prefetchable)
=4K% Memory at f7c00000 (32-bit, non-prefetchable)
=4K% Capabilities: [50] MSI: Enable- Count=1/8 Maskable- 64bit+
Capabilities: [78] Power Management version 3
Capabilities: [80] Express Legacy Endpoint, MSI 00
Capabilities: [100] Advanced Error Reporting
[/size][/size][/size]
Time to create page: 0.736 seconds