X and Z homeswitches shared, Ya and Yb using own switches, is this possible?

More
8 years 8 months ago #105788 by ikkuh
hi,

having loads of fun trying to get LinuxCNC to do what I want. I now have a gantry style machine that homes all axis by itself.
Since I have to use separate switches for Ya and Yb I had to sacrifice my probe input to use as a homeswitch for Yb.
Would like to have the probe back :)

Question:
Is it possible to put the homeswitches for X and Z together, in stepconf you can say 'all home'. But all homes in one input will not work because of the separate homing switches needed to get the gantry to square itself.

anybody know a solution? (I ordered a second parallel port, but that will not be here for a few weeks).

(LinuxCNC is great software btw! I like how it works, especially with Gmoccapy)

Please Log in to join the conversation.

More
8 years 8 months ago #105912 by ikkuh

Please Log in to join the conversation.

More
8 years 8 months ago #105915 by rodw
You need to forget about stepconf at this point and learn how to edit hal and ini files.

I would expect home switches sharing one input would work if you follow Todd's post on the thread you linked to. But I've never tried it.

Please Log in to join the conversation.

More
8 years 8 months ago #105916 by ikkuh

rodw wrote: You need to forget about stepconf at this point and learn how to edit hal and ini files.


Was not using stepconf.

rodw wrote: I would expect home switches sharing one input would work if you follow Todd's post on the thread you linked to. But I've never tried it.

Ok, will give it a go then. Thanks for your reaction.

Please Log in to join the conversation.

More
8 years 8 months ago #105919 by Todd Zuercher
I believe that it should be possible for the Yb home switch to share it's input with your Probe. (Since probing and homing never occur at the same time.)
But first you need to figure out the homing and get it configured. Adding the probe should be fairly simple afterward.

Please Log in to join the conversation.

More
8 years 8 months ago #105920 by ikkuh

Todd Zuercher wrote: I believe that it should be possible for the Yb home switch to share it's input with your Probe. (Since probing and homing never occur at the same time.)

Ok, will try that, sounds logical. Thanks.

Todd Zuercher wrote: But first you need to figure out the homing and get it configured. Adding the probe should be fairly simple afterward.

Homing works already. The gantry is squared and all axis are homed.

Does not work, I get a message saying that probe was tripped during homing.

Please Log in to join the conversation.

More
8 years 8 months ago #105921 by Todd Zuercher
I need to add 1 caveat, If the Yb home switch is also used as a Limit switch, then it can not share it's input with the Probe, (it can share with other limits though such as X or Z) However if Ya has limit switches, having limits on Yb seems like it may be an unnecessary redundancy.

Please Log in to join the conversation.

More
8 years 8 months ago #105922 by ikkuh

Todd Zuercher wrote: I need to add 1 caveat, If the Yb home switch is also used as a Limit switch, then it can not share it's input with the Probe, (it can share with other limits though such as X or Z) However if Ya has limit switches, having limits on Yb seems like it may be an unnecessary redundancy.



