Posts Tagged CNC
The first pass at the lip balm holders suffered from a grossly overstuffed first solid infill layer:
The skirt measured the usual scant 0.25 mm and was level all around, so the platform alignment and home position were just fine. That’s rarely a problem, but it’s good to verify before proceeding.
Previewing the G-Code didn’t show any problems; all the second-layer threads looked just fine. With that said, I did create an issue for gcode.ws pointing out that the profusion of thread colors wasn’t useful and suggesting some alternative methods.
The first layer requires 15-ish minutes to print, so I decided to reproduce the problem in a solid calibration box sliced with the same settings as the holder:
That still life represents these tests:
- Solid 3 mm tall box, 20 mm square
- 30 mm square
- 25 mm square, with text in Arial
- Again, because I can’t believe it hasn’t failed yet
- With rectilinear first layer
- Back to Hilbert with text in Zapf Chancery
All of those printed without trouble; every layer came out exactly as it should. In particular, the first solid infill layer atop the Hilbert Curve bottom layer had the precisely filled threads I’m used to seeing, each one butted against its neighbors without any excess plastic.
I modified the OpenSCAD source code to extract a 20x20x3 sample block from the lip balm holder model, including a snippet of the actual text. That worked fine.
Expanding the sample produced the irregular chunk in the front row, also 3 mm tall, including a section of the lilypads surrounding the tubes. Another successful print!
I’ll leave to your imagination a pile of half a dozen first layers topped with small sections of grossly overstuffed solid infill, printed in between the successful blocks and as a result of the variations mentioned below, with identical text and slicer settings. The test blocks work fine, but the actual holder and sections from it do not.
Having eliminated the obvious causes, it was time for more drastic measures.
I build OpenSCAD and Slic3r from the latest source files on GitHub. Nothing in this leads me to suspect the OpenSCAD models and using the most recent stable Slic3r version produced the same results.
Rebuilding the Slic3r configuration files from scratch produced the same results.
That’s where I gave up, set the 3D Honeycomb infill to start with Layer 2, and completed the mission.
Lacking any better ideas, I decided to throw all the balls in the air at once …
A revision to my Fundamental Calibration Object adds some variations …
The classic thinwall open box:
A solid box:
A solid box with text embossed on the lower surface:
You must consider how the slicer settings interact with the solid model parameters, particularly now that slicers can produce adaptive infill for small gaps between perimeter threads. Previewing the slicer’s output will show you what assumptions it makes and prevent surprising results out there on the platform.
A single-thread wall comes out properly:
The results look just like the preview, with firmly bonded layers and no fluff:
This wall should be two threads wide, but Slic3r inserts very very thin infill thread:
I think that’s a result of forcing the two perimeter threads to sit with their centers exactly one thread width apart, making the (nominal, ideal) inner walls tangent to each other. Setting the wall to 1.9 mm eliminates the hair-fine infill thread, at the cost of producing an object 0.1 mm smaller than it looks.
Unfortunately, that fine infill doesn’t produce enough plastic flow for a continuous thread. The PET I’m using accumulates on the nozzle until enough of a glob forms to stick on the previous layer, but hair-fine strands connect those globs to each other and the nozzle, producing awful results:
A triple-thread wall allows Slic3r to produce a fatter infill thread that works the way you’d expect:
The threads bond firmly in all directions:
It’s not obvious from that picture, but the bond between successive infill threads produces a glass-clear vertical plastic slab that relays images from the bottom to the top. The perimeter threads are also firmly bonded, albeit with not quite the same optical quality.
To use these boxes:
- Set the OpenSCAD extrusion parameters to match whatever the slicer will use
- Set the wall height and thickness to whatever you like
- Compile-and-render, export the result as a solid model in STL / AMF / whatever
- Feed the solid model into your favorite slicer and save the G-Code
- Feed the G-Code into your printer, watch it magically create a little box
- Measure the printed results and compare with the ideal settings
- Change the slicing configuration and iterate until satisfied
Verify these measurements before adjusting anything else:
- Filament diameter: actual vs. nominal will be different
- Extruder steps per millimeter: mark 100 mm on filament, extrude 100 mm, compare
Then you can verify / adjust some finicky settings:
- Extrusion multiplier: does the actual single wall width match slicer’s nominal value?
- Infill density: 100% infill should perfectly fill the solid box
- Initial Z offset: does actual height match the model setting?
- Platform alignment: print five boxes at platform center + corners, verify heights
- First layer adhesion: if these don’t stick, the platform has weak adhesion
- Minimum time per layer: if the walls slump, you’re printing too fast
- Extrusion temperature: good bonding and no delamination along any axis
The OpenSCAD source code as a GitHub gist:
After taking the incandescent lamp socket off its base, I drilled the tapped (yeah, in plastic) 6-32 holes out to a firm press fit for the knurled 6-32 inserts, buttered the inserts with epoxy, and pressed them firmly in place:
Fast forward a day and they’re stuck in there like they were glued. You can see a bit of the epoxy around the right rim of the insert; I wiped a bit more off around the other one.
Putting The Right Amount of epoxy on the insert requires dialing back my “The bigger the blob, the better the job” enthusiasm, but wasn’t all that difficult. It’s certainly more tedious than just ramming the inserts into a printed hole and might actually produce better retention. I doubt that will make the least difference for (almost) anything I build.
On the whole, they look good…
Replacing the hex nut traps with knurled insert cylinders slims the ends of the socket:
Making the raised part of the socket fit the 25 mm ID of a hard drive platter swells the midsection of the socket
, but the platter won’t need any machining or punching:
The octal and duodecar sockets will require a punch to open up the platter hole and all sockets require two drilled clearance holes for the screws. Given that I’ll eventually do this on the Sherline, maybe milling the hole for the bigger tubes will be faster & easier than manually punching them.
I moved the screw centers to 35 mm (from the historically accurate 28 mm) to accommodate the larger center, not that anybody will ever notice, and enlarged the central hole to 7.5 mm (from 5.0 mm) to let more light into the tube base.
The support structures inside the (now much smaller) knurled insert cylinders might not be strictly necessary, but I left them in place to see how well they built. Which was perfectly, as it turns out, and they popped out with a slight push:
They’re just the cutest little things (those are 0.100 inch grid squares in the background):
Anyhow, the knurled inserts pressed into their holes with a slight shove:
The chuck jaws were loose on the screw cutoff stud and stopped at the surface, putting the knurled inserts perfectly flush with the socket:
The surface looks very slightly distorted around the inserts, although it’s still smooth to the touch, and I think the PETG will slowly relax around the knurls. Even without heat or epoxy, they’re now impossible to pull out with any force I’m willing to apply to the screws threaded into them. Given that the platter screws will (be trying to) pull the inserts through the socket, I think a dry install will suffice for my simple needs.
Match-mark, drill #27 6-32 clearance holes, and the screws drop right in:
Those stainless steel pan-head 6-32 screws seem a bit large in comparison with the socket. Perhaps I should use 4-40 screws, even though they’re not, ahem, historically accurate.
The tube pin holes get hand-reamed with a #53 drill = 1.5 mm. That’s a bit over the nominal 1.1 mm pin diameter, but seems to provide both easy insertion and firm retention. For permanent installation, an adhesive would be in order.
Buff off the fingerprints, stick the tube in place, and it looks pretty good:
Yeah, those screws are too big. Maybe a brace of black M3 socket head screws would look better, despite a complete lack of historicity.
Now to wire it up and ponder how to build a base.
The OpenSCAD source code as a GitHub Gist:
The nice stainless steel screws on the right range from 4-40 to 10-32, which suffice for nearly everything I build around here.
Unlike the splined metric inserts on the left, these inserts have actual knurls and ridges that should hold them firmly in place. The specs give hard-inch dimensions, of course, that (seem to) correspond to the root diameter of the knurls. You can find nice engineering drawings of precise tapered holes (by drilling down into the Heat-Set Inserts for Plastics item on that page), but a few metric measurements of the actual parts on hand should suffice for my simple needs.
Thread: overall length x small rim OD x (knurl length x larger knurl OD)
- 4-40: 5.8 x 3.9 x (4.0 x 4.6)
- 6-32: 7.1 x 4.7 x (4.6 x 5.5)
- 8-32: 8.1 x 5.5 x (5.9 x 6.3)
- 10-32: 9.5 x 6.3 x (7.0 x 7.1)
Rather than fussing with a tapered hole, just punch a cylinder with the small rim OD (to clear the screw) through the part and put a cylinder with the knurl OD x length at the surface.
Using cylinders without diameter correction will make them slightly undersized for heat bonding. The usual 3D printing tolerances don’t justify anything fussier than that.
Using PolyCyl diameter correction will make the holes nearly spot on for epoxy bonding: butter ’em up, ram ’em in, pause for curing, done.
That’s the plan, anyhow…
I wanted a slightly larger “plate cap” to fit a big incandescent bulb and it seemed a fake heatsink might add gravitas to the proceedings:
Yeah, that antique ceramic socket holds the bulb at a rakish angle. Worse, even though I painstakingly laid out the position of the heatsink atop the bulb, it’s visibly off-center. Which wouldn’t be so bad, had I not epoxied the damn thing in place.
After reaming out the M2’s filament drive, the entire blue base printed without incident.
A closer look at the cap:
Memo to Self: Next time, line it up with the vertical glass support inside the bulb and ignore the external evidence.
The boss has a hole for the braid-enclosed cable to the knockoff Neopixel:
The cupped surface perfectly fits the bulb’s 3.75 inch diameter. While you wouldn’t mill out a real heatsink, it definitely looks better this way and (alas) gives the epoxy more footprint for a better grip.
I built the fins with a 1/8 inch cutter in mind, so the fin root radius allows for a
G3 arc without gouging. I doubt machining a fake heatsink from aluminum makes any sense, but the cheap extruded heatsinks on eBay don’t look very good. Plus, they sport completely unnecessary tapped holes for LED mounts and suchlike.
A cross-section shows the wiring channel and cable entry:
I epoxied the Neopixel in place, applied double-sided carpet tape to the whole thing, then painstakingly trimmed around the fins with an Xacto knife:
That looked better from the top side (where it was completely hidden) and came heartbreakingly close to working, but after about a day the cable + braid put enough torque on the cap to peel it off the bulb. Obviously, the tape holds much less enthusiastically after that.
Part of the problem came from the cable’s rather sharp angle just outside the cap:
Rakish angle, indeed. Two of ’em, in fact.
Unlike the smaller cap on the halogen bulb, this time I didn’t bother with a brass tube ferrule, mostly to see how it looks. I think it came out OK and the black braid looks striking in person. Conversely, a touch of brass never detracts from the appearance.
Obviously, the cable wasn’t long enough, either. Part of that problem came from underestimating the braid length: it shortens dramatically when slipped over the cable, even when you expect shortening. Somehow I managed to overlook that, despite cutting the cable quite long enough, thankyouverymuch. There’s a tradeoff between gentle angles and having the cable stick out too far for comfort.
Memo to Self: Use a cable at least four inches longer than necessary, measure the combined cable + braid assembly after screwing the bulb in the socket, and don’t epoxy anything before all the parts are ready for assembly.
That’s why it’s a prototype made out of blue PETG…
Protip: running old ceramic sockets through the dishwasher greatly simplifies their subsequent cleanup.
All in all, I like it.
The OpenSCAD source code as a GitHub gist:
Even vacuum tubes destined to be decorations need sockets:
They’re entirely plastic, of course, but they match the dimensions of “real” tube sockets pretty closely. The bosses around the pins have hard-inch dimensions, so you (well, I) can unleash Genuine Greenlee Radio Chassis Punches on sheet metal.
All the key dimensions come from a table, so you can build whatever sockets you need. These four seem to cover the most common relics of the Hollow State Empire:
T_NAME = 0; // common name T_NUMPINS = 1; // total, with no allowance for keying T_PINBCD = 2; // tube pin circle diameter T_PINOD = 3; // ... diameter T_PINLEN = 4; // ... length (overestimate) T_HOLEOD = 5; // nominal panel hole from various sources T_PUNCHOD = 6; // panel hole optimized for inch-size Greenlee punches T_TUBEOD = 7; // envelope or base diameter T_PIPEOD = 8; // light pipe from LED to tube base T_SCREWOC = 9; // mounting screw holes // Name pins BCD dia length hole punch env pipe screw TubeData = [ ["Mini7", 8, 9.53, 1.016, 7.0, 16.0, 11/16 * inch, 18.0, 5.0, 22.5], ["Octal", 8, 17.45, 2.36, 10.0, 36.2, (8 + 1)/8 * inch, 32.0, 11.5, 39.0], ["Noval", 10, 11.89, 1.1016, 7.0, 22.0, 7/8 * inch, 21.0, 5.0, 28.0], ["Duodecar", 13, 19.10, 1.05, 9.0, 32.0, 1.25 * inch, 38.0, 12.5, 39.0], ];
Given that the tubes lack electrical connections, I omitted the base keying: plug them in for best visual effect.
The hole through the middle passes light from a knockoff Neopixel on a 10 mm OD PCB:
Seen from the bottom, each base traps a pair of 6-32 nuts for chassis mounting and has a Neopixel press-fit in the middle:
Those recesses require support structures:
The Miniature 7-pin socket has the least space for the 10 mm OD Neopixel PCB and shows the thin layer between the bottom of the pin holes and the top of the openings.
You see half of the eight holes in the “7 pin” socket, because it has the eighth hole where a standard socket has a gap between pins 1 and 7.
Somewhat to my surprise, punching the support spiders out with a 6-32 stud (grabbed in the drill press) worked perfectly:
They look like I intended to build tiny decorations:
The cookies held on tenuously, then released with a loud bang! as I gradually increased the pressure. A PETG support structure in a blind recess wouldn’t pop out nearly so well.
The OpenSCAD source code as a GitHub gist: