Advertisements

Search Results for: "openscad source code"

Seam Ripper Cover

The cover for Mary’s favorite seam ripper cracked long ago, has been repaired several times, and now needs a replacement:

Seam Ripper cover - overview
Seam Ripper cover – overview

The first pass (at the top) matched the interior and exterior shapes, but was entirely too rigid. Unlike the Clover seam ripper, the handle has too much taper for a thick-walled piece of plastic.

The flexy thinwall cover on the ripper comes from a model of the interior shape:

Seam Ripper Cover - handle model
Seam Ripper Cover – handle model

It’s not conspicuously tapered, but OpenSCAD’s perspective view makes the taper hard to see. The wedge on top helps the slicer bridge the opening; it’s not perfect, just close enough to work.

A similar model of the outer surface is one thread width wider on all sides, so subtracting the handle model from the interior produces a single-thread shell with a wedge-shaped interior invisible in this Slic3r preview:

Seam Ripper Cover - exterior - Slic3r preview
Seam Ripper Cover – exterior – Slic3r preview

The brim around the bottom improves platform griptivity. The rounded top (because pretty) precludes building it upside-down, but if you could tolerate a square-ish top, that’s the way to go.

Both models consist of hulls around eight strategically placed spheres, with the wedge on the top of the handle due to the intersection of the hull and a suitable cube. This view shows the situation without the hull:

Seam Ripper Cover - handle model - cube intersection
Seam Ripper Cover – handle model – cube intersection

The spheres overlap, with the top set barely distinguishable, to produce the proper taper. I measured the handle and cover’s wall thicknesses, then guesstimated the cover’s interior dimensions from its outer size.

The handle’s spheres have a radius matching its curvature. The cover’s spheres have a radius exactly one thread width larger, so the difference produces the one-thread-wide shell.

Came out pretty nicely, if I do say so myself: the cover seats fully with an easy push-on fit and stays firmly in place. Best of all, should it get lost (despite the retina-burn orange PETG plastic), I can make another with nearly zero effort.

The Basement Laboratory remains winter-cool, so I taped a paper shield over the platform as insulation from the fan cooling the PETG:

Seam Ripper Cover - platform insulation
Seam Ripper Cover – platform insulation

The shield goes on after the nozzle finishes the first layer. The masking tape adhesive turned into loathesome goo and required acetone to get it off the platform; fortunately, the borosilicate glass didn’t mind.

The OpenSCAD source code as a GitHub Gist:

Advertisements

, , , ,

6 Comments

Desk Lamp Conversion: Photo Light Cold Shoe

Having recently acquired a pair of photo lights and desirous of eliminating some desktop clutter, I decided this ancient incandescent (!) magnifying desk lamp had outlived its usefulness:

Desk Lamp - original magnifiying head
Desk Lamp – original magnifiying head

The styrene plastic shell isn’t quite so yellowed in real life, but it’s close.

Stripping off the frippery reveals the tilt stem on the arm:

Desk Lamp - OEM mount arm
Desk Lamp – OEM mount arm

The photo lights have a tilt-pan mount intended for a camera’s cold (or hot) shoe, so I conjured an adapter from the vasty digital deep:

Photo Light Bracket for Desk Lamp Arm - solid model
Photo Light Bracket for Desk Lamp Arm – solid model

Printing with a brim improved platform griptivity:

Photo Light Bracket for Desk Lamp Arm - Slic3r preview
Photo Light Bracket for Desk Lamp Arm – Slic3r preview

Fortunately, the photo lights aren’t very heavy and shouldn’t apply too much stress to the layers across the joint between the stem and the cold shoe. Enlarging the stem perpendicular to the shoe probably didn’t make much difference, but it was easy enough.

Of course, you (well, I) always forget a detail in the first solid model, so I had to mill recesses around the screw hole to clear the centering bosses in the metal arm plates:

Photo Lamp - bracket recess milling
Photo Lamp – bracket recess milling

Which let it fit perfectly into the arm:

Desk Lamp - photo lamp mount installed
Desk Lamp – photo lamp mount installed

The grody threads on the upper surface around the end of the slot came from poor bridging across a hexagon, so the new version has a simple and tity flat end. The slot is mostly invisible with the tilt-pan adapter in place, anyway.

