Skip to content

Instantly share code, notes, and snippets.

@danjperron
Created May 24, 2022 01:08
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save danjperron/1ae309f1326a85d211b317b3a2a01673 to your computer and use it in GitHub Desktop.
Save danjperron/1ae309f1326a85d211b317b3a2a01673 to your computer and use it in GitHub Desktop.
micropump screen
$fn = 500;
capHeight = 10;
capOuterDiameter = 20;
capInnerDiameter = 18;
screenHole = 1.6;
screenThickness = 0.8;
screenSlotWidth = 6;
screenSlotThickness = 3;
screenSlotHeight = 5.25;
baseHeight = 9;
baseOuterDiameter = 23;
baseInnerDiameter = 21;
baseHoleDiameter = 14.5;
baseThickness=2;
pinsDiameter= 2.8;
pinsDistanceCenter = 9.25;
lockDiameter=2.5;
lockSize=3;
lockHeight=6;
module tube(d1, d2, h)
{
translate([0,0,h/2])
difference(){
cylinder(r=d1/2, h = h, center=true);
cylinder(r=d2/2, h = h+0.01, center=true);
}}
module bars(W,H,gridHole, gridWidth)
{
spacing = gridHole + ( 2 * gridWidth);
for ( i = [ 0: spacing : (W/2)] )
{
if ( i == 0)
cube([W,gridWidth,H],center=true);
else
{
translate([0,i,0])
cube([W,gridWidth,H],center=true);
translate([0,-i,0])
cube([W,gridWidth,H],center=true);
}
}
}
module screen(d,h,gridHole, gridWidth)
{
difference()
{
difference(){
union()
{
bars(W=d,H =h, gridHole = gridHole , gridWidth = gridWidth);
rotate([0,0,90])
bars(W=d,H =h, gridHole = gridHole , gridWidth = gridWidth);
}
difference()
{
cylinder(r=d, h =h+0.001,center=true);
cylinder(r=d/2,h=h+0.002,center=true);
}
}
}
}
module Slot()
{
translate([capOuterDiameter/2-screenSlotWidth/2,-screenSlotThickness/2,screenSlotHeight])
{
cube([screenSlotWidth,screenSlotThickness, capHeight],center=false);
translate([0,-screenSlotWidth/2,0])
cube([screenSlotWidth,screenSlotWidth, screenSlotThickness],center=false);
}
}
module cap()
{
union(){
translate([0,0,screenThickness/2])
screen(d = capInnerDiameter, h = screenThickness, gridHole = screenHole, gridWidth = screenThickness);
difference()
{
tube(d1 = capOuterDiameter, d2 = capInnerDiameter, h = capHeight);
union()
{
for(i=[0,180]) rotate(i) Slot();
}
}
}}
module base()
{
union()
{
// cylinder
tube(d1=baseOuterDiameter, d2=baseInnerDiameter,h=baseHeight);
difference()
{
// bottome
tube(d1=baseOuterDiameter, d2=baseHoleDiameter,h=baseThickness);
for ( i =[30,150,270])
{
rotate([0,0,i])
translate([pinsDistanceCenter,0,baseThickness/2])
cylinder(r=pinsDiameter/2,h=baseThickness+0.02,center=true);
}
}
translate([0,0,lockHeight])
for ( i =[0,180])
{
rotate([0,0,i])
translate([-baseThickness/2+(baseOuterDiameter+baseInnerDiameter)/4,0,0])
rotate([0,90,0])
cylinder(r=pinsDiameter/2,h=baseThickness+0.01,center=true);
}
}
}
module base2()
{
translate([0,0,0])
union(){
translate([0,0,lockHeight-baseHeight/2+lockSize/2])
translate([0,0,baseHeight/2])
{
for(i=[90,270])
{
rotate([0,i,0])
translate([0,0,(baseOuterDiameter+baseInnerDiameter)/4-lockSize/2])
cylinder(r=lockDiameter/2,h=lockSize,center=true);
}
}
tube(d1=baseOuterDiameter, d2=baseInnerDiameter,h=baseHeight);
translate([0,0,baseThickness/2])
difference(){
cylinder(r=baseOuterDiameter/2,h=baseThickness,center=true);
cylinder(r=baseHoleDiameter/2,h=baseHeight+0.01,center=true);
for ( i =[30,150,270])
{
rotate([0,0,i])
translate([pinsDistanceCenter,0,0])
cylinder(r=pinsDiameter/2,h=baseThickness+0.01,center=true);
}
}
}
}
//translate([0,0,40,])
// rotate([180,0,0])
translate([30,0,0])
cap();
base();
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment