diff --git a/printer_mods/techprolet/2020_aplic_cam_mount/.metadata.yml b/printer_mods/techprolet/2020_aplic_cam_mount/.metadata.yml new file mode 100644 index 000000000..9827a25a8 --- /dev/null +++ b/printer_mods/techprolet/2020_aplic_cam_mount/.metadata.yml @@ -0,0 +1,28 @@ +--- +# The title of your mod. Choose a short and descriptive name +title: 2020 Aplic Cam Mount +# A short description of your mod. Try to describe your mod with 1-2 short sentences +description: Aplic HD camera to the 2020 frame at bed level. +# Mod version: Set this to 1 when you are submitting a new mod. When you make changes to your mod, you may increment this number +mod_version: 1 +# You may add your discord username here so people can contact you about your mod +discord_username: techprolet +# The CAD files for your mod. Please provide them as a list. +# Note that each mod must include at least one CAD file. +cad: +- aplic_cam_mount.scad +# The parts of your mod, exported and oriented ready to be sliced. Please provide them as a list. +# Note that each mod must include at least one STL or OBJ file. +stl: +- aplic_cam_mount_voron_2_4_300x300.stl +# The image files provided with your mod. These may be instructions you use in your README.md file, or other additional pictures. +# **Note that the first image specified here will be used as cover image on mods.vorondesign.com** +# All paths are relative to this .metadata.yml file. +images: +- img/2020_aplic_cam_mount.jpg +# Printer compatibility. Please specify all compatible printers as a list. The following values are accepted: +# "V0", "V0.1", "V0.2", "V0.2r1", "V1", "V1.6", "V1.8", "V1.8r1", "V2", "V2.1", "V2.2", "V2.4", "V2.4r1", "V2.4r2", "VSW", "VT", "VTr1", "VL" +# Please only specify printers that you have either tested your mod on yourself, or that someone else has tested for you. If you are unsure whether your +# mod is compatible with a certain printer, don't list it here! +printer_compatibility: +- V2.4r2 \ No newline at end of file diff --git a/printer_mods/techprolet/2020_aplic_cam_mount/README.md b/printer_mods/techprolet/2020_aplic_cam_mount/README.md new file mode 100644 index 000000000..2261dba61 --- /dev/null +++ b/printer_mods/techprolet/2020_aplic_cam_mount/README.md @@ -0,0 +1,41 @@ +## 2020 Aplic Cam Mount + +![2020 Aplic Cam Mount installation example](img/2020_aplic_cam_mount.jpg) +**2020 Aplic Cam Mount** is a 3D printed part that is used to mount a cheapo *aplic hd camera* (or similar) to the 2020 frame at bed level. The mount is designed to be held in place with a M3 screw and a M3 nut. Additionaly, you need 4x M3 heat inserts, 4x M3 spacers and 4x M3x6 screws for mounting the camera on the mount (pun intended). + + +You can also invert mount the camera under the gantry, which would work better for monitoring higher layers. *Photo courtesy of _tsimo_ V2.6592* + +![2020 Aplic Cam Mount installation example](img/2020_aplic_cam_inverse_mount.jpg "Inverse (gantry) mount. Photo courtesy of `_tsimo_` V2.6592") +### Files +* `aplic_cam_mount_voron_2_4_300x300.stl` - The mount STL, angled for the Voron 2.4 300x300mm geometry. +* `aplic_cam_mount_voron_2_4_300x300_shortened.stl` - Shortened version STL,for inverse mounting on a Voron 2.4 300x300mm gantry. +* `aplic_cam_mount.scad` - The OpenSCAD file for the mount (you can modify the parameters for your own printer's geometry). + +### Parts +The mount is designed to be used with the following parts: +``` +- 1x 3d printed 2020 Aplic Cam Mount +- 1x Aplic Webcam - 1920x1080P stripped from its plastic case +- 1x M3x10 screw +- 1x M3 2020 T-nut +- 4x M3 heat inserts +- 4x M3x4 spacers +- 4x M3x6 screws +``` +### Printing +The mount is printed in the orientation that as is in the STL file. The mount should be printed with the recommended Voron settings (40% infill and 4 perimeters) in ABS/ASA. That said, I've printed mine in PETG and it still holds. No supports or mount needed. + + + +### Credits and license + +Copyright 2024, Pavlos Iliopoulos. + + 2020 Aplic Cam Mount is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. + + 2020 Aplic Cam Mount is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. + + You should have received a copy of the GNU General Public License along with this program. If not, see . + +The author does not hold any copyright or has any affiliation with aplic and/or its products. diff --git a/printer_mods/techprolet/2020_aplic_cam_mount/aplic_cam_mount.scad b/printer_mods/techprolet/2020_aplic_cam_mount/aplic_cam_mount.scad new file mode 100644 index 000000000..2bea89b90 --- /dev/null +++ b/printer_mods/techprolet/2020_aplic_cam_mount/aplic_cam_mount.scad @@ -0,0 +1,159 @@ +/* +Copyright 2024, Pavlos Iliopoulos. + + 2020 Aplic Cam Mount is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. + + 2020 Aplic Cam Mount is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. + + You should have received a copy of the GNU General Public License along with this program. If not, see . + +The author does not hold any copyright or has any affiliation with aplic and/or its products. + */ + + + +$fn = 64; + +// Wall thickness +wall_thickness = 3; + +// Hole distances +hole_distance_x = 54; +hole_distance_y = 17; +corrective_hole_x_offset = 0.8; + +// Dimensions of the wall +wall_l = hole_distance_x + 3 * wall_thickness; +wall_w = hole_distance_y + 3 * wall_thickness; + +// Camera elevation +cam_elevation = 25; // set to 10 for shortened version (inverse mounting on gantry) + +// Dimensions of the anchor +anchor_l = 15; +anchor_w = 12; +anchor_h = 6; +anchor_screw_hole_offset = 2.5; +anchor_screw_d = 3.5; +hex_hole_z_offset = 3; + +// Screw dimensions +screw_length = 10; +screw_receiver_d = 6; + +// Hex hole dimensions +hex_hole_y = -7; +hex_hole_d = 6; + +// Support dimensions +support_w = anchor_l - 2 * wall_thickness; +support_x_offset = (anchor_w - wall_thickness) / 2; + +// Heat insert dimensions +heat_insert_d = 4.4; +heat_insert_thickness = 13; + +// Calculate the camera viewing angle +cam_viewing_angle_x = atan(74 / 148); // arctan( (distance between 2 rods/2) / (distance from back + stage side/2) ) +echo("CAM VIEWING ANGLE x:", cam_viewing_angle_x); + +// Define the solid anchor module +module solid_anchor() { + anchor_l = 15; + anchor_w = 12; + anchor_h = 6; + + // Length is 15mm, width is 12mm + difference() { + cube ([anchor_w, anchor_l, anchor_h]); + translate([anchor_w/2, anchor_l/2-anchor_screw_hole_offset, 0]) { + translate([0,0, hex_hole_z_offset]) { + #cylinder(h = anchor_h , d = hex_hole_d); + } + + #cylinder(h = anchor_h, d = anchor_screw_d); + } + } +} + +// Define the back panel module +module back_panel() { + hull() { + translate([0, wall_thickness / 2, anchor_h / 2]) { + cube([anchor_w, wall_thickness, anchor_h], center = true); + } + translate([0, wall_thickness / 2, wall_w / 2 + anchor_h + cam_elevation]) { + cube([wall_l, wall_thickness, wall_w], center = true); + } + } +} + +// Define the inserts module +module inserts() { + translate([0, 0, wall_w / 2 + anchor_h + cam_elevation]) { + translate([wall_thickness, -(wall_l * sin(cam_viewing_angle_x) / 2), 0]) { + rotate([0, 0, cam_viewing_angle_x]) { + for (x = [-1, 1]) { + for (y = [-1, 1]) { + translate([corrective_hole_x_offset + x * hole_distance_x / 2, heat_insert_thickness / 2, y * hole_distance_y / 2]) { + rotate([90, 0, 0]) { + cylinder(h = heat_insert_thickness, d = heat_insert_d); + } + } + } + } + } + } + } +} + +module rotated_wall() { + translate([wall_thickness, -(wall_l * sin(cam_viewing_angle_x) / 2), 0]) { + rotate([0, 0, cam_viewing_angle_x]) { + cube([wall_l, wall_thickness, wall_w], center = true); + } + } +} + +module cam_mount() { + difference() { + translate([0, wall_thickness / 2, wall_w / 2 + anchor_h + cam_elevation]) { + hull() { + #cube([wall_l, wall_thickness, wall_w], center=true); + #rotated_wall(); + } + } + + translate([0, hex_hole_y, 0]) { + #cylinder(h = anchor_h + cam_elevation + wall_w, d = hex_hole_d); + } + } +} + +module supports() { + for (i = [-1, 1]) { + translate([i * support_x_offset, -support_w / 2, (cam_elevation + anchor_h) / 2]) { + cube([wall_thickness, support_w, cam_elevation + anchor_h], center = true); + } + } +} + +module aplic_complete_mount() { + translate([-anchor_w / 2, wall_thickness - anchor_l, 0]) { + solid_anchor(); + } + difference() { + union() { + back_panel(); + cam_mount(); + } + + #inserts (); + } + + supports(); +} + +rotate([270, 0, -45]){ + aplic_complete_mount(); +} diff --git a/printer_mods/techprolet/2020_aplic_cam_mount/aplic_cam_mount_voron_2_4_300x300.stl b/printer_mods/techprolet/2020_aplic_cam_mount/aplic_cam_mount_voron_2_4_300x300.stl new file mode 100644 index 000000000..f62b982d2 Binary files /dev/null and b/printer_mods/techprolet/2020_aplic_cam_mount/aplic_cam_mount_voron_2_4_300x300.stl differ diff --git a/printer_mods/techprolet/2020_aplic_cam_mount/aplic_cam_mount_voron_2_4_300x300_shortened.stl b/printer_mods/techprolet/2020_aplic_cam_mount/aplic_cam_mount_voron_2_4_300x300_shortened.stl new file mode 100644 index 000000000..ecbd49f49 Binary files /dev/null and b/printer_mods/techprolet/2020_aplic_cam_mount/aplic_cam_mount_voron_2_4_300x300_shortened.stl differ diff --git a/printer_mods/techprolet/2020_aplic_cam_mount/img/2020_aplic_cam_inverse_mount.jpg b/printer_mods/techprolet/2020_aplic_cam_mount/img/2020_aplic_cam_inverse_mount.jpg new file mode 100644 index 000000000..096e8c7c2 Binary files /dev/null and b/printer_mods/techprolet/2020_aplic_cam_mount/img/2020_aplic_cam_inverse_mount.jpg differ diff --git a/printer_mods/techprolet/2020_aplic_cam_mount/img/2020_aplic_cam_mount.jpg b/printer_mods/techprolet/2020_aplic_cam_mount/img/2020_aplic_cam_mount.jpg new file mode 100644 index 000000000..d262a2802 Binary files /dev/null and b/printer_mods/techprolet/2020_aplic_cam_mount/img/2020_aplic_cam_mount.jpg differ