CO2 Capsule Fins: 16 Gram Threaded Edition

I redesigned those fins to fit 16 gram threaded CO2 cartridges in PLA on the M2:

M2 CO2 capsule fins
M2 CO2 capsule fins

The original intent was to have both the square box and the internal X struts be exactly two threads wide, but the two fins on the sides show slic3r had some trouble doing that. I finally made them wide enough for a little fill, which produced the rather chunky version attached to the capsule.

A closer look while printing shows the fin width:

M2 - CO2 Capsule Fins - on platform
M2 – CO2 Capsule Fins – on platform

It was actually a present to go along with a box of the capsules, so I printed just one in a bit of a hurry. He probably couldn’t get them back across the border, but it’s the thought that counts, right?

The slic3r header:

; generated by Slic3r 0.9.8 on 2013-04-04 at 20:53:07

; layer_height = 0.25
; perimeters = 1
; top_solid_layers = 3
; bottom_solid_layers = 3
; fill_density = 0.10
; perimeter_speed = 100
; infill_speed = 200
; travel_speed = 500
; scale = 1
; nozzle_diameter = 0.35
; filament_diameter = 1.70
; extrusion_multiplier = 0.9
; perimeters extrusion width = 0.40mm
; infill extrusion width = 0.40mm
; first layer extrusion width = 0.39mm

The OpenSCAD source has dimensions for various capsules as commented-out cruft, so your mileage may vary:

// CO2 capsule tail fins
// Ed Nisley KE4ZNU - Apr 2013

Layout = "Build";            // Show Build FinBlock Cartridge Fit

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

ThreadThick = 0.25;
ThreadWidth = 0.40;

HoleWindage = 0.2;

Protrusion = 0.1;            // make holes end cleanly

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

//-------
// Capsule dimensions

//- 12 gram capsule

/*
BodyDia = 18.70;
BodyRad = BodyDia/2;

BodyLength = 53.0;                        // between hemispherical endcap centers
BodyBaseLength = 21;                    // tip to endcap center

TipDia = 7.40;
TipRad = TipDia/2;
TipLength = IntegerMultiple(4.0,ThreadThick);

FilletLength = 5.0;                        // fillet between tip and cone
FilletTop = TipLength + FilletLength;

FilletBaseDia = 8.60;
FilletBaseRad= FilletBaseDia/2;
FilletTopDia = 9.5;
FilletTopRad = FilletTopDia/2;

ConeTop = 16.0;                            // tip to tangent with endcap
ConeLength = ConeTop - FilletTop;
*/

//- 16 gram capsule

/*-- unthreaded
BodyDia = 22.0;
BodyRad = BodyDia/2;

BodyLength = 53.0;                        // between hemispherical endcap centers
BodyBaseLength = 27;                    // tip to endcap center

TipDia = 8.30;
TipRad = TipDia/2;
TipLength = IntegerMultiple(7.4,ThreadThick);

FilletLength = 8.3;                        // fillet between tip and cone
FilletTop = TipLength + FilletLength;

FilletBaseDia = 8.6;
FilletBaseRad= FilletBaseDia/2;
FilletTopDia = 18.1;
FilletTopRad = FilletTopDia/2;

ConeTop = 23.0;                            // tip to tangent with endcap
ConeLength = ConeTop - FilletTop;
*/

/*-- threaded */
BodyDia = 22.0;
BodyRad = BodyDia/2;

BodyLength = 53.0;                        // between hemispherical endcap centers
BodyBaseLength = 27;                    // tip to endcap center

TipDia = 9.4;
TipRad = TipDia/2;
TipLength = IntegerMultiple(12.0,ThreadThick);

FilletLength = 5.0;                        // fillet between tip and cone
FilletTop = TipLength + FilletLength;

FilletBaseDia = TipDia;
FilletBaseRad= FilletBaseDia/2;
FilletTopDia = 15.1;
FilletTopRad = FilletTopDia/2;

ConeTop = 23.0;                            // tip to tangent with endcap
ConeLength = ConeTop - FilletTop;

echo(str("Cone Length: ",ConeLength));

IntersectZ = ConeTop;                    // coordinates of intersect tangent
IntersectX = sqrt(pow(BodyRad,2) - pow(BodyBaseLength - ConeTop,2));

echo(str("IntersectZ: ",IntersectZ));
echo(str("IntersectX: ",IntersectX," dia: ",2*IntersectX));

