The Smell of Molten Projects in the Morning

Ed Nisley's Blog: Shop notes, electronics, firmware, machinery, 3D printing, laser cuttery, and curiosities. Contents: 100% human thinking, 0% AI slop.

Category: Machine Shop

Mechanical widgetry

  • Makergear M2: Z-axis Stepper Motor

    Several users have observed that the stepper motor driving the M2’s Z axis leadscrew gets very hot. I measured about 140 °F = 60 °C on the as-built motor, so I loosened the screws and raised the motor slightly:

    M2 Z axis motor - raised
    M2 Z axis motor – raised

    I eased some heatsink compound underneath by putting dabs on a slip of paper and painting it on the bottom of the motor case, lowered the Z stage to the bottom of its travel, and tightened the mounting screws:

    M2 Z axis motor - added thermal compound
    M2 Z axis motor – added thermal compound

    That reduced the temperature to about 120 °F = 50 °C, which still seemed excessive for a short-stack motor mounted on a fairly large chunk of stainless steel. The motor also sounded quite rough during homing and long manual moves, sooo … something was wrong. I bet you know where this is going, right?

    Let’s start with the firmware side and determine what current the motor should be seeing.

    The M2 uses a slightly modified version of the Marlin firmware running on a RAMBo 1.1b board. The basic RAMBo doc gives these equations relating the peak winding current Imax to the constant W that defines it in the firmware:

    Vref = 0.8 * Imax
    W = 255 * (Vref / 1.66)

    Mashing those together produces this:

    W = 255 * (0.8 * Imax) / 1.66

    The default Z axis stepper current constant W (called Z_CURRENT in the Marlin source) is 135. The board in my M2 has R30 = 3.3 kΩ, which sets the maximum possible current to 2 A. Working the equation backwards, a Z_CURRENT = 135 will produce a peak winding current of 1.1 A.

    However, a nearby comment in the source code suggests this is should be about 0.75 A. The original RAMBo board had a maximum possible current of 1.5 A, but running those numbers doesn’t agree. Another comment suggests 185 corresponds to about 1 A, which isn’t right, either. There’s nothing new about stale comments not corresponding to the actual hardware; I’ve done that myself.

    With 1.1 A in hand, let’s unplug the cable and measure the winding resistance.

    Not much to my surprise, the motor has 28 Ω windings. The M2 uses a 19 V supply for the steppers, so the maximum motor current works out to 19 V/28 Ω  = 680 mA, but it must be less than that to allow the microstepping controller to manage the current.

    It seems that Makergear is connecting a high-resistance stepper intended for a simple H-bridge drive to a high-performance microstepping controller. For some background on why that combination doesn’t work, see my analysis of the original MBI Thing-O-Matic steppers.

    I thought we all agreed we weren’t going to do that any more. Maybe nobody sells a low-resistance motor-with-integral-leadscrew?

    Anyhow.

    The only thing to do in the short term is to reduce the peak current to a rational value around 600 mA:

    74 = 255 * (0.8 * 0.6) / 166

    I set it to a nice, round 75 and reloaded the firmware, which immediately made the motor hum, rather than growl, on long moves. The case temperature didn’t drop by very much, because the poor motor still dissipates about 11 W, not much less than the original 13 W. There’s only so much heat you can pull out of the case and these little motors are actually rated for maybe 5 W, tops.

    The motor’s overall performance didn’t change, which is good, because it didn’t have much performance to begin with. The X and Y motors can accelerate at 9000 mm/s2, but the Z motor limit is 30 mm/s2; it doesn’t really accelerate, it sort of gains momentum in a stately manner.

    Next: let’s see if it really matters.

  • Makergear M2: Filament Drive

    The M2 filament drive works surprisingly well. The OD of the curved section around the drive gear could easily be another few millimeters larger, which would put the mounting screw holes completely within the plastic perimeter:

    M2 extruder - filament embossing
    M2 extruder – filament embossing

    I haven’t changed the position of the filament compression screw and the default setting produces a really aggressive grip on the filament; the picture shows the deep track from the drive gear in the natural-color PLA filament along the bottom of the opening. That may be entirely too much of a good thing, but I’ll leave well enough alone for now.

    Makergear had scraped out the recess that accepts the end of the motor gearbox housing, but it still didn’t quite fit the motor’s snout, so I continued the scraping job until the drive sat square on the end of the gearbox. It mounts to the gearbox with three screws: the gearbox has four threaded holes, but the fourth screw would pass through an inconvenient spot above the bearing / below the compression screw / beside the filament / inside the clamp arm.

    Perhaps rotating the motor slightly would reposition the mounting holes a bit better? Disadvantage: hard to make the extruder sit vertically with a crooked motor. Maybe integrate the extruder with the motor mount, so the vertical reference comes from the X stage linear slide platform and the mount forces the proper motor and extruder alignment?

    The filament compression screw is offset rearward from the filament, so the upper part of the clamp must apply serious torque through its plastic body to the bearing pressing the filament against the drive gear:

    M2 extruder - added filament guide
    M2 extruder – added filament guide

    I think a spring-loaded bearing would work better, with force applied through a pair of springs bracketing the bearing to reduce the single-point load and torque, with a hinge pin below the bearing. The Wade-ScribbleJ bearing clamp on the Thing-O-Matic has worked perfectly since I installed it, but there are now simpler designs out there that should be adaptable.

    The twist of paper embedded in a blob of hot-melt glue encourages the filament guide tube to stand up straight and not flop over during reversals. That should be somewhat longer and fit neatly around the guide; it should be part of the filament drive body. This end of the guide tube should not be anchored, so it can pop upward when the filament reverses; there’s no need to push the filament backwards through a fixed guide tube at full reversal speed.

    The drive came pre-assembled to and aligned with the hot end, here seen without the paper / glue guide after the first-pass assembly:

    M2 extruder wiring
    M2 extruder wiring

    I want to insert strain gauges between the mount and the extruder barrel in order to measure the force applied to the hot end during extrusion, but it’s not clear how to do that with this design. I think I must build a bench model that extrudes a plastic tangle into air before I understand the problems. Again, an integrated motor + extruder mount might work better.

    The PTFE (?) filament guide tube had both ends slightly crimped from the pliers that cut it off the reel, which isn’t unexpected. I reshaped / reamed the ends of the tube to pass the filament without undue friction. There’s still a bit too much friction, methinks, but it doesn’t pose a problem yet.

    The spool holder and filament guide don’t match the drawings at all; some discussions in the Google Group indicate this design works much better than the original, fiercely complex, design.

    The end of the filament guide tube over the spool also tends to flop over and bend the filament, so I blobbed enough hot melt glue around it on the guide bracket to both anchor it and enforce good alignment. The red cable tie holds the blob in place, as there’s no mechanical interlock on the bracket for the glue to grab:

    M2 spool filament guide anchor
    M2 spool filament guide anchor

    Another design for a much longer bracket positions the guide tube over the spool’s midline, which should reduce the snap when the filament slips over a bunching on one side or the other. I think I’ll gimmick up something with an integral alignment doodad for the filament tube.

    The guide tube reorients the filament to be tangential to the spool, with the bracket providing the reaction force required to hold the guide tube in place while the filament transmits force from the extruder motor that unrolls the filament. Given that we know exactly how much filament travels into the extruder, we could add a motor drive to unroll exactly that amount from the spool and maintain the length of the filament loop without a guide tube. At higher feed rates, that would allow the extruder drive to feed filament into the hot end without any drag, thus eliminating any effects not related to the actual extrusion process. I like that sound…

  • Makergear M2: Extruder Motor Mount

    The general idea is that the extruder motor mount will clamp the exceedingly smooth and totally featureless circumference of the motor gearbox:

    M2 extruder - motor and mount
    M2 extruder – motor and mount

    The as-built interior of the circumferential clamp has enough ripples and ridges and imperfections that it can’t get a solid grip on the metal gearbox:

    M2 extruder - motor mount clamp - plastic ripples
    M2 extruder – motor mount clamp – plastic ripples

    That allows the motor to rotate slightly in the mount, with what seemed like very little torque, and misalign the extruder nozzle with respect to the platform. There’s about 80 mm between the motor shaft and the nozzle, so a mere 4° tilt raises the nozzle an additional 0.1 mm, entirely enough to throw off the Z axis height setting.

    I smoothed the worst of the bumps with a file and applied a generous dose of rosin for a better grip. Two Nylock nuts sunk into the motor mount anchor a pair of M4 screws that compress the circumferential clamp around the motor, but there’s not enough plastic around them for proper support and the mount promptly cracked in exactly the places you’d expect. I reamed out the holes to pass overly long 10-32 pan-head screws, scraped out the nut traps to accept 10-32 nuts, then added two small nuts and a large jam nut to each one:

    M2 - Extruder motor clamp - 10-32 screws
    M2 – Extruder motor clamp – 10-32 screws

    That’s a temporary expedient until I rebuild the entire mount, as the plastic remains split and the clamp isn’t applying uniform pressure to the gearbox.

    The extruder motor mount on my M2 doesn’t match the drawings: it seems Makergear changed from a one-piece extruder motor mount (which required slipping the extruder cable loom and connectors through a tunnel above the motor) to a two-piece design (which clamps the cable between two U-shaped strips). Unfortunately, there’s simply not enough plastic to provide sufficient strength in several vital sections; the nuts just described being one.

    More conspicuously, the lower U-shaped cable clamp strip cracked just behind the motor clamp body, because the plastic filaments run across the mount, perpendicular to the direction of maximum stress and have very little cross-sectional area. I applied extra cable ties on both sides of the fracture, so that the top strip serves as splint for the lower:

    M2 - cracked extruder cable guide
    M2 – cracked extruder cable guide

    That photo shows the M4 Nylock nuts splitting the mount prior to the 10-32 screw fix.

    The wire loom evidently corresponds to the previous mount design, as there’s not enough slack in the thermistor and heater cables to mate the connectors. I trimmed off some loom and rerouted the wires appropriately:

    M2 extruder wiring
    M2 extruder wiring

    With all that in hand, a tiny machinist’s square aligned the motor with the X axis slide and set the extruder perpendicular to the platform:

    M2 extruder - vertical alignment
    M2 extruder – vertical alignment

    I’m unhappy with how that worked out, but it’s good enough for now. I think rebuilding the mount in aluminum will work better for what I have in mind; this seems to be one of the places where 3D printed plastic isn’t quite appropriate.

  • Makergear M2: Heated Build Platform Cable

    The power + thermistor cable for the M2 Heated Build Platform attaches to the Z axis stage at the Y axis motor, with the conductors encased in a fairly stiff braided loom. The cable flexes from fully retracted to fully extended as the HBP moves along the Y axis. Here’s a view at about mid-travel:

    M2 HBP cables - wire loom
    M2 HBP cables – wire loom

    Unfortunately, there’s no provision for strain relief at the HBP or around the connectors. The silicone heating pad firmly anchors the two pairs of power wires to the aluminum plate, but that simply means they flex sharply at the edge of the pad:

    M2 HBP connections
    M2 HBP connections

    I removed the loom between the motor mount and the connectors, but that still doesn’t provide nearly enough flexibility:

    M2 HBP cables - loom removed
    M2 HBP cables – loom removed

    The wires still flex sharply at the outboard side of the connector and at the HBP pad; this can’t possibly survive more than a few thousand long cycles before something expensive breaks. The Thing-O-Matic HBP connector debacle suggests that I may need to attach a strut to the Y axis stage that rigidly supports the connectors, with a much longer loop of wire soaking up the strain to the fixed end.

    The 18 AWG wires carrying the 10+ A of HBP current get unpleasantly warm, suggesting that new loop will require heavier wire. In round numbers from that table, 18 AWG stranded wire runs 6.5 mΩ/ft, so the (roughly) four feet of wire pair between the electronics case and the HBP will drop 250+ mV and dissipate 2.5 W. I suspect it’s worse than that, but haven’t made any measurements to back up that suspicion.

  • Makergear M2: Z Axis Bumpers and Upper Bearing Bushing

    The M2’s Z axis will descend under its own weight with the stepper motor disabled, landing with an emphatic thud when the Nylock nuts holding the leadscrew nut in place hit the top of the motor case. I stuck a pair of rubber feet atop the motor to cushion the impact:

    M2 Z axis motor - added thermal compound
    M2 Z axis motor – added thermal compound

    Yes, that’s thermal compound peeking out from between the motor and the chassis. More about that later, but it derives from those measurements.

    The top end of the leadscrew passes through a ball bearing, but the bearing OD is about 15 mils smaller than the top plate recess ID. I slid a strip of 6 mil brass shimstock around the bearing to soak up the difference and reduce a nasty mechanical resonance:

    M2 Z axis bearing - shimstock bushing
    M2 Z axis bearing – shimstock bushing

    The leadscrew is also a loose fit in the bearing ID, which I’ll correct with a dab of low-strength threadlock when the time comes.

    Note, however, that there’s no other mechanical compliance in the Z axis assembly, so a slightly misaligned leadscrew may actually need that slop when the stage approaches the top of its travel. That wasn’t the case in my printer, but don’t take it for granted; if the leadscrew doesn’t turn easily by hand, remove the shimstock.

  • Makergear M2: Out of Box Experience

    It didn’t take long to realize that Makergear doesn’t actually have any assembly instructions that convert an array of parts bags into a working M2 printer. The box contained a set of subassembly drawings, their internal BOM checklist, and an orange sheet with cautionary notes. So I figured I’d build enough subassemblies to reduce the clutter, then put them together into the chassis while working on Phil’s card table.

    Unfortunately, the BOM on each drawing may not match the drawing, the drawings don’t quite match what’s currently shipped, neither of those match the instructions on the website, the assembly videos / animations aren’t particularly useful (at least to me; I don’t need animated trajectories for nuts and bolts after the first one), not all hardware has a corresponding drawing, and nowhere will you find enough information to actually put the thing together on the first try. Makergear is obviously running as fast as they can, making improvements as they go, and, while the task isn’t impossible, if you’re not pretty good at mechanical assembly, building an M2 from scratch won’t be a pleasant experience.

    A thread on the Makergear Google Group suggests there’s an unofficial “Heathkit style” manual in the offing, which will be a major improvement over the status quo. The catch will be updating the instructions in pace with production improvements, while not losing previous owners along the way. The Google Group has pointers to some good build logs; I regret I can’t contribute anything of the same scale.

    Some assembly notes that don’t fit anywhere else…

    The chassis arrived with the Y axis slide, Z axis stage, and Z axis stepper motor preassembled and aligned in the chassis. Given that’s the part of the process requiring, by their own admission and video example, some finesse, I think they found it impossible for newbies lacking experience.

    CAUTION! If you must assemble the Z axis or modify it, you must remove all four screws from the stepper motor’s case to get it in or out of the chassis. Do not let the motor endcaps fall off or become misaligned, because that will demagnetize the rotor and drastically reduce the available torque. Perhaps wrapping some tape around the sides of the motor to secure the endcaps will prevent disaster. As I’ll describe later, the Z axis motor has barely enough torque for its job and any loss will render it useless.

    Use the shortest possible screws in the two huge rubber feet on the X+ side of the chassis, because the electronics case must fit flush to the chassis just above them. The recommended screws protrude too far through the chassis plate, which is perfectly fine on the X- side.

    Secure the electronics case to the chassis side using M3 screws, instead of the M4 screws that fit the threaded holes, with three M3 washers between the case and the chassis. Put Nylock nuts on the outside of the chassis. You’ll understand why when you get there.

    Tape the picture of the power supply plugs behind the electronics case where you won’t mislay it, because inadvertently swapping the power connectors will not go well.

    Believe it or not, that giant lump of wire on the end of the harness actually fits inside the electronics case. Take it slow and it’ll be all good.

    M2 Electronics Case on chassis
    M2 Electronics Case on chassis

    Cut a cardboard cover (I harvested a shoe box) to fit the build platform and clip it in place whenever you’re not actually building something. You will drop tools on that lovely glass platform…

    Makergear M2 3D Printer with cardboard protecting glass platform
    Makergear M2 3D Printer with cardboard protecting glass platform
  • Makergear M2 vs. LinuxCNC: Project Overview

    M2 - cushwa Owl - half scale
    M2 – cushwa Owl – half scale

    During the course of my Makerbot Thing-O-Matic experience, I concluded:

    • Enthusiasm may get a product out, but engineering makes it work
    • Plywood and plastic do not produce a stable 3D printer
    • Measurements matter
    • 8-bit microcontrollers belong in the dustbin of history

    With that in mind, I’ve long thought that LinuxCNC (formerly EMC2) would provide a much better basis for the control software required for a 3D printer than the current crop of Arduino-based microcontrollers. LinuxCNC provides:

    • Hard real time motion control with proven performance
    • A robust, well-defined hardware interface layer
    • Ladder-logic machine control
    • Isolated userspace programming
    • Access to a complete Linux distro’s wealth of programs / utilities
    • Access to an x86 PC’s wealth of hardware gadgetry

    Rather than (try to) force-fit new functions in an Arduino microcontroller, I decided it would be interesting to retrofit a DIY 3D printer with a LinuxCNC controller, improve the basic hardware control and sensing, instrument the extruder, then take measurements that might shed some light on DIY 3D printing’s current shortcomings.

    The overall plan looks like this:

    • Start with a Makergear M2
    • See what the stock hardware can do
    • Replace the RAMBo controller with LinuxCNC
    • See what the hardware can do with better drivers
    • Adapt the G-Code / M-Code processing to use more-or-less stock Marlin G-Code
    • Add useful controllers along the lines of the Joggy Thing
    • Improve the platform height / level sensing
    • Rebuild the extruder with temperature and force sensors
    • Start taking measurements!

    My reasons for choosing the Makergear M2 as the basis for this project should be obvious:

    • All metal: no plywood, no acrylic (albeit a plastic filament drive)
    • Decent stepper motors (with one notable exception)
    • Reasonable hot end design
    • Good reputation

    The first step of the overall plan included a meticulously documented M2 build that I figured would take a month or two, what with the usual snafus and gotchas that accompany building any complex mechanism. Quite by coincidence, a huge box arrived on my birthday (the Thing-O-Matic arrived on Christmas Eve, so perhaps this is a tradition), the day when I learned that Mad Phil had entered his final weeks of life.

    As the Yiddish proverb puts it: If you wish to hear G*d laugh, tell him of your plans.

    So I converted a box of parts into a functional M2 3D printer over the course of four intense days, alternating between our living room floor and a card table in Phil’s home office, showing him how things worked, getting his advice & suggestions, and swapping “Do you remember when?” stories. Another few days sufficed for software installation, configuration, and basic tuneup; I managed to show him some shiny plastic doodads just before he departed consensus reality; as nearly as I can tell, we both benefited from the distractions.

    Which means I don’t have many pictures or much documentation of the in-process tweakage that produced a functional printer. The next week or so of posts should cover the key points in enough detail to be useful.

    Not to spoil the plot or anything: a stock M2 works wonderfully well.

    Owl - half size - left
    Owl – half size – left

    For example, a half-scale cushwa owl printed in PLA at 165 °C with no bed cooling and these Slic3r parameters:

    • 500 mm/s move
    • 300 mm/s infill
    • 200 mm/s solid infill
    • 100 mm/s internal perimeter
    • 50 mm/s bottom layer
    • 30 mm/s external perimeter
    • 1 mm retract @ 300 mm/s

    The beak came out slightly droopy and each downward-pointing feather dangles a glittery drop. There’s room for improvement, but that’s pretty good a week after opening a box o’ parts…