Setting Ethercat Driver with Absolute Encoder

More
07 May 2021 08:10 #208186 by TheRoslyak
I extend a warm welcome to all participants.
Need help and advice on setting up a delta robot with absolute encoder drivers.
Before that, I worked with incremental encoders and everything was successful.
It was Hiwin D2T with incremental 13bit 10.000 count/rev encoder.
Now it's Hiwin E1 with absolute 23bit 8.388.608 count/rev encoder.
In both cases, there is Harmonic Drive 1/50.
In the first case, there were physical limit switches and the necessary offsets were set in the * .ini file.

First question: Do you need physical limit switches on absolute encoders to find the zero position?

Second question: How to correctly configure scale?
In the first case: I counted 1 / 360 * 50 * 10000 = 1388,888 this is for joint.motor-cmd and 0.00072 for joint.motor-fb.
In this case, everything moved correctly if I set X100, then it moved 100mm in accordance with the delta kinematics.

In other case: I calculated with the same method 1/360*50*8.388.608 = 1165084.444 for joint.motor-cmd and 0.0000008583 for joint.motor-fb. But moved isn't correctly. The movement is much less than I set + there is an effect that the engine can suddenly make a fast one turn to the other side
Did I calculate the scale correctly in the first case?
I take into account everything that everything works perfectly (on incremental encoders)

I look forward to good advice from people who can give good advice and guide you on the right path.)

Thanks, everyone.

Please Log in or Create an account to join the conversation.

More
07 May 2021 11:52 - 07 May 2021 13:55 #208199 by TheRoslyak
I figured out my problems. And now I have the next question.
The situation is as follows:
I am running linuxcnc and My robot on zero position !!!
Then I click home all -> linuxcnc recalculates coordinates according to delta kinematics -> Everything is OK.
Then I move joints -> angles change correctly (for example joint0 is on +50 angle physically and program)
Then if I click home all again. Program is all on 0 but physically joint0 is on +50.
How to configure *.ini that it works according to the following principle:
1 way: That he would go to zero point when pressed again
2 way: So that when you press it again, it recalculates the coordinates in accordance with the physical angles
Any option will suit)

Upd
I managed to make by first way by consciousness of the new hal component (programLimit).

Is it possible to implement way 2?
Attachments:
Last edit: 07 May 2021 13:55 by TheRoslyak.

Please Log in or Create an account to join the conversation.

More
07 May 2021 15:38 #208225 by PKM
Why would you home, actually?
I've also been trying to figure out homing of a PKM with absolute encoders (Mechatrolink, though).
What you describe seems like a correct behavior.

1 way: To go to the zero point just issue G0X0Y0Z0, what's the problem?
2 way: I don't understand what you mean. The coordinates are always calculated

Please Log in or Create an account to join the conversation.

More
07 May 2021 21:53 #208259 by TheRoslyak
About the first path:
Zero position in delta rotary kinematic when thigh is parallel to the floor physically!!! And in general, you can forget about the first path. I have already implemented it.
About the second way:
The thigh is not parallel to the floor (for example angle is 50*). When I cliked "home all" -> linuxcnc write this angle to joint.motor-pos-offset. And joint.motor-cmd and joint.motor-fb is 0. It is not correct. Joint.motor-pos-offset must be zero then joint.motor-cmd and joint.motor-fb is 50.
If there is an idea how to configure ini and hal. That he would work according to such a prince - I will be grateful)

Please Log in or Create an account to join the conversation.

More
08 May 2021 15:46 #208311 by PKM
Why don't you play with [JOINT_N] HOME and HOME_OFFSET in INI file?

Please Log in or Create an account to join the conversation.

More
08 May 2021 16:38 #208313 by TheRoslyak
Joints are not supposed to move during Home. And immediately it should get correct XYZ

Please Log in or Create an account to join the conversation.

More
08 May 2021 18:09 - 08 May 2021 18:23 #208321 by PKM
That's exactly how it happens, right. If HOME=HOME_OFFSET, of course

I can't exactly get what you need, but what if you try HOME = HOME_OFFSET = 50 ?
Last edit: 08 May 2021 18:23 by PKM.

Please Log in or Create an account to join the conversation.

More
08 May 2021 18:23 - 08 May 2021 18:27 #208325 by TheRoslyak
But if thighs are not parallel to the floor, linuxcnc sets X0Y0Z0 - it's not correct.
I want linuxcnc to calculate the coordinates of all angels and give the correct XYZ position. Instead of writing it to joint.motor-pos-offset.
Last edit: 08 May 2021 18:27 by TheRoslyak.

Please Log in or Create an account to join the conversation.

More
08 May 2021 18:24 #208326 by PKM
What if you try HOME = HOME_OFFSET = 50 ?

Please Log in or Create an account to join the conversation.

More
08 May 2021 18:27 #208327 by TheRoslyak
The angle is different all the time after each launch

Please Log in or Create an account to join the conversation.

Moderators: PCWjmelson
Time to create page: 0.120 seconds
Powered by Kunena Forum