After restoring the PrintrBot’s z probe and getting it operational, I had to tackle the issue of still having relatively poor print quality. Several issues presented almost simultaneously. First of all, various prints had pretty severe layer shifts along the x-axis. More perplexing was the observation that print quality suffered when run through the Octoprint system rather than directly from a laptop.
After some digging around and more test prints, it became clear that the problem of shifting layers was due to a mechanical failure: the set screw in the gear driving the x-axis timing belt had come lose. This problem was remedied by completely dismantling the entire printer – sides, bed plate, top, and all – and then tightening the set screw.
The second issue of varying print qualities seemingly depending on the host software was a bit more curious. Despite the printer being fed the exact same g-code, the prints faired better when being run from my laptop via programs such as Pronterface, Repetier-Host, and Cura rather than from the Octopi operating system on the raspberry pi. More digging on the matter brought up the issue that Octoprint really was sending commands at a slightly slower rate from the raspberry pi than a different host software from a laptop or desktop. This slower communication rate, paired with a tiny instruction buffer, was causing starvation issues. Essentially, the printer would occasionally execute all of the instructions in its small USB input buffer faster than Octoprint could fill it leading to short pauses between movements – these in turn would result in physical artifacts and gaps in the print layers. Changing the firmware’s default ASCII input buffer from 4 bytes to 32 largely solved the issue and resulted in much cleaner prints.
Finally, I used the repetier-host software to better calibrate the printer’s starting height by running short test prints and then adjusting the z offset height accordingly.
After all of these changes were said and done – tightening set screws and belts, changing the input buffer size, and calibrating the z probe offset – the printer was finally producing high quality prints consistently.