Single encoder servo motor direction
02 Sep 2022 17:27 #251036
by Byass
Replied by Byass on topic Single encoder servo motor direction
can I use pwmgen.N.dir? since it is what determines the motor direction in my setup
if so can you direct me to how it can be done?
thanks.
if so can you direct me to how it can be done?
thanks.
Please Log in or Create an account to join the conversation.
02 Sep 2022 17:34 #251039
by cmorley
Replied by cmorley on topic Single encoder servo motor direction
As I said currently there is no way to tell the encoder component (after being loaded) to count in different directions while in counter mode. The source code would need to be changed and rcompiled - it's c programming code. Id this something you are familiar with?
Please Log in or Create an account to join the conversation.
02 Sep 2022 17:34 - 02 Sep 2022 17:42 #251040
by PCW
Replied by PCW on topic Single encoder servo motor direction
No matter what you do in software, this will not work for
position control because you will accumulate errors at reversals.
For example, when decelerating at low speeds, the motion
direction will be opposite of the PID output, and there is no
reliable way to detect the actual motion reversal with just one
encoder signal.
Also as tommylight mentioned, you will lose position with external
forces from cutting etc
position control because you will accumulate errors at reversals.
For example, when decelerating at low speeds, the motion
direction will be opposite of the PID output, and there is no
reliable way to detect the actual motion reversal with just one
encoder signal.
Also as tommylight mentioned, you will lose position with external
forces from cutting etc
Last edit: 02 Sep 2022 17:42 by PCW. Reason: reformat
Please Log in or Create an account to join the conversation.
02 Sep 2022 17:44 - 02 Sep 2022 17:44 #251043
by cmorley
Replied by cmorley on topic Single encoder servo motor direction
Maybe you could explain your motivation for doing this the way you want to?
I'm with PCW and Tommy here I would not bother trying this unless it was just an exercise, I want to play with what I have just for fun, or I need something hacked together that probably won't work very well.
Though the direction pin might be useful regardless.
I'm with PCW and Tommy here I would not bother trying this unless it was just an exercise, I want to play with what I have just for fun, or I need something hacked together that probably won't work very well.
Though the direction pin might be useful regardless.
Last edit: 02 Sep 2022 17:44 by cmorley.
Please Log in or Create an account to join the conversation.
02 Sep 2022 17:46 - 02 Sep 2022 17:47 #251044
by PCW
Replied by PCW on topic Single encoder servo motor direction
The Hostmot2 encoder does exactly that (B is direction in counter mode)
Last edit: 02 Sep 2022 17:47 by PCW.
Please Log in or Create an account to join the conversation.
02 Sep 2022 17:50 - 02 Sep 2022 17:50 #251046
by cmorley
Replied by cmorley on topic Single encoder servo motor direction
does the software encoder component do that? I looked at the code and it might but it uses lut and look up list so I didn't try to decipher more.
Last edit: 02 Sep 2022 17:50 by cmorley.
Please Log in or Create an account to join the conversation.
02 Sep 2022 18:02 #251049
by cmorley
Replied by cmorley on topic Single encoder servo motor direction
I tested - software encoder does not use phase-b for direction.
Please Log in or Create an account to join the conversation.
02 Sep 2022 18:03 - 02 Sep 2022 18:03 #251050
by PCW
Replied by PCW on topic Single encoder servo motor direction
The manual page says the B input is ignored in counter mode
Last edit: 02 Sep 2022 18:03 by PCW.
Please Log in or Create an account to join the conversation.
06 Sep 2022 22:53 #251363
by andypugh
Replied by andypugh on topic Single encoder servo motor direction
I would probably write a custom component, but I think that this can be done with standard HAL components.
You probably need three sum2 components.
Use sum2.2 (the last one) at the bottom of the list, with in0 connected to the encoder counts and with an in1 of 0 to supply a one-period-delayed value of the total encoder counts.
Take that value into one input of sum2.0 and take the current encoder counts to in0 and the delayed counts to in1. Set the gain to -1 to give a subtraction.
Then use sum2.1 to calculate your bidirectional counts. in0 is looped to the output, and represents your encoder counts.
in1 is the one-period delta that was calculated by sum2.0
Then set the gain to +1 or -1 depending on motor direction.
Calculate position by a HAL scale component (after converting counts to float)
You probably need three sum2 components.
Use sum2.2 (the last one) at the bottom of the list, with in0 connected to the encoder counts and with an in1 of 0 to supply a one-period-delayed value of the total encoder counts.
Take that value into one input of sum2.0 and take the current encoder counts to in0 and the delayed counts to in1. Set the gain to -1 to give a subtraction.
Then use sum2.1 to calculate your bidirectional counts. in0 is looped to the output, and represents your encoder counts.
in1 is the one-period delta that was calculated by sum2.0
Then set the gain to +1 or -1 depending on motor direction.
Calculate position by a HAL scale component (after converting counts to float)
Please Log in or Create an account to join the conversation.
Time to create page: 0.116 seconds