question about motion.spindle-on

29 views
Skip to first unread message

markus

unread,
Jul 18, 2020, 12:08:51 PM7/18/20
to Machinekit
I replaced my spindle with a servo motor and was hoping to use "M3 S0"
to hold the current position of the spindle. The signal
"motion.spindle-on" however only asserts if S>0, when S==0 the signal is
not asserted.

Is there a different signal I could use? Should this work?

Thanks in advance,
Markus

...
# ################
# Spindle [3]
# ################

newsig spindle-enable bit
sets spindle-enable FALSE

# spindle wiring
net spindle-enable <= motion.spindle-on
net spindle-enable => bb_gpio.p8.out-37
net spindle-enable => hpg.stepgen.03.enable
net spindle-velocity <= motion.spindle-speed-out-rps
net spindle-velocity => hpg.stepgen.03.velocity-cmd

setp hpg.stepgen.03.control-type 1
setp hpg.stepgen.03.steppin 833
setp hpg.stepgen.03.dirpin 835

# timing parameters
setp hpg.stepgen.03.dirsetup [SPINDLE]DIRSETUP
setp hpg.stepgen.03.dirhold [SPINDLE]DIRHOLD

setp hpg.stepgen.03.steplen [SPINDLE]STEPLEN
setp hpg.stepgen.03.stepspace [SPINDLE]STEPSPACE

setp hpg.stepgen.03.position-scale [SPINDLE]SCALE

setp hpg.stepgen.03.maxvel [SPINDLE]STEPGEN_MAX_VEL
setp hpg.stepgen.03.maxaccel [SPINDLE]STEPGEN_MAX_ACC

justin White

unread,
Jul 18, 2020, 5:11:33 PM7/18/20
to markus, Machinekit
motion.spindle-on is a pin, "spindle-enable" is your signal.

You don't need to trip the "....stepgen.NN.enable" pin to have a step/direction servo hold position, you just stop sending it pulses which "m3 s0" should do with no further interaction. disabling the stepgen does not cause the servo to go limp because the drive should be setup in position mode and stepgen only sends steps to alter position. Holding a position is always assumed in position mode servos.

What may be happening that you didn't mention is that when you enter M3 S0 it trips the motion.spindle-on pin and since it is connected to the stepgen.enable pin it may be causing your drive to fault out. If your spindle is at speed and you immediately disable the stepgen there is no (de)accelleration curve and your drive may fault.

Otherwise you can connect the stepgen.enable to "motion.motion-enabled" or motion.power-on(or something like that) depending on how you want it to work.

--
website: http://www.machinekit.io blog: http://blog.machinekit.io github: https://github.com/machinekit
---
You received this message because you are subscribed to the Google Groups "Machinekit" group.
To unsubscribe from this group and stop receiving emails from it, send an email to machinekit+...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/machinekit/20200716210622.1fcc780f%40yolanda.

markus

unread,
Jul 18, 2020, 5:52:38 PM7/18/20
to justin White, Machinekit
Sorry for my sloppy terminology. My servo has 3 input pins,
enable/step/dir. If enable is asserted it holds the position, otherwise
the shaft can be turned freely. Which is the behaviour I am looking for.
I want the spindle to not be engaged for manual tool changes, touch offs
and such. But then I want the spindle to hold its position for
tightening the drawbar and things like that, kinda like a poor
man's version of a spindle lock.

Unfortunately the pin motion.spindle-on does not assert just because I
issue a M3 or M4 command, it also requires S to be non 0. This is the
behaviour I see on the oscilloscope which is not good because I need
the enable pin of the servo to be asserted for it to hold its position.

Hope this makes more sense.

markus

unread,
Jul 18, 2020, 8:31:20 PM7/18/20
to John Dammeyer, Machinekit
Hi John,

motion.spindle_brake - genius! Tried it out and it does exactly how I
wanted it. BTW, break signal seems to be active when machine is
off/e-stop.

Adapted spindle section below. Now I just need to add in a ramp down,
the servo takes the stop a bit too seriously for my taste ;)

