3D Printer: Software and Calibration

As noted, the printer uses RAMPS electronics. There are a number of compatible firmwares to drive it; I chose Marlin. It’s at this point that the Mendel90 Build Manual starts getting a lot more perfunctory and vague, and I’ve been having to feel my way quite a lot more. I had a couple of days false start when I assumed that the electronics would already be loaded with firmware; it turns out they were, but only a simple testing program, which gave enough response to confuse me but not enough to make any sense! Once I’d asked the vendor and they’d clued me in, I was doing much better.

It turns out nop head (the creator of the Mendel90) has his own fork of Marlin, so using that was a start. Fortunately, I’d already stumbled across this GitHub bug warning me I’d need to use a standard baud rate rather than the default non-standard but ultra-fast one. So I tweaked a few parameters and managed to get it to load. (Side note: the Arduino IDE is, frankly, some of the worst software I have come across in many years. If any devs are reading, email me and I’ll provide more constructive feedback.) However, a few things didn’t seem to work right so I ended up porting his changes to the latest Marlin.

It’s at this testing stage that I discovered a few problems. The first was that I had taped my thermistor to my heated bed with aluminium heatproof tape. Unfortunately, the thermistor wires are uninsulated and the shiny side of this tape is conductive. This was causing intermittent shorts. I had to remove the tape, remove the heatshrink around the joints and unsolder the thermistor, and then fully insulate the thermistor wires with heatshrink before taping it back to the bed.

The second was that X and Y were homing fine, but Z wouldn’t. In the end, this was a tangle involving some missing Nophead changes, and a mistake by me in disabling the max endstops I thought I wasn’t using. I had to stick a load of echo statements in to work out what was wrong here. (Why is it that debugging with echo is always a bit easier than working out how to use whatever debugger your platform has?)

Next, the machine was not moving 10mm when told to move 10mm. This required setting the correct magic values for STEPS_PER_MM, which depends on various things like the size of your pulleys and the pitch of your leadscrews. Fortunately, I got 30 seconds of time from nop head at the Mendel90 Build Event this weekend, and he told me them out of his head :-)

Then, I had to level the bed. I managed to half-rip the screw hole out of the corner of my heated bed by adjusting the hex pillar it was standing on without loosening its bolt. :-| However, it still just about works. Unfortunately, I can’t level it in the normal way because the base into which the pillars go wasn’t tapped with a screw thread. Fortunately, an M3 washer happened to be just the right height for the needed adjustment, and so I inserted one of those into one corner and my bed was level. (Bed micro-levelling sounds to me like the sort of thing which should be fixed in software…)

Then, I had to correctly set the “0” for the Z axis. This is a number in the firmware, and it took a few tweaks to get right. For a while I had the Z height slightly too high. This meant that the first layer was being printed too close to the glass. This, in turn, meant that there was too much back pressure in the extruder, and the hobbed bolt was tearing into the filament and stopping the drive. So I got a too-thin first layer, and nothing for the further layers!

Once all of that was sorted out, I managed to get multiple layers, but they were all randomly offset from each other in the X direction! Messy. A FAQ on reprap.org saved me here; the max acceleration values for the X and Y axes were set too high. Halving those fixed that.

So here it is, finished and ready to go…

Comments are closed.