My Grizzly G0619 mill

More
25 Jun 2021 19:48 #212917 by my1987toyota
Replied by my1987toyota on topic My Grizzly G0619 mill
WOW I now have a few video's that I will have to plan.
So when I was setting up the G0602 lathe for CNC with dedicated X and Z
jog wheels I decided to work on an MPG for My Mach3 to Linuxcnc G0619 mill conversion as well. Little did I know the can of worms
that would turn into. I am sure it didn't help that I was also setting it up for Feed and Spindle override at the same time.

Right know I have the Hal. file with everything on it .
# Generated by PNCconf at Thu Jun 24 20:14:27 2021
# Using LinuxCNC version:  2.8
# 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=20xxxx" 
setp    [HMOT](CARD0).watchdog.timeout_ns 5000000
loadrt pid names=pid.x,pid.y,pid.z,pid.a,pid.s
loadrt abs names=abs.spindle
loadrt lowpass names=lowpass.spindle
loadrt scale names=scale.spindle
loadrt classicladder_rt numPhysInputs=15 numPhysOutputs=15 numS32in=10 numS32out=10 numFloatIn=10 numFloatOut=10 numBits=50 numWords=50
loadrt mux16 names=jogincr,foincr,soincr

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.z.do-pid-calcs       servo-thread
addf pid.a.do-pid-calcs       servo-thread
addf pid.s.do-pid-calcs       servo-thread
addf classicladder.0.refresh  servo-thread
addf jogincr                  servo-thread 
addf foincr                   servo-thread
addf soincr                   servo-thread
addf scale.spindle            servo-thread
addf abs.spindle              servo-thread
addf lowpass.spindle          servo-thread
addf [HMOT](CARD0).write         servo-thread
setp [HMOT](CARD0).dpll.01.timer-us -50
setp [HMOT](CARD0).stepgen.timer-number 1

# external output signals


# --- COOLANT-MIST ---
net coolant-mist  =>     [HMOT](CARD0).7i76.0.0.output-06

# --- COOLANT-FLOOD ---
net coolant-flood  =>     [HMOT](CARD0).7i76.0.0.output-07

# external input signals


# --- ESTOP-EXT ---
net estop-ext     <=  [HMOT](CARD0).7i76.0.0.input-00

# --- SPINDLE-AT-SPEED ---
net spindle-at-speed     <=  [HMOT](CARD0).7i76.0.0.input-01

# --- HOME-X ---
net home-x     <=  [HMOT](CARD0).7i76.0.0.input-02

# --- HOME-Y ---
net home-y     <=  [HMOT](CARD0).7i76.0.0.input-03

# --- HOME-Z ---
net home-z     <=  [HMOT](CARD0).7i76.0.0.input-04

# --- JOG-INCR-A ---
net jog-incr-a     <=  [HMOT](CARD0).7i76.0.0.input-05

# --- JOG-INCR-B ---
net jog-incr-b     <=  [HMOT](CARD0).7i76.0.0.input-06

# --- JOINT-SELECT-D ---
#net joint-select-d -commented out
net axis-select-a      <=  [HMOT](CARD0).7i76.0.0.input-20

# --- JOINT-SELECT-C ---
#net joint-select-c -commented out
net axis-select-z      <=  [HMOT](CARD0).7i76.0.0.input-21

# --- JOINT-SELECT-B ---
#net joint-select-b -commented out
net axis-select-y     <=  [HMOT](CARD0).7i76.0.0.input-22

# --- JOINT-SELECT-A  JOINT AXIS X SELECT---
#net joint-select-a -commented out
net axis-select-x      <=  [HMOT](CARD0).7i76.0.0.input-23

# ---feed-overide-enable---
net fo-enable          <=  [HMOT](CARD0).7i76.0.0.input-24

# --- spindle-overide enable---
net so-enable         <=  [HMOT](CARD0).7i76.0.0.input-25

#*******************
#  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.000500

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 home-x     =>  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.000500

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 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 Z JOINT 2
#*******************

setp   pid.z.Pgain     [JOINT_2]P
setp   pid.z.Igain     [JOINT_2]I
setp   pid.z.Dgain     [JOINT_2]D
setp   pid.z.bias      [JOINT_2]BIAS
setp   pid.z.FF0       [JOINT_2]FF0
setp   pid.z.FF1       [JOINT_2]FF1
setp   pid.z.FF2       [JOINT_2]FF2
setp   pid.z.deadband  [JOINT_2]DEADBAND
setp   pid.z.maxoutput [JOINT_2]MAX_OUTPUT
setp   pid.z.error-previous-target true
# This setting is to limit bogus stepgen
# velocity corrections caused by position
# feedback sample time jitter.
setp   pid.z.maxerror 0.000500

