Tonight was an extremely productive and satisfying build night. After the success of last night, I absolutely had to see this project through. I did quite a few things:
First, I fixed the sticking problem, hopefully once and for all. I took apart the entire XY table sled assemble and cleaned everything with rags, water, and a toothbrush. Then, I generously slathered everything in mineral oil. Quite generously, actually. The parts were so slippery they nearly jumped out of my hand. After putting everything back together, the problems dissolved and haven't reared their ugly heads since. I am quite happy about this, since the X axis had become unusable due to its sticking problem.
I also added anti-backlash code. To do this, I set a variable to keep track of the direction the motor moved last. If the new direction for the motor to move is opposite its last direction, the motor moves a few hundred extra microsteps in the new direction to counteract the backlash. It does not update its position variable, because the actual axis has not moved relative the the laser beam. I was able to use this new functionality quite effectively to eradicate all backlash on my X and Y axes.
Finally, I did some test code. The axes never stuck and my circles came out perfectly circular. I also figured out how to do complicated drawings using Inkscape and the laser cutter extension, so I had my machine do an amazing job of drawing its name (click the picture for a bigger view):
That engraving of the name "PiKnife" represents so much - the culmination of hours and hours of work. It means so a lot to me to finally have a beautiful piece of proof that this actually does stuff. I was truly amazed when I saw such fine, curving lines meeting up perfectly. I look forward to a lot of future use of this machine.
My next goals will be to add in the limit switches and look into the timing issues. However, neither of these affected the engraving above, so I am currently a very happy engineer.