/* */

//-------
// Fin dimensions

FinThick = 2*ThreadWidth;            // outer square
StrutThick = 3*ThreadWidth;            // diagonal struts

FinSquare = 1.25*BodyDia;
FinTaperLength = sqrt(2)*FinSquare/2 - sqrt(2)*FinThick - ThreadWidth;

FinBaseLength = 1.5*TipLength;
FinFlatTop = ConeTop;

//-------

module PolyCyl(Dia,Height,ForceSides=0) {            // based on nophead's polyholes

Sides = (ForceSides != 0) ? ForceSides : (ceil(Dia) + 2);

FixDia = Dia / cos(180/Sides);

cylinder(r=(FixDia + HoleWindage)/2,h=Height,$fn=Sides);
}

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

Range = floor(50 / Space);

for (x=[-Range:Range])
for (y=[-Range:Range])
translate([x*Space,y*Space,Size/2])
%cube(Size,center=true);

}

//-------
// CO2 cartridge outline

module Cartridge() {

$fn = 48;

union() {
translate([0,0,BodyBaseLength]) {
cylinder(r=BodyDia/2,h=BodyLength);
translate([0,0,BodyLength])
sphere(r=BodyRad);
}

intersection() {
translate([0,0,BodyBaseLength])
sphere(r=BodyRad);

union() {
translate([0,0,(TipLength + FilletLength+ConeLength)])
cylinder(r=BodyRad,h=(BodyBaseLength - ConeLength));
translate([0,0,(TipLength + FilletLength)])
cylinder(r1=FilletTopRad,r2=IntersectX,h=(ConeLength + Protrusion));
translate([0,0,TipLength])
cylinder(r1=FilletBaseRad,r2=FilletTopRad,h=(FilletLength + Protrusion));
}

}

translate([0,0,FilletTop])
cylinder(r1=FilletTopRad,r2=IntersectX,h=ConeLength);

translate([0,0,TipLength])
cylinder(r1=FilletBaseRad,r2=FilletTopRad,h=(FilletLength + Protrusion));

translate([0,0,-Protrusion])
PolyCyl(TipDia,(TipLength + 2*Protrusion));

}

}

//-------
// Diagonal fin strut

module FinStrut() {
intersection() {
rotate([90,0,45])
translate([0,0,-StrutThick/2])
linear_extrude(height=StrutThick)
polygon(points=[
[0,0],
[FinTaperLength,0],
[FinTaperLength,FinBaseLength],
[0,(FinBaseLength + FinTaperLength)]
]);
translate([0,0,FinFlatTop/2])
cube([2*FinSquare,2*FinSquare,FinFlatTop], center=true);
}
}

//-------
// Fin outline

module FinBlock() {
$fn=12;
union() {
translate([0,0,FinBaseLength/2])
difference() {
intersection() {
minkowski() {
cube([FinSquare - 2*ThreadWidth,
FinSquare - 2*ThreadWidth,
FinBaseLength],center=true);
cylinder(r=FinThick,h=Protrusion,$fn=8);
}
cube([2*FinSquare,2*FinSquare,FinBaseLength],center=true);
}
difference() {
cube([(FinSquare - 2*FinThick),
(FinSquare - 2*FinThick),
(FinBaseLength + 2*Protrusion)],center=true);
for (Index = [0:3])
rotate(Index*90)
translate([(FinSquare/2 - FinThick),(FinSquare/2 - FinThick),0])
cylinder(r=2*StrutThick,h=(FinBaseLength + 2*Protrusion),center=true,$fn=16);
}
}
for (Index = [0:3])
rotate(Index*90)
FinStrut();
cylinder(r=IntegerMultiple(TipDia/2 + 4*ThreadWidth,ThreadWidth),h=TipLength);
}
}

//-------
// Fins

module FinAssembly() {

difference() {
FinBlock();
translate([0,0,2*ThreadThick])                // add two layers to close base cylinder
Cartridge();
}

}

module FinFit() {

translate([0,0.75*BodyBaseLength,2*ThreadThick])
rotate([90,0,0])
difference() {
translate([-FinSquare/2,-2*ThreadThick,0])
cube([IntegerMultiple(FinSquare,ThreadWidth),
4*ThreadThick,
1.5*BodyBaseLength]);
translate([0,0,5*ThreadWidth])
Cartridge();
}

}

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

