Ed Nisley's Blog: Shop notes, electronics, firmware, machinery, 3D printing, laser cuttery, and curiosities. Contents: 100% human thinking, 0% AI slop.
Category: Software
General-purpose computers doing something specific
For whatever reason, the Thunar file browser in XFCE does not automagically show thumbnails for webp images. Some searching produced a recipe, although the displayed webp.xml file needs the last two lines to close the tags:
The thread now pulls off perpendicular to the axis, the way we thought it should, and the helix is gone.
The adapter base plate fits snugly over the vertical pin, with the lip over the edge stabilizing the whole thing. The spool fits on a ¼ inch acrylic rod tightly press-fit into the side wall and, although it’s not shown here, the vertical adapter press-fits onto the end of the rod to keep the spool from wandering off.
The solid model shows the arrangement:
HQ Sixteen – horizontal thread spool adapter – solid model
It builds standing on the wall to prevent any significant overhang:
So we’ve reconfirmed our original knowledge that ordinary thread spools must feed off the side, not over the top. Living in the future with rapid prototyping and simple production is good!
Fun fact: although the vertical pins on the machine are ¼ inch in diameter, the thread on the end is neither the obvious ¼-20 nor the second-guess 10-32. Instead, it’s M5×0.8, perilously close to the 10-32 thread used in the handlebar setscrews. Don’t apply brute force when this thing doesn’t screw neatly into that hole.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Clearing the clutter off the top of the laser put the monitors up on mounts clamped to its wings, which required an adapter between the monitor and the mount’s standard VESA bracket:
Acer monitor VESA adapter
The Beelink PC has an adapter plate intended to put it on that VESA bracket, too, but a quick test showed the power button pointed downward in an inaccessible spot. I eventually realized the Beelink would fit neatly on the monitor mount’s pole:
Monitor pole Beelink clamp – front
The view from the other side:
Monitor pole Beelink clamp – rear
The clamps have recesses for an M6 square nut and an M4 brass insert:
Monitor Pole BeeLink clamp – solid model
Which is better seen in a cross-section:
Monitor Pole Beelink clamp – PrusaSlicer preview
The M6 screw uses the same hex wrench as the rest of the monitor mount and the M4 screw fits the VESA bracket. Sometimes, you just gotta go with the flow.
Pondering those pictures will show why the nut and insert must be on opposite sides. I came that close to building one to throw away.
The OpenSCAD source code extrudes the overall shape upward, then punches the screw holes & fittings horizontally:
The HQ Sixteen consumes thread at a prodigious rate, so it’s set up for large thread cones. Mary sometimes uses ordinary thread spools (leftovers from sewing projects) for short practice sessions and wanted an adapter to hold the little things in place:
Thread spool adapter – installed
Those of long memory should recall previous adapters for both sizes and their notes about how thread should peel off spools & cones. I considered an adapter with a horizontal spool axis, but contemporary machines apparently don’t bother with such niceties. We may need a right-angle adapter to let the thread pull off from the side, but we’ll start simple and fix it if needs be.
The small crosswise hole in the hub gets an M3 setscrew pushing a rubber pellet slightly into the central bore for a friction fit. The OpenSCAD code can distribute any number of such holes, but one seemed entirely adequate.
The code shrinkwraps a hull() around two cylinders to create the tapered sides, thus giving the thread less surface to drag across. I have PrusaSlicer set to produce scarf joints around the perimeter and the edges came out surprisingly smooth, with only one rough spot requiring deft Xacto knife work. It’s made from white PETG for a smoother finish than PETG-CF.
The OpenSCAD code consists mostly of constants defining the various physical measurements and a few lines assembling the model:
It has always seemed like a Bad Idea™ to run indoor air through the clothes dryer and dump it overboard, particularly during days when the indoor air has been painstakingly (perhaps expensively) heated or cooled. The dryer now lives in a separate room with two doors, so we can close it off from the rest of the house and let it inhale outdoor air through the screen on the storm door.
Except in winter, when a glass pane covers the screen. Propping the door open just a bit is unattractive, because an open door seems like an invitation to any field mouse looking to upgrade its domicile.
Given that the dryer exhausts through a length of 4 inch flexible duct, I figured a similar vent, facing inward, mounted on the storm door would admit enough air to keep it happy. Keeping insects and adroit mice out requires a screen:
Dryer Inlet Vent – filter retainer
After taking that picture, I rammed four threaded brass inserts into the holes, thereby eliminating the need for a handful of washers and nuts, some of which were absolutely certain to disappear through gaps in the deck.
The two blue-gray rings are PETG-CF:
Dryer Inlet Vent Filter Retainer – solid model
The small split makes the inner retainer just springy enough to fit over the two small tabs normally locking a dryer hose in place.
The OpenSCAD code gloms a few shapes together:
include <BOSL2/std.scad>
/* [Hidden] */
VentID = 102.0; // diameter at base of vent opening
VentOD = 107.5;
OpenAngle = 3;
LipWidth = 3.0; // lip around vent opening
LipThick = 7.5;
StrutWidth = 2.5; // wide enough to hold filter
StrutThick = 3.0; // tall enough to be rigid
NumStruts = 3;
Protrusion = 0.1;
NumSides = 360/6;
$fn=NumSides;
//----------
// Build it
union() {
linear_extrude(LipThick)
ring(NumSides,d1=VentID - 2*LipWidth,d2=VentID,angle=[OpenAngle/2,360-OpenAngle/2],spin=270);
linear_extrude(StrutThick) {
circle(r=StrutWidth);
for (i=[0:(NumStruts-1)]) {
a = 90 + i*360/NumStruts;
zrot(a)
right(VentID/4)
square([VentID/2 - LipWidth/2,StrutWidth],center=true);
}
}
linear_extrude(LipThick) // outside trim ring
ring(NumSides,d1=VentOD,d2=VentOD+2*LipWidth);
}
The overall union() keeps PrusaSlicer from identifying the thing as a multi-material model. Apparently, it still looks enough like a logo to qualify for special treatment, but I fought it to a standstill.
The little hex standoffs have M3 threads, although 6 mm screws are about as much as they’ll take. The recesses have clearance for the boost transistor underneath the PCB, but it’s your responsibility to not let random wires get in trouble with the exposed circuitry:
Optoisolator case
A strip of good foam tape sticks it to the controller:
Stack Light – controller wiring
Admittedly, the stack light wiring remains something of a hairball, but it’s in a good cause.
The OpenSCAD code can build as many cavities as you need:
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters