I tried setting up backlash compensation (setting the backlash = xxxxx on 
the axis) and increasing accelerations but that did not help much.
I spent more time trying to figure out how motion works, and noticed that 
motion keeps moving independently from what the PID is doing. Basically 
motion is reading the encoder position for an axis, generates a "next 
position" at a certain feed rate and outputs the error from the current 
position vs desired position.. and if this error is higher than a preset 
value it reports joint x error.
So if the preset error is too low, it fails pretty quickly.

What I ended up doing is putting a comp module with the f-error output vs a 
preset value (0.1mm) .. so if the error is greater than that, it would set 
the feed-hold input for motion. This way motion will stop until the error 
goes back to less than 0.1mm. I combined X and Y using an or2 and the 
backlash gets compensated by the PID.
Basically I'm stopping the motion module so it won't keep trying to change 
the position until the PID reaches (or is close to reach) the desired 
position.

I upload a picture generated by recording the encoder output for X and Y. 
Each pixels is 0.01mm. You can see artifacts when the spiral changes 
direction on one of the 2 axis but this is greatly reduced compared to 
running it without stopping motion.

I still have to adjust error values and tune the PID.
The speed that I get is obviously not great considering most of the time 
motion is stopped waiting for the PIDs to reach the desired position.


-- 
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 [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/machinekit/5dfb68b1-4470-41de-97e5-29ae9c3592b8%40googlegroups.com.

Reply via email to