93d98a10ca
+ ‘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’ ...
146 lines
2.6 KiB
OpenSCAD
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);
|
|
}
|
|
}
|
|
}
|