net z-index-enable  <=> pid.z.index-enable
net z-enable        =>  pid.z.enable
net z-pos-cmd       =>  pid.z.command
net z-pos-fb        =>  pid.z.feedback
net z-output        <=  pid.z.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 z-pos-cmd    <= joint.2.motor-pos-cmd
net z-vel-cmd    <= joint.2.vel-cmd
net z-output     <= [HMOT](CARD0).stepgen.02.velocity-cmd
net z-pos-fb     <= [HMOT](CARD0).stepgen.02.position-fb
net z-pos-fb     => joint.2.motor-pos-fb
net z-enable     <= joint.2.amp-enable-out
net z-enable     => [HMOT](CARD0).stepgen.02.enable

# ---setup home / limit switch signals---

net home-z     =>  joint.2.home-sw-in
net z-neg-limit     =>  joint.2.neg-lim-sw-in
net z-pos-limit     =>  joint.2.pos-lim-sw-in

#*******************
#  AXIS A JOINT 3
#*******************

setp   pid.a.Pgain     [JOINT_3]P
setp   pid.a.Igain     [JOINT_3]I
setp   pid.a.Dgain     [JOINT_3]D
setp   pid.a.bias      [JOINT_3]BIAS
setp   pid.a.FF0       [JOINT_3]FF0
setp   pid.a.FF1       [JOINT_3]FF1
setp   pid.a.FF2       [JOINT_3]FF2
setp   pid.a.deadband  [JOINT_3]DEADBAND
setp   pid.a.maxoutput [JOINT_3]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.000500

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.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 a-pos-cmd    <= joint.3.motor-pos-cmd
net a-vel-cmd    <= joint.3.vel-cmd
net a-output     <= [HMOT](CARD0).stepgen.03.velocity-cmd
net a-pos-fb     <= [HMOT](CARD0).stepgen.03.position-fb
net a-pos-fb     => joint.3.motor-pos-fb
net a-enable     <= joint.3.amp-enable-out
net a-enable     => [HMOT](CARD0).stepgen.03.enable

# ---setup home / limit switch signals---

net a-home-sw     =>  joint.3.home-sw-in
net a-neg-limit     =>  joint.3.neg-lim-sw-in
net a-pos-limit     =>  joint.3.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-abs     => pid.s.command
net spindle-vel-fb-rpm-abs      => pid.s.feedback
net spindle-output        <=  pid.s.output

# ---digital potentionmeter output signals/setup---

setp   [HMOT](CARD0).7i76.0.0.spinout-minlim    [SPINDLE_0]OUTPUT_MIN_LIMIT
setp   [HMOT](CARD0).7i76.0.0.spinout-maxlim    [SPINDLE_0]OUTPUT_MAX_LIMIT
setp   [HMOT](CARD0).7i76.0.0.spinout-scalemax  [SPINDLE_0]OUTPUT_SCALE

net spindle-output      => [HMOT](CARD0).7i76.0.0.spinout
net spindle-enable      => [HMOT](CARD0).7i76.0.0.spinena
net spindle-ccw         => [HMOT](CARD0).7i76.0.0.spindir

# ---Encoder feedback signals/setup---

setp    [HMOT](CARD0).encoder.00.counter-mode 0
setp    [HMOT](CARD0).encoder.00.filter 1
setp    [HMOT](CARD0).encoder.00.index-invert 0
setp    [HMOT](CARD0).encoder.00.index-mask 0
setp    [HMOT](CARD0).encoder.00.index-mask-invert 0
setp    [HMOT](CARD0).encoder.00.scale  [SPINDLE_0]ENCODER_SCALE

net spindle-revs             <=   [HMOT](CARD0).encoder.00.position
net spindle-vel-fb-rps       <=   [HMOT](CARD0).encoder.00.velocity
net spindle-index-enable     <=>  [HMOT](CARD0).encoder.00.index-enable

# ---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

#  Use ACTUAL spindle velocity from spindle encoder
#  spindle-velocity bounces around so we filter it with lowpass
#  spindle-velocity is signed so we use absolute component to remove sign
#  ACTUAL velocity is in RPS not RPM so we scale it.

setp     scale.spindle.gain 60
setp     lowpass.spindle.gain 1.000000
net spindle-vel-fb-rps        =>     scale.spindle.in
net spindle-fb-rpm               scale.spindle.out       =>   abs.spindle.in
net spindle-fb-rpm-abs           abs.spindle.out         =>   lowpass.spindle.in
net spindle-fb-rpm-abs-filtered  lowpass.spindle.out  