Thanks a lot!
Markus


# ################
# Spindle [3]
# ################

newsig spindle-enable bit
sets spindle-enable FALSE

# spindle wiring
net spindle-enable <= motion.spindle-brake
net spindle-enable => bb_gpio.p8.out-37
net spindle-enable => hpg.stepgen.03.enable
net spindle-velocity <= motion.spindle-speed-out-rps
net spindle-velocity => hpg.stepgen.03.velocity-cmd
setp hpg.stepgen.03.dirpin 835
setp bb_gpio.p8.out-37.invert 1

# timing parameters
setp hpg.stepgen.03.dirsetup [SPINDLE]DIRSETUP
setp hpg.stepgen.03.dirhold [SPINDLE]DIRHOLD

setp hpg.stepgen.03.steplen [SPINDLE]STEPLEN
setp hpg.stepgen.03.stepspace [SPINDLE]STEPSPACE

setp hpg.stepgen.03.position-scale [SPINDLE]SCALE

setp hpg.stepgen.03.maxvel [SPINDLE]STEPGEN_MAX_VEL
setp hpg.stepgen.03.maxaccel [SPINDLE]STEPGEN_MAX_ACC

setp hpg.stepgen.03.control-type 1
setp hpg.stepgen.03.steppin 833



On Sat, 18 Jul 2020 16:41:22 -0700
"John Dammeyer" <jo...@autoartisans.com> wrote:

> Hi Markus,
> I've been mulling over the same thing with my new Spindle Servo
> that's currently running PWM but will eventually be switched over to
> Step/Dir.
>
> The enable to it is the same one to all the other servos and stepper
> drive.
>
> What I was thinking of doing was using the compliment of the brake
> signal to gate the enable to the drive. While the BRAKE is ON the
> ENABLE is OFF. Set RPM to 0 without an M5 and the BRAKE doesn't come
> ON and the spindle is still held in position by the servo. Issue an
> M5 and the brake is ON which shuts off the ENABLE. An M3 with any
> Sxxx will disable the BRAKE and setting the ENABLE ON.
>
> In either case I still have to bring out a separate output to the
> servo enable rather than the common output to all the drives. And
> with that said it would be possible to just use the BRAKE as the
> servo enable. I suspect BRAKE is not asserted during ESTOP so the
> spindle would continue to spin. Not a good thing.
>
> John Dammeyer
> > https://groups.google.com/d/msgid/machinekit/20200718145232.7b0800be%40yolanda.
> >
>

markus

unread,
Jul 18, 2020, 8:44:25 PM7/18/20
to John Dammeyer, Machinekit
Apologies, I got so excited about the S0 behaviour that I never tested
actually turning the spindle. Naturally the stepgen enable pin needs to
be tied to something other than the brake.

# ################
# Spindle [3]
# ################

newsig spindle-enable bit
sets spindle-enable FALSE

# spindle wiring
net spindle-enable <= motion.spindle-brake
net spindle-enable => bb_gpio.p8.out-37
net spindle-velocity <= motion.spindle-speed-out-rps
net spindle-velocity => hpg.stepgen.03.velocity-cmd
setp hpg.stepgen.03.dirpin 835
setp hpg.stepgen.03.enable 1
setp bb_gpio.p8.out-37.invert 1

# timing parameters
setp hpg.stepgen.03.dirsetup [SPINDLE]DIRSETUP
setp hpg.stepgen.03.dirhold [SPINDLE]DIRHOLD

setp hpg.stepgen.03.steplen [SPINDLE]STEPLEN
setp hpg.stepgen.03.stepspace [SPINDLE]STEPSPACE

setp hpg.stepgen.03.position-scale [SPINDLE]SCALE

setp hpg.stepgen.03.maxvel [SPINDLE]STEPGEN_MAX_VEL
setp hpg.stepgen.03.maxaccel [SPINDLE]STEPGEN_MAX_ACC

setp hpg.stepgen.03.control-type 1
setp hpg.stepgen.03.steppin 833


Reply all
Reply to author
Forward
0 new messages