Jog speed using potentiometer
14 Nov 2016 02:15 - 14 Nov 2016 23:54 #82753
by Duc
Jog speed using potentiometer was created by Duc
Looking to use a potentiometer to set the jog speed for the axis movement instead of using the bar slider on the screen. Running into a few issues into the setup.
So far I have a 10K pot that reads from 16.79VDC to 24VDC for the analog input on the 7i84 which I will need to scale later on to fit the range I need.
net jog-speed <= hm2_5i25.0.7i84.0.2.analogin0
I can see the jog-speed vary in the Hal but no change in the jog-speed slider no the overall jog speed while moving a axis.
[/code]
So far I have a 10K pot that reads from 16.79VDC to 24VDC for the analog input on the 7i84 which I will need to scale later on to fit the range I need.
net jog-speed <= hm2_5i25.0.7i84.0.2.analogin0
I can see the jog-speed vary in the Hal but no change in the jog-speed slider no the overall jog speed while moving a axis.
[code]# Generated by PNCconf at Fri Dec 25 14:13:58 2015
# If you make changes to this file, they will be
# overwritten when you run PNCconf again
loadrt timedelay count=1
loadrt abs count=1
loadrt trivkins
loadrt [EMCMOT]EMCMOT servo_period_nsec=[EMCMOT]SERVO_PERIOD num_joints=[TRAJ]AXES
loadrt hostmot2
loadrt hm2_pci config=" num_encoders=6 num_pwmgens=0 num_stepgens=0 sserial_port_0=0020 "
setp hm2_5i25.0.watchdog.timeout_ns 5000000
loadrt pid names=pid.x,pid.y,pid.z,pid.a,pid.s
addf hm2_5i25.0.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 hm2_5i25.0.write servo-thread
#additional commands
loadrt mux16 count=4
loadrt mux_generic config="ss32,ss32"
loadrt ilowpass
loadrt comp count=1
loadrt mult2 count=1
addf timedelay.0 servo-thread
addf ilowpass.0 servo-thread
addf mux16.0 servo-thread #jogincr
addf mux16.1 servo-thread #Feedrate overide
addf mux16.2 servo-thread
addf mux16.3 servo-thread
addf mux-gen.00 servo-thread
addf mux-gen.01 servo-thread
addf mult2.0 servo-thread
addf abs.0 servo-thread
addf comp.0 servo-thread
loadrt near
addf near.0 servo-thread
# external output signals
# ---COOLANT CONROL ---
net coolant-flood hm2_5i25.0.7i77.0.0.output-01
# ---LUBRICATION SYSTEM ---
# The first input to the comparator is zero.
setp comp.0.in0 0.01
# The other input to the comparator is the current axis movement velocity
net moving comp.0.in1 <= motion.current-vel
# It needs to be connected to an output bit
net pump comp.0.out => hm2_5i25.0.7i77.0.0.output-02
#Rotary input signals
net rotary.clamped <= hm2_5i25.0.7i77.0.0.input-17
net rotary.unclamped <= hm2_5i25.0.7i77.0.0.input-18
# --- SPINDLE-BRAKE ---
#net spindle-brake hm2_5i25.0.7i77.0.0.output-00
net spindle-brake => timedelay.0.in
net spindle-delayed timedelay.0.out => hm2_5i25.0.7i77.0.0.output-00
setp timedelay.0.on-delay 14
setp timedelay.0.off-delay 0
# --- BOTH-HOME-X ---
net both-home-x <= hm2_5i25.0.7i77.0.0.input-00
# --- BOTH-HOME-Y ---
net both-home-y <= hm2_5i25.0.7i77.0.0.input-01
# --- MAX-HOME-Z ---
net max-home-z <= hm2_5i25.0.7i77.0.0.input-03
# --- HOME-A ---
net home-a <= hm2_5i25.0.7i77.0.0.input-16-not
# --- MIN-Z ---
net min-z <= hm2_5i25.0.7i77.0.0.input-04
# --- JOINT-SELECT-a-X ---
net joint-select-a <= hm2_5i25.0.7i84.0.2.input-28
# --- JOINT-SELECT-b-Y ---
net joint-select-b <= hm2_5i25.0.7i84.0.2.input-29
# --- JOINT-SELECT-c-Z ---
net joint-select-c <= hm2_5i25.0.7i84.0.2.input-30
# --- JOINT-SELECT-d-A ---
net joint-select-d <= hm2_5i25.0.7i84.0.2.input-31
# --- JOG-INCR-A ---
net jog-incr-a <= hm2_5i25.0.7i84.0.2.input-11
# --- JOG-INCR-B ---
net jog-incr-b <= hm2_5i25.0.7i84.0.2.input-10
# --- JOG-INCR-C ---
net jog-incr-c <= hm2_5i25.0.7i84.0.2.input-09
# --- Feedrate overide - FO-INCR-A ---
net fo-incr-a <= hm2_5i25.0.7i84.0.2.input-08
# --- FO-INCR-B ---
net fo-incr-b <= hm2_5i25.0.7i84.0.2.input-07
# --- FO-INCR-C ---
net fo-incr-c <= hm2_5i25.0.7i84.0.2.input-06
# --- FO-INCR-D ---
net fo-incr-d <= hm2_5i25.0.7i84.0.2.input-05
# --- FO-INCR-E ---
net fo-incr-e <= hm2_5i25.0.7i84.0.2.input-04
# --- Spindle override - SO-INCR-A ---
net so-incr-a <= hm2_5i25.0.7i84.0.2.input-25
# --- SO-INCR-B ---
net so-incr-b <= hm2_5i25.0.7i84.0.2.input-26
# --- SO-INCR-C ---
net so-incr-c <= hm2_5i25.0.7i84.0.2.input-27
# --- Max velocity override - MVO-INCR-A ---
net mvo-incr-a <= hm2_5i25.0.7i84.0.2.input-20
# --- MVO-INCR-B ---
net mvo-incr-b <= hm2_5i25.0.7i84.0.2.input-21
# --- MVO-INCR-C ---
net mvo-incr-c <= hm2_5i25.0.7i84.0.2.input-22
# --- MVO-INCR-D ---
net mvo-incr-d <= hm2_5i25.0.7i84.0.2.input-23
# --- MVO-INCR-E ---
net mvo-incr-e <= hm2_5i25.0.7i84.0.2.input-24
# --- FO-ENABLE ---
net fo-enable <= hm2_5i25.0.7i84.0.2.input-14
# external input signals
#*******************
# AXIS X
#*******************
setp pid.x.Pgain [AXIS_0]P
setp pid.x.Igain [AXIS_0]I
setp pid.x.Dgain [AXIS_0]D
setp pid.x.bias [AXIS_0]BIAS
setp pid.x.FF0 [AXIS_0]FF0
setp pid.x.FF1 [AXIS_0]FF1
setp pid.x.FF2 [AXIS_0]FF2
setp pid.x.deadband [AXIS_0]DEADBAND
setp pid.x.maxoutput [AXIS_0]MAX_OUTPUT
setp pid.x.error-previous-target true
setp pid.x.maxerror .0
net x-index-enable <=> pid.x.index-enable
net x-enable => pid.x.enable
net x-pos-cmd => pid.x.command
net x-vel-cmd => pid.x.command-deriv
net x-pos-fb => pid.x.feedback
net x-output => pid.x.output
# ---PWM Generator signals/setup---
setp hm2_5i25.0.7i77.0.1.analogout0-scalemax [AXIS_0]OUTPUT_SCALE
setp hm2_5i25.0.7i77.0.1.analogout0-minlim [AXIS_0]OUTPUT_MIN_LIMIT
setp hm2_5i25.0.7i77.0.1.analogout0-maxlim [AXIS_0]OUTPUT_MAX_LIMIT
net x-output => hm2_5i25.0.7i77.0.1.analogout0
net x-pos-cmd axis.0.motor-pos-cmd
net x-enable axis.0.amp-enable-out
# enable _all_ sserial pwmgens
net x-enable hm2_5i25.0.7i77.0.1.analogena
# ---Encoder feedback signals/setup---
setp hm2_5i25.0.encoder.03.counter-mode 0
setp hm2_5i25.0.encoder.03.filter 1
setp hm2_5i25.0.encoder.03.index-invert 0
setp hm2_5i25.0.encoder.03.index-mask 0
setp hm2_5i25.0.encoder.03.index-mask-invert 0
setp hm2_5i25.0.encoder.03.scale [AXIS_0]ENCODER_SCALE
net x-pos-fb <= hm2_5i25.0.encoder.03.position
net x-vel-fb <= hm2_5i25.0.encoder.03.velocity
net x-pos-fb => axis.0.motor-pos-fb
net x-index-enable axis.0.index-enable <=> hm2_5i25.0.encoder.03.index-enable
net x-pos-rawcounts <= hm2_5i25.0.encoder.03.rawcounts
# ---setup home / limit switch signals---
net both-home-x => axis.0.home-sw-in
net both-home-x => axis.0.neg-lim-sw-in
net both-home-x => axis.0.pos-lim-sw-in
#*******************
# AXIS Y
#*******************
setp pid.y.Pgain [AXIS_1]P
setp pid.y.Igain [AXIS_1]I
setp pid.y.Dgain [AXIS_1]D
setp pid.y.bias [AXIS_1]BIAS
setp pid.y.FF0 [AXIS_1]FF0
setp pid.y.FF1 [AXIS_1]FF1
setp pid.y.FF2 [AXIS_1]FF2
setp pid.y.deadband [AXIS_1]DEADBAND
setp pid.y.maxoutput [AXIS_1]MAX_OUTPUT
setp pid.y.error-previous-target true
setp pid.y.maxerror .000
net y-index-enable <=> pid.y.index-enable
net y-enable => pid.y.enable
net y-pos-cmd => pid.y.command
net y-vel-cmd => pid.y.command-deriv
net y-pos-fb => pid.y.feedback
net y-output => pid.y.output
# ---PWM Generator signals/setup---
setp hm2_5i25.0.7i77.0.1.analogout1-scalemax [AXIS_1]OUTPUT_SCALE
setp hm2_5i25.0.7i77.0.1.analogout1-minlim [AXIS_1]OUTPUT_MIN_LIMIT
setp hm2_5i25.0.7i77.0.1.analogout1-maxlim [AXIS_1]OUTPUT_MAX_LIMIT
net y-output => hm2_5i25.0.7i77.0.1.analogout1
net y-pos-cmd axis.1.motor-pos-cmd
net y-enable axis.1.amp-enable-out
# ---Encoder feedback signals/setup---
setp hm2_5i25.0.encoder.01.counter-mode 0
setp hm2_5i25.0.encoder.01.filter 1
setp hm2_5i25.0.encoder.01.index-invert 0
setp hm2_5i25.0.encoder.01.index-mask 0
setp hm2_5i25.0.encoder.01.index-mask-invert 0
setp hm2_5i25.0.encoder.01.scale [AXIS_1]ENCODER_SCALE
net y-pos-fb <= hm2_5i25.0.encoder.01.position
net y-vel-fb <= hm2_5i25.0.encoder.01.velocity
net y-pos-fb => axis.1.motor-pos-fb
net y-index-enable axis.1.index-enable <=> hm2_5i25.0.encoder.01.index-enable
net y-pos-rawcounts <= hm2_5i25.0.encoder.01.rawcounts
# ---setup home / limit switch signals---
net both-home-y => axis.1.home-sw-in
net both-home-y => axis.1.neg-lim-sw-in
net both-home-y => axis.1.pos-lim-sw-in
#*******************
# AXIS Z
#*******************
setp pid.z.Pgain [AXIS_2]P
setp pid.z.Igain [AXIS_2]I
setp pid.z.Dgain [AXIS_2]D
setp pid.z.bias [AXIS_2]BIAS
setp pid.z.FF0 [AXIS_2]FF0
setp pid.z.FF1 [AXIS_2]FF1
setp pid.z.FF2 [AXIS_2]FF2
setp pid.z.deadband [AXIS_2]DEADBAND
setp pid.z.maxoutput [AXIS_2]MAX_OUTPUT
setp pid.z.error-previous-target true
setp pid.z.maxerror .000
net z-index-enable <=> pid.z.index-enable
net z-enable => pid.z.enable
net z-pos-cmd => pid.z.command
net z-vel-cmd => pid.z.command-deriv
net z-pos-fb => pid.z.feedback
net z-output => pid.z.output
# ---PWM Generator signals/setup---
setp hm2_5i25.0.7i77.0.1.analogout2-scalemax [AXIS_2]OUTPUT_SCALE
setp hm2_5i25.0.7i77.0.1.analogout2-minlim [AXIS_2]OUTPUT_MIN_LIMIT
setp hm2_5i25.0.7i77.0.1.analogout2-maxlim [AXIS_2]OUTPUT_MAX_LIMIT
net z-output => hm2_5i25.0.7i77.0.1.analogout2
net z-pos-cmd axis.2.motor-pos-cmd
net z-enable axis.2.amp-enable-out
# ---Encoder feedback signals/setup---
setp hm2_5i25.0.encoder.02.counter-mode 0
setp hm2_5i25.0.encoder.02.filter 1
setp hm2_5i25.0.encoder.02.index-invert 0
setp hm2_5i25.0.encoder.02.index-mask 0
setp hm2_5i25.0.encoder.02.index-mask-invert 0
setp hm2_5i25.0.encoder.02.scale [AXIS_2]ENCODER_SCALE
net z-pos-fb <= hm2_5i25.0.encoder.02.position
net z-vel-fb <= hm2_5i25.0.encoder.02.velocity
net z-pos-fb => axis.2.motor-pos-fb
net z-index-enable axis.2.index-enable <=> hm2_5i25.0.encoder.02.index-enable
net z-pos-rawcounts <= hm2_5i25.0.encoder.02.rawcounts
# ---setup home / limit switch signals---
net max-home-z => axis.2.home-sw-in
net min-z => axis.2.neg-lim-sw-in
net max-home-z => axis.2.pos-lim-sw-in
#*******************
# AXIS W
#*******************
# ---Encoder feedback signals/setup---
setp hm2_5i25.0.encoder.00.counter-mode 0
setp hm2_5i25.0.encoder.00.filter 1
setp hm2_5i25.0.encoder.00.index-invert 0
setp hm2_5i25.0.encoder.00.index-mask 0
setp hm2_5i25.0.encoder.00.index-mask-invert 0
setp hm2_5i25.0.encoder.00.scale [AXIS_8]ENCODER_SCALE
net w-pos-fb <= hm2_5i25.0.encoder.00.position
net w-vel-fb <= hm2_5i25.0.encoder.00.velocity
#net w-pos-fb => axis.4.motor-pos-fb
#net w-index-enable axis.4.index-enable <=> hm2_5i25.0.encoder.00.index-enable
net w-pos-rawcounts <= hm2_5i25.0.encoder.00.rawcounts
#*******************
# AXIS A
#*******************
setp pid.a.Pgain [AXIS_3]P
setp pid.a.Igain [AXIS_3]I
setp pid.a.Dgain [AXIS_3]D
setp pid.a.bias [AXIS_3]BIAS
setp pid.a.FF0 [AXIS_3]FF0
setp pid.a.FF1 [AXIS_3]FF1
setp pid.a.FF2 [AXIS_3]FF2
setp pid.a.deadband [AXIS_3]DEADBAND
setp pid.a.maxoutput [AXIS_3]MAX_OUTPUT
setp pid.a.error-previous-target true
setp pid.a.maxerror .000
net a-index-enable <=> pid.a.index-enable
net a-enable => pid.a.enable
net a-pos-cmd => pid.a.command
net a-vel-cmd => pid.a.command-deriv
net a-pos-fb => pid.a.feedback
net a-output => pid.a.output
# ---PWM Generator signals/setup---
setp hm2_5i25.0.7i77.0.1.analogout3-scalemax [AXIS_3]OUTPUT_SCALE
setp hm2_5i25.0.7i77.0.1.analogout3-minlim [AXIS_3]OUTPUT_MIN_LIMIT
setp hm2_5i25.0.7i77.0.1.analogout3-maxlim [AXIS_3]OUTPUT_MAX_LIMIT
net a-output => hm2_5i25.0.7i77.0.1.analogout3
net a-pos-cmd axis.3.motor-pos-cmd
net a-enable axis.3.amp-enable-out
# ---Encoder feedback signals/setup---
setp hm2_5i25.0.encoder.04.counter-mode 0
setp hm2_5i25.0.encoder.04.filter 1
setp hm2_5i25.0.encoder.04.index-invert 0
setp hm2_5i25.0.encoder.04.index-mask 0
setp hm2_5i25.0.encoder.04.index-mask-invert 0
setp hm2_5i25.0.encoder.04.scale [AXIS_3]ENCODER_SCALE
net a-pos-fb <= hm2_5i25.0.encoder.04.position
net a-vel-fb <= hm2_5i25.0.encoder.04.velocity
net a-pos-fb => axis.3.motor-pos-fb
net a-index-enable axis.3.index-enable <=> hm2_5i25.0.encoder.04.index-enable
net a-pos-rawcounts <= hm2_5i25.0.encoder.04.rawcounts
# ---setup home / limit switch signals---
net home-a => axis.3.home-sw-in
net a-neg-limit => axis.3.neg-lim-sw-in
net a-pos-limit => axis.3.pos-lim-sw-in
#*******************
# SPINDLE S
#*******************
setp pid.s.Pgain [SPINDLE_9]P
setp pid.s.Igain [SPINDLE_9]I
setp pid.s.Dgain [SPINDLE_9]D
setp pid.s.bias [SPINDLE_9]BIAS
setp pid.s.FF0 [SPINDLE_9]FF0
setp pid.s.FF1 [SPINDLE_9]FF1
setp pid.s.FF2 [SPINDLE_9]FF2
setp pid.s.deadband [SPINDLE_9]DEADBAND
setp pid.s.maxoutput [SPINDLE_9]MAX_OUTPUT
setp pid.s.error-previous-target true
setp pid.s.maxerror .0000
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
# ---PWM Generator signals/setup---
setp hm2_5i25.0.7i77.0.1.analogout5-scalemax [SPINDLE_9]OUTPUT_SCALE
setp hm2_5i25.0.7i77.0.1.analogout5-minlim [SPINDLE_9]OUTPUT_MIN_LIMIT
setp hm2_5i25.0.7i77.0.1.analogout5-maxlim [SPINDLE_9]OUTPUT_MAX_LIMIT
net spindle-output => hm2_5i25.0.7i77.0.1.analogout5
net spindle-enable => hm2_5i25.0.7i77.0.1.spinena
# ---Encoder feedback signals/setup---
setp hm2_5i25.0.encoder.05.counter-mode 0
setp hm2_5i25.0.encoder.05.filter 1
setp hm2_5i25.0.encoder.05.index-invert 0
setp hm2_5i25.0.encoder.05.index-mask 0
setp hm2_5i25.0.encoder.05.index-mask-invert 0
setp hm2_5i25.0.encoder.05.scale [SPINDLE_9]ENCODER_SCALE
net spindle-revs <= hm2_5i25.0.encoder.05.position
net spindle-vel-fb-rps abs.0.in <= hm2_5i25.0.encoder.05.velocity
net spindle-index-enable <=> hm2_5i25.0.encoder.05.index-enable
# ---setup spindle control signals---
net spindle-vel-cmd-rps <= motion.spindle-speed-out-rps
net spindle-vel-cmd-rps-abs <= motion.spindle-speed-out-rps-abs
net spindle-vel-cmd-rpm <= motion.spindle-speed-out
net spindle-vel-cmd-rpm-abs <= motion.spindle-speed-out-abs
net spindle-enable <= motion.spindle-on
net spindle-cw <= motion.spindle-forward
net spindle-ccw <= motion.spindle-reverse
net spindle-brake <= motion.spindle-brake
net spindle-revs => motion.spindle-revs
net spindle-at-speed => motion.spindle-at-speed
net spindle-vel-fb-rps => motion.spindle-speed-in
net spindle-index-enable <=> motion.spindle-index-enable
net spindle-cw => hm2_5i25.0.7i77.0.0.output-04
net spindle-ccw => hm2_5i25.0.7i77.0.0.output-05
net spindle-vel-fb-rps-abs <= abs.0.out
# ---Setup spindle at speed signals---
net spindle-vel-cmd-rpm-abs => near.0.in1
net spindle-vel-fb-rpm => near.0.in2
net spindle-at-speed <= near.0.out
setp near.0.scale 1.000000
setp near.0.difference 75.0
setp mult2.0.in0 60
net spindle-vel-fb-rps-abs => mult2.0.in1
net spindle-vel-fb-rpm <= mult2.0.out
# 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 joint-select-a halui.joint.0.select
net x-is-homed halui.joint.0.is-homed
net jog-x-pos halui.jog.0.plus
net jog-x-neg halui.jog.0.minus
net jog-x-analog halui.jog.0.analog
net joint-select-b halui.joint.1.select
net y-is-homed halui.joint.1.is-homed
net jog-y-pos halui.jog.1.plus
net jog-y-neg halui.jog.1.minus
net jog-y-analog halui.jog.1.analog
net joint-select-c halui.joint.2.select
net z-is-homed halui.joint.2.is-homed
net jog-z-pos halui.jog.2.plus
net jog-z-neg halui.jog.2.minus
net jog-z-analog halui.jog.2.analog
net joint-select-d halui.joint.3.select
net a-is-homed halui.joint.3.is-homed
net jog-a-pos halui.jog.3.plus
net jog-a-neg halui.jog.3.minus
net jog-a-analog halui.jog.3.analog
net jog-selected-pos halui.jog.selected.plus
net jog-selected-neg halui.jog.selected.minus
net spindle-manual-cw halui.spindle.forward
net spindle-manual-ccw halui.spindle.reverse
net spindle-manual-stop halui.spindle.stop
net machine-is-on halui.machine.is-on
net jog-speed halui.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
# ---jog button signals---
net jog-speed <= hm2_5i25.0.7i84.0.2.analogin0
#sets jog-speed .16
## MPG stuff##########
# ---jogwheel signals to mesa encoder - shared MPG---
net joint-selected-count <= hm2_5i25.0.7i84.0.2.enc0.count
setp hm2_5i25.0.encoder.00.filter true
setp hm2_5i25.0.encoder.00.counter-mode true
# ---mpg signals---
# for axis x MPG
setp axis.0.jog-vel-mode 0
net selected-jog-incr => axis.0.jog-scale
net joint-select-a => axis.0.jog-enable
net joint-selected-count => axis.0.jog-counts
# for axis y MPG
setp axis.1.jog-vel-mode 0
net selected-jog-incr => axis.1.jog-scale
net joint-select-b => axis.1.jog-enable
net joint-selected-count => axis.1.jog-counts
# for axis z MPG
setp axis.2.jog-vel-mode 0
net selected-jog-incr => axis.2.jog-scale
net joint-select-c => axis.2.jog-enable
net joint-selected-count => axis.2.jog-counts
# for axis a MPG
setp axis.3.jog-vel-mode 0
net selected-jog-incr => axis.3.jog-scale
net joint-select-d => axis.3.jog-enable
net joint-selected-count => axis.3.jog-counts
##connect jog incr override increments
net jog-incr-a => mux16.0.sel0
net jog-incr-b => mux16.0.sel1
net jog-incr-c => mux16.0.sel2
net jog-incr-d => mux16.0.sel3
net selected-jog-incr <= mux16.0.out-f
setp mux16.0.debounce-time 0.200000
setp mux16.0.use-graycode False
setp mux16.0.suppress-no-input False
setp mux16.0.in00 0.0001
setp mux16.0.in01 0.001
setp mux16.0.in02 .01
setp mux16.0.in03 .1
setp mux16.0.in04 1
# connect feed overide increments - switches
setp halui.feed-override.count-enable true
setp halui.feed-override.direct-value true
setp halui.feed-override.scale .01
net feedoverride-incr => halui.feed-override.counts
net fo-incr-a => mux-gen.00.sel-bit-00
net fo-incr-b => mux-gen.00.sel-bit-01
net fo-incr-c => mux-gen.00.sel-bit-02
net fo-incr-d => mux-gen.00.sel-bit-03
net fo-incr-e => mux-gen.00.sel-bit-04
net feedoverride-incr <= mux-gen.00.out-s32
setp mux-gen.00.debounce-us 200000
setp mux-gen.00.suppress-no-input False
setp mux-gen.00.in-s32-00 0
setp mux-gen.00.in-s32-01 10
setp mux-gen.00.in-s32-02 20
setp mux-gen.00.in-s32-03 30
setp mux-gen.00.in-s32-04 40
setp mux-gen.00.in-s32-05 50
setp mux-gen.00.in-s32-06 60
setp mux-gen.00.in-s32-07 70
setp mux-gen.00.in-s32-08 80
setp mux-gen.00.in-s32-09 90
setp mux-gen.00.in-s32-10 100
setp mux-gen.00.in-s32-11 110
setp mux-gen.00.in-s32-12 120
setp mux-gen.00.in-s32-13 130
setp mux-gen.00.in-s32-14 140
setp mux-gen.00.in-s32-15 150
setp mux-gen.00.in-s32-16 160
setp mux-gen.00.in-s32-17 170
setp mux-gen.00.in-s32-18 180
setp mux-gen.00.in-s32-19 190
setp mux-gen.00.in-s32-20 200
# connect max velocity overide increments - switches
setp halui.max-velocity.count-enable true
setp halui.max-velocity.direct-value true
setp halui.max-velocity.scale 0.016670
net max-vel-override-incr => halui.max-velocity.counts
net mvo-incr-a => mux-gen.01.sel-bit-00
net mvo-incr-b => mux-gen.01.sel-bit-01
net mvo-incr-c => mux-gen.01.sel-bit-02
net mvo-incr-d => mux-gen.01.sel-bit-03
net mvo-incr-e => mux-gen.01.sel-bit-04
net max-vel-override-incr <= mux-gen.01.out-s32
setp mux-gen.01.debounce-us 200000
setp mux-gen.01.suppress-no-input False
setp mux-gen.01.in-s32-00 0
setp mux-gen.01.in-s32-01 2
setp mux-gen.01.in-s32-02 4
setp mux-gen.01.in-s32-03 6
setp mux-gen.01.in-s32-04 8
setp mux-gen.01.in-s32-05 10
setp mux-gen.01.in-s32-06 12
setp mux-gen.01.in-s32-07 14
setp mux-gen.01.in-s32-08 16
setp mux-gen.01.in-s32-09 18
setp mux-gen.01.in-s32-10 20
setp mux-gen.01.in-s32-11 25
setp mux-gen.01.in-s32-12 30
setp mux-gen.01.in-s32-13 35
setp mux-gen.01.in-s32-14 40
setp mux-gen.01.in-s32-15 45
setp mux-gen.01.in-s32-16 50
setp mux-gen.01.in-s32-17 55
setp mux-gen.01.in-s32-18 60
# connect spindle overide increments
setp halui.spindle-override.count-enable true
setp halui.spindle-override.direct-value true
setp halui.spindle-override.scale .01
net spindleoverride-incr => halui.spindle-override.counts
net so-incr-a => mux16.3.sel0
net so-incr-b => mux16.3.sel1
net so-incr-c => mux16.3.sel2
net spindleoverride-incr <= mux16.3.out-s
setp mux16.3.debounce-time 0.200000
setp mux16.3.use-graycode False
setp mux16.3.suppress-no-input False
setp mux16.3.in00 100.000000
setp mux16.3.in01 90.000000
setp mux16.3.in02 70.000000
setp mux16.3.in03 80.000000
setp mux16.3.in04 110.000000
setp mux16.3.in05 120.000000
setp mux16.3.in06 60.000000
setp mux16.3.in07 50.000000
# ---motion control signals---
net in-position <= motion.in-position
net machine-is-enabled <= motion.motion-enabled
# ---digital in / out signals---
# ---estop signals---
# ---estop signals---
net estop-out <= hm2_5i25.0.7i84.0.2.input-15
net estop-out => 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
Last edit: 14 Nov 2016 23:54 by BigJohnT.
Please Log in or Create an account to join the conversation.
- tommylight
- Away
- Moderator
Less
More
- Posts: 19196
- Thank you received: 6434
14 Nov 2016 03:51 #82759
by tommylight
Replied by tommylight on topic Jog speed using potentiometer
Not my forte but,
You mention that the voltage changes from 17.xx to 24 on the input of mesa card, right?
Well that means you have only 2 wires from the potentiometer connected, or you have all 3 wires connected but at wrong places.
So, you have to connect the centre wire from the potentiometer to the input of the mesa card, the other 2 wires on the left and right on the potentiometer go: one to gnd and the other to +24V. That is if the analogue input on the mesa card is for 24V.
After you test and it works, only after it works see if it is correctly wired to up the speed as you turn it right. If not, just switch places of +24V and GND on the potentiometer. Do not under any circumstances wire the middle potentiometer pin to anything else except the analogue input on the card.
Just in case you find out that the potentiometer does not adjust speed linearly, check to see if it is a linear or logarithmic version, you need it to be linear. If it is linear and it still does not adjust properly, change the potentiometer, as that is a sure sign that it is fried due to miss wiring.
Phew, that should be all the possibilities of wiring a potentiometer .
You mention that the voltage changes from 17.xx to 24 on the input of mesa card, right?
Well that means you have only 2 wires from the potentiometer connected, or you have all 3 wires connected but at wrong places.
So, you have to connect the centre wire from the potentiometer to the input of the mesa card, the other 2 wires on the left and right on the potentiometer go: one to gnd and the other to +24V. That is if the analogue input on the mesa card is for 24V.
After you test and it works, only after it works see if it is correctly wired to up the speed as you turn it right. If not, just switch places of +24V and GND on the potentiometer. Do not under any circumstances wire the middle potentiometer pin to anything else except the analogue input on the card.
Just in case you find out that the potentiometer does not adjust speed linearly, check to see if it is a linear or logarithmic version, you need it to be linear. If it is linear and it still does not adjust properly, change the potentiometer, as that is a sure sign that it is fried due to miss wiring.
Phew, that should be all the possibilities of wiring a potentiometer .
Please Log in or Create an account to join the conversation.
14 Nov 2016 11:41 #82765
by andypugh
I am not particularly clear what you are trying to do, looking at the HAL.
You have a lot of mux components for setting the MPG jog rates. I assume that is working?
But, you also seem to be trying to use the analog input to set the keyboard(?) jog speed.
Which LinuxCNC GUI are you using? I don't know if any of them allow you to set the jog slider from an external input (because the on-screen slider has no way to do the reverse, move the physical knob)
Replied by andypugh on topic Jog speed using potentiometer
I can see the jog-speed vary in the Hal but no change in the jog-speed slider no the overall jog speed while moving a axis.
I am not particularly clear what you are trying to do, looking at the HAL.
You have a lot of mux components for setting the MPG jog rates. I assume that is working?
But, you also seem to be trying to use the analog input to set the keyboard(?) jog speed.
Which LinuxCNC GUI are you using? I don't know if any of them allow you to set the jog slider from an external input (because the on-screen slider has no way to do the reverse, move the physical knob)
Please Log in or Create an account to join the conversation.
15 Nov 2016 02:15 #82820
by Duc
Using AXIS
All the mux are working fine MPG jog rates, spindle rpm and feed override. I see the slider change in AXIS gui when I adjust the knobs for those items. I do not see anything change for the jog-speed when I adjust the knob, only the I/O value for jog-speed and the analogin.0
I would like to use the knob to adjust the jog speed for when I use the keyboard to move the table around. The end game for the setup is a switch to turn a jog on like what is used on a manual mill equipped with a power drive unit.
Replied by Duc on topic Jog speed using potentiometer
I can see the jog-speed vary in the Hal but no change in the jog-speed slider no the overall jog speed while moving a axis.
I am not particularly clear what you are trying to do, looking at the HAL.
You have a lot of mux components for setting the MPG jog rates. I assume that is working?
But, you also seem to be trying to use the analog input to set the keyboard(?) jog speed.
Which LinuxCNC GUI are you using? I don't know if any of them allow you to set the jog slider from an external input (because the on-screen slider has no way to do the reverse, move the physical knob)
Using AXIS
All the mux are working fine MPG jog rates, spindle rpm and feed override. I see the slider change in AXIS gui when I adjust the knobs for those items. I do not see anything change for the jog-speed when I adjust the knob, only the I/O value for jog-speed and the analogin.0
I would like to use the knob to adjust the jog speed for when I use the keyboard to move the table around. The end game for the setup is a switch to turn a jog on like what is used on a manual mill equipped with a power drive unit.
Please Log in or Create an account to join the conversation.
15 Nov 2016 02:16 #82821
by Duc
Not sure why I forgot the 3rd leg but I will fix that once I have the I/O working.
Thanks
Replied by Duc on topic Jog speed using potentiometer
Not my forte but,
You mention that the voltage changes from 17.xx to 24 on the input of mesa card, right?
Well that means you have only 2 wires from the potentiometer connected, or you have all 3 wires connected but at wrong places.
So, you have to connect the centre wire from the potentiometer to the input of the mesa card, the other 2 wires on the left and right on the potentiometer go: one to gnd and the other to +24V. That is if the analogue input on the mesa card is for 24V.
After you test and it works, only after it works see if it is correctly wired to up the speed as you turn it right. If not, just switch places of +24V and GND on the potentiometer. Do not under any circumstances wire the middle potentiometer pin to anything else except the analogue input on the card.
Just in case you find out that the potentiometer does not adjust speed linearly, check to see if it is a linear or logarithmic version, you need it to be linear. If it is linear and it still does not adjust properly, change the potentiometer, as that is a sure sign that it is fried due to miss wiring.
Phew, that should be all the possibilities of wiring a potentiometer .
Not sure why I forgot the 3rd leg but I will fix that once I have the I/O working.
Thanks
Please Log in or Create an account to join the conversation.
15 Nov 2016 18:19 #82841
by andypugh
There is a difference between an MPG and a potentiometer. A potentiometer is an absolute device and an MPG is a relative device.
This means that an MPG and a GUI slider can work together to alter a setting, this isn't possible with a potentiometer.
Would it be possible to use a small encoder in place of the potentiometer? There are some low-count ones available in the same form-factor as the pot. ( www.ebay.co.uk/itm/261857741214 ).
You can count those perfectly OK with a software encoder counter in HAL (running in the servo thread, you won't make 1000 clicks per second) if you have run out of MPG inputs on your cards.
Replied by andypugh on topic Jog speed using potentiometer
Using AXIS
All the mux are working fine MPG jog rates, spindle rpm and feed override. I see the slider change in AXIS gui when I adjust the knobs for those items. I do not see anything change for the jog-speed when I adjust the knob.
There is a difference between an MPG and a potentiometer. A potentiometer is an absolute device and an MPG is a relative device.
This means that an MPG and a GUI slider can work together to alter a setting, this isn't possible with a potentiometer.
Would it be possible to use a small encoder in place of the potentiometer? There are some low-count ones available in the same form-factor as the pot. ( www.ebay.co.uk/itm/261857741214 ).
You can count those perfectly OK with a software encoder counter in HAL (running in the servo thread, you won't make 1000 clicks per second) if you have run out of MPG inputs on your cards.
Please Log in or Create an account to join the conversation.
18 Dec 2017 15:58 #103293
by Bello
Replied by Bello on topic Jog speed using potentiometer
so isn't possible to use a potentiometer on MPG?
Please Log in or Create an account to join the conversation.
18 Dec 2017 16:23 #103296
by andypugh
Everything is possible, but some things are difficult.
A potentiometer only turns through a limited range, how do you propose to deal with that?
Or do you want the pot to control jog speed? (and is so, how do you actually stop?)
Replied by andypugh on topic Jog speed using potentiometer
so isn't possible to use a potentiometer on MPG?
Everything is possible, but some things are difficult.
A potentiometer only turns through a limited range, how do you propose to deal with that?
Or do you want the pot to control jog speed? (and is so, how do you actually stop?)
Please Log in or Create an account to join the conversation.
18 Dec 2017 16:47 #103297
by Bello
Replied by Bello on topic Jog speed using potentiometer
I could use a joypad for example.
I'm trying to use it infact but I 'm in the same situation: I see in halmeter the correct value but the velocity not increasing....
I'm trying to use it infact but I 'm in the same situation: I see in halmeter the correct value but the velocity not increasing....
Please Log in or Create an account to join the conversation.
18 Dec 2017 19:07 #103303
by Bello
Replied by Bello on topic Jog speed using potentiometer
I have 4 encoder in quadrature mode that are working fine.
The problem is that I cannot found a way to configure the halui.jog-speed dynamically using the max velocity value from halui.max-velocity.value.
I saw that halui.jog-speed is increasing following halui.max-velocity.value after I have se it as the following:
net jog-speed <= halui.max-velocity.value
net jog-speed halui.jog-speed
but I cannot see any increasing on the real speed machine.
Any idea?
The problem is that I cannot found a way to configure the halui.jog-speed dynamically using the max velocity value from halui.max-velocity.value.
I saw that halui.jog-speed is increasing following halui.max-velocity.value after I have se it as the following:
net jog-speed <= halui.max-velocity.value
net jog-speed halui.jog-speed
but I cannot see any increasing on the real speed machine.
Any idea?
Please Log in or Create an account to join the conversation.
Time to create page: 0.177 seconds