CAD/bikemount/clamp.scad

96 lines
1.9 KiB
OpenSCAD

// Clamp for a 32 mm diameter handlebar
e = 0.1;
$fn = 40;
t = 2; // wall thickness
r = 32/2; // inner clamp radius
w = 30; // clamp width
m = 3; // bolt diameter
module clamp() {
module ring() {
difference() {
cylinder(r=r+t, w);
translate([0, 0, -e])
cylinder(r=r, w+e*2);
}
}
module hinge() {
k = 4*1.5;
translate([-r-t*2.5, 0, k/2]) {
j = m+t*2;
difference() {
hull() {
translate([j/2+t/2, j/2, 0]) cylinder(d=m/2, w-k);
translate([j/2+t/2, -j/2, 0]) cylinder(d=m/2, w-k);
cylinder(d=j, w-k);
}
cylinder(d=m, w-k+e); // hole for a m3x30
}
}
}
module clamp() {
translate([r, 0, 0]) {
j = m*3;
difference() {
union() {
cube([m*3, t+1, w]);
translate([0, -t-1, 0]) cube([j, t+1, w]);
}
translate([j/2, t*2, w/2])
rotate(90, [1, 0, 0])
cylinder(d=m, t*5); // hole for a m3x10
}
}
}
module mount() {
translate([0, r+t/2, w/2])
hull() {
cube([w/2, t, w], center=true);
translate([0, 11-t, 0])
cube([w, t, w], center=true);
}
}
ring();
hinge();
clamp();
mount();
}
module bottom() {
// Bottom half of the clamp for printing
j = m;
difference() {
clamp();
translate([-r+t, -1, -e])
cube([r*3, r*3, w*2]);
translate([-r*2, j, -e])
cube([r*3, r*3, w*2]);
translate([-r*2, -j-1, w/3])
cube([r*2, r*2, w/3]);
}
}
module top() {
// Top half of the clamp for printing
j = m;
difference() {
clamp();
mirror([0, 1, 0])
translate([-r+t, -1, -e])
cube([r*3, r*3, w*2]);
mirror([0, 1, 0])
translate([-r*2, j, -e])
cube([r*3, r*3, w*2]);
mirror([0, 1, 0]) {
translate([-r*2, -j-1, 0])
cube([r*2, r*2, w/3+0.5]);
translate([-r*2, -j-1, w*2/3-0.5])
cube([r*2, r*2, w/3+t]);
}
}
}
top();
bottom();