]> www.fi.muni.cz Git - things.git/commitdiff
Motor holder for Hydrofoam RC plane
authorJan "Yenya" Kasprzak <kas@fi.muni.cz>
Thu, 13 Apr 2017 15:22:08 +0000 (17:22 +0200)
committerJan "Yenya" Kasprzak <kas@fi.muni.cz>
Mon, 22 May 2017 14:05:23 +0000 (16:05 +0200)
hydrofoam-motor-holder.scad [new file with mode: 0644]

diff --git a/hydrofoam-motor-holder.scad b/hydrofoam-motor-holder.scad
new file mode 100644 (file)
index 0000000..ad9c521
--- /dev/null
@@ -0,0 +1,101 @@
+eps = 0.01;
+infty = 300;
+
+stem_len = 90;
+stem_d = 12;
+stem_d2 = 2;
+stem_x = 12;
+
+stem_hole_w = 4;
+stem_hole_h = 12;
+
+module stem_profile() {
+difference() {
+       translate([0, 0, stem_d/2])
+               hull() {
+               rotate([0, 90, 0])
+                       scale([1.5, 1, 1])
+                       cylinder(r = stem_d/2, h = stem_len, $fn = 64);
+               rotate([0, 90, 0])
+               translate([-stem_x-stem_d2/2, 0, 0])
+                       cylinder(r = stem_d2/2, h = stem_len, $fn = 16);
+       }
+       translate([-infty/2, -infty/2, -infty]) cube(infty);
+       translate([-eps, -stem_hole_w/2, -eps])
+               cube([stem_len + 2*eps, stem_hole_w, stem_hole_h + 2*eps]);
+}
+}
+
+motor_d = 28; // unused here, just for reference
+motor_screw_dist = 12.5;
+motor_screw_d = 3 + 0.5;
+motor_screw_head = 5 + 0.5;
+motor_center_hole = 8 + 2;
+motor_wall = 2.5;
+motor_plate_h = 2.5; // base thickness of the motor mount
+
+module motor_mount_body() {
+       // make it symmetrical in both axes
+       for (x = [-1,1]) scale([x, 1, 1])
+       for (y = [-1,1]) scale([1, y, 1]) {
+               hull() { // bottom plate with motor mount
+                       cylinder(r = motor_center_hole/2 + motor_wall,
+                               h = motor_plate_h);
+                       translate([motor_screw_dist/2, motor_screw_dist/2, 0])
+                               cylinder(r = motor_screw_d/2 + motor_wall,
+                                       h = motor_plate_h);
+               }
+       }
+}
+
+module motor_mount_square() {
+       translate([-motor_screw_dist/2-motor_screw_d/2-motor_wall,
+               -motor_screw_dist/2-motor_screw_d/2-motor_wall, 0])
+               cube([motor_screw_dist + motor_screw_d + 2*motor_wall,
+                       motor_screw_dist + motor_screw_d + 2*motor_wall,
+                       motor_plate_h]);
+}
+
+screw_hole_h = 20;
+module motor_mount_holes() {
+       // center hole
+       translate([0, 0, -eps])
+               cylinder(r = motor_center_hole/2, h = 2*motor_plate_h + 2*eps);
+       // make it symmetrical in both axes
+       for (x = [-1,1]) scale([x, 1, 1])
+       for (y = [-1,1]) scale([1, y, 1]) {
+               // screw hole
+               translate([motor_screw_dist/2, motor_screw_dist/2, -eps])
+                       cylinder(r = motor_screw_d/2, h = screw_hole_h+eps);
+               // screw head cone
+               translate([motor_screw_dist/2, motor_screw_dist/2, motor_plate_h - (motor_screw_head - motor_screw_d)/2])
+                       cylinder(r1 = motor_screw_d/2, r2 = motor_screw_head/2, h = (motor_screw_head - motor_screw_d)/2 + eps);
+               // screw top (for subtracting from other objects
+               translate([motor_screw_dist/2, motor_screw_dist/2, motor_plate_h])
+                       cylinder(r = motor_screw_head/2, h = screw_hole_h - motor_plate_h);
+       }
+       // cut the bottom
+       translate([-infty/2, -infty/2, -infty]) cube(infty);
+}
+
+mount_angle = -110;
+
+difference() {
+       union() {
+               stem_profile();
+               translate([stem_len, 0, 0])
+               rotate([0, mount_angle, 0])
+               translate([motor_screw_dist/2 + motor_screw_d/2 + motor_wall, 0, 0])
+                       motor_mount_square();
+       }
+       translate([stem_len, 0, 0])
+       rotate([0, mount_angle, 0])
+               translate([motor_screw_dist/2 + motor_screw_d/2 + motor_wall, 0, 0])
+               rotate([0, 0, 90]) // rotate the hexagons
+               motor_mount_holes($fn = 6);
+       // cut the bottom of the rotated motor plate
+       translate([-infty/2, -infty/2, -infty]) cube(infty);
+       // angled rear end
+       rotate([0, 45, 0])
+       translate([-infty, -infty/2, -infty/2]) cube(infty);
+}