Posts Tagged CNC

Kenmore 158: Needle Position Sensing

Fancy new sewing machines can stop with the needle either up (so you can remove the fabric) or down (to nail it in place while you rotate it). This requires sensing the needle position, which prompted me to spend far too long contemplating all the mechanical gadgetry driven by the motor.

As nearly as I can tell, the crank counterweight behind the handwheel produces the most unambiguous position reports. Here’s what it looks like with the needle down:

Kenmore 158 - main shaft counterweight

Kenmore 158 – main shaft counterweight

As you’d expect, with the shaft rotated exactly 180° from that point, the needle is up.

The inviting space just above the shaft provides room for the bobbin winder that engages a knurled ring on the back of the handwheel, but the lower space seems to be available. The counterweight sits about halfway into the back of the handwheel, so the sensors must look at the frame side of the counterweight.

Two adjacent sensors could detect the edge of the counterweight, which would be enough to uniquely identify both positions. If they were spaced across the lower-left edge in that picture:

  • 01 = trailing edge = bottom dead center = needle down (as shown)
  • 00 = open air = needle rising
  • 10 = leading edge = top dead center = needle up
  • 11 = solid steel = needle falling

Either sensor gives you one pulse per handwheel revolution and the combination gives you a quadrature output of both position and direction. The top speed of 1000 RPM produces 17 Hz square waves.

An additional pulse/rev sensor on the motor shaft would give better control over the motor speed, as the handwheel runs at 1/10 the motor speed with belt slip built right in. Figure 10 kRPM → 170 Hz pulses.

From a cold start, you know the shaft angle to within a bit under 180°. If the motor can turn in both directions (as would a stepper or DC motor), you can always move the needle upward. If it turns only forward (as does the AC motor) and the needle is falling, then you probably don’t want to move the motor until you get a button push indicating that all fingers are clear.

A pair of Hall effect sensors might suffice to detect that big hunk of steel, perhaps with a pair of teeny magnets glued to the face or a magnetic circuit closed by the counterweight.

More pondering is in order.

About these ads



Fit Test Blocks for 3D Printers: OpenSCAD Version

During one of my recent presentations, somebody asked about the accuracy of 3D printed parts, which reminded me of another member of Coasterman’s Essential Calibration Set: the perimeter width/thickness test block. Back in the day, calibrating the extruder meant getting the actual ratio of the thread width to its thickness to match the ideal value you told Skeinforge to use; being a bit off meant that the final dimensions weren’t quite right.

But when I got it right, the Thing-O-Matic printed a test block with considerable success, despite the horrible retraction zittage:

Perimeter Calibration Block - yellow 1.10 rpm 0.33 0.66 mm

Perimeter Calibration Block – yellow 1.10 rpm 0.33 0.66 mm

Alas, feeding the STL to Slic3r showed that it was grossly non-manifold, and none of the automated repair programs produced good results. Turns out it’s an STL created from a Sketchup model, no surprise there, and the newer slicers seem less tolerant of crappy models.

Sooo, here’s a new version built with OpenSCAD:

Fit Test Blocks - build view

Fit Test Blocks – build view

You get three blocks-and-plugs at once, arranged in all the useful orientations, so you can test all the fits at the same time. They come off the platform about like you’d expect:

Fit test blocks

Fit test blocks

I tweaked the code to make the plugs longer than you see there; the short ones were mighty tough to pry out of those slots.

I ran the plugs across a fine file to clean the sides, without removing any base material, and the plugs fit into the slots with a firm push. I’d do exactly the same thing for a CNC milled part from the Sherline, plus breaking the edges & corners.

The plugs doesn’t fit exactly flush in the recesses for the two models on the right side of that first image, because the edges and corners aren’t beveled to match each other. It’s pretty close and, if it had to fit exactly, you could make it work with a few more licks of the file. The left one, printed with the slot on the top surface, fits exactly as flush as the one from the Thing-O-Matic.

Of course, there’s a cheat: the model allows 0.1 mm of internal clearance on all sides of the plug:

Fit Test Block - show view

Fit Test Block – show view

The outside dimensions of all the blocks and plugs are dead on, within ±0.1 mm of nominal. You’d want to knock off the slight flange at the base and bevel the corners a bit, but unless it must fit inside something else, each object comes off the platform ready to use.

Feel free to dial that clearance up or down to suit your printer’s tolerances.

The OpenSCAD source code:

// Fit test block based on Coasterman's perimeter-wt.stl
// Ed Nisley - KE4ZNU - May 2014

