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.
