Tiny customizable OpenSCAD CPU shipping boxes (#P38)
Shipping season is here. For no good reason people start terrorizing the logistics companies and I’m probably one of them. Difference being: I need to get rid of stuff, not buy more. I need to ship items.
For quite some time now I’m fond of the idea of OpenSCAD as a STL file generator. While elaborate 3D designs with multiple levels of rounded edges and polynomial madness in three dimensions are better created in graphic tools such as DesignSpark, I don’t find them all that pleasing when making simple geometric shapes that need the occasional modification. Cutting, moving, joining isn’t all that pleasurable. I’ve head that Autodesk Fusion 360 has some level of parametric shape generation built in, but for really low poly count models, I do like a pure text-based generator. Just like TeX is for documents (and yes, from one-page letters to a full thesis).
So I started using OpenSCAD for making small shipping boxes for CPUs. Sometimes you do not own an OEM tray for a specific processor, and especially when it is a PGA type CPU, having a fitted box is important. LGAs likely will survive sandwiching between two suitably soft and ESD compliant materials, it’s just looking a bit messy. Creating a two-piece box with customizable dimensions is where OpenSCAD really makes sense for me.
Meet the latest box:
A box! Great!
(Now the parcel service can stack 1.5m of other trash on top of it and it won’t squash!)
Inside is a 2011v3 processor for the Hardwareluxx giveaway circle, since I got an unusually cheap v4 for my storage server from there. It does hold together on its own, but since the spacing (read: gap between the two parts) is adjustable with a single variable, one can make loose fits that do require tape, or very tight fits that, I don’t know, make it a game to get out the CPU alive. This box fits the CPU so well that it doesn’t move at all in X-Y direction, but does fall out when turned upside down and tapped with a finger.
As it is just a rectangular box with very low tolerances added all around, this also is an interesting test for printing quality. Assuming the processor PCB is cut to exact specification, this box fits slightly better in one orientation than the other. Using square processors such as quite a lot of AMD models, this would enable one to judge and fine-tune printer settings on a really high level.
For this LGA CPU I just used a piece of pink ESD bubble wrap cut to size. For PGAs it’s usually foam to have an even surface. The additional height for that packaging material is also adjustable with a single variable (future plans: Offer option to use another height variable for stuff on top). I wouldn’t recommend seating the processor directly to the box for two reasons: a) ESD protection (unless you got ESD-compliant filament, is that a thing?), and b) surface roughness, especially with the embossed print on the bottom.
For printers and slicers that cannot make sharp 90° inner walls and thus require larger overall tolerances, I’ve also fitted two partition strips on adjacent walls. Those extend into the CPU space (adjustable of course) and can be filed down after printing. This allows a snug fit with the first piece printed, since I hate printing stuff again and again when just optimizing tiny details (and doing all once more when changing printer, filament, nozzle or whatever isn’t exactly the same one month down the lane).
While I do not have a test print for every processor type listed in the beginning of the script, I’m confident it’ll work for all of them given your printer is able to follow specifications. There’s also a bunch of types I do not have present such as older socket 4/5/7 types or the modern AM4 or TR4, but those will be added once needed (or posted in the comments below). It is surprisingly difficult to get exact measurements based on those huge manufacturer spec PDFs, since they mostly cover things that are important for board or cooler manufacturers. They do not need to publish specs for the processor packages since they’re the only one that makes them…
Syntax is easy – speaking variable name for later use (can only generate one at a time), X-Y-Z dimensions of the processor package including pins, capacitors and heat spreader, and some lines of description for embossing in the print surfaces (optional, but probably useful). Example:
socket2011v3 = ([52.5, 45.0, 6.5, 7, "", "Socket R3", "", "LGA 2011v3", ""] );
This generates the following model when activated in the final selector variable socket = socket2011v3;
Demo STL for C32 sockets, since that’s the latest addition to the party:
cputray_v8_c32
And here’s the script itself:
cputray_v8
Also hosted on thingiverse (thing 5149526), which offers the extremely useful “Customizer” for online modification of OpenSCAD scripts – except that the socket variable cannot be set at all, so it’s only useful for the CPU type set when uploading. Meh.