Setting Ethercat Driver with Absolute Encoder

More
5 years 5 months ago #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 to join the conversation.

More
5 years 5 months ago #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?

Please Log in to join the conversation.

More
5 years 5 months ago #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 to join the conversation.

More
5 years 5 months ago #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 to join the conversation.

More
5 years 5 months ago #208311 by PKM
Why don't you play with [JOINT_N] HOME and HOME_OFFSET in INI file?

Please Log in to join the conversation.

More
5 years 5 months ago #208313 by TheRoslyak
Joints are not supposed to move during Home. And immediately it should get correct XYZ

Please Log in to join the conversation.

More
5 years 5 months ago #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 ?

Please Log in to join the conversation.

More
5 years 5 months ago #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.

Please Log in to join the conversation.

More
5 years 5 months ago #208326 by PKM
What if you try HOME = HOME_OFFSET = 50 ?

Please Log in to join the conversation.

More
5 years 5 months ago #208327 by TheRoslyak
The angle is different all the time after each launch

Please Log in to join the conversation.

Time to create page: 0.058 seconds
Powered by Kunena Forum