Layout = "Show";

//- Extrusion parameters must match reality!
//  Print with 2 shells and 3 solid layers

ThreadThick = 0.20;
ThreadWidth = 0.40;

Protrusion = 0.1;			// make holes end cleanly

function IntegerMultiple(Size,Unit) = Unit * ceil(Size / Unit);

// Dimensions

Clearance = 0.1;

PlugSize = [10.0,10.0,25.0];
BlockSize = [25.0,13.0,20.0];

PlugOffset = 10.0;

// Useful routines

module ShowPegGrid(Space = 10.0,Size = 1.0) {

  RangeX = floor(100 / Space);
  RangeY = floor(125 / Space);

	for (x=[-RangeX:RangeX])
	  for (y=[-RangeY:RangeY])


module Block() {
	difference() {
		translate([0,PlugSize[1] - PlugSize[1]/2 - BlockSize[1]/2,-PlugOffset])

module Plug(Clear = 0.0) {
	minkowski() {
		if (Clear > 0.0)

// Build it


if (Layout == "Block")

if (Layout == "Plug")

if (Layout == "Show") {
	translate([0,PlugSize[1] - PlugSize[1]/2 - BlockSize[1]/2,-PlugOffset])

if (Layout == "Build") {

	translate([-30,0,0]) {

	translate([30,0,0]) {


, ,

Leave a comment

Makergear M2: Platform Leveling with Cart Coins

It turns out that an array of Cart Coins and Cart Releasers make a fine thickness test pattern and become useful tchotchkes when you’re done:

Cart Coins - printing

Cart Coins – printing

They’re a bit easier to see in the digital realm:

Cart Coins - platform layout - layer 1

Cart Coins – platform layout – layer 1

The trick is that they’re both eight layers thick at 0.20 mm/layer. With the platform aligned exactly right, all the objects should measure exactly 1.60 mm thick.

The blue numbers give the thickness measured across the stem, just above the hole, on each object:

Platform Leveling - Initial

Platform Leveling – Initial

The green numbers are the skirt thickness: 22 = 0.22 mm.

The platform has a tilt of 0.20 mm from +Y to -Y and is just about perfect from -X to +X.

The M3x0.5 adjusting screws under the (improved) platform, seen from the front (-Y) end of the platform:

M2 - Improved HBP - bottom view

M2 – Improved HBP – bottom view

The silicone plugs inside the springs are slightly compressed, so the springs are only decorative. The platform is rigidly mounted on the plugs, with only very slight compliance, and I haven’t leveled the platform in a few months.

Tightening the “north” adjusting screw by 1/6 turn lowered the +Y end of the plate by about 0.05 mm and tilted the +X side slightly higher:

Platform Leveling - Adjustment 1

Platform Leveling – Adjustment 1

The skirt thicknesses are now in blue, too.

Tightening the “north” screw an additional 1/6 turn and tightening the “east” screw 1/6 turn produced an almost perfect result:

Platform Leveling - Adjustment 2

Platform Leveling – Adjustment 2

The thicknesses don’t vary quite randomly, but I think further adjustments won’t make much difference: the total range is only 0.12 mm = 1.53 to 1.65 mm. That’s pretty close to the limit of my measurement ability on the plastic pieces.

Notice that the skirt thread, which should be exactly 0.2 mm thick all around, really isn’t. I’m going to see whether a two-layer-thick skirt measures a more consistent 0.40 mm.

, ,

Leave a comment

3D Printed Things I’ve Designed: Brag Sheets

The whole reason I got a 3D printer in the first place was to make things that would otherwise be too difficult or tedious by hand or on a CNC mill. Most of the things I make look like brackets and I don’t do sculptures … this stuff solves problems!

Being able to go from “I need a part shaped like that” to holding the thing in my hand a few hours (or, for complex designs, days) later is empowering. Being able to adjust a dimension by changing the source code and “recompiling” to get a new part is wonderful.

These five slides from the presentation show my answers to the question “Why would anyone want a 3D printer?” Clicky for more dots.

Things I Designed - 1

Things I Designed – 1

Things I Designed - 2

Things I Designed – 2

Things I Designed - 3

Things I Designed – 3

Things I Designed - 4

Things I Designed – 4

Things I Designed - 5

Things I Designed – 5

You can find those and more by searching for OpenSCAD source code.

They go along with the sheets of solid models.

, ,


Personal 3D Printing: 2014 Status Report

Herewith, the MHVLUG – 3D Printing Status 2104 slides (remember slides?) I’ll be using for my talk this evening at the MHVLUG meeting; you don’t get the audio track in the PDF, but the pictures may be informative.

If you believe everything you read, you might think personal 3D printing will go like this:

3D Printing 2014 - What They Say

3D Printing 2014 – What They Say

But it requires entirely too much of this:

3D Printing 2014 - What They Dont Say

3D Printing 2014 – What They Dont Say

Personal 3D printing requires that you take full control:

3D Printing 2014 - Personal 3D Printing

3D Printing 2014 – Personal 3D Printing

Not knowing the answers, I’ll still make some guesses about what lies ahead:

3D Printing 2014 - The Future

3D Printing 2014 – The Future

And I found the best tchotchkes ever:

3D Printing 2014 - Tchotchkes

3D Printing 2014 – Tchotchkes

See you there…

(The PDF has clickable links for those images, plus the 60-some-odd other slides. The plan: talk like an auctioneer for an hour!)



, ,


Chocolate Molds: Closeups

An overall view of the mold:

Tux Gradient 4x4 - mold separated

Tux Gradient 4×4 – mold separated

The PLA positive, after removing the silicone negative, showing the silicone below the surface:

Tux Gradient - PLA positive detail

Tux Gradient – PLA positive detail

The corresponding silicone negative cavity, flipped top-to-bottom:

Tux Gradient - silicone negative detail

Tux Gradient – silicone negative detail

The milk chocolate result, although probably not from the same cavity:

Tux Gradient - milk chocolate detail

Tux Gradient – milk chocolate detail

The radial gradient on the tummy comes through clearly and, I think, pleasingly, even though it’s only a few layers tall. The threads defining the flipper just above (to the left, in these images) of the foot show where the flipper crosses the tummy and foot level. I didn’t expect the foot webbing grooves to get that ladder-like texture, but I suppose having non-slip foot treads would be an advantage.

If you don’t mind the hand-knitted texture, which I don’t, this process seems perfectly workable.


Leave a comment

Chocolate Molds: Acrylic Base

Although directly printing the 2×2 molds worked reasonably well, that does not scale to larger arrays, because OpenSCAD doesn’t handle the profusion of vertices with any grace. Duplicating the STL file created from the height map image, however, isn’t a problem:

Tux-Gradient - Slic3r layout

Tux-Gradient – Slic3r layout

I actually did it in two passes: 4 molds to be sure they’d come out right, then another dozen. Figure a bit under two hours for the lot of them, no matter how you, ah, slice it.

A grid drawn directly on 1/16 inch = 1.5 mm acrylic sheet guided the layout:

Tux Gradient 4x4 - mold as-cast

Tux Gradient 4×4 – mold as-cast

I anointed the back of each mold positive with PVC pipe cement, the version with tetrahydrofuran to attack the PLA and acetone/MEK to attack the acrylic, lined it up, and pressed it in place. The positives have recesses for alignment pins, but even I think that’s overkill in this application.

Memo to Self: Flip the acrylic over before gluing, so the guide lines wipe neatly off the bottom.

Tape a cardboard frame around the acrylic, mix & pour the silicone, put it on the floor to ensure it’s level (unlike our kitchen table), wait overnight for the cure, then peel positive and negative apart:

Tux Gradient 4x4 - mold separated

Tux Gradient 4×4 – mold separated

As before, the top surface of the positives isn’t watertight, so the silicone flowed through into the molds. This isn’t a simple extruder calibration issue, because the thinwall boxes are spot on, all the exterior dimensions are accurate, and everything else seems OK. What’s not OK is that threads on the top and (now that I look at it) bottom surfaces aren’t properly joining.

A closeup of the positive shows silicone between the threads and under the surface:

Tux Gradient 4x4 - postive detail

Tux Gradient 4×4 – postive detail

But the negative silicone looks just fine, in the usual hand-knitted way of all 3D printed parts:

Tux Gradient 4x4 - negative detail

Tux Gradient 4×4 – negative detail

Definitely fewer bubbles than before, although the flange between the flippers (wings? whatever) and the body isn’t as clean as it could be. Doing better may require pulling a vacuum on the silicone, which would mean the positives really must be air-tight solids.

Anyhow, the acrylic base produced a wonderfully flat surface that should make it a lot easier to run a scraper across the chocolate to remove the excess. Not that excess chocolate is ever a problem, but it’s the principle of the thing.

, ,