#******************************
# 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-z  halui.axis.z.select
net jog-z-pos      halui.axis.z.plus
net jog-z-neg      halui.axis.z.minus
net jog-z-analog   halui.axis.z.analog
net z-is-homed     halui.joint.2.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.3.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

# ---jogwheel signals to mesa encoder - shared MPG---

net axis-selected-count     <=  [HMOT](CARD0).7i76.0.0.enc0.count

#  ---mpg signals---

#       for axis x MPG
setp    axis.x.jog-vel-mode 0
net selected-jog-incr    =>  axis.x.jog-scale
net axis-select-x       =>  axis.x.jog-enable
net axis-selected-count =>  axis.x.jog-counts

#       for axis y MPG
setp    axis.y.jog-vel-mode 0
net selected-jog-incr    =>  axis.y.jog-scale
net axis-select-y       =>  axis.y.jog-enable
net axis-selected-count =>  axis.y.jog-counts

#       for axis z MPG
setp    axis.z.jog-vel-mode 0
net selected-jog-incr    =>  axis.z.jog-scale
net axis-select-z       =>  axis.z.jog-enable
net axis-selected-count =>  axis.z.jog-counts

#       for axis a MPG
setp    axis.a.jog-vel-mode 0
net selected-jog-incr    =>  axis.a.jog-scale
net axis-select-a       =>  axis.a.jog-enable
net axis-selected-count =>  axis.a.jog-counts

# connect selectable mpg jog increments 

net jog-incr-a           =>  jogincr.sel0
net jog-incr-b           =>  jogincr.sel1
net jog-incr-c           =>  jogincr.sel2
net jog-incr-d           =>  jogincr.sel3
net selected-jog-incr    <=  jogincr.out-f
    setp jogincr.debounce-time      0.200000
    setp jogincr.use-graycode      False
    setp jogincr.suppress-no-input False
    setp jogincr.in00          0.000000
    setp jogincr.in01          0.000100
    setp jogincr.in02          0.001000
    setp jogincr.in03          0.000000
    setp jogincr.in04          0.010000
    setp jogincr.in05          0.000000
    setp jogincr.in06          0.000000
    setp jogincr.in07          0.000000
    setp jogincr.in08          0.100000
    setp jogincr.in09          0.000000
    setp jogincr.in10          0.000000
    setp jogincr.in11          0.000000
    setp jogincr.in12          0.000000
    setp jogincr.in13          0.000000
    setp jogincr.in14          0.000000
    setp jogincr.in15          0.000000

# connect feed overide increments - MPG

    setp halui.feed-override.direct-value false
    setp halui.feed-override.scale .01
net fo-enable            => halui.feed-override.count-enable
net axis-selected-count => halui.feed-override.counts

# connect spindle overide increments - MPG

    setp halui.spindle.0.override.direct-value false
    setp halui.spindle.0.override.scale .01
net so-enable             =>  halui.spindle.0.override.count-enable
net axis-selected-count  =>  halui.spindle.0.override.counts

#  ---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---

loadusr -W hal_manualtoolchange
net tool-change-request     iocontrol.0.tool-change       =>  hal_manualtoolchange.change
net tool-change-confirmed   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


# Load Classicladder without GUI (can reload LADDER GUI in AXIS GUI

loadusr classicladder --nogui custom.clp
However I will probably make a video later of making a dedicated MPG.hal so if someone were so inclined to add one in after initial PNCConf setup, it's possible.

I found a few different hal. files to check out and that really helped me figure out how to make mine work. I guess Like with Arduino their are many ways to write a program to achieve the same goal. Still very frustrating to Noobs like me.

Thanks to rodw if he reads this, your hal. file on page 3 of your spaceship build is one of the ones that helped
forum.linuxcnc.org/show-your-stuff/32029...build?start=20#85279
forum.linuxcnc.org/show-your-stuff/32029...build?start=20#85305

another one that helped isn't on this site but if you are using the 5i25/6i25 and 7i76 cards this my help as well.
wapl.es/cnc/2020/02/23/linuxcnc-jog-wheel-setup.html

All in All I have so much to do as I continue to tumble down the Linuxcnc rabbit hole. I am starting to wonder which is more
enjoyable building the machines to make parts or actually making the parts? HMMM
The following user(s) said Thank You: rodw

Please Log in or Create an account to join the conversation.

More
25 Jun 2021 20:38 #212921 by tommylight
Replied by tommylight on topic My Grizzly G0619 mill
Building the machines! :)
The following user(s) said Thank You: my1987toyota

Please Log in or Create an account to join the conversation.