No limit switches, just home switches.
I tried almost all combinations now, it looks like it is not possible to 'reuse' a homing switch as a probe input. I get the error that the probe was triggered during homing.
Code:
# Generated by stepconf 1.1 at Thu Feb 8 12:13:55 2018 # 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="0x378 out" setp parport.0.reset-time 5000 ####https://forum.linuxcnc.org/49-basic-configuration/33867-how-to-connect-home-switches-for-dual-motor-on-3-axis-machine-2-8-pre-master#104933 loadrt stepgen step_type=0,0,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 <= motion.spindle-on => pwmgen.0.enable net spindle-pwm <= pwmgen.0.pwm setp pwmgen.0.pwm-freq 16000.0 setp pwmgen.0.scale 1075.0 setp pwmgen.0.offset 0.0857142857143 setp pwmgen.0.dither-pwm true net spindle-cmd-rpm <= motion.spindle-speed-out net spindle-cmd-rpm-abs <= motion.spindle-speed-out-abs net spindle-cmd-rps <= motion.spindle-speed-out-rps net spindle-cmd-rps-abs <= motion.spindle-speed-out-rps-abs net spindle-at-speed => motion.spindle-at-speed ##net probe-in => motion.probe-input net spindle-pwm => parport.0.pin-01-out net xstep => parport.0.pin-02-out setp parport.0.pin-02-out-reset 1 setp parport.0.pin-03-out-invert 1 net xdir => parport.0.pin-03-out net yRstep => parport.0.pin-04-out setp parport.0.pin-04-out-reset 1 net yRdir => 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 yLstep => parport.0.pin-08-out setp parport.0.pin-08-out-reset 1 net yLdir => parport.0.pin-09-out net xenable => parport.0.pin-14-out net spindle-on => parport.0.pin-17-out net estop-ext <= parport.0.pin-10-in #net probe-in <= parport.0.pin-11-in-not net home-x <= parport.0.pin-12-in-not net home-yR <= parport.0.pin-11-in-not net home-yL <= parport.0.pin-13-in-not net home-z <= parport.0.pin-15-in-not 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 net home-x => joint.0.home-sw-in 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 yRpos-cmd joint.1.motor-pos-cmd => stepgen.1.position-cmd net yRpos-fb stepgen.1.position-fb => joint.1.motor-pos-fb net yRstep <= stepgen.1.step net yRdir <= stepgen.1.dir net yRenable joint.1.amp-enable-out => stepgen.1.enable net home-yR => joint.1.home-sw-in ##copy setp stepgen.2.position-scale [JOINT_2]SCALE setp stepgen.2.steplen 1 setp stepgen.2.stepspace 0 setp stepgen.2.dirhold 35000 setp stepgen.2.dirsetup 35000 setp stepgen.2.maxaccel [JOINT_2]STEPGEN_MAXACCEL net yLpos-cmd joint.2.motor-pos-cmd => stepgen.2.position-cmd net yLpos-fb stepgen.2.position-fb => joint.2.motor-pos-fb net yLstep <= stepgen.2.step net yLdir <= stepgen.2.dir net yLenable joint.2.amp-enable-out => stepgen.2.enable net home-yL => joint.2.home-sw-in setp stepgen.3.position-scale [JOINT_3]SCALE setp stepgen.3.steplen 1 setp stepgen.3.stepspace 0 setp stepgen.3.dirhold 35000 setp stepgen.3.dirsetup 35000 setp stepgen.3.maxaccel [JOINT_3]STEPGEN_MAXACCEL net zpos-cmd joint.3.motor-pos-cmd => stepgen.3.position-cmd net zpos-fb stepgen.3.position-fb => joint.3.motor-pos-fb net zstep <= stepgen.3.step net zdir <= stepgen.3.dir net zenable joint.3.amp-enable-out => stepgen.3.enable net home-z => joint.3.home-sw-in net estop-out <= iocontrol.0.user-enable-out net estop-ext => 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 net probe motion.probe-input <= parport.0.pin-12-in

Please Log in to join the conversation.

