Linux CNC - Mesa Card 7i96s with iHSV57-XX Servo Motor

More
30 Mar 2023 09:42 #267899 by Drillbit
The servos are able to indicate missed micro steps. Its related to how the motor is setup. So it could indicate one of the 6000 items in the above example was missed. Its a small error.

Its explained well here,


Thank you for the reply.

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

More
30 Mar 2023 12:23 #267906 by blazini36
I'm not familiar with those servos but as stated before, you shouldn't be "missing" any steps. Doesn't matter if you're using a stepper motor or servo commanded through step and direction. There could be some misconfiguration between the SD command and feedback.

Either way "missed steps" are not acceptable and you can't tune your way out of it. When I suggested you adjust the STEP_SCALE, I was talking about like 1 or 2 increments beyond what is calculated as ball/lead screws are not perfect but it's becoming clear that if you still have some issue or had to make major adjustments, then something is wrong with your setup

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

More
30 Mar 2023 13:31 - 30 Mar 2023 13:33 #267910 by Drillbit
Say 1 steps in one revolution of 4000 steps for 2.5cm in one revolution is 0.000625 cm loss. If thats say 5 steps lost or gained in a series of start and stops commands thats 0.003125mm.

I would be interested if a STEP_SCALE could reduce this. I had assumed this is such a small amount that it was not something that could be solved/adjusted for.
Last edit: 30 Mar 2023 13:33 by Drillbit. Reason: had 2 needed to say 1

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

More
30 Mar 2023 14:18 #267914 by blazini36
You're confusing your terms here. Just because something doesn't move the exact intended amount, that doesn't mean it is a "lost step". It's a servo and it has feedback. If it's set for 4000 steps/rotation, you send it 4000 steps, and it spins exactly 1 rotation and reports that it's position is 4000....nothing got lost, it did what you told it to. If it didn't, don't adjust the STEP_SCALE, fix your machine.

In the real world your 5mm/turn ballscrew  could be 4.98mm/turn or something and I say it's OK to slightly tune that out with a minor adjustment to the STEP_SCALE, others may disagree but that's really the only way you can do it. but you have to be sure it's actually your ballscrew and and that deviation averages over the entire length of the screw. Otherwise you get into ballscrew mapping and I'm not even gonna get into that.

It has nothing to do with starts and stops, if you are losing motion on starts and stops you have a mechanical issue that your motor cannot overcome. You have to fix that because you have no idea at all how many starts and stops will occur in a program, but adjusting the STEP_SCALE is affects the actual length of travel. If you command a 500mm move or command 100mm 5 times you should still be in exactly the same spot. If it is different you can't tune that out, you have to fix your problem.

Since I'm, confused about what your actual problem is I suggest you do as others said. If you have a 5mm/turn ballscrew and you set the servo to 4000 pulse/rotation and your LinuxCNC machine unit is mm, then your step scale is 800 because you are expecting to send 800 steps per mm. Remove the backlash compensation and make some single direction moves around your machine of various lengths and see if you can figure out why 1mm of commanded travel is not translating to 1mm of actual movement.

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

More
30 Mar 2023 16:48 #267926 by Drillbit
Thank you.

The moves if constant is down to 0.009mm or something like that. So backlash etc. all good. The motor if asked will report that it did what I asked.

This is where the debate lives I think....

You have a large weight, say a spindle. You move that up and down fast the motor will do this. i.e it will turn 4000 steps to make it move 2.5cm in my case.

Now enter the real world of a machine in motion, and while the motor asked for 4000 it sees the system actually made it do 4002, say the head kept travelling due to its momentum. Again these are really small amounts. The idea is to make what was asked as close to what it does. But if you ramp up 4kgs at 100mm a min for 1mm and then in the opposite direction then forces will act on the machine.

The difference could be from sharp change in direction. i.e any dy/dx.

It does not want to this. its not a function as far as I know of any backlash or ball screw. The motors can be compensated for this to some extent with stiffness and other settings and it all gets very complex very quickly - hence the video.

Some things you can do as far as I understand:

- Set motor settings for stiffness.
- Find ways of the current gcode command to take into account the next command. (smoothing)
- Compensate the z up and z down differently (some machines use springs for this)
- get a bigger machine which is more rigid.
- Slow down the feeds
- Slow down rampup and slowdown.
- fusion 360 has some options that help, but I dont know them well.

Just learning and this is my understanding, which could be wrong.

At this point I dont have a question, just want to take any feedback seriously and learn.

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

More
30 Mar 2023 17:04 #267929 by blazini36

Now enter the real world of a machine in motion, and while the motor asked for 4000 it sees the system actually made it do 4002, say the head kept travelling due to its momentum.

This is where you're misunderstanding how things work. It didn't do that. You tell a servo to move 4000 steps indexed to whatever it is translating what 4000 steps are to the motor shaft, it does that and it checks the counted encoder position to make sure that's what it actually did or it should fault out.

If in the real world 4000 steps translated into some motion that you didn't expect you need to resolve what that is and you can't do that by playing with the STEP_SCALE because while moving the heavy head down may result in some kind of drift while the motor tries to fight overtravel, the adjustment you made with the STEP_SCALE also affects moving the head upwards which is not going to be subject to that same force. In that specific case you're probably better off playing with acceleration and maybe the PID and if you still can't get it right you need to counterweight the head because the difference in force required to move one direction is much greater than the force to move the other, sometimes it's just not something you can tune out.

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

More
30 Mar 2023 17:38 #267930 by Drillbit
Your explanation makes sense but neither the video or what I am seeing reflect that - for now I'm ignoring it as I'm not seeing any impact on the (limited amount) milling I'm doing at this point.

if you have time to watch the video at some point during year I would appreciate any feedback as I got my approach to tuning from that.

Thank you for your replies. Going to try adding a probe now.

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

More
30 Mar 2023 21:51 #267941 by blazini36
Not going to bother with the video, I use servos and steppers every day. You asked for help but don't seem to have been willing to accept anyone's advice which is probably why everybody tapped out before I did. 

Good luck with your project

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

More
31 Mar 2023 09:03 #267958 by Drillbit
A bit harsh.

I try all the feedback, speeds etc. everything.

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

Time to create page: 0.083 seconds
Powered by Kunena Forum