More
25 Jun 2021 21:03 #212925 by my1987toyota
Replied by my1987toyota on topic My Grizzly G0619 mill

Building the machines! :)


what if its making the parts to build more machines ?:P
The following user(s) said Thank You: tommylight

Please Log in or Create an account to join the conversation.

More
25 Jun 2021 21:20 #212926 by tommylight
Replied by tommylight on topic My Grizzly G0619 mill

Building the machines! :)


what if its making the parts to build more machines ?:P

That's why i have 3D printers now, printing parts for more 3D printers ! :)
SEND HELP !!!!
:)
The following user(s) said Thank You: my1987toyota

Please Log in or Create an account to join the conversation.

More
25 Jun 2021 22:15 #212929 by my1987toyota
Replied by my1987toyota on topic My Grizzly G0619 mill
my name is my1987toyota and I am a machine building addict.
See tommylight first step is admitting it. LOL
The following user(s) said Thank You: tommylight

Please Log in or Create an account to join the conversation.

More
27 Jun 2021 18:57 #213043 by my1987toyota
Replied by my1987toyota on topic My Grizzly G0619 mill
  So for the last few days I have been working on the main Hal. for my mill and a separate MPG Hal.
in the process of doing that I ended up writing a simple MPG hal. for a 5 axis with Feed and Spindle override.
 I will actually be using a 4 axis on the mill. If anyone is interested check out this subject here on the forum
forum.linuxcnc.org/47-hal-examples/42913-simple-mpg-hal-s
 

Please Log in or Create an account to join the conversation.

More
28 Jun 2021 00:49 #213064 by rodw
Replied by rodw on topic My Grizzly G0619 mill
Great work but it looks like you are consuming a lot of pins. This could pose a problem down the track if you are really a machine building addict who by definition wants to consume all the available pins!

Your next challenge is to use some of the MUX components to reduce the pin count. 

eg you can do scale select with 2 pins and  5 axis select with 3 pins
To do 5 axis plus 2 overrides you will need 4 pins which would allow 16 seperate selections
to do this you have to think in binary and from memory you need to convert from a float to long integer using the correct hal component..
 
The following user(s) said Thank You: my1987toyota

Please Log in or Create an account to join the conversation.

More
28 Jun 2021 01:12 #213068 by my1987toyota
Replied by my1987toyota on topic My Grizzly G0619 mill

rodw post=213064 userid=20660Great work but it looks like you are consuming a lot of pins. This could pose a problem down the track if you are really a machine building addict who by definition wants to consume all the available pins!

Your next challenge is to use some of the MUX components to reduce the pin count. 

eg you can do scale select with 2 pins and  5 axis select with 3 pins
To do 5 axis plus 2 overrides you will need 4 pins which would allow 16 seperate selections
to do this you have to think in binary and from memory you need to convert from a float to long integer using the correct hal component..

 

 Admittedly yes it's a bit of a pin hog . Simple can mean many things this would be the easiest one I feel a nooby ( like myself ) could wrap their head around.
Also I am not fully up to speed yet on using mux4 or mux16 to bring the pin count down . I did fiddle around with mux16 a little to bring the pin count down but I didn't feel comfortable baking that into the code at this point . In my opinion their is  a lack of easy hal. examples and integration of MPG panels or pendants. Even pro athletes have to start with baby steps. Linuxcnc is no different. That said I do intend to do more complicated but lower pin count MPG's down the road.

Please Log in or Create an account to join the conversation.

More
28 Jun 2021 07:54 #213102 by rodw
Replied by rodw on topic My Grizzly G0619 mill
I wasn't trying to be smart, I just wanted to give more food for thought. Its really good you are working with hal and trying to do some of the harder stuff. There was an example in the docs that I found useful but it still needed some work and converting to the mesa encoders..

I've actually been meaning to take my MPG code and move it into a dedicated hal file so it can be shared
Here is what I came up with excluding the loadrt and addf commands.. Still not sure the ilowpass has been done correct. First time I tried to use it I had a massive crash because 1 click was equal to one metre!

Warning: Spoiler!


Hmm, I wonder where the preview has gone?
The following user(s) said Thank You: my1987toyota

Please Log in or Create an account to join the conversation.

More
28 Jun 2021 07:57 #213103 by rodw
Replied by rodw on topic My Grizzly G0619 mill
So I still have to work out how to  use these pins to control overrides.
net axis-select-4 <= select8.0.out6
net axis-select-5 <= select8.0.out7
net axis-select-6 <= select8.0.out5
 
The following user(s) said Thank You: my1987toyota

Please Log in or Create an account to join the conversation.

Time to create page: 0.329 seconds
Powered by Kunena Forum