There being no need for a quick-disconnect fitting, a 1/4-20 button head screw locks the adapter in place:

Photo Lamp - screw detail
Photo Lamp – screw detail

I stripped the line cord from inside the arm struts and zip-tied the photo lamp’s wall wart cable to the outside:

Photo Lamp - installed
Photo Lamp – installed

And then It Just Works™:

Photo Lamp - test image
Photo Lamp – test image

The lens and its retaining clips now live in the Big Box o’ Optical parts, where it may come in handy some day.

The OpenSCAD source code as a GitHub Gist:

The original dimension doodles, made before I removed the stem and discovered the recesses around the screw hole:

Photo Light - Desk Lamp Arm Dimensions
Photo Light – Desk Lamp Arm Dimensions

,

1 Comment

Injured Arm Support Table: Wide Version

This table must sit across the threshold of a walk-in / sit-down shower, with the shower curtain draped across the table to keep the water inside.

Starting with another patio side table, as before, I installed a quartet of 5 mm stainless screws to lock the top panels in place and convert the table into a rigid assembly:

Arm Supports - wide table - overview
Arm Supports – wide table – overview

Because the shower floor is slightly higher than the bathroom floor, I conjured a set of foot pads to raise the outside legs:

Patio Side Table Feet - OpenSCAD model
Patio Side Table Feet – OpenSCAD model

The sloping top surface on the pads compensates for the angle on the end of the table legs:

Arm Supports - leg end angle
Arm Supports – leg end angle

I think the leg mold produces legs for several different tables, with the end angle being Close Enough™ for most purposes. Most likely, it’d wear flat in a matter of days on an actual patio.

Using good 3M outdoor-rated foam tape should eliminate the need for fiddly screw holes and more hardware:

Arm Supports - leg pads
Arm Supports – leg pads

The feet fit reasonably well:

Arm Supports - leg pad in place
Arm Supports – leg pad in place

They may need nonskid tape on those flat bottoms, but that’s in the nature of fine tuning.

And, as with the narrow table, it may need foam blocks to raise the top surface to arm level. Perhaps a pair of Yoga Blocks will come in handy for large adjustments.

The OpenSCAD source code as a GitHub Gist:

,

1 Comment

Tour Easy: SRAM Grip Bushing

After installing the X.0 shifter, I sprang for new grips:

Tour Easy - SRAM X.0 grip shifter - new grip with bushing
Tour Easy – SRAM X.0 grip shifter – new grip with bushing

They’re 90 mm long, which turned out to be 4 mm shorter than the grips that came with the bike; a close look showed the original ones were cut down from SRAM’s 110 mm grips.

Well, I can fix that:

Tour Easy - SRAM grip bushings
Tour Easy – SRAM grip bushings

Ordinarily, you’d just move the brake levers by 4 mm and declare victory. In this case, moving the right lever would be easy, but the left one is firmly glued in place by the radio’s PTT button:

PTT Button - rounded cap
PTT Button – rounded cap

Believe me, solid modeling is easy compared to redoing that!

The OpenSCAD source code doesn’t amount to much:

// SRAM grip shifter bushings
// Ed Nisley KE4ZNU March 2019

Protrusion = 0.1;           // make holes end cleanly

//----------------------
// Dimensions

ID = 0;
OD = 1;
LENGTH = 2;

Bushing = [22.2 + 0.5,31.0,4.0];        // ID = E-Z slip fit

NumSides = 2*3*4;

//----------------------
// Build it!

difference() {
  cylinder(d=Bushing[OD],h=Bushing[LENGTH],$fn=NumSides);
  translate([0,0,-Protrusion])
    cylinder(d=Bushing[ID],h=Bushing[LENGTH] + 2*Protrusion,$fn=NumSides);
}

I loves me my 3D printer …

,

1 Comment

Juki TL-2010Q Needle LEDs: Simple Cable Clip

A straightforward cable clip:

TL-2010Q Needled COB LED - cable clip
TL-2010Q Needled COB LED – cable clip

It looks better than the previous hack bent from a snippet of PET clamshell:

Juki TL-2010Q Needle LEDs - cable clip
Juki TL-2010Q Needle LEDs – cable clip

Ream out the holes with suitable drills, clean out the slot using Tiny Bandsaw™, and it’s all good.

