When we left off, Wilhelm had successfully completed a print for the first time in months!
While the design clearly came through in the print, I could see some defects that I didn’t want to keep happening. In particular, the Y axis was still vibrating quite a lot, leading to a wavy edges along the Y axis. This is most noticeable on the right side of the skull nose hole.
Secondly, manually leveling the bed in realtime for each print was taking up way too much of my time. I want the life of luxury where I can hit “print” and know that Wilhelm won’t fail me. I need Automatic Bed Leveling, which wasn’t a feature that I had before. I modeled up a mount and attached my BLTouch sensor, which is supposed to be top of the line.
Thirdly, a lot of my settings needed to be tweaked now that I had rebuilt Wilhelm. That meant it’s time to upgrade Wilhelm’s firmware.
Wilhelm is built using a RepRap Arduino Mega Polulu Shield (RAMPS for short) as the brain. I was previously running Marlin firmware 1.1.9, the last stable release of Marlin for 8-bit microcontrollers. After a bit of research I found out that the newest version of Marlin for 32-bit boards, 2.0.x Alpha, is compatible with my RAMPS microcontroller, so I got to work customizing the firmware.
I compared and copied all of the configuration settings and pin definitions from my custom Marlin 1.1.9 build to the Marlin 2.0.x Alpha build. I had to change several offset numbers because I had reconfigured Wilhelm’s frame, but otherwise wasn’t hugely different. The biggest change was to the stepper motor driver definitions, which had been moved from the advanced configuration file to the regular configuration file. I took the opportunity to tune some speeds and feeds so that Wilhelm would home and probe faster, too.
Satisfied that I had the settings correct, I flashed the new firmware onto Wilhelm. But I had missed something, because the X and Y motors wouldn’t work, and Wilhelm’s screen was telling me “TMC CONNECTION ERROR.” It took me a couple of days to realize that Marlin 2.0.x Alpha is really, really picky about the pins that the stepper motor drivers use. Once I realized that I needed to use the default pins for the stepper motor UART function, I was a firmware flash and a couple of pins away from…
Failure. Still. “Why, oh why, did I try to update my firmware?”
I knew that this issue was tied to the automatic bed levelling problem, so I decided to focus on that next.
Tune in Tuesdays for more Rebuilding Wilhelm!