My Grizzly G0619 mill

More
5 years 4 months ago #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 .
Code:
# 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

Please Log in to join the conversation.

More
5 years 4 months ago #212921 by tommylight
Replied by tommylight on topic My Grizzly G0619 mill
Building the machines! :)

Please Log in to join the conversation.

More
5 years 4 months ago #212925 by my1987toyota
Replied by my1987toyota on topic My Grizzly G0619 mill

tommylight wrote: Building the machines! :)


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

Please Log in to join the conversation.

More
5 years 4 months ago #212926 by tommylight
Replied by tommylight on topic My Grizzly G0619 mill

my1987toyota wrote:

tommylight wrote: 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 !!!!
:)

Please Log in to join the conversation.

More
5 years 4 months ago #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

Please Log in to join the conversation.

More
5 years 4 months ago #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 to join the conversation.

More
5 years 4 months ago #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..
 

Please Log in to join the conversation.

More
5 years 4 months ago #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 to join the conversation.

More
5 years 4 months ago #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?

Please Log in to join the conversation.

More
5 years 4 months ago #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.
Code:
net axis-select-4 <= select8.0.out6 net axis-select-5 <= select8.0.out7 net axis-select-6 <= select8.0.out5
 

Please Log in to join the conversation.

Time to create page: 0.105 seconds
Powered by Kunena Forum