In retrospect, the slot isn’t worth the effort, because it doesn’t open wide enough to admit the cable and doesn’t provide any clamping force; a simple block with two holes would do as well. If the heatsink didn’t already have a 3 mm screw in play, I’d use an adhesive-backed clip from the early Kenmore LEDs.

The OpenSCAD source code isn’t much to look at:

//-----
// Cable clip
// Reoriented into build position, because we only need one

ClipWall = 3*ThreadWidth;
Clip = [15.0,10.0,CableOD + 2*ClipWall];

module CableClip(CableOD = 2.0) {

ClipSides = 4*3;
ClipRadius = Clip.y/2;
ScrewOD = 3.0;
ClipOC = Clip.x - ClipRadius - CableOD/2 - ClipWall;

  translate([0,0,Clip.y/2])
    rotate([90,0,90])
      translate([0,0,0*Clip.z/2])
        difference() {
          union() {
            rotate(180/ClipSides)
              cylinder(d=Clip.y/cos(180/ClipSides),h=Clip.z,$fn=ClipSides,center=true);
            translate([ClipRadius,0,0])
              cube([Clip.x - ClipRadius,Clip.y,Clip.z],center=true);
          }
          translate([0,0,-(Clip.z/2 + Protrusion)])
            rotate(180/8)
              PolyCyl(ScrewOD,Clip.z + 2*Protrusion,8);
          rotate([90,0,0])
            translate([ClipOC,0,-Clip.y])
              rotate(180/8)
              PolyCyl(CableOD,2*Clip.y,8);
          translate([ClipOC - Clip.x/2,0,0])
            cube([Clip.x,2*Clip.y,2*ThreadWidth],center=true);
        }
}

,

Leave a comment

SJCAM M20 Camera: Tour Easy Seat Mount

The general idea is to replace this:

M20 in waterproof case - Tour Easy seat
M20 in waterproof case – Tour Easy seat

With this:

SJCAM M20 Mount - Tour Easy side view
SJCAM M20 Mount – Tour Easy side view

Thereby solving two problems:

  • Pitifully small battery capacity
  • Wobbly camera support

The battery is an Anker PowerCore 13000 Power Bank plugged into the M20’s USB port. Given that SJCAM’s 1 A·h batteries barely lasted for a typical hour of riding, the 13 A·h PowerCore will definitely outlast my legs. The four blue dots just ahead of the strap around the battery show it’s fully charged and the blue light glowing through the case around the M20 indicates it’s turned on.

The solid model has four parts:

SJCAM M20 Mount - Fit layout
SJCAM M20 Mount – Fit layout

Which, as always, incorporates improvements based on the actual hardware on the bike.

A strap-and-buckle belt harvested from a defunct water pack holds the battery into the cradle and the cradle onto the rack, with a fuzzy velcro strip stuck to the bottom to prevent sliding:

SJCAM M20 Mount - Tour Easy rear view
SJCAM M20 Mount – Tour Easy rear view

The shell around the camera is basically a box minus the camera:

SJCAM M20 Mount - Show - shell
SJCAM M20 Mount – Show – shell

The shell builds as three separate slabs, with the center section having cutouts ahead of the camera’s projections to let it slide into place:

SJCAM M20 Mount - Show - shell sections
SJCAM M20 Mount – Show – shell sections

The new shell version is 30.5 mm thick, so a 40 mm screw will stick out maybe 5 mm beyond the nylon locknut. I trust the screws will get lost in the visual noise of the bike.

A peg sticking out behind the USB jack anchors the cable in place:

SJCAM M20 Mount - Show - shell sections - USB side
SJCAM M20 Mount – Show – shell sections – USB side

The front slab and center top have curves matching the M20 case:

SJCAM M20 Mount - Show - shell sections - button side
SJCAM M20 Mount – Show – shell sections – button side

The camera model has a tidy presentation option:

SJCAM M20 Mount - Show - M20 body
SJCAM M20 Mount – Show – M20 body

And an ugly option to knock the protruberances out of the shell:

SJCAM M20 Mount - Show - M20 body - knockouts
SJCAM M20 Mount – Show – M20 body – knockouts

The square-ish post on the base fits into an angled socket in the clamp around the seat rail:

SJCAM M20 Mount - Show - clamp
SJCAM M20 Mount – Show – clamp