ShowPegGrid();

if (Layout == "FinStrut")
FinStrut();

if (Layout == "FinBlock")
FinBlock();

if (Layout == "Cartridge")
Cartridge();

if (Layout == "Show") {
FinAssembly();
color("LightYellow") Cartridge();
}

if (Layout == "Fit")
FinFit();

if (Layout == "Build")
FinAssembly()

8 thoughts on “CO2 Capsule Fins: 16 Gram Threaded Edition

  1. Moderately interesting article on Slashdot (linking to a technologyreview dot com one). According to the source, it’s the 3D software, with slashdotters commenting ranging from medium insightful to downright stupid (as usual for them…). Won’t try a link, but it’s on today’s page as “What’s Holding Back 3-D Printing” at tech dot slashdot dot org.

    The software bit is interesting. I’ve been using Drafix CAD (a Win 3.1 version that Just Worked, even through Win XP) for home projects. I have a copy of TurboCad for the Windows 7 box and am starting (barely) to get used to it. Must check out what’s available for Linux (and will run on the P4/Slackware 12.1 system).

    The M2 kit is out of my price range, but it’s interesting. If savings interest rates ever get to “normal”, I might have the disposable income to check it out. Too bad Moore’s Law only loosely applies to iron.

    1. medium insightful to downright stupid

      The /. SNR has been dropping for quite some time; links to the original articles remain useful, but the discussions don’t add anything.

      I think the real thing holding back 3D printing: non-engineering folks can’t wrap their heads around the niceties of creating an object’s 3D design with the specific dimensions and tolerances required to build it. Creating an accurate, printable 3D model requires hard abstract thinking; the ability to think that way that isn’t uniformly distributed in the population.

      Perhaps that means some really bright folks haven’t created clever software that eliminates all the abstract thought & knowledge. On the other paw, despite Autocoder, FORTRAN, COBOL, and their myriad clever descendants, not all of us have become programmers and few of us get tech degrees… which is why I think the limitations on 3D printing don’t involve software.

      1. I don’t know, it’s pretty easy to create something workable in e.g. Solidworks. It even comes with fairly easy-to-use simulation tools that highlight thinking errors and stress points without you having to be able to calculate the shear strain manually or some such. Of course even for student use that costs something like $150, closer to several thousands for professional use. I don’t know if there are any FOSS and/or significantly cheaper solutions that can do the same kind of simulations? And of course the 3D printer itself is also at least a couple thousand, if I’m not mistaken.

        Which means that for me it certainly isn’t in the “oh, that’d be really useful and also awesome to have but I’m not sure I’ll have an immediate use for it” price range, like the €200 sewing machine we own but have only used a few times so far. And even then it seems like for me it’d mostly be a rather expensive alternative to using wood, your current example notwithstanding. (Although if you want a dozen of those fins I can see where getting a robot involved would start paying off.)

        Of course I realize I currently live in a world without a 3D printer. If I had one I’d probably be looking to e.g. print some kind of funnel for non-food use just because I could, but in lieu of that cutting the top off some old bottle will still do just fine. Btw, I just want to emphasize I don’t mean to undercut all the interesting stuff you post: this is all my own lack of time and space — although it does occur to me that a 3D printer shouldn’t require any extra workspace. As such it might be pretty great for those who want to make things with little space for either working or tools.

        Anyway, hope my comment doesn’t fall in the stupid range. ;)

        1. pretty easy to create something workable in e.g. Solidworks

          Well, yeah, but you’re a techie. Ordinary folks would regard the UI of any 3D CAD program as an impenetrable wall, so there really is a need for better software despite what I say.

          for student use that costs something like $150, closer to several thousands for professional use

          Not just that (which is enough to deter me), but there’s also the learning required to know how to use all the knobs attached to the program. I’d always been suspicious of CAD program reviews, back in the day when you could find such things, because you must live with a program for months before your reflexes settle down and you can just build things without thinking; very few people have enough experience with (the current version of) multiple programs to have informed opinions.

          a 3D printer shouldn’t require any extra workspace

          A few square feet (OK, a quarter of a square meter) is about it, with space nearby for a laptop and maybe a big drawer for filament spools.

          That’s the wonderful part: if you can use plastic parts in your projects, there’s this machine that can produce nearly anything you need. No mess, no swarf, no clutter, just things made from math!

          (Well, ideally, that is. The Basement Laboratory isn’t a good example…)

        2. Not a stupid comment, Frans :-) I haven’t quite given up of /., but it’s getting closer, and I’ll just look at the headlines every few daysfor something interesting.

          I’m getting this sense that 3-D printing is in a similar era just prior to the release of the IBM PC and associated software. You had to be a techie to build and use a late-70s home computer, and the applications were just barely getting useful. (Compare your favorite word-cruncher/processor to an early version of WordStar, for example.)

          I think the fundamental driver for 3-D printing will be a really good use for it. Hell, I’m old enough to have read that a “Laser is a solution in search of a problem”. Been lots of those. OTOH, if it doesn’t get that killer solution, it’ll be another good, but not widely used niche process, like desktop CNC. With a sufficient need, somebody will find a way to get it to the general population, innumerate or not.

        3. Blender seems to be a possible Linux solution. There are 3D printing tutorials (blender.org) which I am trying to work my way through. I too, do not have a 3D printer and am waiting for one of the robotic arm based platforms to fall within my cost limit parameters as that is the programming mode I am most familiar with in traversing 3D work areas.

          1. Blender seems to be a possible Linux solution

            The gotcha seems to be that Blender (and also Sketchup) work with surfaces, rather than volumes, so that you can produce objects that look correct, but have some of their insides outside… or worse.

            That said, plenty of folks use both to create useful objects, so it can be done; NetFabb’s STL repair facility will be your friend.

        4. @Ed

          Well, yeah, but you’re a techie. Ordinary folks would regard the UI of any 3D CAD program as an impenetrable wall, so there really is a need for better software despite what I say.

          Well, I am a bit of a strange duck in my current waters (Dutch expression). I didn’t like mechanical engineering as well I’d thought before I started that years ago, hence my familiarity with Solidworks, and will soon acquire a degree in Dutch and English language, linguistics, and literature. It seems like market prospects are pretty decent either way. Computer linguistics is soaring and there aren’t too many people doing that sort of thing yet. There’s also an upcoming projected shortage of teachers of Dutch. I suppose I’ll be fine. :P

          In any case, I think most “techiness” simply comes down to RTFM when you’re stuck. I’m also thinking of an xkcd comic where the narrator is simply examining the commands available in the menus instead of immediately giving up, but my memory is failing to provide me with the right search keywords.

          @Pete

          (Compare your favorite word-cruncher/processor to an early version of WordStar, for example.)

          For better or for worse, WordPerfect took over before I was even born. ;) A peek at the screenshot on Wikipedia suggests something a bit similar in principle to e.g. Markdown, HTML or LaTeX, but less legible and less meaningful.

          I think the fundamental driver for 3-D printing will be a really good use for it. Hell, I’m old enough to have read that a “Laser is a solution in search of a problem”. Been lots of those. OTOH, if it doesn’t get that killer solution, it’ll be another good, but not widely used niche process, like desktop CNC. With a sufficient need, somebody will find a way to get it to the general population, innumerate or not.

          I imagine prices were also rather prohibitive. I’d probably gladly use my typewriter if I could get two dozen typewriters for the price of a “cheap” computer and a “cheap” laser printer.

          @ewf, Ed
          Yeah, Blender isn’t really the same kind of thing. I suppose it’s more comparable to Rhinoceros. Something like FreeCAD is probably quite similar to Solidworks at least in basic functionality, but my question was relating more to how Solidworks can simulate laser cutting, extrusion molding, et cetera, before you commit to it for real. For instance, I once made a small oversight on the laser cutting instructions, which would’ve caused the final product to have been cut in half. With regard to e.g. plastics stuff it can tell you in colors similar to Bridge Builder whether it’ll likely hold or break and how the cooling process will progress. I don’t know if it can also run 3D printing simulations, but the point is that Solidworks does not have optical on-screen stuff as its end-goal.

          Don’t get me wrong: Rhinoceros, Blender, Sketchup, or whatever, can be a great starting point. Especially Rhinoceros, but Sketchup will do for really simple designs. It’s much easier to quickly shape some forms the way you want them in Rhino than in SW. But it’s 3D sketching; I doubt you could make something actually printable with the product. Still, you can export your design to Solidworks and usually you can fix it up quicker than it would be to start from scratch in SW.

Comments are closed.