MakerHome Day 343 – Customizable Cone Hinge

MakerHome Day 343 – Customizable Cone Hinge

MakerHome Day 343 – Customizable Cone Hinge 640 480 mathgrrl

Today we made a cone hinge module that can be used inside other projects:

Thingiverse link: http://www.thingiverse.com/thing:436737

Settings: Optimized for a MakerBot Replicator 2 with default .3mm/low settings, with raft but (and this is key) no supports. For different printers, to change scale, or for tighter/looser hinges, try changing the clearances in the Customizer at the Thingiverse link.

Technical notes, OpenSCAD flavor: This is a conical hinge, so never needs support material. The picture below shows a cross-section about halfway through.

The space between the protruding cones and the cone-shaped holes is controlled by a parameter called clearance, and the space between the hinge and the adjacent bars is controlled by the parameter called gap. A non-customizable parameter called fudge allows us to push things imperceptibly one way or another so as to avoid having identical duplicate triangles in our output mesh. Here is the full OpenSCAD code for this object:

// mathgrrl cone hinge
 
//////////////////////////////////////////////////////
// parameters
 
// Length of the complete hinge
length = 20;
 
// Height (diameter) of the hinge
height = 3;
 
// Clearance between cones and holes
clearance = .7;
 
// Clearance between hinge and sides
gap = .6;
 
// Parameters that the user does not get to specify
$fn=24*1;
border = 2*1;
fudge = .01*1; // to preserve mesh integrity
corner = 0*1; // space between hinge and corner
hinge_radius = height/2;
cone_height = 1.5*hinge_radius;
 
//////////////////////////////////////////////////////
// renders
 
rotate(90,[0,1,0])
translate([-hinge_radius,0,0])
hinge();
 
translate([0,hinge_radius+gap,0]) bar();
translate([0,-2*border-hinge_radius-gap,0]) bar();
 
//////////////////////////////////////////////////////
// module for hinge
 
module hinge(){
rad = hinge_radius;
clr = clearance;
len = (length-2*corner)/3;
con = cone_height;
// left outside hinge = (cylinder+box)-cone
difference(){
union(){
translate([0,0,corner]) cylinder(h=len-clr,r=rad);
translate([-rad,0,corner]) cube([2*rad,rad+gap,len-clr]);
}
translate([0,0,corner+len-con-clr+fudge]) cylinder(h=con,r1=0,r2=rad);
}
// inside hinge = cylinder+box+cone+cone
union(){
translate([0,0,corner+len]) cylinder(h=len,r=rad);
translate([-rad,-rad-gap,corner+len]) cube([2*rad,rad+gap,len]);
translate([0,0,corner+len-con]) cylinder(h=con,r1=0,r2=rad);
translate([0,0,corner+2*len]) cylinder(h=con,r1=rad,r2=0);
}
// right outside hinge = (cylinder+box)-cone
difference(){
union(){
translate([0,0,corner+2*len+clr]) cylinder(h=len-clr,r=rad);
translate([-rad,0,corner+2*len+clr]) cube([2*rad,rad+gap,len-clr]);
}
translate([0,0,corner+2*len+clr-fudge]) cylinder(h=con,r1=rad,r2=0);
}
}
 
//////////////////////////////////////////////////////
// module for bar shape
 
module bar(){
cube([length,2*border,height]);
}

 

——————

As an Amazon Associate we earn from qualifying purchases, so if you’ve got something you need to pick up anyway, going to Amazon through this link will help us keep Hacktastic running. Thanks! :)


Leave a Reply