The numbers correspond to the “Look Angle” of the socket pointing the camera toward overtaking traffic. The -20° in the first clamp shows a bit too much rack:

SJCAM M20 Mount - first ride - traffic - 2019-02-06
SJCAM M20 Mount – first ride – traffic – 2019-02-06

It may not matter, though, as sometimes you want to remember what’s on the right:

SJCAM M20 Mount - first ride - 2019-02-06
SJCAM M20 Mount – first ride – 2019-02-06

FWIW, the track veering off onto the grass came from a fat-tire bike a few days earlier. Most of the rail trail had cleared by the time we tried it, with some ice and snow in rock cuts and shaded areas.

Contrary to the first picture, I later remounted the camera under the seat rail with its top side downward. The M20 has a “rotate video” mode for exactly that situation, which I forgot to turn off in the fancy new mount, so I rotated the pix afterward.

A 3 mm screw extends upward through the hole in the socket to meet a threaded brass insert epoxied into the shell base, as shown in the uglified M20 model. Despite appearances, the hole is perpendicular to both the socket and the shell, so you can tweak the Look Angle without reprinting the shell.

All in all, the mount works well. We await better riding weather …

The OpenSCAD source code as a GitHub Gist:

,

3 Comments

Juki TL-2010Q: COB LED Light Bar

Mary needed more light under the arm of her Juki TL-2010Q sewing machine, so I proposed a 12 V 6 W COB LED module instead of the high-density LED strips I used on her Kenmore 158s:

Kenmore 158 Sewing Machine - Cool white LEDs - rear no flash
Kenmore 158 Sewing Machine – Cool white LEDs – rear no flash

Because the COB LEDs dissipate 6W, far more power than I’m comfortable dumping into a 3D printed structure, I redefined a length of aluminum shelf bracket extrusion to be a heatsink and epoxied the module’s aluminum back plate thereto:

Juki TL-2010Q COB LED - test lighting
Juki TL-2010Q COB LED – test lighting

Unlike the flexible LED strips, the COB LED modules have no internal ballast resistors and expect to run from a constant-current supply. Some preliminary testing showed we’d want less than the maximum possible light output, so a constant-voltage supply and a few ohms of ballast would suffice:

Juki TL-2010Q COB LED - ballast resistor test
Juki TL-2010Q COB LED – ballast resistor test

With all that in hand, the heatsink extrusion cried out for smooth endcaps to control the wires and prevent snagging:

TL-2010Q COB LED Light Bars - end caps - Show layout
TL-2010Q COB LED Light Bars – end caps – Show layout

The central hole in the left cap passes 24 AWG silicone wires from the power supply, with 28 AWG silicone wires snaking down through the L-shaped rectangular cutouts along the extrusion to the LED module’s solder pads.

The model includes built-in support:

TL-2010Q COB LED Light Bars - end caps - Build layout
TL-2010Q COB LED Light Bars – end caps – Build layout

Assuming the curved ends didn’t need support / anchors holding them down turned out to be completely incorrect:

Juki TL-2010Q COB LED - curled endcaps
Juki TL-2010Q COB LED – curled endcaps

Fortunately, those delicate potato chips lived to tell the tale and, after a few design iterations, everything came out right:

Juki TL-2010Q COB LED - heatsink endcap - internal connections
Juki TL-2010Q COB LED – heatsink endcap – internal connections

The “connector”, such as it is, serves to make the light bar testable / removable and the ballast resistor tweakable, without going nuts over the details. The left side is an ordinary pin header strip held in place with hot melt glue atop the obligatory Kapton tape, because the heatsink doesn’t get hot enough to bother the glue. The right side is a pair of two-pin header sockets, also intended for PCB use. The incoming power connects to one set and the ballast resistor to the other, thusly:

Juki TL-2010Q COB LED - light bar connector diagram
Juki TL-2010Q COB LED – light bar connector diagram

The diagram is flipped top-to-bottom from the picture, but you get the idea. Quick, easy, durable, and butt-ugly, I’d say.

The next step was to mount it on the sewing machine and steal some power, but that’s a story for another day.

The relevant dimensions for the aluminum extrusion:

Aluminum shelf bracket extrusion - dimensions
Aluminum shelf bracket extrusion – dimensions

The OpenSCAD source code as a GitHub Gist:

,

4 Comments