CAD/spdbt/motormount.scad
Michael Hope 93d98a10ca + ‘.gitignore’
+ ‘hab/’
+ ‘hab/18650.scad’
+ ‘hab/battery_holder.scad’
+ ‘hab/cr18650.scad’
+ ‘hab/debug.log’
+ ‘hab/libjuju.scad’
+ ‘hab/pigateway.scad’
+ ‘hab/sensemicro.scad’
+ ‘hab/thermo.scad’
...
2017-09-17 21:40:21 +02:00

146 lines
2.6 KiB
OpenSCAD

v = 0.3;
e = 0.01;
l = 39+v;
m = 3;
d1 = 24.8 + v;
l1 = 21;
d2 = 24.4;
d2 = d1;
l2 = l - l1;
d3 = 7+v;
l3 = 2.5;
d4 = 6.5+v;
l4 = 1;
module motor() {
color("grey")
rotate([-90, 0, 0])
translate([0, 0, l3])
union() {
cylinder(l1, d=d1, d=d1);
translate([0, 0, l1])
cylinder(l2, d=d2, d=d2);
translate([0, 0, -l3])
cylinder(l3, d=d3, d=d3);
translate([0, 0, l])
cylinder(l4, d=d4, d=d4);
translate([0, 12-d4/2+3/2, l+1])
cube([7, 3, 2], center=true);
}
}
module motormount() {
d = 2.5;
dd = d1+d*2;
w = d1;
hc = d1/2+d;
module plate() {
translate([-w/2, 0, 0])
cube([w, d, hc]);
translate([0, 0, dd/2])
rotate([-90, 0, 0])
cylinder(d, d=w, d=w);
}
module body() {
union() {
plate();
translate([0, l+d, 0])
plate();
translate([-w/2, 0, 0])
cube([w, l+d*2, dd/3]);
}
}
module axelcap() {
translate([0, 0, dd/2]) {
// Axel cap hole.
translate([0, 0, 0])
rotate([-90, 0, 0])
cylinder(d+e, d=d3, d=d3);
translate([-d3/2, 0, 0])
cube([d3, d+e, dd]);
for (r = [0:45:360]) {
rotate([-90, r, 0])
translate([(19.5-m)/2, 0, 0])
cylinder(d, d=m, d=m);
}
}
}
module endcap() {
translate([0, l+d, 0])
union() {
// End axel cap hole.
translate([0, 0, dd/2])
rotate([-90, 0, 0])
cylinder(d+e, d=d4, d=d4);
translate([-d4/2, 0, dd/2])
cube([d4, d+e, dd]);
translate([-15/2, 0, dd-11])
cube([15, d+e, 20]);
}
}
module motorhole() {
union() {
translate([0, d, hc])
rotate([-90, 0, 0])
cylinder(l1, d=d1, d=d1);
translate([0, d+l1, hc])
rotate([-90, 0, 0])
cylinder(l2, d=d2, d=d2);
}
}
module foo() {
difference() {
body();
motorhole();
axelcap();
endcap();
}
}
module fins() {
t = 2;
difference() {
translate([0, d+d/2, dd/2])
rotate([-90, 0, 0])
difference() {
cylinder(l-d, d=d1+t*2, d=d1+t*2);
cylinder(l-d, d=d1, d=d1);
}
// Cut the top off.
translate([-(d1+t*2)/2, d, dd/2+5])
cube([d1+t*2, l, 40]);
for (y = [0, l-t, (l-t)/2]) {
translate([-(d1+t*2)/2, d+y, dd/3])
cube([d1+t*2, t, 40]);
}
}
}
difference() {
union() {
foo();
fins();
}
// Cut the top off.
translate([-d1, -e, hc+hc/2+1])
cube([d1*2, l*2, 30]);
// Cut holes through the bottom.
for (y = [d+l/4, d+l*3/4]) {
translate([0, y, -e])
cylinder(40, d=dd/2, d=dd/2);
}
}
}