2020 aplic cam mount by techprolet (#1039)
* 2020 aplic cam mount * renamed metadata.yml, added shortened version, removed stl import * fixed PR issues * corrected typos/quantities in BOM * fixed typose, added M3 spacer length --------- Co-authored-by: newphreak <nilssen.jon@gmail.com>
This commit is contained in:
parent
5f87c504d5
commit
4f8149bf0c
|
|
@ -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
|
||||||
|
|
@ -0,0 +1,41 @@
|
||||||
|
## 2020 Aplic Cam Mount
|
||||||
|
|
||||||
|

|
||||||
|
**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*
|
||||||
|
|
||||||
|
 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 <https://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
The author does not hold any copyright or has any affiliation with aplic and/or its products.
|
||||||
|
|
@ -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 <https://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
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();
|
||||||
|
}
|
||||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
After Width: | Height: | Size: 832 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 948 KiB |
Loading…
Reference in New Issue