This is a collection of assorted astronomy related parts
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
astro-parts/Lens Mount/_split_ring.scad

219 lines
6.6 KiB

/*
* Astro Parts -- Generic Split Ring
*
* Copyright (c) 2021 Steve Cross <flip@foxhollow.cc>
*
* This program 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 2 of the License, or
* (at your option) any later version.
*
* This program 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, write to the Free Software Foundation, Inc.,
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
*/
// The EOS 60/600D have a 40mm offset from bottom of camera to center of the
// imaging sensor and sits on a 31mm shim plate.. this means the total distance
// from the plate to the center of the sensor is 71mm. This is what we
// will call "the standard".
// [unit: mm]
// This is the "standard" offset that needs to be consistent
// across all lens and camera combinations in order for one
// set of printed rings to be interchangeable with any other
// combination of lens and/or camera.
standard_offset = 71;
// [unit: mm]
// how many millimeters from the bottom of the lens mount point to the top of
// the dovetail bar. do **not** deduct the ring thickness from this number!
// bar_offset = 40;
// [unit: mm]
// [override]
// the diameter of the lens or camera
mounting_point_diameter = 62;
// [unit: mm]
// how wide should the bar spacer at the bottom of the split ring
// be.. this should match the width of the top of whatever mounting
// plate is being used
dovetail_width = 35;
// [unit: mm]
// how big of a gap should there be between the top and the
// bottom half of the rings. This is to ensure that when you
// bolt the rings together, it can hold nice and tight.
ring_split_w = 2;
// [unit: mm]
// how wide should the ring assembly be. Wider will provide more strength
// and stability, but can only be as wide as the lens allows. Must be at
// least wide enough to handle the diameter of the base nut (13mm)
ring_w = 15;
// [unit: mm]
tab_w = 15;
// [unit: mm]
tab_bolt_shaft_d = 4.8;
// [unit: mm]
tab_nut_d = 7.45; // measured 6.99
// [unit: mm]
tab_nut_h = 2.75; // measure 2.57
// [unit: mm]
wall_thickness = 5;
// [unit: mm]
// TODO: MAKE_SHARED
base_bolt_shaft_d = 6.9;
// [unit: mm]
// Diameter of the nut
// TODO: MAKE_SHARED
base_nut_diameter = 12.9;
// [unit: mm]
// TODO: MAKE_SHARED
base_nut_height = 4;
// [unit: mm]
// How far from the bottom of the base stand should the nut sit
base_nut_offset = 10;
// [unit: mm]
// How much padding should be added to the ring inner diameter
// to account for the padding that is to be placed between
// the ring and the camera or lens
ring_offset_for_padding = 2;
bar_offset = standard_offset - (mounting_point_diameter/2);
ring_inner_d = mounting_point_diameter + ring_offset_for_padding;
ring_outer_d = ring_inner_d + (wall_thickness*2);
overall_width = ring_outer_d + (tab_w * 2);
top_height = ring_outer_d / 2;
bottom_height = ring_outer_d/2 + bar_offset-wall_thickness;
ring_split_offset = ring_split_w / 2;
$fn = 360;
// rotate([90, 0, 0])
// difference() {
// cube([test_height, test_width, test_depth]);
// translate([test_width/2, test_height/2, -1])
// cylinder(h=test_height+2, d=tab_bolt_shaft_d);
// translate([test_width/2, test_height/2, -1])
// cylinder(h=test_height/2, d=tab_nut_d, $fn=6);
// };
translate([-10+ring_split_offset, 0, 0])
fh_make_split_ring_top();
translate([10-ring_split_offset, 0, 0])
fh_make_split_ring_bottom();
module fh_make_split_ring_bottom() {
difference() {
fh_make_split_ring();
translate([-ring_outer_d/2-1+ring_split_offset, -overall_width/2-1, -1])
cube([ring_outer_d/2+1, overall_width+2, ring_w + 2]);
}
}
module fh_make_split_ring_top() {
difference() {
fh_make_split_ring();
translate([0-ring_split_offset, -overall_width/2-1, -1])
cube([bottom_height+2, overall_width+2, ring_w + 2]);
}
}
module fh_make_split_ring() {
difference() {
union() {
// outer ring
cylinder(h=ring_w, d=ring_outer_d, $fn=360);
// coupling tabs
cube2([wall_thickness*2+ring_split_w, overall_width, ring_w]);
// bottom mounting post
translate([ring_inner_d/2, -dovetail_width/2, 0])
cube([bar_offset, dovetail_width, ring_w]);
}
// punch out center of ring
translate([0, 0, -1])
cylinder(h=ring_w+2, d=ring_inner_d, $fn=360);
// punch out base bolt hole
translate([ring_inner_d/2-2.5, 0, ring_w/2])
rotate([0, 90, 0])
cylinder(d=base_bolt_shaft_d, h=bar_offset+5, center=false, $fn=360);
// punch out the base nut hole
translate([ring_inner_d/2-1, 0, ring_w/2])
rotate([90, 0, 90])
cylinder(bar_offset-base_nut_offset+1, d=base_nut_diameter, center=false, $fn=6);
// punch out L tab bolt hole
translate([-wall_thickness-1, ring_outer_d/2 + tab_w/2, ring_w/2])
rotate([0, 90, 0])
cylinder(d=tab_bolt_shaft_d, h=wall_thickness*2+2, center=false, $fn=360);
// punch out R tab bolt hole
translate([-wall_thickness-1, -ring_outer_d/2 - tab_w/2, ring_w/2])
rotate([0, 90, 0])
cylinder(d=tab_bolt_shaft_d, h=wall_thickness*2+2, center=false, $fn=360);
// punch out L the tab nut hole
translate([wall_thickness - tab_nut_h + ring_split_offset, ring_outer_d/2 + tab_w/2, ring_w/2])
rotate([90, 0, 90])
cylinder(wall_thickness+1, d=tab_nut_d, center=false, $fn=6);
// punch out the R tab nut hole
translate([wall_thickness - tab_nut_h + ring_split_offset, -ring_outer_d/2 - tab_w/2, ring_w/2])
rotate([90, 0, 90])
cylinder(wall_thickness+1, d=tab_nut_d, center=false, $fn=6);
}
}
module cube2(dimensions) {
translate([-dimensions[0]/2, -dimensions[1]/2, 0])
cube(dimensions);
}
// test_height = 15;
// test_width = 15;
// test_depth = 15;
// rotate([90, 0, 0])
// translate([-test_height*2, 0, 0])
// difference() {
// cube([test_height, test_width, test_depth]);
// translate([test_width/2, test_height/2, -1])
// cylinder(h=test_height+2, d=base_bolt_shaft_d);
// translate([test_width/2, test_height/2, -1])
// cylinder(h=test_height/2, d=base_nut_diameter, $fn=6);
// };