diff --git a/air purifier.scad b/air purifier.scad new file mode 100644 index 0000000..0217296 --- /dev/null +++ b/air purifier.scad @@ -0,0 +1,103 @@ + +filter_x = 368; // mm +filter_y = 494; // mm +filter_z = 44; // mm + +module filter() { + // https://airfiltration.ca/collections/pleated-merv-plus/products/merv-13-2inch?variant=19413155348547 + // merv-13 15x20x2 + cube([filter_x, filter_y, filter_z]); +}; + +fan_box_x = 255; // mm +fan_box_y = 130; // mm +fan_box_z = 43; // mm +module fan_box() { + cube([fan_box_x, fan_box_y, fan_box_z]); +}; + +fan_mounting_hole_radius = 3; // mm +fan_mounting_hole_length = 56; // mm + +module fan_plate_mounting_hole() { + // 56 mm length, which is 50mm between circle centers + hull() { + circle(fan_mounting_hole_radius, $fn=360); + translate([fan_mounting_hole_length - 2*fan_mounting_hole_radius, 0, 0]) { + circle(fan_mounting_hole_radius, $fn=360); + } + }; +} + +fan_plate_x = 353; // mm +fan_plate_y = 229; // mm +fan_plate_z = 1; // mm +module fan_plate() { + linear_extrude(fan_plate_z) { + difference() { + offset(r=1, $fn=360) { + // 353x229 but reduced for offset + square([fan_plate_x-1, fan_plate_y-1]); + } + + // @TOOD: Fix the translation values + translate([10, 10, 0]) { rotate([0, 0, 45]) { fan_plate_mounting_hole(); + }; }; + translate([10, 218, 0]) { rotate([0, 0, -45]) { fan_plate_mounting_hole(); + }; }; + + + translate([310, 180, 0]) { rotate([0, 0, 45]) { fan_plate_mounting_hole(); + }; }; + translate([300, 50, 0]) { rotate([0, 0, -45]) { fan_plate_mounting_hole(); + }; }; + }; + + }; +}; + +fan_cable_spacing = 30; //mm +fan_box_offset_x = 48; // mm +fan_box_offset_y = 50; // mm +fan_box_offset_z = 1; // mm +module fan() { + // https://acinfinity.com/hvac-home-ventilation/exhaust-fans/crawlspace-basement-fans/airtitan-s7-crawlspace-fan-with-speed-controller-12-inch/ + // AirTitan S7 crawlspace fan + union() { + translate([fan_box_offset_x, fan_box_offset_y, fan_box_offset_z]) { + fan_box(); + }; + fan_plate(); + }; +}; + + +side_wall_x = 5; // mm +side_wall_y = fan_box_y + 2*filter_z + 2*fan_cable_spacing; +echo("Side wall:", side_wall_y, "by", side_wall_z); +side_wall_z = filter_y; // mm +module side_wall() { + // from rona + cube([side_wall_x, side_wall_y, side_wall_z], center=false); +} + +#fan(); + +// leave 30mm for the power cable gland +// that comes off the fan_box +translate([-(filter_x - fan_plate_x)/2, filter_z - fan_cable_spacing , fan_plate_z]) { +rotate([90, 0, 0]) { +#filter(); +}}; + +// leave 30mm for the power glang +// that comes off the fan_box +translate([-(filter_x - fan_plate_x)/2, fan_plate_y + fan_cable_spacing, fan_plate_z]) { +rotate([90, 0, 0]) { +#filter(); +}}; + +translate([-2, -20, fan_plate_z]) { +#side_wall();}; +translate([filter_x, -20, fan_plate_z]) { +#side_wall();}; \ No newline at end of file diff --git a/crbox-corner-44x5-v1-pair.3mf b/crbox-corner-44x5-v1-pair.3mf new file mode 100644 index 0000000..39ca499 Binary files /dev/null and b/crbox-corner-44x5-v1-pair.3mf differ