More
8 years 8 months ago #105928 by Todd Zuercher
You need to set it up so the probe is disabled during homing. Like this, use a tristate bit component to disable the probe while the axis is homing. You also need to be certain that the axis sharing the home switch won't trip the home switch while you are probing.
Code:
# Generated by stepconf 1.1 at Thu Feb 8 12:13:55 2018 # 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="0x378 out" setp parport.0.reset-time 5000 ####https://forum.linuxcnc.org/49-basic-configuration/33867-how-to-connect-home-switches-for-dual-motor-on-3-axis-machine-2-8-pre-master#104933 loadrt stepgen step_type=0,0,0,0 loadrt pwmgen output_type=1 loadrt tristate_bit count=1 addf parport.0.read base-thread addf stepgen.make-pulses base-thread addf pwmgen.make-pulses base-thread addf tristate-bit.0 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 <= motion.spindle-on => pwmgen.0.enable net spindle-pwm <= pwmgen.0.pwm setp pwmgen.0.pwm-freq 16000.0 setp pwmgen.0.scale 1075.0 setp pwmgen.0.offset 0.0857142857143 setp pwmgen.0.dither-pwm true net spindle-cmd-rpm <= motion.spindle-speed-out net spindle-cmd-rpm-abs <= motion.spindle-speed-out-abs net spindle-cmd-rps <= motion.spindle-speed-out-rps net spindle-cmd-rps-abs <= motion.spindle-speed-out-rps-abs net spindle-at-speed => motion.spindle-at-speed ##net probe-in => motion.probe-input net spindle-pwm => parport.0.pin-01-out net xstep => parport.0.pin-02-out setp parport.0.pin-02-out-reset 1 setp parport.0.pin-03-out-invert 1 net xdir => parport.0.pin-03-out net yRstep => parport.0.pin-04-out setp parport.0.pin-04-out-reset 1 net yRdir => 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 yLstep => parport.0.pin-08-out setp parport.0.pin-08-out-reset 1 net yLdir => parport.0.pin-09-out net xenable => parport.0.pin-14-out net spindle-on => parport.0.pin-17-out net estop-ext <= parport.0.pin-10-in #net probe-in <= parport.0.pin-11-in-not net home-x <= parport.0.pin-12-in-not net home-yR <= parport.0.pin-11-in-not net home-yL <= parport.0.pin-13-in-not net home-z <= parport.0.pin-15-in-not 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 net home-x => joint.0.home-sw-in 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 yRpos-cmd joint.1.motor-pos-cmd => stepgen.1.position-cmd net yRpos-fb stepgen.1.position-fb => joint.1.motor-pos-fb net yRstep <= stepgen.1.step net yRdir <= stepgen.1.dir net yRenable joint.1.amp-enable-out => stepgen.1.enable net home-yR => joint.1.home-sw-in ##copy setp stepgen.2.position-scale [JOINT_2]SCALE setp stepgen.2.steplen 1 setp stepgen.2.stepspace 0 setp stepgen.2.dirhold 35000 setp stepgen.2.dirsetup 35000 setp stepgen.2.maxaccel [JOINT_2]STEPGEN_MAXACCEL net yLpos-cmd joint.2.motor-pos-cmd => stepgen.2.position-cmd net yLpos-fb stepgen.2.position-fb => joint.2.motor-pos-fb net yLstep <= stepgen.2.step net yLdir <= stepgen.2.dir net yLenable joint.2.amp-enable-out => stepgen.2.enable net home-yL => joint.2.home-sw-in setp stepgen.3.position-scale [JOINT_3]SCALE setp stepgen.3.steplen 1 setp stepgen.3.stepspace 0 setp stepgen.3.dirhold 35000 setp stepgen.3.dirsetup 35000 setp stepgen.3.maxaccel [JOINT_3]STEPGEN_MAXACCEL net zpos-cmd joint.3.motor-pos-cmd => stepgen.3.position-cmd net zpos-fb stepgen.3.position-fb => joint.3.motor-pos-fb net zstep <= stepgen.3.step net zdir <= stepgen.3.dir net zenable joint.3.amp-enable-out => stepgen.3.enable net home-z => joint.3.home-sw-in net estop-out <= iocontrol.0.user-enable-out net estop-ext => 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 net probe-enable <= joint.0.homed => tristate-bit.0.enable net probe-in <= parport.0.pin-12-in => tristate-bit.0.in net probe-out <= tristate-bit.0.out => motion.probe-input

Please Log in to join the conversation.

More
8 years 8 months ago #105975 by ikkuh

Todd Zuercher wrote: You need to set it up so the probe is disabled during homing. Like this, use a tristate bit component to disable the probe while the axis is homing. You also need to be certain that the axis sharing the home switch won't trip the home switch while you are probing.


I used your modifications and it kinda works. The problem is that the probe signal is inverted.
Code:
net xenable => parport.0.pin-14-out net spindle-on => parport.0.pin-17-out net estop-ext <= parport.0.pin-10-in #net probe-in <= parport.0.pin-11-in-not net home-x <= parport.0.pin-12-in-not net home-yR <= parport.0.pin-11-in-not net home-yL <= parport.0.pin-13-in-not net home-z <= parport.0.pin-15-in-not snip ... net probe-enable <= joint.0.homed => tristate-bit.0.enable net probe-in <= parport.0.pin-12-in => tristate-bit.0.in net probe-out <= tristate-bit.0.out => motion.probe-input
I get an error message stating that:
Code:
./nieuwste.hal:134: Pin 'parport.0.pin-12-in-not' was already linked to signal 'home-x'
When I invert the port signal, with either invert or not then nothing works anymore.
So I tried NOT and INVERT . NOT just does not work when I do:
Code:
net probe-in <= parport.0.not.pin-12-in-not => tristate-bit.0.in
I get an error;
Code:
./nieuwste.hal:134: Pin 'parport.0.not.pin-12-in-not' does not exist


And invert works only on floating numbers, so that will never work for what want.

What am I doing wrong, was real happy when Todd came up with the solution, it looked like it might work.

Please Log in to join the conversation.

Time to create page: 0.070 seconds
Powered by Kunena Forum