As I mentioned in my previous post, one early print on the machine was ruined when I touched the Z-motor while it was running, giving the machine a static zap that locked up the Z motor control board. No permanent damage was done to the machine, but the part being printed was ruined. The Makerbot ThingOMatic does not incorporate any static protection in its design. It is made from a mix of wood, plastic, and metal, with several large metal pieces (including the motor housings) that are ungrounded and electrically floating. As I found out, it can be easily crashed by static electricity. In theory, it may even be generating its own static, as there are a lot of places in the machine where conductive and non-conductive materials are rubbing against each other.
This page has a guide to installing static drain lines. The instructions are meant for the MK5 extruder, rather than the MK7 we are using, but what needs to be done is essentially the same.
There are five points that really need to be grounded on the printer. The three motors, the extruder, and the print bed. I started by preparing five lengths of wire with crimped ring terminals on the ends. Green with yellow stripe is traditional for grounding wires, and we had plenty of it on hand anyway. First was the Z axis motor, which I had already learned the hard way needed a static drain line.
The Y axis motor doesn't really need grounding as badly, since it's buried down in the base of the machine, but for completeness I connected it while connecting the others.
The X axis motor is tricky, since there's very little space where the wire can be attached and run without interfering with the X axis travel. I think I've managed to install it without reducing the X axis travel, but to be really sure I may go back and drill a hole to pass the wire through.
Grounding the print head is easy, as there are multiple unused holes on the mounting plate and no clearance issues with the wires. There is some controversy as to whether this part should be grounded. Some people have had their extruder temperature readings go off when they connected this wire, possibly as a result of shorts between the nozzle thermocouple and the frame. I was careful to make sure that the thermocouple was electrically well-insulated from the nozzle when I built the printer, and I haven't seen any problems with the temperature reading after installing this ground lead.
The last grounding wire connects to the heated build platform. We have installed the aluminum heat spreader, which makes connecting a ground wire easier as I don't have to figure out how to connect a wire to metal foil. I have rearranged these wires a few times since this photo, as part of the ongoing challenge of dealing with the HBP cable. I'll get into that more in the next post.
The five grounding wires are run down to the power supply in the base of the printer, connecting individually to mounting holes on the metal frame. These are static drain lines, not power grounds, so even though they are theoretically electrically connected to the ground lines in the power connectors they need to be run separate from the power ground lines and from each other back to the chassis ground.
With these in place, the sensitive control electronics should be protected from static zaps to the motors, extruder, or heated bed. I haven't had any prints fail due to static lockup since making this modification. I have found a persistent issue where the Z axis sometimes randomly reverses direction while homing after a print, but I suspect that's a software rather than hardware issue.
While I was making this modification, I also made the modification described here to all four stepper motor controllers. The power supply provides 12V and 5V on each connector. The stepped drivers only use the 12V, generating 5V locally through a linear regulator. I cut the regulator off each board, and then added a jumper to draw local 5V from the power connector instead. In theory this should make the stepper controllers more reliable. I haven't noticed any obvious difference, but it seemed like a good precaution to take.
Saturday, January 28, 2012
Friday, January 27, 2012
Makerbot Upgrades Part 1
The company I work for has, over the
last few years, ordered many parts from rapid prototyping shops. We
frequently have need for one-of-a-kid jugs and fixtures, custom trays
to hold parts for automated assembly, and prototypes for enclosures
and other mechanical parts. This year we purchased a Makerbot
ThingOMatic printer kit, as the cost of parts we've ordered in the
last year alone exceeded the cost of the ThingOMatic. Since we've
bought it, after the initial setup and tuning time, we've had it
running nearly non-stop, as we've been constantly finding new uses
for it. It's amazing how after you buy a 3D printer, you start to
realize how many uses it has beyond what you originally bought it
for. It's been a very worthwhile investment.
As useful as the Makerbot has been at
the office, it took a lot of tweaking and adjustment to get it to
work. As initially delivered, the ThingOMatic has a lot of
mechanical and electrical deficiencies that needed to be corrected
for it to print accurately and reliably.
Makerbot Upgrades Part 1
Axis tensioning
The Makerbot ThingOMatic uses two belts
for positioning the build platform. Both X and Y carriage movement
use a continuous belt stretched between the drive and idler pulleys,
with the movable platform clamped to the middle of the belt. You
adjust the belt by loosening the motor mount screws and shifting the
motor along oval mounting slots till the tension is right. This does
not work very well. It's tricky to get the tension right while
simultaneously pushing the motor sideways and tightening the screws
to clamp it down. The plastic base plate of the Y axis flexes enough
to make it hard to tell how much tension the belt will have when you
let it go. The belt tension is only held by the friction of the
mounting screws and motor face plate. Inevitably the motor slips out
of position. If you clamp the motor down enough to make sure it
never slips, the screw heads dig into the wood or plastic structure,
making permanent indentations that will make it hard to properly
adjust the tension in the future.
Slack in the belt shows immediately as
uneven lines, circles with flat sides, and gaps in the finished
printed parts. A way to properly set and hold the belt tension is
the most important improvement to make to the machine. There are a
lot of items on Thingiverse designed to fix this flaw, typically by
capturing the motor bolts and anchoring them to a nearby structural
element with a bolt that can be turned to precisely set the belt
tension. Thingiverse item 14098 was the one I chose to fix my
printer. First up was the X axis tensioner. This was the first
functional part I made on the machine, and it was pretty ugly.
Gaps in the print, irregular lines,
non-round holes that I couldn't fit screws through without lots of
trimming. It was still good enough to correct the X belt tension,
improving the print quality for the next belt tensioner. This one
was still crude, but better than the first one. This one went on the
Y axis.
Another cause of poor belt tension is
the lack of support for the X axis idler pulley. As supplied the
pulley is supported on a bolt screwed through the plastic base plate.
It's really not very rigid – the base plate can flex under the
belt tension Thingiverse item 12528 fixes this by securing the top
of the bolt to the printer frame. This also helps to prevent the
loose cable from the heated build platform from getting caught on the
protruding bolt.
With the X and Y belts holding proper
tension, the quality of the build is much improved: the machine can
print solid surfaces without gaps and can make reasonably round
circles.
The Z axis has its own tension
problems. The Z axis is driven by a screw rather than by a belt, s
there are no problems with belt tension. The problem with the Z axis
is that the print head is mounted quite far out from the screw, on a
not very rigid wooden platform. Tension on the plastic filament
being pulled into the print head lifts the entire print head, as the
filament drive motor has more than enough torque to bend the Z
platform upwards. If the filament feed snags and pulls irregularly,
the up and down movement of the print head leaves irregular-width
layers on the printed objects. In the worst case, a sudden upwards
bending of the print head – caused by a snag in the filament feed –
results in the layer being printed detaching from the object being
printed, ruining the part.
At first, I just looped the filament on
the desk next to the machine and periodically unwound more filament
from the loose coils. Later, I propped up a metal pole behind the
machine and placed the spool on that. This still required me to
check the filament every few minutes as the machine printed. As my
goal was to have this machine run mostly unattended in a back room
eventually, this wasn't acceptable. I needed the filament to feed
into the machine by itself.
Thing number 12974 was one solution for this.
This was the largest thing I'd printed
on the machine so far, taking several days for all the parts. It
didn't print perfectly, with one part failed due to layer detachment
after the filament snagged and I didn't catch it in time, and other
failed due to static electricity induced lockup of a stepper motor
driver.
The spool holder helped with the
filament feed issues. It still wasn't perfect – the
plastic-on-plastic rolling of the spool on the holder had enough
friction to pull the print head up, leaving uneven layers in the
printed objects. It was still good enough at this point for us to
start using the machine for production use at the office.
I later found some ball bearings in my
junk box, and printed inserts that allowed me to mount the filament
spool on some metal rod also from my junkbox. Now the spool rolls
with very little friction, and the filament unwinds freely. It spins
almost too easily at this point – the slightest tug from the
extrusion motor starts the spool turning for a while, resulting in
loose loops of filament around the spool. Not a big problem yet, but
I do worry about the loose filament getting caught in the Z axis
movement.
The next step would be to make a
tension sensor for the filament and attach a motor drive to the
filament spool, unwinding it so that the print head never feels any
significant upward pull while printing. I probably won't be
bothering with that – there are still a lot of other things I can
do to improve this machine.